跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

精选回复

发布于

理论知识

在传统的kerberos认证的时候,是使用用户密码进行认证的。回顾下申请TGT的过程。
用用户hash加密时间戳作为value,type为PA-ENC-TIMESTAMP, 放在PA_DATA上。KDC收到请求,使用用户hash解密value的值得到时间戳跟当前时间做比对,如果在合理的范围(正常五分钟),就认证通过。
事实上也可以使用证书作为认证,这也是这次spectorops关于ADCS研究的最大亮点,后面漏洞紧紧围绕这点。
RFC4556引入了对 Kerberos 预身份验证的公钥加密支持。这个RFC 的title是Public Key Cryptography for Initial Authentication in Kerberos,后面我们使用简称PKINIT来介绍使用证书进行kerberos身份认证这种方法。
PKINIT同样也使用时间戳,但不是使用用户密码派生密钥加密消息,而是使用属于证书的私钥对消息进行签名。

测试环境

DC windows server 2019
AD CS Windows Server 2008
非域内机器windows 7

测试准备

certtmlp.msc - 证书模板控制台
certsrv.msc - 证书颁发机构
certmgr.msc - 证书管理

给一域用户安装个用户证书
win+r运行certmgr.msc,选择个人,右键,所有任务->申请新证书。请求证书选择用户(即可生成当前用户的一个证书)

fsXTFU.png

安装后如下

fsX7YF.png

执行certutil -user -store My可以看到用户证书

fsXLl9.png

场景模拟

假设一台域内机器带有一个用户证书要怎么利用他?
先把这个证书dump下来(需要包括私钥)可以用certutil或者直接用certmgr.msc dump

certutil -user -exportPFX <SHA1 hash> test1.pfx
  • 1

(dump的时候需要给证书设置个密码(如果该证书默认没密码的话))

fsXOyR.png
fsXXO1.png

(使用certutil导出)

fsXzTK.png

这里有一种情况不能通过这两种方式dump,有些证书在导入的时候需要密码或者不勾选标志此密钥为可导出的密钥,需要mimikatz dump

fsj9YD.png

dump出现如下问题

fsjiSH.png

使用mimikatz的crypto::capi修改lsass,然后在dump (这个报错也不影响,具体原因不知)
(这证书dump下来如果导入的时候设置了密码也没用,验证根本过不了,也不知道有啥用)

crypto::capi #修改lsass
crypto::certificates /systemstore:local_machine /store:my /export
  • 1
  • 2

(没以administrator权限执行)

fsjk6A.png

(以administrator权限执行)

decd25cc3ceaa229.png

尝试用Rubeus进行申请票据
知道证书密码或者dump证书的时候没设置不可dump可自己设置密码

Rubeus.exe asktgt /user:csadmin /password:123456 /certificate:admin.pfx /domain:joker.local /dc:WIN-0ASLVBO5ID9.joker.local #123456是私钥密码(dump证书的时候设置的)
  • 1
3f344d91d72244e3.png

利用过程

理论点

a735763c31d0fe83.png

在域内利用
Rubeus.exe申请票据导入到当前进程,然后获取hash用wmiexec.py连接之类的
(清空原有的票据进行测试)

f4dd4b544a516e3e.png

Rubeus进行申请票据

aa2df3a2f23d4cb5.png

获取hash

3969335a61d64673.png

不在域内利用
将pfx移动到win7,并导入证书。在hosts文件添加域控IP和加入被控制机器的IP和机器名或者DNS改为域控的IP (代理进内网)

ed2393d62b472888.png

利用keke获取ntlm,然后用wmiexec.py连接之类的

tgt::pac /subject:csadmin /castore:current_user /domain:joker.local
  • 1
0cf25ddee50a166f.png

直接利用mimikatz令牌注入用psexec连接AD CS服务器
(pth ntlm到新进程psexec连接)

c08063c93c568bc2.png

常见搜索证书的位置

我们经常可以在邮件,磁盘里面看到证书,我们一般按照后缀来搜索证书的,我们一般关注以下后缀
1、key后缀的,只包含私钥
2、crt/cer 后缀的,只包含公钥
3、csr后缀的,证书申请文件,不包含公钥,也不包含私钥。没啥用
4、pfx,pem,p12后缀的,包含公私钥,我们最喜欢的。
搜索文件后缀的每个人使用的工具不一样,我个人比较喜欢的是SharpSearch,.Net的项目,支持内存加载,可以写成CNA插件。

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。