Venu-exe/Beast

GitHub: Venu-exe/Beast

Beast 是一个用纯 C 编写的多线程侦察工具包,为漏洞赏金猎人提供从 DNS 到端口扫描、TLS 检查和安全头审计的一站式攻击面发现能力。

Stars: 1 | Forks: 0

![C](https://img.shields.io/badge/Language-C-00599C?style=for-the-badge&logo=c&logoColor=white) ![Platform](https://img.shields.io/badge/Platform-Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black) ![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge) ![Version](https://img.shields.io/badge/Version-3.0-blue?style=for-the-badge) ![Bug Bounty Tool](https://img.shields.io/badge/Bug%20Bounty-Tool-red?style=for-the-badge&logo=hackthebox&logoColor=white) # RECON #### 一个快速、多线程的侦察工具包,专为漏洞赏金猎人设计 —— 使用纯 C 语言编写。 [功能](#features) • [安装](#installation) • [用法](#usage) • [模块](#modules) • [示例](#real-world-examples) • [工作流](#bug-bounty-workflow) • [许可证](#license) ``` ____ _____ ____ ___ _ _ | _ \ | ____/ ___/ _ \| \ | | | |_) || _|| | | | | | \| | | _ < | |__| |__| |_| | |\ | |_| \_\|_____\____\___/|_| \_| DNS + ports + subdomains + TLS + paths v3.0 ``` ## 为什么进行侦察? 大多数侦察工具只是一堆用 shell 脚本拼凑起来的 Python/Go 二进制文件。**recon** 是一个单一编译的 C 二进制文件 —— 支持多线程,除了 `openssl`(每个渗透测试机器上都已安装)之外没有其他运行时依赖,并且只需一条命令即可覆盖漏洞赏金测试的第一个小时。 它结合了 **6 种侦察技术** 来映射目标的攻击面: - 🌐 **DNS 解析** — 目标的 A/AAAA 记录 - 🔁 **反向 DNS** — 对解析到的 IP 进行 PTR 查找 - 🧭 **子域名枚举** — 利用 CNAME + 悬空 CNAME/接管候选标记的多线程字典爆破 - 🔌 **端口扫描** — 带有 banner 抓取和 HTTP 指纹识别的多线程 TCP connect 扫描 - 🔐 **TLS 证书检查** — 主题、颁发者、SAN 以及过期警告 - 🗂️ **HTTP 路径发现** — 检查常见的后台管理面板、密钥和配置文件 ## 功能 | 功能 | 描述 | |---|---| | **DNS + 反向 DNS** | 解析目标的每个 A/AAAA 记录,并对主 IP 进行 PTR 查找 | | **多线程子域名枚举** | 基于字典的爆破(内置约 200 词的列表或使用您自己的列表),在 worker 线程池中运行 | | **CNAME 接管标记** | 对 CNAME 指向已知第三方服务(GitHub Pages、S3、Heroku、Azure 等)的子域名进行标记,以便手动审查悬空 CNAME | | **多线程端口扫描** | 在精选的 Top 端口列表、范围或显式列表上进行非阻塞 TCP connect 扫描 | | **Banner 抓取 + HTTP 指纹识别** | 读取开放端口上的原始 banner;在 Web 端口上,提取 `Server:` 头和 `` | | **TLS 证书检查** | 主题/颁发者 CN、有效期窗口、SAN 以及过期警告(已过期 / 即将过期) | | **HTTP 路径发现** | 检查约 50 个常见路径(`.git/config`、`.env`、`/admin`、`/actuator/health`、备份文件等)及其状态码 | | **安全头审计** | 对 HSTS、CSP、X-Frame-Options、X-Content-Type-Options、Referrer-Policy、Permissions-Policy、COOP/CORP 进行 A-F 评级 | | **JSON 输出** | 机器可读报告,可输入到其他工具/pipeline 中 | | **CSV 输出** | 扁平化的、易于电子表格处理的导出文件,包含每个子域名/端口/路径的发现 | | **多目标模式** | 对来自文件的一系列目标运行整个 pipeline | | **速率限制** | 爆破请求之间可配置的延迟,以保持在共享基础设施上的礼貌性 | ## 安装 ### 前置条件 ``` # Debian/Ubuntu/Kali sudo apt install build-essential libssl-dev # Fedora/RHEL sudo dnf install gcc make openssl-devel # Arch sudo pacman -S openssl base-devel ``` ### 构建 ``` git clone https://github.com/Venu-exe/Beast.git cd recon make ``` 就是这样。位于 `bin/recon` 的单一二进制文件,不需要 pip,不需要 npm,也不需要 cargo。 ### 验证 ``` ./bin/recon --version # recon v3.0 ``` ## 用法 ``` ./bin/recon <target> [options] ./bin/recon -L <targets_file> [options] ``` | 标志 | 描述 | 默认值 | |---|---|---| | `-p <ports>` | `"top"`、`"1-1000"` 或 `"22,80,443"` | `top` | | `-w <wordlist>` | 子域名字典路径,或 `default` 使用内置列表 | (禁用) | | `-x <wordlist>` | 启用 HTTP 路径发现;使用 `default` 或字典文件 | (禁用) | | `--tls` | 在任何看起来像 TLS 的开放端口上探测 TLS 证书 | 关闭 | | `--headers` | 审计 HTTP 安全头并评级 A-F | 关闭 | | `-T <threads>` | 用于扫描/爆破模块的 worker 线程数 | `50` (最大 `200`) | | `-t <seconds>` | 每次连接超时时间 | `2` | | `-d <ms>` | 爆破请求之间的延迟(礼貌性/速率限制) | `0` | | `-o <file>` | 将文本报告写入文件并同时输出到 stdout | (仅 stdout) | | `-j <file>` | 同时写入机器可读的 JSON 报告 | (禁用) | | `-c <file>` | 同时写入 CSV 报告(子域名/端口/路径,各占一行) | (禁用) | | `-L <file>` | 对文件中的每个目标(每行一个)运行完整的 pipeline | (禁用) | | `-s` | 跳过端口扫描(仅 DNS/子域名/路径/TLS) | 关闭 | | `--no-color` | 在终端输出中禁用 ANSI 颜色 | 自动检测 | | `-V`, `--version` | 打印版本并退出 | | | `-h`, `--help` | 显示帮助 | | ## 模块 ### 🌐 DNS 解析 + 反向 DNS 始终首先运行。解析目标的每个 A/AAAA 记录,并对主 IPv4 地址执行 PTR 查找。 ``` ./bin/recon target.com -s ``` ``` [*] DNS resolution for target.com: IPv4 93.184.216.34 IPv6 2606:2800:220:1:248:1893:25c8:1946 [*] Reverse DNS: 93.184.216.34 -> (no PTR record) ``` ### 🧭 子域名枚举(多线程,感知 CNAME) ``` ./bin/recon target.com -w wordlists/subdomains-small.txt -s ``` ``` [+] api.target.com -> 172.66.0.10 (CNAME: target.herokuapp.com -- review for possible dangling CNAME) [+] www.target.com -> 93.184.216.34 [*] Subdomain enumeration complete: 2 found (checked 216 candidates) ``` **漏洞赏金用途:** 标记为“审查可能的悬空 CNAME”的条目指向常被滥用于子域名接管的第三方服务 —— 值得使用 `subjack`/`tko-subs` 等工具或手动进行人工检查。 ### 🔌 端口扫描 + Banner 抓取 + HTTP 指纹 ``` ./bin/recon target.com -p top -T 100 ``` ``` 80 OPEN HTTP/1.1 301 Moved Permanently 443 OPEN | Server: nginx/1.18.0 | Title: Target Inc 22 OPEN SSH-2.0-OpenSSH_8.9p1 ``` ### 🔐 TLS 证书检查 ``` ./bin/recon target.com -p 443 --tls -s ``` ``` [*] TLS certificate for target.com:443 Subject CN : target.com Issuer CN : DigiCert Global CA Valid from : Jan 10 00:00:00 2026 GMT Valid to : Feb 09 23:59:59 2027 GMT Status : valid (194 days remaining) SANs : target.com, www.target.com, api.target.com ``` **漏洞赏金用途:** SAN 通常会暴露内部主机名和相关域名;已过期或即将过期的证书值得标记。 ### 🗂️ HTTP 路径发现 ``` ./bin/recon target.com -p 80,443 -x default -s ``` ``` [200] target.com/robots.txt (312 bytes) [403] target.com/admin (protected) [200] target.com/.git/config (1204 bytes) ``` **漏洞赏金用途:** 暴露的 `.git/config`、`.env` 或备份文件在大多数项目中是一个直接的发现。 ### 🛡️ HTTP 安全头审计 ``` ./bin/recon target.com -p 80,443 --headers -s ``` ``` [*] HTTP security header audit for target.com:443 [x] Strict-Transport-Security [ ] Content-Security-Policy -- no CSP -- reduces defense-in-depth against XSS [x] X-Content-Type-Options [ ] X-Frame-Options -- no clickjacking protection (consider frame-ancestors) [ ] Referrer-Policy -- referrer policy not set -- may leak URLs cross-origin [ ] Permissions-Policy -- no Permissions-Policy -- browser features not scoped [ ] Cross-Origin-Opener-Policy -- no COOP -- reduced isolation from cross-origin windows [ ] Cross-Origin-Resource-Policy -- no CORP set Grade : C (55/100) ``` **漏洞赏金用途:** 在接受此类报告的项目中,缺失的头通常被接受为低危/信息严重程度的发现;如果要报告比信息级别更高的漏洞,请结合真实的 XSS/clickjacking PoC。 ## 真实场景示例 ### 针对单个目标的完整侦察 pipeline ``` ./bin/recon target.com \ -w wordlists/subdomains-small.txt \ -x default \ --tls \ -T 100 -d 50 \ -o report.txt -j report.json ``` ### 跨整个范围列表的侦察 ``` # targets.txt:每行一个 host/domain,已确认在范围内 ./bin/recon -L targets.txt -w default -x default --tls -j scope-report.json ``` ### 仅快速端口扫描 ``` ./bin/recon target.com -p 1-1000 -T 150 -s ``` 等等 —— `-s` 会跳过端口扫描;要进行实际扫描请去掉它: ``` ./bin/recon target.com -p 1-1000 -T 150 ``` ## 漏洞赏金工作流 ``` ┌───────────────┐ ┌───────────────────┐ ┌──────────────────┐ │ DNS + rDNS │────▶│ Subdomain enum │────▶│ Port scan │ │ (resolve) │ │ (+ CNAME flags) │ │ (per host) │ └───────────────┘ └───────────────────┘ └──────────────────┘ │ ┌──────▼──────────┐ │ TLS cert probe │ │ (SANs, expiry) │ └──────┬──────────┘ │ ┌──────▼──────────┐ │ Path discovery │ │ (.git, .env...) │ └─────────────────┘ ``` ## 项目架构 ``` recon/ ├── Makefile # GNU Make build system ├── LICENSE # MIT License ├── README.md ├── .gitignore ├── include/ │ ├── common.h # shared config, PortResult struct, report()/color macros │ ├── report.h # logging (stdout + optional file, colorized) │ ├── dns_utils.h # DNS resolution + reverse DNS + canonical-name lookup │ ├── net_utils.h # timeout-based connect()/recv() │ ├── http_probe.h # HTTP Server/<title> probing │ ├── portscan.h # multi-threaded TCP connect scan │ ├── subdomain.h # threaded wordlist subdomain enum + CNAME flags │ ├── http_paths.h # threaded HTTP common-path discovery │ ├── tls_probe.h # OpenSSL TLS certificate inspection │ └── json_report.h # JSON report builder └── src/ # implementation, mirrors include/ ├── main.c # CLI parsing + pipeline orchestration ├── report.c, dns_utils.c, net_utils.c ├── http_probe.c, portscan.c, subdomain.c ├── http_paths.c, tls_probe.c, json_report.c └── wordlists/ └── subdomains-small.txt # ~200-entry default subdomain list ``` ## 免责声明 ## 许可证 [MIT License](LICENSE) — 使用它,fork 它,用它进行 hack。 ## 作者 **Venu** ([@Venu-exe](https://github.com/Venu-exe)) **如果这个工具帮助您发现了一个 bug,请考虑给它点个 ⭐**</div><div><strong>标签:</strong>GitHub, 安全测试工具, 实时处理, 客户端加密, 密码管理, 数据统计, 服务器安全, 端口扫描</div></article></div> <!-- 人机验证 --> <script> (function () { var base = (document.querySelector('base') && document.querySelector('base').getAttribute('href')) || ''; var path = base.replace(/\/?$/, '') + '/cap-wasm/cap_wasm.min.js'; window.CAP_CUSTOM_WASM_URL = new URL(path, window.location.href).href; })(); </script> </body> </html>