NTLM Relay 其实严格意义上并不能叫 NTLM Relay,而是应该叫 Net - NTLM Relay。它是发生在 NTLM 认证的第三步,在 Type3 Response 消息中存在 Net - NTLM Hash,当攻击者获得了 Net - NTLM Hash 后,可以进行中间人攻击,重放 Net - NTLM Hash,这种攻击手法也就是大家所说的 NTLM Relay (NTLM 中继) 攻击。NTLM Relay Attack(NTLM 中继攻击)指的是强制目标服务器、目标用户使用 LM Hash、NTLM Hash 对攻击者的服务器进行认证,攻击者将该认证中继至其他目标服务器中(域控等),根据目标域的防护等级可以在活动目录中进行横向移动或权限提升

用人话讲,就是在已经拿到一台主机权限的情况下,强制让其他目标去请求该主机,然后在被控主机上监听得到ntlmhash,可以利用这个值在其他机器,身份认证通过的用来横向移动,不行的暴力破解得到明文密码

从下图中引入本节内容

118.170更正为118.177

我们使用重放攻击,敲入命令python smbrelayx.py -h 192.168.214.102 -c hostname 在kail上监听等待。接着ip为100的地址使用net use找到ip为132的kail主机,因为此前已经启动了py监听,所以这时100来的数据会被kail中继重放到102上,102将自己的存储密码与100比对,发现是域控的账号,于是放行,执行完hostname命令后将数据返回给kail,smbrelayx脚本显示出收到的数据

如果将hostname命令切换成执行后门,那么会直接在cs上上线,上线的地址是102

简单来讲kail起到的作用就是将100的身份信息拿去到102上比对,如果102上有这个身份信息,那么就可以成功,没有则无效(没有身份信息也会爆出当前用户的NTLM hash,只是不会执行后面的命令,那么就去爆破它的明文密码就好)。真实环境利用时,net use一栏在cs里敲就好了

拓展)后续降权到管理员,和域控的账号比对发现成功,可以横向移动

觉得上面的脚本文件太麻烦的话,使用responder也可以抓到ntlm,启动工具后(responder -I eth1 -wd),也是netuse一下就好了

有的朋友就要问了,这些都需要有受控机器net use一下,有没有其他手法不需要的

有的兄弟,有的,我们有强制手法

使用到项目:https://github.com/p0dalirius/Coercer

借一下迪总的图 启动强制访问,让21去访问32

配合responder去抓数据 就让21去访问kail地址

或者使用项目:https://github.com/dirkjanm/krbrelayx

先启动对22的监听

然后利用打印机漏洞让33去强制访问kail

然后就受到信息

强的不行来软的,启动被动监听,做一个能够诱惑别人点击访问被控主机的页面什么的,也能够得到ntlm

软的就不演示了

注:强制访问抓到的ntlm是机器的不是用户