SMBRelay的攻击是一种很好的渗透技术,即使目标服务器补丁打的比较勤,SMBRelay攻击仍然可能渗透到你重要服务器。
NTLM是一种挑战/响应验证机制,在SMBRelay攻击中,攻击者要以中间人攻击方式来实施。攻击者等待某人来验证在他网络上的目标服务器。这样一来可以利用漏洞扫描器+管理员自动验证主机脚本。当自动化进程连接到攻击者,他通过他的目标(网络上的其他系统,也许是服务器)进行身份验证。目标会产生挑战(challenge),并将其发送给攻击者。攻击者发送挑战回到原始扫描系统的。扫描系统拥有哈希值的加密功能正确密码的哈希值会将其发送给攻击者。攻击者传递正确的加密的响应返回给他的目标,并成功验证。
POC:
攻击者IP - 10.10.12.10
目标IP - 10.10.12.20
每晚清单扫描器IP - 10.10.12.19
利用Metasploit的smb_relay模块,攻击者10.10.12.10,Metasploit如下:
使用一个简单的Windows for循环来模拟扫描服务器的网络。我运行如下的命令。
当扫描器(10.10.12.19)连接到10.10.12.10(我的Metasploit监听)验证尝试会传递到目标服务器(10.10.12.20)。
Metasploit自动使用的验证SMB会话,Meterpreter就会对目标发起payload。
如下图所示,注意Metasploit,清单扫描器在发送一个“Access Denied”时,它试图连接到10.10.12.10。但是,
我们得到了一个攻击者的机器上运行Meterpreter shell的目标(10.10.12.20)。
Metasploit的SMBRelay只支持NTLMv1,因此通过改变一下设置即可保护自己免受这种攻击(可输入secpol.msc)…
改为NTLMv2后再次尝试Metasploit
运行了Metasploit exploit,得到了“Failed to authenticate(验证失败)”错误信息。
由此看来DRAT的安全协议已经挫败了我们的计划。
不过,不用担心,现在国外某安全团队开发了一个由python实现的psexec模块与IMPACKET模块的整合体:SMBRELAYX.PY。
IMPACKET模块里的SMBRELAYX.PY脚本是带有NTLMv2的支持! 下载地址
你需要下载最新版本的IMPACKET模块启动运行。为了解决路径问题,我把所有的实例和其他模块都放到了同一个目录中,然后改变import以指定正确的目录。 SMBRELAYX需要身份验证后在远程主机上运行可执行文件。让Meterpreter使用msfpayload创建一个EXE文件,然后设置SMBRELAYX。 Smbrelayx.py需要两个参数:
-h是你所要攻击的主机; -e 是在远程主机上启动进程。
提供了这些选项,就坐下来等待,夜间清单扫描器(10.10.12.19)连接到您的系统。
下面,我创建的Meterpreter可执行文件,并调用smbrelayx.py来执行msfpayload:
因为我们使用的是 meterpreter reverse shell我们还必须要设置Metasploit。所以,它是准备接收payload连接后才开始执行目标。
multi/handler
现在,试图将(10.10.12.19)连接到攻击者的Linux(10.10.12.10)。
我们得到了一个 ”System cannot find the path specified(系统找不到指定的路径)” 错误,而这个错误会让系统管理员可能会质疑,为什么他的用户名和密码在没有目标工作之前,为什么路径会不存在。smbrelayx.py脚本发出的信息返回给了管理员,更加隐蔽的Metasploit信息,就不太可能注意得到了。我们立即看到发生在 smbrelayx.py脚本情况。它会验证10.10.12.20。10.10.12.19使用用户名和密码来启动Meterpreter服务进程。
payload传递到目标之后NTLMv2验证完毕 ,为了使shell稳定,我们需要快速地迁移到另一个更稳定的进程(我们可在Meterpreter使用一个迁移脚本来帮助自动化迁移)。
全新的Meterpreter shell 它是一个Python模块,你可以把这个脚本纳入到你自己的自动攻击工具中。
原文地址:http://pen-testing.sans.org/blog/pen-testing/2013/04/25/smb-relay-demystified-and-ntlmv2-pwnage-with-python