开始
还记得上一篇文章提到的,通过MS-EFSRPC协议的EfsRpcOpenFileRaw
函数也可以像printbug(域内委派攻击的老朋友了)一样发起SMB认证请求。
后经过测试,发现默认情况下,DC为2012、2016、2019时,只需指定中继IP
以及受害IP
就可以成功发起认证,
不需要机器在域内,不需要域内凭据!
也就是说配合公开的CVE-2019-1040
(这个漏洞在大部分域内都没有修复),可以说达到指哪打哪的效果
至于有的同学不知道为什么需要配合CVE-2019-1040
这个漏洞绕过NTLM签名认证,可以查看ntlm的基础
演示
下面测试在MAC(域外,保证网络通即可)上开启ntlmrelayx
以及触发辅DC的认证请求,relay至DC的LDAPS,(辅DC配置DC至辅DC的传入信任关系)也就是基于资源的约束委派
到这里有人可能会问,基于资源的约束委派攻击不是有两个条件吗,配置了机器的RBCD后还需要一个机器账户去申请票据,既然说不需要域内凭据那么是不是也无法滥用MachineAccountQuota
属性去使用域用户向域内添加机器账户了,因为修改此属性实质上还是在LDAP里修改,所以我们完全可以通过随意中继一台机器到LDAP来添加一个机器账户
接着,触发辅DC的认证请求,中继成功
接着我们使用该机器账户即可利用S4U协议申请到DC2$机器的高权限票据:
注:如果申请凭据的时候出现KRB_AP_ERR_SKEW(Clock skew too great)
错误,需要同步Linux时间
最后,成功登陆
当然也可以用此票据DUMP HASH
修复建议
CVE-2019-1166
以及CVE-2019-1040
因为发起的认证是基于SMB的,默认携带签名,攻击者没办法篡改发起认证也就无法攻击了。
总结
最后不得不说,这类型发起认证都是携带签名,都得需要到CVE-2019-1040
这个漏洞,向提交这个漂亮的绕过ntlm认证消息完整性标志的漏洞提交者@n1nty师傅致敬,站在巨人的肩膀上才能看得更远!