PowerShell载荷中的出口暴力破解技术实现

本文详细介绍了如何通过PowerShell脚本实现出口流量暴力破解,绕过网络出口过滤,结合iptables端口转发与多种监听工具,提升反向Shell连接成功率。

添加出口暴力破解到PowerShell载荷

我们都经历过这种情况。您精心制作了完美的钓鱼邮件,注册了一个很棒的域名,您的多处理器设置得如此完美。然后您等待,但什么也没有发生。出口数据包过滤摧毁了您所有的辛勤工作。

现在有一些专门为此设计的载荷和监听器,它们通常效果很好。但如果您像我一样,您会希望有更多选择。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测试开放端口。在我的研究中,我使用的方法允许我进行带有超时的完整连接,这似乎效果最好。


*我们喜欢客座文章!想为我们写作吗?使用我们的联系表单告诉我们您的标题和想法的简要摘要。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计