y0uall/pwnbox

GitHub: y0uall/pwnbox

pwnbox 是一款用 Rust 编写的自动化侦察与枚举工具,针对 HackTheBox 靶机一键完成从端口扫描到服务枚举、Web 爆破和凭据检测的全流程并生成报告。

Stars: 1 | Forks: 0

pwnbox banner

pwnbox

针对于 HackTheBox 的自动化侦察与枚举工具,使用 Rust 编写。

Rust Platform License

将其指向一台靶机,然后去喝杯咖啡。等你回来时,你已经可以获得一份完整的端口扫描、服务枚举、默认凭据检测、目录爆破结果以及一份准备就绪的后续步骤清单。 ## 工作原理 pwnbox 运行一个 **6 阶段的 pipeline** —— 每个阶段都会将结果传递给下一个阶段,并且耗时较长的任务(UDP、漏洞脚本、feroxbuster)会在后台运行,因此不会发生任何阻塞。 ``` [0/6] Connectivity ping + TTL-based OS guess [1/6] DNS zone transfer, reverse DNS, auto /etc/hosts [2/6] TCP rustscan -> nmap -sC -sV on open ports [bg] Vuln scan nmap --script vuln (background) [3/6] UDP top 100 ports (background, needs sudo) [4/6] Web curl, whatweb, feroxbuster, vhost brute (background) [5/6] Services parallel: SSH, FTP, SMB, RPC, NFS, LDAP, Kerberos, MySQL, PostgreSQL, Redis, MSSQL, SMTP, SNMP, WinRM ``` 所有结果都会被收集到一份 **文本报告**、一份可选的 **JSON 报告**,以及保存好的 nmap 输出文件中,方便你稍后使用 grep 进行检索。 ## 功能特性 - **20 个服务模块**,基于开放端口进行自动检测 - 通过 tokio 实现 **并行执行** —— 服务扫描、目录爆破、vhost 扫描均可并发运行 - 针对 MySQL、PostgreSQL、Redis、MSSQL、FTP 的 **默认凭据测试** - **SSL 证书主机名发现** —— 从 HTTPS 证书中提取 CN/SAN - **自动配置 /etc/hosts** —— 发现的主机名会被自动添加 - **`--fast` 模式** —— 仅进行 TCP + web 标头扫描,一分钟内即可完成 - **`--resume`** —— 在重复运行时复用缓存的 nmap 输出 - **`--watch N`** —— 每 N 分钟重新扫描一次端口,并在发生变化时发出警报 - **配置驱动** —— 字典、工具路径、超时设置全部集中在 `config.toml` 中 - **工具依赖检查器** —— 在启动时对缺失的工具发出警告 ## 安装说明 ### 快速安装 (Kali / Ubuntu / Debian) ``` sudo ./setup.sh ``` 这将安装所有依赖项,并将 pwnbox 构建到 `/usr/local/bin/`。 ### 手动安装 ``` curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh cargo build --release sudo cp target/release/pwnbox /usr/local/bin/ ``` ### 预编译二进制文件 ``` chmod +x pwnbox sudo mv pwnbox /usr/local/bin/ ``` ## 使用说明 ``` pwnbox [OPTIONS] ``` ### 示例 ``` # 全面扫描 pwnbox Lame 10.10.10.3 # 快速模式 — 仅 TCP + web headers pwnbox Lame 10.10.10.3 --fast # 跳过不需要的服务 pwnbox Lame 10.10.10.3 --skip smb,ldap,udp # 恢复之前的扫描(复用缓存的 nmap 输出) pwnbox Lame 10.10.10.3 --resume # 在文本报告之外同时输出 JSON pwnbox Lame 10.10.10.3 --json # 监视模式 — 每 5 分钟重新扫描 pwnbox Lame 10.10.10.3 --watch 5 # 自定义输出目录 pwnbox Lame 10.10.10.3 -o /tmp/lame-scan ``` ### 选项 | 参数标志 | 描述 | |---|---| | `-f, --fast` | 快速模式:仅进行 TCP 扫描 + web 标头获取 | | `-s, --skip ` | 跳过指定服务(以逗号分隔,例如:`smb,ldap,udp`) | | `--resume` | 复用上一次运行中缓存的 nmap 输出 | | `--json` | 在生成文本报告的同时输出 JSON 报告 | | `--watch ` | 每 N 分钟重新扫描一次端口,并在发生变化时发出警报 | | `-o, --output ` | 输出目录(默认:`~/htb//`) | | `-c, --config ` | 指定 config.toml 的路径 | | `--init-config` | 生成默认的 `config.toml` 文件并退出 | | `-v, --verbose` | 显示完整的工具输出 | | `-t, --timeout ` | 每条命令的全局超时时间 | | `--ferox-threads ` | Feroxbuster 的线程数 | ## 输出结果 报告将保存至 `~/htb//`: ``` ~/htb/lame/ lame-20260331-180059.txt text report lame-20260331-180059.json JSON report (with --json) nmap-tcp.txt raw nmap TCP output nmap-udp.txt raw nmap UDP output nmap-vuln.txt vuln scan output ferox-80.txt directory brute results vhosts-443.txt virtual host discoveries ``` ## 配置说明 ``` pwnbox --init-config ``` 配置文件查找顺序:`./config.toml` -> `~/.config/pwnbox/config.toml` -> 内置默认配置。 ``` [defaults] timeout = 300 ferox_threads = 50 fast = false verbose = false [wordlists] dir_medium = ["/opt/SecLists/Discovery/Web-Content/raft-medium-directories.txt"] dns_subdomains = ["/opt/SecLists/Discovery/DNS/subdomains-top1million-5000.txt"] usernames = ["/opt/SecLists/Usernames/xato-net-10-million-usernames.txt"] [tools] # 如果工具不在 $PATH 中则覆盖工具路径(留空则使用默认值) nmap = "" rustscan = "" feroxbuster = "" ``` ## 必需工具 **必须安装**(缺少这些工具 pwnbox 将无法启动): - `nmap`, `curl`, `ping` **建议安装**(如果缺少,pwnbox 会发出警告): - `rustscan` —— 快速端口发现 - `feroxbuster` —— 目录暴力破解 - `ffuf` 或 `gobuster` —— vhost 扫描 运行 `sudo ./setup.sh` 即可一次性安装所有工具。 ## 从源码构建 ``` cargo build --release cargo test cargo clippy -- -D warnings ``` 需要 Rust 1.85+(2024 版本)。 ## 开源协议 [MIT](LICENSE)
标签:HackTheBox, Rust, 可视化界面, 插件系统, 网络流量审计, 自动化侦察, 通知系统