Venu-exe/Beast
GitHub: Venu-exe/Beast
Beast 是一个用纯 C 编写的多线程侦察工具包,为漏洞赏金猎人提供从 DNS 到端口扫描、TLS 检查和安全头审计的一站式攻击面发现能力。
Stars: 1 | Forks: 0
    
# 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 [options]
./bin/recon -L [options]
```
| 标志 | 描述 | 默认值 |
|---|---|---|
| `-p ` | `"top"`、`"1-1000"` 或 `"22,80,443"` | `top` |
| `-w ` | 子域名字典路径,或 `default` 使用内置列表 | (禁用) |
| `-x ` | 启用 HTTP 路径发现;使用 `default` 或字典文件 | (禁用) |
| `--tls` | 在任何看起来像 TLS 的开放端口上探测 TLS 证书 | 关闭 |
| `--headers` | 审计 HTTP 安全头并评级 A-F | 关闭 |
| `-T ` | 用于扫描/爆破模块的 worker 线程数 | `50` (最大 `200`) |
| `-t ` | 每次连接超时时间 | `2` |
| `-d ` | 爆破请求之间的延迟(礼貌性/速率限制) | `0` |
| `-o ` | 将文本报告写入文件并同时输出到 stdout | (仅 stdout) |
| `-j ` | 同时写入机器可读的 JSON 报告 | (禁用) |
| `-c ` | 同时写入 CSV 报告(子域名/端口/路径,各占一行) | (禁用) |
| `-L ` | 对文件中的每个目标(每行一个)运行完整的 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/ 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,请考虑给它点个 ⭐**
标签:GitHub, 安全测试工具, 实时处理, 客户端加密, 密码管理, 数据统计, 服务器安全, 端口扫描