PR 本記事には広告(Amazonアソシエイト・もしもアフィリエイト・A8.net等)が含まれます。掲載情報の正確性には努めていますが、商品の詳細は必ずリンク先で最新情報をご確認ください。

【Windows Token・UAC編】Windows特権の中枢を握る|CTF思考フレームワーク P04

【Windows Token・UAC編】Windows特権の中枢を握る|CTF思考フレームワーク P04 アイキャッチ画像
安全に生きたい編集部

Windows Token と UAC って、なんか聞いたことあるけど…?

Windows の特権の中枢。アクセストークン(Access Token)はユーザーの権限情報を保持し、UAC(User Account Control)は管理者権限の昇格確認。SeImpersonatePrivilege・SeDebugPrivilege を持つトークンを盗めば、SYSTEM 化が現実的です。

Windows Token と UAC は、権限管理の核心。SeImpersonatePrivilege(他人のトークンを使える)を持つサービスアカウントは、Potato 系攻撃(Hot/Rotten/Juicy/Rogue/Sweet Potato)で SYSTEM へ昇格可能。UAC bypass は ICMLuaUtil・Eventvwr・Fodhelper など数十の経路があります。

広告・PRを含みます。この記事にはアフィリエイトリンクが含まれます。掲載内容は編集方針に基づいて作成していますが、価格・在庫・キャンペーン内容はリンク先で最新情報を確認してください。

Potato 攻撃って名前が可愛いけど、強力なんだ…

この記事は、CTF思考フレームワーク Privesc編 P04。Windows Token・UAC bypass の代表的手口(Potato シリーズ・UAC bypass テクニック)と、企業の検知・防御策(PAW・PsLockdownPolicy)を整理します。

Windows PrivEscの中核は「アクセストークン」。Linuxの uid/gid に相当しますが、もっと精緻で、もっと攻撃可能。Token Impersonation、UAC Bypass、Named Pipe…プロセス間でトークンを奪い合う独特の世界を整理します🪪

WindowsはトークンOSです。トークンを支配する者がシステムを支配します。

この記事で出てくる言葉

先に意味を押さえておくと読みやすい用語です。

  • CTF: セキュリティの練習問題を解く競技。必ず許可された環境だけで試します。
  • 権限昇格: 一般ユーザーから管理者権限など、より強い権限を得ることです。
  • 横展開: 侵入後に別の端末やサーバーへ移動して被害範囲を広げる動きです。
  • Kerberos: Windowsの社内ネットワークなどで使われる認証の仕組みです。
  • UAC: Windowsで管理者権限が必要な操作を確認する保護機能です。
この記事の難易度

難易度:★★★(上級) / この枝ルートの記事は、必要な回だけ選んで読めます。

👀 観察フェーズ:まず何を見る?

プロセスの「Token + Integrity + Privileges」の三点で何ができるかが決まります。これを軸に攻撃面を考えます。

🤔 仮説フェーズ:攻撃者は何を考える?

攻撃者はまず whoami /priv で自分の特権セットを確認し、SeImpersonatePrivilege や SeAssignPrimaryTokenPrivilege が有効なら Potato 系で SYSTEM が取れると判断します。これらが無くても、Medium Integrity の管理者プロセスが稼働していれば fodhelper や ICMLuaUtil 経由の UAC Bypass で High Integrity に昇格できる可能性を疑います。さらに lsass のメモリにアクセスできれば、他ユーザーのトークンや TGT を引き抜いて成り済ますルートも検討します。つまり「現在の権限で触れるトークンと、自分が借用できる特権」を地図化することが、Windows 権限昇格の起点になります。

Windows PrivEscの上位パターンは、ほぼすべてトークンの操作に行き着きます。

🔬 検証フェーズ:どうやって確かめる?

最初に whoami /all と whoami /priv で現在のトークンに含まれる SID・グループ・特権を列挙し、Disabled 状態でも保持している特権を見落とさないようにします。次に Process Explorer や Get-Process | Select Name,Id,SessionId でセッション 0 のサービスプロセスを観察し、SeImpersonatePrivilege を持つ IIS/MSSQL/WinRM などのアカウントへ到達できるかを確認します。UAC の状態は reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System で ConsentPromptBehaviorAdmin と EnableLUA を読み、AutoElevate される実行ファイル一覧と突き合わせます。最後に PrintSpoofer や RoguePotato を検証用 VM で実行し、想定どおり SYSTEM のシェルが返るかを観察します。

⚔️ 攻撃フェーズ:実際の手口

典型例は、Web シェル経由で IIS の AppPool 権限を得たケースです。AppPool アカウントは SeImpersonatePrivilege を保持しているため、PrintSpoofer64.exe -i -c cmd を実行すれば SYSTEM 権限のシェルが即座に返ります。SYSTEM になった後は、reg save で SAM/SYSTEM/SECURITY を退避してオフラインで NT ハッシュを抽出し、Mimikatz の sekurlsa::logonpasswords で他ユーザーの平文・チケットも回収します。管理者アカウントだけがある環境では、fodhelper のレジストリ書き換えで AutoElevate を悪用し、UAC プロンプトなしに High Integrity プロセスを起動するのが定番ルートです。最終的に Domain Admin の TGT を抜き出し、横展開や Golden Ticket の準備に繋げます。

