mcpField
D
deploying-active-directory-honeytokens

deploying-active-directory-honeytokens

github.com/mukul975セキュリティ35.2k57 回インストール8 週間前に更新
リポジトリ

deploying-active-directory-honeytokens について

Active Directory 管理者やセキュリティチーム向けの展開スキルです。偽の特権アカウント、SPN、GPO、BloodHound パスを配置し、攻撃者の操作を検知します。

主な機能

  1. 01偽の特権アカウントの配置
  2. 02偽 SPN による Kerberoasting 検知
  3. 03認証情報トラップ付き偽 GPO の作成
  4. 04BloodHound の偽装パスの構築
  5. 05SIEM アラートの設定と展開検証

活用シーン

  1. 01偽 SPN を狙う Kerberoasting の検知
  2. 02認証情報窃取と横展開の検知
  3. 03GPP パスワード収集の特定
  4. 04AD 監視への欺瞞検知シグナル追加

インストール

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

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill deploying-active-directory-honeytokens

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
scripts/
agent.py
Deploy-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 の用途
4769Kerberos TGS チケットの要求honey SPN に対する Kerberoast の検知
4625ログオン失敗の試行デコイ GPO の偽の認証情報の使用を検知
4662ディレクトリサービスオブジェクトへのアクセスhoneytoken ユーザーに対する DACL の読み取りを検知
5136ディレクトリサービスオブジェクトの変更デコイ GPO の変更を検知
5137ディレクトリサービスオブジェクトの作成デコイを模倣した GPO の作成を検知
4768Kerberos 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

参考資料

コメント