deploying-active-directory-honeytokens について
Active Directory 管理者やセキュリティチーム向けの展開スキルです。偽の特権アカウント、SPN、GPO、BloodHound パスを配置し、攻撃者の操作を検知します。
主な機能
- 01偽の特権アカウントの配置
- 02偽 SPN による Kerberoasting 検知
- 03認証情報トラップ付き偽 GPO の作成
- 04BloodHound の偽装パスの構築
- 05SIEM アラートの設定と展開検証
活用シーン
- 01偽 SPN を狙う Kerberoasting の検知
- 02認証情報窃取と横展開の検知
- 03GPP パスワード収集の特定
- 04AD 監視への欺瞞検知シグナル追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill deploying-active-directory-honeytokensインストール後、Claude Code で/deploying-active-directory-honeytokensを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.pyDeploy-ADHoneytokens.ps1詳細
Active Directory Honeytoken のデプロイ
使用する場面
- Active Directory 環境で、欺瞞ベースの検知を導入する場合
- 偽の SPN honeytoken(honeyroasting)を利用して、Kerberoasting 攻撃を検知する場合
- 認証情報の窃取やラテラルムーブメントを検知するためのトリップワイヤーアカウントを作成する場合
- Group Policy Preference のパスワード窃取を検知するためのデコイ GPO を構築する場合
- 攻撃者を誤誘導して検知する、偽の BloodHound パスを作成する場合
- 既存の AD 監視を、高精度な検知シグナルで補完する場合
前提条件
- Domain Admin または委任された AD 管理権限
- Active Directory ドメイン(Windows Server 2016 以降を推奨)
- SIEM(Splunk、Sentinel、Elastic)への Windows Event Log 転送
- ActiveDirectory モジュールを含む PowerShell 5.1 以降
- Group Policy Management Console(GPMC)
- AD セキュリティ、Kerberos、BloodHound の攻撃パスに関する知識
背景
AD Honeytoken を使用する理由
従来のシグネチャーベースの検知では、新しい攻撃手法を見逃します。Honeytoken は、 デコイオブジェクトへの操作自体が本質的に疑わしいため、誤検知をほぼゼロに抑えながら、 高精度な検知を実現します。Active Directory では、次のように利用できます。
- 偽の特権アカウント:認証情報のダンプ(DCSync、NTDS.dit の抽出)を検知します
- 偽の SPN:Kerberoasting の偵察(存在しないサービスへの TGS リクエスト)を検知します
- デコイ GPO:Group Policy Preference のパスワード窃取を検知します
- 偽の BloodHound パス:グラフベースの AD 分析を使う攻撃者を誤誘導します
主な検知イベント ID
| イベント ID | 説明 | Honeytoken の用途 |
|---|---|---|
| 4769 | Kerberos TGS チケットの要求 | honey SPN に対する Kerberoast の検知 |
| 4625 | ログオン失敗の試行 | デコイ GPO の偽の認証情報の使用を検知 |
| 4662 | ディレクトリサービスオブジェクトへのアクセス | honeytoken ユーザーに対する DACL の読み取りを検知 |
| 5136 | ディレクトリサービスオブジェクトの変更 | デコイ GPO の変更を検知 |
| 5137 | ディレクトリサービスオブジェクトの作成 | デコイを模倣した GPO の作成を検知 |
| 4768 | Kerberos TGT の要求 | honey アカウントへの AS-REP roasting を検知 |
Honeytoken を本物らしく見せる
Trimarc Security の調査によると、効果的な honeytoken は本物に見える必要があります。
- アカウントを古く見せる:古い非アクティブアカウントを転用します(同様に古いドメインでは、 10~15 年前のアカウントが本物らしく見えます)
- AdminCount=1 を設定する:アカウントに昇格した AD 権限があることを示し、 Kerberoasting の標的として魅力的に見せます
- 現実的な名前を使う:組織の命名規則に合わせます(svc_sqlbackup、 admin.maintenance、svc_exchange_legacy)
- 古いパスワード日付を設定する:SPN が設定され、パスワードが 10 年以上変更されていないと、 攻撃者には価値が高く放置されたサービスアカウントに見えます
- グループメンバーシップを追加する:「Remote Desktop Users」などの目立つグループや、 カスタムの「Backup Operators」に追加して、攻撃者の関心を高めます
- 不自然な点を避ける:攻撃者は、一貫性を確認するために作成日、最終ログオン日、 パスワード変更日を照合します
手順
手順 1:偽の特権管理者アカウントを導入する
従来の特権サービスアカウントを模倣する honeytoken アカウントを作成します。
# Import the deployment module
Import-Module .\scripts\Deploy-ADHoneytokens.ps1
# Create a honeytoken admin account
$honeyAdmin = New-HoneytokenAdmin `
-SamAccountName "svc_sqlbackup_legacy" `
-DisplayName "SQL Backup Service (Legacy)" `
-Description "Legacy SQL Server backup service account - DO NOT DELETE" `
-OU "OU=Service Accounts,DC=corp,DC=example,DC=com" `
-PasswordLength 128 `
-SetAdminCount $true
Write-Host "Honeytoken admin created: $($honeyAdmin.DistinguishedName)"
手順 2:Kerberoasting 検知用の偽 SPN を導入する
現実的に見える偽の SPN を honeytoken アカウントに割り当てます。この SPN への TGS リクエストは すべて、明確に悪意のある操作です(honeyroasting)。
# Add fake SPN to honeytoken account
$honeySPN = Add-HoneytokenSPN `
-SamAccountName "svc_sqlbackup_legacy" `
-ServiceClass "MSSQLSvc" `
-Hostname "sql-legacy-bak01.corp.example.com" `
-Port 1433
Write-Host "Honey SPN registered: $($honeySPN.SPN)"
Write-Host "Monitor Event ID 4769 for TGS requests targeting this SPN"
手順 3:認証情報の罠を仕込んだデコイ GPO を導入する
SYSVOL に、埋め込みの cpassword(Group Policy Preference のパスワード)を含む偽の GPO を作成します。 Get-GPPPassword や gpp-decrypt などのツールを使う攻撃者は、これらの認証情報を見つけて 使用を試み、検知につながります。
# Create decoy GPO with cpassword trap
$decoyGPO = New-DecoyGPO `
-GPOName "Server Maintenance Policy (Legacy)" `
-DecoyUsername "admin_maintenance" `
-DecoyDomain "CORP" `
-SYSVOLPath "\\corp.example.com\SYSVOL\corp.example.com\Policies" `
-EnableAuditSACL $true
Write-Host "Decoy GPO created: $($decoyGPO.GPOGuid)"
Write-Host "SACL audit enabled - any read attempt will generate Event ID 4663"
手順 4:偽の BloodHound パスを作成する
BloodHound/SharpHound による偵察で表示される偽の攻撃パスを作成する ACL 権限を設定し、 攻撃者を監視対象の honeytoken に誘導します。
# Create fake BloodHound attack path
$deceptivePath = New-DeceptiveBloodHoundPath `
-HoneytokenSamAccount "svc_sqlbackup_legacy" `
-TargetHighValueGroup "Domain Admins" `
-IntermediateOU "OU=Service Accounts,DC=corp,DC=example,DC=com"
Write-Host "Deceptive path created: $($deceptivePath.PathDescription)"
手順 5:検知ルールを設定する
honeytoken への操作をすべてアラートするよう、SIEM の検知ルールを設定します。
# Using the Python detection agent
from agent import ADHoneytokenMonitor
monitor = ADHoneytokenMonitor(config_path="honeytoken_config.json")
# Register all honeytokens for monitoring
monitor.register_honeytoken("svc_sqlbackup_legacy", token_type="admin_account")
monitor.register_honeytoken("MSSQLSvc/sql-legacy-bak01.corp.example.com:1433", token_type="spn")
monitor.register_honeytoken("admin_maintenance", token_type="gpo_credential")
# Generate SIEM detection rules
splunk_rules = monitor.generate_detection_rules(siem="splunk")
sentinel_rules = monitor.generate_detection_rules(siem="sentinel")
sigma_rules = monitor.generate_detection_rules(siem="sigma")
for rule in sigma_rules:
print(f"Rule: {rule['title']}")
print(f" Detection: {rule['detection_logic']}")
ステップ 6:デプロイを検証する
検知が正しく発動することを確認するため、ハニートークンをテストします。
# Validate honeytoken deployment
$validation = Test-HoneytokenDeployment `
-SamAccountName "svc_sqlbackup_legacy" `
-ValidateAdminCount `
-ValidateSPN `
-ValidateGPODecoy `
-ValidateAuditPolicy
$validation | Format-Table Check, Status, Details -AutoSize
例
デプロイパイプライン全体
Import-Module .\scripts\Deploy-ADHoneytokens.ps1
# Deploy complete honeytoken suite
$deployment = Deploy-FullHoneytokenSuite `
-Environment "Production" `
-ServiceAccountOU "OU=Service Accounts,DC=corp,DC=example,DC=com" `
-SYSVOLPath "\\corp.example.com\SYSVOL\corp.example.com\Policies" `
-TokenCount 3 `
-IncludeSPN $true `
-IncludeGPODecoy $true `
-IncludeBloodHoundPath $true `
-SIEMType "Splunk"
# Output deployment report
$deployment.Tokens | Format-Table Name, Type, SPN, DetectionRule -AutoSize
$deployment | Export-Csv "honeytoken_deployment_report.csv" -NoTypeInformation
Kerberoasting 検知クエリ(Splunk)
index=wineventlog EventCode=4769 ServiceName="svc_sqlbackup_legacy"
| eval alert_severity="critical"
| eval alert_type="honeytoken_kerberoast"
| table _time, src_ip, Account_Name, ServiceName, Ticket_Encryption_Type
| sort - _time
Microsoft Sentinel KQL 検知
SecurityEvent
| where EventID == 4769
| where ServiceName in ("svc_sqlbackup_legacy", "svc_exchange_legacy")
| extend AlertType = "Honeytoken Kerberoast Detected"
| project TimeGenerated, Computer, Account, ServiceName, IpAddress, TicketEncryptionType
参考資料
- Trimarc Security - ハニーポットアカウントの技術:https://www.hub.trimarcsecurity.com/post/the-art-of-the-honeypot-account-making-the-unusual-look-normal
- ADSecurity.org - Kerberoasting アクティビティの検知 Part 2(ハニーポット):https://adsecurity.org/?p=3513
- Microsoft Defender for Identity のハニートークン:https://techcommunity.microsoft.com/blog/microsoftthreatprotectionblog/deceptive-defense-best-practices-for-identity-based-honeytokens-in-microsoft-def/3851641
- SpecterOps - Kerberoasting と AES-256:https://specterops.io/blog/2025/10/21/is-kerberoasting-still-a-risk-when-aes-256-kerberos-encryption-is-enabled/
- APT29a Blog - AD へのハニートークンのデプロイ:https://apt29a.blogspot.com/2019/11/deploying-honeytokens-in-active.html
- ADSecurity.org - Kerberoasting アクティビティの検知:https://adsecurity.org/?p=3458