pwviptbl/ReconForge
GitHub: pwviptbl/ReconForge
面向红队操作的自动化渗透测试框架,整合多种安全工具实现从侦察到漏洞评估的全流程编排。
Stars: 2 | Forks: 0
# 🔍 ReconForge
## 介绍
**ReconForge** 是一个为 **Red Team** 操作开发的自动化渗透测试框架。当前流程已简化,只需少量命令即可正常运行:发现攻击面、映射真实入口、测试关键点并生成报告。
### 为什么选择 ReconForge?
- **易于操作**:为常见场景提供预置配置文件
- **模块化**:可扩展的插件系统
- **功能全面**:从侦察到漏洞利用
- **自动化**:使用单个命令执行完整扫描
## 功能
### Red Team 能力
| 类别 | 描述 |
|-----------|-----------|
| **Reconnaissance** | DNS、子域名、Web 技术、网络映射 |
| **Network Attack Surface** | 端口扫描、Nmap NSE、SSL/TLS、服务暴露 |
| **Web Attack Vectors** | 爬取、表单映射、真实请求及 Web 漏洞 |
| **Vulnerability Assessment** | Nuclei 模板和基于 HTTP 请求的扫描器 |
| **Exploit Intelligence** | 自动搜索漏洞利用代码 |
| **Firewall/WAF Detection** | 识别活跃的防护措施 |
### 推荐配置文件
与其手动组装长长的插件列表,更推荐使用配置文件:
- `web-map`:对路由、表单、上传点和参数进行温和映射
- `web-test`:`web-map` 加上基于请求的 Web 扫描器
- `infra`:端口、服务、SSL、防火墙和基础设施暴露
插件仍可通过 YAML 启用,但现在默认路径是通过配置文件。
**外部集成**:
- `nmap` - 高级网络扫描器
- `nuclei` - 漏洞扫描器
- `subfinder` - 子域名枚举
- `whatweb` - 技术检测
## 安装
### 系统要求
```
# Debian/Ubuntu/Kali - Instalar dependências
./scripts/system_update.sh
```
### Python 要求
```
pip install -r requirements.txt
```
### 外部工具(可选)
```
# Kali Linux já possui a maioria
sudo apt install nmap nuclei subfinder whatweb
```
## 使用
### 官方路径
项目现在使用单一执行引擎:分阶段 pipeline。
如果您仅运行:
```
./run.sh example.com
```
默认配置文件将是 `web-test`。
### 配置文件
```
# Perfil padrao para web
./run.sh example.com
# Mapear entradas web e requests observadas
./run.sh example.com --profile web-map
# Mapear e testar vetores web
./run.sh example.com --profile web-test
# Foco em infraestrutura
./run.sh example.com --profile infra
# Listar perfis
./run.sh --list-profiles
# Ver saude do ambiente e dependencias
./run.sh --healthcheck
# Mostrar rotas e parametros de um run ja executado
./run.sh --show-web-map 50
# Rodar autenticado com cookies/token carregados de arquivo
./run.sh https://app.exemplo.local/dashboard --session-file sessions/app.yaml
# Modo avancado do mesmo pipeline
./run.sh example.com --pipeline --recon-plugins PortScannerPlugin,WebFlowMapperPlugin
```
### 通过文件进行身份验证会话
要访问需要认证的区域而无需创建固定的项目配置,请创建一个 YAML 或 JSON 文件并传递 `--session-file`。
在 [examples/session.example.yaml](/home/kali/Modelos/ReconForge/examples/session.example.yaml) 有一个现成的模板。
示例:
```
headers:
Authorization: Bearer eyJhbGciOi...
cookies:
PHPSESSID: abc123
XSRF-TOKEN: xyz456
local_storage:
authToken: eyJhbGciOi...
```
或者,如果您愿意,可以使用 `cookie_string`:
```
cookie_string: "PHPSESSID=abc123; XSRF-TOKEN=xyz456"
```
同一个文件会被 `WebFlowMapperPlugin`、HTTP 扫描器和漏洞利用阶段重复使用。
### AI 辅助补充报告
如果环境中配置了 `GEMINI_API_KEY`,`stage_report` 会尝试在最终的 Markdown 中添加两个额外部分:
- `AI 辅助执行摘要`
- `AI 辅助技术解读`
如果密钥不存在、已过期或 API 调用失败,当前的技术报告仍会正常生成,不会中断运行。
### Web map 的实用解读
在运行 `web-map` 或 `web-test` 后,使用:
```
./run.sh --show-web-map 50
```
您将看到:
- 在 DOM 中检测到的表单
- 实际观察到的请求
- 按存储桶分组的参数
- 与每个请求关联的 UI 操作
当 DOM 和真实请求之间存在差异时,观察到的请求为事实来源。
#### 可选:使用 Tor(针对较“喧闹”的插件)
当使用带有暴力破解/模糊测试的插件(例如 `DirectoryScannerPlugin`)时,您可以通过 Tor(SOCKS5 代理)路由请求,以降低 IP 被封锁的风险。
在 `config/default.yaml` 中进行全局配置:
```
network:
tor:
enabled: false
proxy_url: socks5h://127.0.0.1:9050
```
或按插件启用(推荐,仅在有意义的地方应用):
```
plugins:
config:
DirectoryScannerPlugin:
use_tor: true
```
注意:
- Tor 需要在本地运行(默认 SOCKS 端口 `9050`)。
- 要让 SOCKS 与 `requests` 配合工作,需要安装 `pysocks` 依赖项(已包含在 `requirements.txt` 中)。
- 即使 `network.tor.enabled: true`,您也可以通过在插件中设置 `use_tor: false` 来保持某些插件不使用 Tor(例如 `ExploitSearcherPlugin`、`ReconnaissancePlugin`)。
- 基于外部工具的插件(例如 `nuclei`、`whatweb`、`subfinder`)在启用 `use_tor` 时会尝试通过环境变量(`ALL_PROXY`/`HTTP(S)_PROXY`)使用代理,但这取决于工具本身的支持情况。
- 当 `network.tor.enabled: true` 时,项目现在会在启动前验证本地 Tor 代理是否可访问。
- 兼容的 HTTP/浏览器流程开始集中使用 Tor,包括 Playwright 和漏洞利用 pipeline。
- 与 Tor 不兼容的插件(例如使用底层 socket/Nmap/本地 DNS 的扫描)在严格 Tor 模式下会被阻止,以避免流量在代理之外静默泄露。
启动 Tor 服务:
```
sudo apt update
sudo apt install -y tor
# subir e iniciar no boot
sudo systemctl enable --now tor
# verificar se o SOCKS está ouvindo (padrão 9050)
# use sem `-p` para não depender de root e sem regex com escape dobrado
ss -ltn | rg '127\\.0\\.0\\.1:9050|:9050 ' || netstat -ltn | rg '127\\.0\\.0\\.1:9050|:9050 '
```
注意:在 Debian/Kali 上,持续运行的进程通常显示为 `tor@default.service`。
您不需要(通常也无法)直接对其执行 `enable`;启用 `tor.service` 会在引导时拉起 `tor@default.service`。
如果 `systemctl status tor@default` 显示 `active (running)` 但上述命令未返回任何内容,请不带过滤器进行验证:
```
ss -ltn | rg '9050|9051'
```
如果端口 `9050` 未打开,请检查 `/etc/tor/torrc` 并确保:
```
SocksPort 9050
```
可选:尝试大约每 1 分钟切换一次电路。
这在某些场景下可能有帮助,但不保证每次请求都获得新 IP,并可能降低性能/稳定性。
编辑 `/etc/tor/torrc`:
```
MaxCircuitDirtiness 60
```
并重启服务:
```
sudo systemctl restart tor
```
### 额外工具(可选)
某些插件使用外部工具(如果已安装)来增加覆盖率,而无需繁重的暴力破解:
- `KatanaCrawlerPlugin` (katana):用于收集端点的快速爬虫
- `GauCollectorPlugin` (gau):收集历史 URL (Wayback/CommonCrawl)
推荐快捷方式:运行 `scripts/system_update.sh`(现在它会自动安装 `katana` 和 `gau`,以及系统依赖项)。
安装(通过 Go):
```
# katana
go install -v github.com/projectdiscovery/katana/cmd/katana@latest
# gau
go install -v github.com/lc/gau/v2/cmd/gau@latest
# garanta que o binario esta no PATH (geralmente ~/go/bin)
export PATH=\"$HOME/go/bin:$PATH\"
```
关于 `httpx` 的说明:
- 在 Kali/Debian 上可能存在一个 `httpx` 二进制文件,它是 Python HTTPX(HTTP 客户端)的 CLI,而不是 ProjectDiscovery 的工具包。
- 如果您通过 Go 安装 ProjectDiscovery 的 `httpx`,请确保它在 `PATH` 中位于前面(例如:`~/go/bin` 在 `/usr/bin` 之前),否则会调用错误的二进制文件。
## 交互式菜单命令
| 命令 | 描述 |
|---------|-----------|
| `1-N` | 按编号选择插件 |
| `nome` | 按名称选择插件(部分匹配) |
| `r` | 查看详细结果 |
| `d` | 查看当前发现 |
| `s` | 查看发现的服务 |
| `v` | 查看漏洞 |
| `q` | 结束扫描 |
## 报告
### 输出格式
报告保存在 `dados/scan_YYYYMMDD_HHMMSS.json` 中,包含:
- **元数据**:目标、持续时间、执行的插件
- **发现**:主机、端口、服务、技术
- **漏洞**:CVE、严重性、描述
- **错误**:执行失败
### 报告示例
```
{
"metadata": {
"target": "example.com",
"duration_seconds": 45.2,
"plugins_executed": ["PortScannerPlugin", "DirectoryScannerPlugin"]
},
"discoveries": {
"hosts": ["192.168.1.1"],
"open_ports": [22, 80, 443],
"services": [{"port": 80, "service": "HTTP"}]
},
"vulnerabilities": [
{"severity": "HIGH", "title": "SSL Certificate Expired"}
]
}
```
## 项目结构
```
ReconForge/
├── scripts/
│ └── main.py # Ponto de entrada
├── core/
│ ├── minimal_orchestrator.py # Orquestrador principal
│ ├── plugin_manager.py # Gerenciador de plugins
│ ├── plugin_base.py # Classes base
│ └── config.py # Configurações
├── plugins/ # Plugins disponíveis
├── wordlists/ # Wordlists para fuzzing
├── utils/ # Utilitários
└── dados/ # Relatórios gerados
```
## 插件管理
```
# Listar plugins disponíveis
python scripts/manage_plugins.py list
# Habilitar plugin
python scripts/manage_plugins.py enable NomePlugin
# Desabilitar plugin
python scripts/manage_plugins.py disable NomePlugin
```
## 贡献
欢迎贡献!要添加新插件:
1. 在 `plugins/` 中创建一个文件
2. 继承 `BasePlugin`、`WebPlugin` 或 `NetworkPlugin`
3. 实现 `execute()` 方法
4. 插件将被自动检测
## 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件。
ReconForge - 自动化渗透测试框架
为 Red Team 操作而开发
标签:AES-256, ASM, CISA项目, CTI, CVE利用, DNS枚举, Exploit-DB, GitHub, Google, Nmap, Nuclei, Python安全工具, Web安全, 加密, 子域名挖掘, 密码管理, 开源软件, 插件化架构, 插件系统, 攻击模拟, 漏洞扫描器, 漏洞评估, 特征检测, 网络安全, 网络安全审计, 网络安全工具, 自动化渗透测试, 蓝队分析, 虚拟驱动器, 调试插件, 逆向工具, 隐私保护, 驱动签名利用