ismailops/recon-engine
GitHub: ismailops/recon-engine
recon-engine 是一款集成的侦察工具包,用于自动化子域名枚举、端口扫描和HTTP指纹识别,以支持安全评估中的网络资产发现。
Stars: 0 | Forks: 0
# recon-engine
用于授权安全评估的专业侦察工具包。
从单一CLI执行被动子域名枚举、异步TCP端口扫描、HTTP
指纹识别、结果存储和结构化报告生成。
## 功能特性
- 通过crt.sh证书透明度日志进行被动子域名枚举
- 可配置并发数和超时时间的异步TCP端口扫描
- HTTP/HTTPS指纹识别:状态码、服务器头、技术栈推断
- 基于SQLite的结果存储,具备完整会话历史
- JSON导出和Markdown报告生成
- 带有Rich终端输出的简洁CLI
- 在每个边界进行输入验证和Shell注入防护
- 无需root权限
## 架构
```
recon-engine/
├── core/
│ ├── engine.py # Orchestrates scanner modules
│ └── validator.py # Parses and validates all user input
├── scanners/
│ ├── subdomain.py # crt.sh passive enumeration + DNS resolution
│ ├── ports.py # Async TCP connect scanner
│ └── http_fingerprint.py# Header analysis and technology detection
├── database/
│ ├── schema.py # DDL
│ └── store.py # SQLite CRUD layer
├── models/
│ ├── target.py # Validated Target model
│ └── results.py # SubdomainResult, PortResult, HTTPFingerprint, ScanSession
├── reports/
│ └── markdown_report.py # Markdown report renderer
├── utils/
│ ├── exporter.py # JSON export
│ └── logging_config.py # Logging setup
├── tests/ # pytest test suite
├── docs/ # Architecture, database, and usage documentation
└── main.py # CLI entry point (Typer)
```
各层完整描述和数据流图详见 [docs/architecture.md](docs/architecture.md)。
## 安装说明
需要Python 3.11或更高版本。
```
git clone https://github.com/ismailops/recon-engine.git
cd recon-engine
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
```
## 使用方式
### 完整扫描
```
python main.py scan example.com
```
按顺序运行子域名枚举、端口扫描和HTTP指纹识别。
结果将持久化保存到 `outputs/recon.db`。
### 子域名枚举
```
python main.py subdomains example.com
```
### 端口扫描
```
python main.py ports example.com
python main.py ports example.com --ports 22,80,443,8080,8443
```
### 导出与报告
```
python main.py export example.com # outputs/_.json
python main.py report example.com # outputs/__report.md
```
### 会话历史
```
python main.py sessions
```
### 选项
| 标志 | 描述 |
|---|---|
| `--ports` | 逗号分隔的端口列表。默认:27个常用端口。 |
| `--verbose` | 向标准错误输出启用DEBUG日志 |
| `--no-confirm` | 跳过授权提示(用于CI) |
完整使用参考:[docs/usage.md](docs/usage.md)
## 运行测试
```
pytest tests/ -v
```
测试套件涵盖输入验证、模型约束、数据库CRUD操作、JSON导出和Markdown报告生成。测试期间不会进行任何网络调用。
## 安全说明
**此工具仅用于授权安全测试。**
在大多数司法管辖区,未经授权对系统进行扫描是非法的。
代码库中的技术控制措施:
- 所有用户提供的目标在进入任何扫描器前,都会经过 `core/validator.py` 的验证。
Shell元字符、路径遍历序列和其他恶意输入将被拒绝。
- 代码库中不存在任何使用用户提供的参数调用 `subprocess` 的情况。
- 所有数据库查询均使用参数化语句。SQL中不存在字符串插值。
- HTTP请求包含描述性的User-Agent,用于标识该工具。
- 敏感的响应头(`Set-Cookie`、`Authorization`)在存储前会被剥离。
- 所有网络操作均强制执行请求超时。
- 无需且不存储任何凭据、API密钥或秘密信息。
## 路线图
- DNS暴力枚举(基于字典,可选启用)
- Shodan和SecurityTrails集成,用于更广泛的被动枚举
- HTML报告输出
- 针对常见暴露的CVSS注释发现
- 速率限制和扫描节流控制
- 并发多目标扫描
- Docker镜像
## 截图
显示各命令CLI输出的截图位于 `screenshots/` 目录。
这些截图将在首次生产运行后替换为实际的终端捕获。
| 截图 | 描述 |
|---|---|
| `screenshots/scan_full.png` | 带有Rich表格的完整扫描输出 |
| `screenshots/subdomains.png` | 子域名枚举结果 |
| `screenshots/ports.png` | 带有服务名称的端口扫描输出 |
| `screenshots/report.md` | 生成的Markdown报告示例 |
## 许可证
MIT许可证。详见 [LICENSE](LICENSE)。
标签:计算机取证, 逆向工具