CTF{token_is_the_real_identity_in_windows}

Windowsの権限はファイルパーミッションよりも「トークン管理」に重みがあります。ここを掴むと深く読めるようになります。

🛡️ 防御フェーズ:どう守る?

まず SeImpersonatePrivilege を持つサービスアカウントを最小化し、IIS や MSSQL を Virtual Account や gMSA に切り替えて対話ログオンを禁止します。UAC は ConsentPromptBehaviorAdmin=2 の「常に確認」に変更し、Secure Desktop を有効化することで fodhelper 系のレジストリ Bypass を無効化できます。LSASS は RunAsPPL=1 で Protected Process Light として保護し、Credential Guard も併用してメモリからのトークン窃取を遮断します。検知面では Sysmon Event ID 1/10/11 と Defender for Endpoint の Behavioral Blocking を組み合わせ、PrintSpoofer の名前付きパイプ作成や fodhelper.exe の異常な親子プロセス関係をアラート化するのが効果的です。

🧪 検証用のLinuxラボを用意

権限昇格やエクスプロイトの練習は、許可を得た自分の検証環境で行うのがルール。💻 ConoHa VPSならUbuntuやCentOSをワンクリックで立てて、スナップショットも取れるので安心して試せます。

PR / 広告

ConoHa VPS

※ 上記は他社サービスへのリンクです。購入は各自でご判断ください。

⚠️ よくある落とし穴

Windows 権限昇格の対策で頻出する失敗は、UAC を「最高」ではなく既定の通知レベルで放置することと、サービスアカウントを管理者グループに入れたまま運用することの 2 点に集約されます。前者は AutoElevate 可能な署名済みバイナリを悪用した Bypass を許し、後者は Web アプリから取れた小さな穴がそのまま SYSTEM への一本道になります。さらに Sysmon を未導入のまま EDR 単体に頼ると、Named Pipe の作成や CreateRemoteThread によるトークン操作の痕跡が残らず、事後調査で攻撃経路を再構築できなくなります。LAPS 未導入でローカル管理者パスワードが共通という構成は、1 台陥落が即ドメイン全体陥落に直結する典型的な悪手です。

  1. UACを「Notify me only when apps try to make changes」のデフォルトにしておく(Bypass技の温床)。
  2. SeImpersonateを持つサービスアカウントをユーザー兼用にする。
  3. EDR/Sysmonを未設定で運用し、トークン窃取の痕跡が残らない。
  4. LSA Protection(RunAsPPL)を有効化していない。
  5. Local Administrator Password を全PC共通にし、Pass-the-Hashで容易に横展開される。
  6. PowerShell実行ポリシーやWDACをBypassしやすい設定で運用。

🧰 ツール早見表

Windows トークンと UAC を扱う際に押さえておきたいのは、観察用と攻撃検証用、防御用の三系統です。観察では Sysinternals の Process Explorer と Process Hacker でトークン・整合性レベル・特権を可視化し、accesschk.exe でサービスの ACL を点検します。攻撃検証では PrintSpoofer・GodPotato・SweetPotato といった Potato 系ツールと、UACME のレジストリ Bypass モジュールが教材として有名です。防御側は Sysmon と Microsoft Defender for Endpoint で挙動を取り、PowerShell の Constrained Language Mode や WDAC で実行可能ファイルを制限します。下表は学習用途を想定した代表的な組み合わせです。

ツール用途ひと言
Process Hackerプロセス・トークン詳細GUIで見ると理解が早い
Sysinternals (Process Explorer)標準ツールトークン・スレッド観察
Potato系(Print/Rogue/Sweet/God)SYSTEM昇格環境に応じて選定
UACMEUAC Bypass技集学習用、検出されやすい
Incognito (Meterpreter)トークン操作古典だが分かりやすい

🎓 本気で学びたい人へ

Linuxとサーバ・セキュリティを仕事レベルで学びたい方へ。🎓 ササエルはインフラエンジニア向けスクールで、システム設計から防御設計まで広くカバーしています。

PR / 広告

ササエル

📚 もっと深く学びたい人へ

体系的に学ぶなら『ホワイトハッカー入門』、手を動かして覚えるなら『TryHackMeを使って身体で覚える攻撃手法と脆弱性』が定番。両方持っておくと、知識と実践の両輪で伸びます📚

📚 次に読みたい

✍️ 学んだことを発信する

学んだことをブログにまとめるなら、高速で安価なConoHa WINGが使いやすいです。

PR / 広告

ConoHa WING

⚖️ 大事なお約束

記事URLをコピーしました