エンドポイント特権管理とユーザーアカウント制御(UAC)ベストプラクティスの適用

ユーザーアクセス制御のイメージ

Implementing User Account Control (UAC) Best Practices with Endpoint Privilege Management” December 1, 2022 by James Maude より

ユーザーアカウント制御(UAC)とは?

ユーザーアカウント制御(UAC)はWindowsのOS内のセキュリティ機能で、マルウェアの影響を回避することを目的に設計されています。全てのユーザーはどこかの時点でUACを利用していると思われます。UACプロンプトをトリガーさせるタスクにはアプリケーションのインストール、設定変更など管理者権限を要するものが含まれます。UACのプロンプトはユーザーの画面に表示され、そのインストールや変更などの要求を本当に実行したいかを、操作しているユーザーに確認を促します。

UAC prompt example

UACプロンプトはWindows Vistaで最初に導入されて、WindowsXP上でのセキュリティ課題を改善しようとしました。UACプロンプトはその後大きくは変化していません。 Windows10での視覚的な改善を除けばです。

なぜUACが必要なのか?

Windowsでアプリケーションが起動するとアクセストークンが付与されます。このトークンは対象アプリケーション用の権限とアクセスを定義します。WindowsのUACの原則によって、ローカル管理者に2つのトークン、ひとつは標準、もう一つは管理者トークンを与えることになります。

初期のころは、このうちの標準トークンのみが付与されていました。しかしアプリケーションが管理者トークンを要求するようになると、デフォルトでUACプロンプトメッセージが表示されるようになったのです。ユーザーがUACプロンプトで「はい」をクリックして要求した操作の実行に進めると管理者トークンが追加で発行されます。管理者トークンは上位の権限をもってそのアプリケーションを実行可能にします。

管理者トークンは「全てのエリアにアクセス可能」なパスのようなもので、アプリケーションがそのシステム上でほぼ何でも実行することを可能にします。従って管理者トークンを付帯したアプリケーションが侵害されると攻撃者はかなりの打撃を与えることができます。

UACのステップを取り込むことで、攻撃者が悪用できる管理者トークンを付帯したアプリケーションの数を減らすことが可能です。さらにUACを使用すれば、攻撃者はプロンプトメッセージによるユーザーの承認を経ない限り、管理者トークンが入手できないためリスクが減少します。

大多数のアプリケーションは管理者トークン無しでも機能することから、ユーザーがこのポップアップメッセージに煩わされることはあまりありません。従って効果的なセキュリティ機能が実行されていると思われます。でも、ちょっと待ってください。これでこのお話が終わりではありません。

UACの問題その1 ー ユーザーが依然ローカル管理者の場合

ユーザーがローカル管理者である場合、[はい] をクリックするだけで、割り当てられている管理者トークンを制御できます。 つまり、攻撃者は、偽のソフトウェアを作成するか、「Windows Updater.exe」といった無害そうに見えるファイル名を使用して、ソーシャル エンジニアリング攻撃でマルウェアを実行するようにユーザーを説得さえすればよいことになります。

ユーザーは一般に、クリックすることに麻痺してしまった「クリックブラインド」でもあり、何年にもわたってこうしたメッセージを何百回も承認してきた可能性があります。 プロンプトがポップアップすると、ユーザーは筋肉が記憶している反応として「はい」をクリックしてポップアップに対処してしまうことがあります。ユーザーが [いいえ] をクリックすると、ユーザーが最終的に同意して [はい] をクリックするまで、プロンプトを再表示し続ける場合があります。 過去1年間に発生した Lapsus$ グループなどの 多要素認証疲労攻撃は、同様の戦略を効果的に使用することで、少なくとも幾つかの著名企業のネットワークを侵害しました。

最悪の場合、ローカル管理者権限を持つユーザーが、デフォルト設定を「通知する」から「通知しない」に変更してしまい、UACを無効にすることをしてしまう可能性もあります。 これは UACプロンプトをオフにする方法ですが、ユーザーへの警告や、どのタスクに権限が付与されているかを制御できなくなるため、非常に危険です。

最後に、一部のUAC プロンプトは、エンドユーザーには曖昧に見える場合があります。以下のプロンプトを例に考えてみましょう。Microsoft管理コンソールが行おうとしている変更とその理由は何でしょうか。ユーザーはどのレベルの権限が適切かだけではなく、アプリケーションが何をするのか、検証済みの発行元がどこかを知らない可能性があります。ユーザーがタスクを完了しようとしているだけで、UACプロンプトが邪魔をしている可能性もあります。

UACサンプル

曖昧なUACプロンプトの例。これは正当なものなのか、悪意に基づくものでしょうか?

UACの問題その2ー UACは実際にセキュリティ境界ではない

