为PowerShell载荷添加出口暴力破解功能
作者:Robert Schwass
我们都经历过这种情况:精心制作了钓鱼邮件,注册了完美域名,多处理器监听器设置得天衣无缝,然后等待却毫无结果。出口数据包过滤摧毁了所有努力。
虽然有针对此类情况的专用载荷和监听器,通常效果不错,但像我一样,你可能希望有更多选择。PowerShell最近成了我的主力工具,因此我决定编写几行脚本,尝试所有端口直至找到开放的端口,并在载荷中使用该端口。
确保为监听器设置自己的主机地址,注意$wait
变量设置了2000毫秒超时,可增加该值以确保客户端与服务器之间有足够时间,但遍历所有端口会更耗时,请根据需要调整。
在服务器端,我希望有同样多的选择。无论使用何种监听器(Metasploit multi/handler或各种cat工具如nc、ncat、PowerCat、gcat、dnscat等),我都需要一个能处理任意端口反向Shell的解决方案。iptables来救援!这一行命令将所有65k及以上端口转发至我选择的端口(本例为4444)。
设置iptables后,启动Metasploit反向TCP监听器。记住使用iptables命令中指定的端口(4444)。
将第一段代码放在你最喜欢的PowerShell反向TCP载荷前。我使用社会工程学工具包(SET)生成了我的载荷。只需修改代码以使用在出口循环中设置的IP地址($address = $Computername
),并注释掉下面设置端口的行,因为我已经在出口循环中设置了$port
变量。
观察PowerShell运行情况,当它击中端口25时(这是第一个开放端口),Shell被触发。
这并不新鲜
我知道Metasploit有multi/shell/reverse_tcp_allports
载荷来监听所有端口。但如我所说,我们需要灵活性。我们并不总能使用花哨的Metasploit反向TCP监听器。也许你获得了DMZ中一个旧未用开发Web服务器的root访问权限,并想用它作为载荷的着陆点?通常有约束阻碍安装所有工具。也许你入侵的盒子已经运行了ncat,因为用户随Nmap安装了它。无论何种原因无法使用multi/shell/reverse_tcp_allports
载荷,此技术可能有所帮助。
使用PowerCat载荷的相同概念
我启动并运行了PowerCat,生成了一个载荷。
这输出了大量代码,但在底部有主函数的执行。这似乎是放置一些变量的好地方。
因此,我将循环放在调用Main
函数之前,以便在其他所有内容之前执行。并将函数调用中的IP地址和端口号更改为我循环中的相应变量。(PowerCat载荷不喜欢PS ISE,因此我使用了Notepad++)
我将此脚本保存为payload.ps1
并启动我的持久netcat监听器。再次使用端口4444。我们必须持久,因为载荷会击中端口两次并会杀死监听器。
然后我执行payload.ps1
。
一旦击中端口25(第一个开放端口)……成功!
结论
就这样。几行PowerShell和一些iptables,你就有了一种可能暴力破解某些试图阻止出口流量的网络的方法。如果你花时间将代码放在系统上,为什么不添加几行代码来增加获取Shell的机会?即使你能使用Metasploit Multi/Handler监听器的allports
变体,向PowerShell载荷添加简单循环也能大大增加成功几率。
研究限制
我在使用REJECT和DROP数据包的iptables上测试了此方法,它有效。在企业防火墙后,你可能会有不同结果。
还有其他方法可以用PowerShell测试开放端口。在我的研究中,我使用的方法允许我进行带超时的完整连接,这似乎效果最好。
*我们喜欢客座文章!想为我们写作?使用我们的联系表格告诉我们你的标题和想法的简要摘要。