ドットをつなぐ: PrivHoundがWindowsローカル権限昇格を探索可能なグラフに変換

PrivHound

グラフとしてのローカル権限昇格。

Windowsローカル権限昇格を、テキストの壁ではなく相互接続された攻撃パスとしてモデル化するWindows BloodHound OpenGraphコレクタ。

長い間、BloodHoundはActive Directoryの設定ミスを静的なチェックリストから探索可能な攻撃パスに変換し、攻撃者がグラフ的に考えることを証明してきました。しかし、ローカル権限昇格に関しては、業界は今でも2015年にとどまっています。ツールを実行し、テキストの壁を読み、手動でドットをつなぐか、LLMにやらせるかどちらかです😛

WinPEAS、PowerUp、Seatbeltは個別の設定ミスを見つけるのに優れていますが、次のような質問に答えることができません:

  • 「この書き込み可能なProgram Filesディレクトリが実際にSYSTEMにつながるのは、サービスがそこからバイナリを実行しているからでしょうか?」
  • 「このPowerShell履歴ファイルに含まれている認証情報は、ローカル管理者として有効でしょうか?」
  • 「別のユーザーのプロフィールを読んで、保存されている認証情報を見つけ、彼らとしてログインし、彼らが書き込みアクセスできるサービスを悪用できますか?」

これらのツールは単独で検出結果を報告します。実際には、権限昇格はマルチステップチェーンであり、1つの検出結果が別の検出結果につながります。書き込み可能なディレクトリは、そこからサービスが実行されていなければ何の意味もありません。履歴ファイル内の認証情報は、それが特権ユーザーに属していなければ何の意味もありません。本当の質問は「どのような設定ミスが存在するか?」ではなく、「ここから実際に何に到達できるか?」です。

Active Directoryの攻撃がグラフと考えることができるなら、ローカル権限昇格はどうでしょうか?

PrivHoundはローカル権限昇格をグラフとしてモデル化することでこれを変えます。BloodHoundのOpenGraphフレームワークに基づいて、29のカテゴリのWindows権限昇格ベクトルを列挙し、弱いサービス権限からCOM乗っ取り、WebClientリレーまで、相互接続されたノードとエッジとして出力します。

結果: マルチホップ昇格チェーンが可視化され、Cypherで照会可能になり、既存のActive Directory攻撃パスの上に重ねられます

チェック内容

# チェック 手法 MITRE
1 弱いサービス権限 SYSTEMとして実行される修正可能なサービス T1574.011
2 書き込み可能なサービスバイナリ サービス.exeをペイロードで置き換える T1574.010
3 クォートされていないサービスパス 書き込み可能な中間ディレクトリを経由したパスハイジャック T1574.009
4 DLLハイジャック(PATH) システムPATHの書き込み可能なディレクトリ T1574.001
5 AlwaysInstallElevated 悪意のあるMSIをSYSTEMとしてインストール T1548.002
6 トークン権限 SeImpersonate、SeDebug、SeBackup等 T1134.001
7 スケジュール済みタスク SYSTEMタスクの書き込み可能なバイナリ T1053.005
8 オートラン実行可能ファイル Run/RunOnceキーの書き込み可能なバイナリ T1547.001
9 レジストリサービスキー HKLMの書き込み可能なサービスImagePath T1574.011
10 保存された認証情報 認証情報マネージャー、オートログオンパスワード T1552.001
11 GPPキャッシュパスワード グループポリシー設定のcpassword T1552.006
12 無人インストールファイル unattend/sysprep XMLの認証情報 T1552.001
13 PowerShell履歴 PSReadLine履歴とトランスクリプト T1552.001
14 機密ファイル SAMバックアップ、.kdbx、.rdg、git-credentials T1552.001
15 UAC回避の機会 UAC設定ミスまたは管理者が昇格されていない T1548.002
16 書き込み可能なプログラムディレクトリ Program Filesの書き込み可能なディレクトリ T1574.010
17 クロスユーザープロフィール 機密ファイルを含む読み取り可能なプロフィール T1552.001
18 認証情報ログインパス 抽出された認証情報をローカルユーザーに対して検証 T1078.003
19 クロスユーザー権限昇格 発見されたユーザーがアクセスできる内容を分析 T1078.003
20 JIT管理ツール MakeMeAdmin、CyberArk EPM、Admin By Request T1548
21 プリントスプーラ / PrintNightmare 脆弱なポイント&プリント設定 T1068
22 WSUS HTTP(非SSL) SYSTEMコード実行のためのWSUS MITM T1557
23 SCCM/MECM NAA認証情報 ネットワークアクセスアカウントDPAPI抽出 T1552.001
24 COMオブジェクト乗っ取り HKCU CLSID乗っ取りでSYSTEMコンテキストDLLロード T1546.015
25 名前付きパイプ権限 許可的なSYSTEMパイプACL → なりすまし T1134.001
26 キャッシュされた認証情報 DCC2、WiFi、WinSCP、FileZilla、PuTTy認証情報 T1552.001
27 WMIイベントサブスクリプション 書き込み可能なWMIコンシューマーバイナリ/スクリプト T1546.003
28 WebClientリレー WebClientを経由したNTLMリレー(DC LDAP → SYSTEM) T1187
29 サービス復旧コマンド 書き込み可能な失敗復旧コマンドバイナリ T1574.010
30 シャドウコピー機密ファイル VSSスナップショットでアクセス可能なSAM/SYSTEMハイブ T1003.002

マルチホップ攻撃パス

これが従来のprivescツールからPrivHoundを区別するものです。検出結果を単独で一覧表示する代わりに、PrivHoundはそれらを悪用可能なチェーンに接続します:

チェーン パス
認証情報パイプライン User → PSHistory → PHContainsCreds → PHCanLoginAs → LocalUser → Admin
書き込み可能なdir → サービス User → WritableProgramDir → PHHostsBinaryFor → Service → SYSTEM
クロスユーザープロフィール User → Profile → SensitiveFile → PHCanLoginAs → LocalUser → Admin
クロスユーザー昇格 User → (creds) → PHCanLoginAs → UserX → PHCanWriteBinary → Service → SYSTEM
SeBackupサブチェーン User → SeBackup → PHCanReadProtected → SAM → PHCanExtractHashes → Admin
保存された認証情報 → runas User → StoredCred → PHCanLoginViaRunas → LocalUser → Admin
SCCM NAA → 認証情報 User → SCCMCred → PHContainsCreds → PHCanLoginAs → Admin
WebClientリレー User → WebClientRelay → PHEscalatesTo → SYSTEM
COM乗っ取り User → COMHijack → PHExecutesAs → SYSTEM
WMIサブスクリプション User → WMISubscription → PHRunsAs → SYSTEM
名前付きパイプ User → NamedPipe → PHRunsAs → SYSTEM
サービス復旧 User → PHCanWriteRecoveryBin → Service → SYSTEM
シャドウコピーハッシュ User → ShadowCopy → SAM → PHCanExtractHashes → Admin
JIT管理者 User → MakeMeAdmin → PHGrantsTempAdmin → Admin

クロスユーザー権限昇格

PrivHoundが他のローカルユーザーの有効な認証情報を発見すると(GPPパスワード、オートログオン、無人ファイル、PowerShell履歴、クロスユーザープロフィールなどを経由して)、PHCanLoginAsエッジの作成で止まりません。発見されたユーザーが実際に何ができるかを分析します。

仕組み(SeImpersonatePrivilegeは不要):

  1. LogonUserは発見された各ユーザーのトークンハンドルを取得します
  2. GetTokenInformationはグループメンバーシップ(SID)とトークン権限を抽出します
  3. ACLチェックは現在のユーザーのグループではなく、発見されたユーザーのグループを使用して実行されます
  4. 発見されたユーザーのノードから、アクセスできる脆弱なリソースへのエッジが作成されます
  5. トークンは閉じられます — なりすましは発生しません、昇格された権限は必要ありません

発見された各ユーザーに対してチェックする内容:

サブチェック 作成されたエッジ
サービスバイナリ書き込み PHCanWriteBinary
サービスSDDL修正 PHCanModifyService
クォートされていないパスハイジャック PHCanHijackPath
DLLハイジャックPATHディレクトリ PHCanWriteTo
スケジュール済みタスクバイナリ PHCanWriteTaskBinary
オートランバイナリ PHCanWriteAutorun
プログラムディレクトリ PHCanWriteProgDir
トークン権限 PHHasPrivilege
サービス復旧バイナリ PHCanWriteRecoveryBin

すべてのクロスユーザーエッジは、フィルタリング用のdiscovered_via="credential"プロパティを含みます。

ダウンロード & 使用

翻訳元: https://meterpreter.org/connecting-the-dots-privhound-transforms-windows-local-privilege-escalation-into-an-explorable-graph/

ソース: meterpreter.org