このブログのトップに戻って、私が言っていたことが矛盾してないか?と皆さんが確認される前に、WindowsのUACは境界ではなくセキュリティ機能であると前に述べました。実際MicrosoftはUACを「Microsoftの全体的なセキュリティビジョンの根幹をなす要素」と言っているのです。多くの人がUACをセキュリティの境界と位置づけていますが、技術的にはそうではありません。

過去何年もの間、セキュリティ研究者や攻撃者がUACをトリガーしなくても自分のツールを実行して侵害を可能にする方法の発見に成功してきました。このような脅威の手法がMicrosoft のバグ報奨金プログラムに報告される都度、Microsoftは「UACはセキュリティ境界ではありません」と反応しています。

Microsoftは自身のアプリケーションが多数のUACのポップアップを表示することは避けたいのです。従ってMicrosoftは自身が信頼するアプリケーションに関しては、UACプロンプトを出さないようなメカニズムを作ったのです。これにより信頼するアプリケーションが侵害される、あるいはUACをバイパスするための踏み台として利用されるなどのセキュリティの低下を招きました。

UACがセキュリティ境界と捉えられていないため、これらのバイパス問題はバグとは見なされず、パッチの提供もされません。このブログを書いているこの時にもUACMEプロジェクト (https://github.com/hfiref0x/UACME -注:いくつかのネットワークフィルターはこのサイトをブロックします)が76もの異なるUACバイパステクニックをリストアップしています。これらの多くのバイパステクニックはマルウェアで活発に利用されており、Windowsのエンドポイント上でコッソリと権限を上昇させているのです。これら76個のポピュラーなもの以外にも、世の中にはさらに多数のバイパスが存在しています。

UACの課題をエンドポイント特権管理で解決する

上記UACの問題その1とその2はとんでもない状況を生み出すように思われます。エンドユーザーは一般的な処理を行うためには管理者トークンが必要です。例えばソフトウェアのインストール、プリンターのインストールや設定の変更などです。もしローカル管理者権限を取り上げてしまうとエンドユーザーは安全ですが、生産性は下がります。またユーザーはこのような環境で一日中ヘルプデスクに支援を求めるようなことにも成りかねません。逆にエンドユーザーにローカル管理者権限を付与すれば、攻撃者にOSのUACセキュリティメカニズムをバイパスして管理者権限を悪用される可能性が生まれます。

幸いにもBeyondTrustのPrivilege Management for Windows(PMW)のような、最近のエンドポイント特権管理ツールはこの課題に対して効果的に対応できて、かつそれ以上の効果を提供しています。BeyondTrustのソリューションは全てのユーザーからローカル管理者を即座に取り上げることができ、これにより攻撃にさらされる面積を顕著に縮小できます。PMWはUACを傍受して、設定ポリシーをベースにユーザーの役割に必要なアプリケーションのみに対する権限上昇要求をシームレスに実行します。

既知の信頼できるアプリケーションの場合、単純なポリシールール、もしくはすぐに使用開始できるポリシーテンプレートを利用して、ユーザーにプロンプトを表示することなく、これらのアプリケーションをシームレスに起動できます。次に、未知のアプリケーションやタスクについて、特定のアプリケーションを必要とする理由をユーザーに入力するように依頼したり、実行ファイルの評判のチェックを実行したり、アプリケーション発行者を確認したり、多要素認証を介してステップアップ認証をトリガーしたりするなどで、アプリケーションとユーザーの両方が申請通りであることを確認できます。

PMWは Quick Start テンプレートを提供しています。これを活用すれば一般的な「最小権限ポリシーの適用例」を、Day 1から展開できるのでリスクの削減を非常に早く実現できます。またカスタマイズアクセストークンにより、詳細なレベルまでアクセス権限を設定できるので、どのようなユーザー、アプリケーションに対しても余剰な権限を付与する必要が無くなります。

余剰な権限を付与されたローカル管理者ユーザーをリスクにさらす、逆に権限不足によるユーザーの生産性を低下させるような落とし穴にはまらないようにしましょう。セキュリティと生産性の良いバランスを保ち、セキュリティのベストプラクティスに従い、最も重要なことは安全な基礎を築くことで、攻撃者がシステムへの特権アクセスを不正に入手できないようにすることです。


James Maude、サイバーセキュリティ研究者
Jamesは、BeyondTrustの英国マンチェスターオフィスのサイバーセキュリティ主任研究者です。James はセキュリティ研究において幅広い経験を持ち、進化するセキュリティ環境における攻撃ベクトルと傾向を特定するために、マルウェアとサイバー脅威の詳細な分析を行っています。 フォレンジックコンピューティングのバックグラウンドと、セキュリティリサーチコミュニティへの積極的な関与でサイバーセキュリティの専門家としての発信をしています。彼は定期的に国際イベントに出席して、ウェビナーを通して脅威と防御戦略について議論しています。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする