ntlmrelay
什么是ntlm?
ntlm(ntlm hash)是从windows用户的密码计算而来的,通常形式为LM:NT的形式,LM HASH和NT hash都是和用户密码直接相关,知道密码能够直接计算两个HASH。区别在于LM是旧的计算方式,windows visa后
广泛采用NT hash来认证,知道NT hash能够直接访问大部分的windows服务,就像知道密码一样
什么是 NET-NTLM?
在客户端向smb这样的服务器请求认证的时候不是直接发送NT HASH,而是发送NTLM hash计算而来的NET-NTLM HASH,NTLMV1和NTLMV2的区别就在计算方式上:NTLMV1用的DES,NTLMV2用的HMAC,显然DES是现代计可
破解的,因此现在几乎默认的是NTLMV2
1 | C = 8-byte server challenge, random |
1 | SC = 8-byte server challenge, random |
NTLMrelay原理是什么?
其实本质上NTLMrelay就是中间人攻击,因此要求有几个:
1.客户端没有开启smb签名的机制,否则无法冒充客户端和服务器通信。
2.位于受害者链路上,能够监听受害者发出的NTBS 或者 LLMNR广播
3.受害者通过win+R或者在fs中主动访问某个不存在的域名,比如\\hacker或者http://hacker;或者受害者因为漏洞访问一个不存在的域名;注意,需要是浏览器或者win+R(重点是实现了NTLM认证,curl就不行)
一旦满足上面的条件,就可以用impacket-ntlmrelayx -t ldaps://xxxx -debug -i -smb2support来获取一个交互的ldap shell,其原理和smbexec相同,就是用NET-NTLM中继去访问真实ldap服务,并且用RPC来执行cmd.exe,结果以文本形式导出到一个smb可访问的地方并读取。这个脚本做的事情是这些:
1.开启smb,http等服务(默认端口),监听所有本ip上的NTBS 或者 LLMNR 广播或者多播
2.检测到后,返回虚假ip(由我们控制)并发送一个响应,要求提供NET-NTLM,这个时候受害者的windows就会无条件直接发送NET-NTLM过去,只要目标用户登录即可,无需再输入密码
3.截取NET-NTLM并开始假冒受害者和服务器通信
利用探测:
`netexec smb --gen-relay-list targets.txt $SUBNET`
具体的技术细节太长,不展开说明,可以查看更详细的描述来理解
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 sU94r's blog!
评论