【Windowsローカル権限昇格編】サービス・レジストリ・MSIを巡る攻防|CTF思考フレームワーク P03

Windows ローカル権限昇格って、何が手がかり?🪟

サービス・スケジューリングタスク・レジストリ Run・MSI ファイル・AlwaysInstallElevated・Unquoted Service Path――Windows 固有の昇格パスが多数あります。WinPEAS・PowerUp で網羅的に列挙できます。
Windows 権限昇格は、Linux と全く異なる攻略パスを要求します。Unquoted Service Path、AlwaysInstallElevated、サービス設定の権限不備、レジストリ Run の書き込み権限、DLL Hijacking、Token Impersonation――WinPEAS・PowerUp.ps1・SharpUp が定番ツール。
広告・PRを含みます。この記事にはアフィリエイトリンクが含まれます。掲載内容は編集方針に基づいて作成していますが、価格・在庫・キャンペーン内容はリンク先で最新情報を確認してください。

Windows って Linux と全然違うんだね…
この記事は、CTF思考フレームワーク Privesc編 P03。Windows ローカル権限昇格の基本(サービス・レジストリ・MSI・トークン)と、WinPEAS・PowerUp の使い方、最初の SYSTEM 取得シナリオを整理します。
Windows PrivEscの世界へ。LinuxとはOS構造もパーミッションモデルも別物で、慣れるまで戸惑いますが、実はチェックポイントがハッキリしてて整理しやすい分野でもあります。サービスのDACL、レジストリ、UAC、AlwaysInstallElevated…一つずつ見ていきます🪟
Windows PrivEscは「自動列挙ツール → パターン照合 → 一発」の流れで動くことが多いです。
先に意味を押さえておくと読みやすい用語です。
- CTF: セキュリティの練習問題を解く競技。必ず許可された環境だけで試します。
- 権限昇格: 一般ユーザーから管理者権限など、より強い権限を得ることです。
- 横展開: 侵入後に別の端末やサーバーへ移動して被害範囲を広げる動きです。
- Kerberos: Windowsの社内ネットワークなどで使われる認証の仕組みです。
- UAC: Windowsで管理者権限が必要な操作を確認する保護機能です。
難易度:★★☆(中級) / この枝ルートの記事は、必要な回だけ選んで読めます。
👀 観察フェーズ:まず何を見る?
WinPEAS / PowerUp / Seatbelt あたりを実行すれば情報は一発で揃います。手動で覚えるべきは「結果の読み方」。
🤔 仮説フェーズ:攻撃者は何を考える?
Windows の攻撃者はまず「自分のトークンに SeImpersonatePrivilege か SeAssignPrimaryTokenPrivilege が含まれているか」を whoami /priv で確認します。これが有効なら、IIS や SQL Server のサービスアカウント経由で Potato 系(JuicyPotato、PrintSpoofer、RoguePotato、GodPotato)が刺さる可能性が高いと判断します。次にレジストリの HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer と HKCU 側に AlwaysInstallElevated=1 が残っていないか、Unquoted Service Path で空白を含むパスが Program Files の手前にないかを疑います。さらに sc qc とサービス実行ファイルの DACL を突き合わせ、サービスバイナリそのものに書き込めるか、停止・起動権限だけ与えられているかを切り分けるのが定番の思考順です。
Windowsは「特権 + サービス + 設定の組合せ」で攻略します。チェックリストで漏れなく見るのが鉄則。
🔬 検証フェーズ:どうやって確かめる?
最初に whoami /priv と whoami /groups でトークンの特権と所属グループを確認し、続けて systeminfo を取得して Watson や wesng に投入し未適用 KB を割り出します。サービス周りは sc query type= service state= all で全サービスを列挙したあと、accesschk.exe -uwcqv “Authenticated Users” * と icacls で書き込み可能なサービス・実行ファイル・親フォルダを洗い出します。レジストリは reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated と HKCU 側を両方確認し、両方 1 なら MSI 経由の昇格が確定します。最後に PowerUp.ps1 の Invoke-AllChecks と WinPEAS をローカル管理者の検知が緩い時間帯に走らせ、結果を Seatbelt の出力と突き合わせて見落としを潰します。
⚔️ 攻撃フェーズ:実際の手口
SeImpersonate が有効で IIS の ApplicationPoolIdentity を取れたら、PrintSpoofer64.exe -i -c “cmd /c whoami” で SYSTEM シェルへ昇格、というのが現在もっとも安定する手口です。AlwaysInstallElevated が両側で 1 なら、msfvenom で生成した reverse shell の MSI を msiexec /quiet /qn /i payload.msi で実行し、インストーラ権限の SYSTEM を直接奪います。Unquoted Service Path では、たとえば C:\Program Files\Vuln App\service.exe が引用符なしで登録されていれば、C:\Program Files\Vuln.exe を配置してサービス再起動を待つだけです。サービスバイナリそのものに書き込めるケースは、binPath や ImagePath を改ざんせず、実行ファイルを sc stop → 置換 → sc start で差し替えるのが、起動時失敗のリスクを最小化できる定番の進め方です。
CTF{windows_privesc_is_a_checklist_game}
Windows PrivEscは「自動ツール出力をパターンマッチ」できるかが勝負。慣れれば数分で大半の環境を把握できます。
🛡️ 防御フェーズ:どう守る?
防御側は GPO で AlwaysInstallElevated を必ず無効化し、サービス実行ファイルとそのインストール先ディレクトリの DACL を BUILTIN\Users から書き込み権限を剥がす棚卸しを四半期に一度回すのが基本線です。Unquoted Service Path は PowerShell で Get-WmiObject Win32_Service の PathName を一括点検し、引用符付きに修正したうえで構成管理ツールで再発を防ぎます。ローカル管理者パスワードは LAPS や Windows LAPS でホスト単位にランダム化し、Pass-the-Hash による横展開を断ち切ります。検知面では Sysmon で ProcessCreate(イベント 1)と RegistryEvent を有効化し、msiexec の子プロセス、PrintSpoofer・GodPotato 等の既知バイナリ名、SeImpersonate を持つプロセスからの SYSTEM プロセス生成をルール化しておくと、突破後の早期検知に繋がります。
🧪 検証用のLinuxラボを用意
権限昇格やエクスプロイトの練習は、許可を得た自分の検証環境で行うのがルール。💻 ConoHa VPSならUbuntuやCentOSをワンクリックで立てて、スナップショットも取れるので安心して試せます。
※ 上記は他社サービスへのリンクです。購入は各自でご判断ください。
⚠️ よくある落とし穴
よくあるミス。
- Program Filesの空白を含むパスを引用符なしで設定する。
- AlwaysInstallElevated を「インストール作業を楽にするため」に有効化したまま放置。
- カスタムサービスを管理者権限で動かしつつ、実行ファイルのDACLを書き込み可能にする。
- ローカル管理者パスワードを全PC共通にする(Pass-the-Hash横展開を許す)。
- Sysmon / セキュリティイベントログ未設定で、攻撃者の動きが追えない。
- PrintNightmare、HiveNightmare、PetitPotam等を「うちは関係ない」と未パッチで放置。
🧰 ツール早見表
使う道具。
| ツール | 用途 | ひと言 |
|---|---|---|
| WinPEAS | Windows列挙の決定版 | 色付きで読みやすい |
| PowerUp | PowerShell列挙 | サービス・レジストリ系に強い |
| Seatbelt | C#の総合列挙 | EDR回避にも便利 |
| Watson / wesng | カーネルCVE推定 | systeminfo出力を投入 |
| SharpUp / SharpHound | C# / AD列挙 | BloodHound連携 |
🎓 本気で学びたい人へ
Linuxとサーバ・セキュリティを仕事レベルで学びたい方へ。🎓 ササエルはインフラエンジニア向けスクールで、システム設計から防御設計まで広くカバーしています。
📚 もっと深く学びたい人へ
体系的に学ぶなら『ホワイトハッカー入門』、手を動かして覚えるなら『TryHackMeを使って身体で覚える攻撃手法と脆弱性』が定番。両方持っておくと、知識と実践の両輪で伸びます📚
📚 次に読みたい
- 【Windows Token・UAC編】Windows特権の中枢を握る|CTF思考フレームワーク P04
- 【AD・Kerberos編】ドメイン全体を狙う攻防とBloodHoundで読む経路|CTF思考フレームワーク P05
- 【DNS編】サブドメイン列挙とCT logが暴く組織の地図|CTF思考フレームワーク R01
✍️ 学んだことを発信する
学んだことをブログにまとめるなら、高速で安価なConoHa WINGが使いやすいです。



