mohamedxk9tb/BladeRecon
GitHub: mohamedxk9tb/BladeRecon
BladeRecon 是一款面向漏洞赏金和 Web 渗透测试的轻量级模块化侦察框架,覆盖从子域名发现到漏洞扫描与报告生成的完整攻击面发现工作流。
Stars: 3 | Forks: 0
# BladeRecon






BladeRecon 是一个轻量级的侦察框架,专为漏洞赏金、Web 渗透测试以及侧重于报告的攻击面发现而设计。它保持工作流以终端为核心和模块化,同时生成整洁的 TXT、JSON、JSONL、Markdown 和 HTML 输出。
开发者:[Mohamed Kotb](https://github.com/mohamedxk9tb)
## 项目概述
BladeRecon 帮助你从目标域名获取可读的侦察报告:
```
subdomains -> probe -> js -> endpoints -> secrets -> parameters -> intelligence -> advanced -> screenshots -> nuclei -> report
```
它的设计目标是:
- 轻量级且对 Windows 友好
- 对初学者友好,且不隐藏操作细节
- 适用于需要安全默认设置的漏洞赏金和小型渗透测试工作流
- 易于手动检查、基于文件自动化,以及作为报告交付
它无意取代 Amass、分布式侦察堆栈或企业级扫描器。
### CLI 预览

CLI 预览展示了终端优先的工作流:带有品牌标识的启动界面、
模块状态输出、依赖检查和扫描摘要。这非常重要,
因为 BladeRecon 专为需要了解正在运行什么、跳过了什么以及
将产物写入何处的研究人员而设计。
数据政策:使用了经过脱敏处理的 `example.com` 目标,无虚假发现,无敏感数据。
### 报告预览

报告预览展示了深色离线报告,包括决策
仪表板、“从这里开始”的调查队列、活动测试计划、支持性
证据、发现状态和性能分析。这很重要,因为
BladeRecon 的输出旨在帮助研究人员确定后续工作的优先级,而
不仅仅是统计发现的产物数量。
数据政策:使用了经过脱敏处理的样本数据,无任何虚假发现。
## 功能
| 领域 | 能力 |
| --- | --- |
| 子域名 | 被动来源、来源归因、缓存、可选的轻量级 DNS 扩展 |
| 探测 | 存活主机、状态码、重定向、标题、内容长度、服务器/CDN/WAF 提示 |
| JavaScript | 从存活主机查找外部 JavaScript 资产,并在实时 HTML 受阻时复用历史 JS |
| Endpoints | 从已下载和历史 JavaScript 中提取 endpoint 候选项 |
| 密钥 | 信息性密钥模式检测,带有置信度和风险标签 |
| 参数 | 历史 URL 来源,加上本地回退 URL 清单和 wordlist 候选项 |
| 截图 | 可选的 Playwright 截图,带有重复/占位符过滤功能 |
| 情报 | 技术、基础设施、云资产、风险和模板选择上下文 |
| 高级侦察 | 历史 URL、历史 JS、低噪声内容发现、安全标头资产,以及可解释的资产优先级排序 |
| Nuclei | 可选的 Nuclei 封装器,带有安全、均衡、激进、情报引导的配置文件、ROI 限制,以及在合理情况下的轻量级基线安全网 |
| 报告 | 深色主题的离线 HTML 和 Markdown 报告,带有管理仪表板、统一的“我该从哪里开始”队列、活动测试计划、分离的研究/风险评分、章节搜索、导出和性能分析 |
| 安全性 | 安全配置文件、请求上限、单主机并发、速率限制和 Nuclei 超时报告 |
| 实用工具 | Doctor、修复、缓存管理、恢复状态和安装助手 |
## 支持的模块
| 命令 | 描述 | 主要输出 |
| --- | --- | --- |
| `subdomain` | 从多个来源发现子域名 | `subdomains.txt`, `subdomains.json`, `subdomains.jsonl` |
| `probe` | 探测存活主机 | `alive.txt`, `probe.json`, `probe.jsonl` |
| `js` | 发现 JavaScript 资产 | `js_files.txt`, `js_files.json` |
| `endpoints` | 从 JavaScript 提取 endpoint | `endpoints.txt`, `endpoints.json` |
| `secrets` | 检测暴露的 JavaScript 密钥模式 | `secrets.txt`, `secrets.json` |
| `param` | 发现 URL 参数 | `parameters.txt`, `parameters.json`, `parameters.jsonl` |
| `intelligence` | 从现有产物生成侦察情报 | `intelligence/*.json`, `technology/technology.json` |
| `advanced` | 从现有产物生成高级侦察情报 | `historical/`, `historical_js/`, `content_discovery/`, `asset_priority.json` |
| `screenshot` | 对存活主机进行截图 | PNG 文件, `failed_screenshots.txt` |
| `nuclei` | 运行 Nuclei 模板 | `results.json`, `results.jsonl`, `results.md` |
| `report` | 生成 Markdown 和 HTML 报告 | `report.md`, `report.html` |
| `full` | 运行标准工作流 | 所有模块输出 |
## 安装说明
请参阅 [INSTALL](INSTALL.md) 获取完整的 Windows、Python、Go、Nuclei、Playwright、Docker 和验证说明。
推荐安装方式:
```
pipx install bladerecon
bladerecon doctor
```
备选安装方式:
```
python -m pip install bladerecon
bladerecon doctor
```
从源码进行开发安装:
```
git clone https://github.com/mohamedxk9tb/BladeRecon.git
cd BladeRecon
python -m venv .venv
.venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install .
bladerecon doctor
```
可选的外部工具:
```
bladerecon install-deps
python -m playwright install chromium
```
使用 `install-deps` 时,BladeRecon 会安装 v3 发布版本的 Nuclei。
## 快速示例
首次安装后从这里开始:
```
bladerecon doctor
bladerecon full example.com --profile safe
bladerecon report example.com
```
`bladerecon scan example.com --profile safe` 也被接受为 `bladerecon full` 的首次使用别名。
```
bladerecon --help
bladerecon doctor
bladerecon subdomain hackerone.com
bladerecon probe hackerone.com
bladerecon js hackerone.com
bladerecon endpoints hackerone.com
bladerecon secrets hackerone.com
bladerecon param hackerone.com
bladerecon intelligence hackerone.com
bladerecon advanced hackerone.com --profile safe
bladerecon report hackerone.com
```
完整工作流:
```
bladerecon full hackerone.com
bladerecon full hackerone.com --profile safe
bladerecon report hackerone.com
```
恢复与缓存:
```
bladerecon resume hackerone.com
bladerecon cache info
bladerecon cache clear
```
Docker:
```
docker build -t bladerecon .
docker run --rm bladerecon doctor
docker run --rm -v "%cd%\results:/app/results" bladerecon full hackerone.com
```
## 命令参考
| 命令 | 示例 | 预期输出 |
| --- | --- | --- |
| `subdomain` | `bladerecon subdomain hackerone.com` | `results/hackerone.com/subdomains/` |
| `probe` | `bladerecon probe hackerone.com` | `results/hackerone.com/probe/` |
| `js` | `bladerecon js hackerone.com` | `results/hackerone.com/js/` |
| `endpoints` | `bladerecon endpoints hackerone.com` | `results/hackerone.com/endpoints/` |
| `param` | `bladerecon param hackerone.com` | `results/hackerone.com/parameters/` 或跳过状态 |
| `intelligence` | `bladerecon intelligence hackerone.com` | `results/hackerone.com/intelligence/` 和 `results/hackerone.com/technology/` |
| `advanced` | `bladerecon advanced hackerone.com --profile safe` | 历史、内容发现、标头资产和优先级产物 |
| `secrets` | `bladerecon secrets hackerone.com` | `results/hackerone.com/secrets/` |
| `screenshot` | `bladerecon screenshot hackerone.com` | `results/hackerone.com/screenshots/` 或跳过状态 |
| `nuclei` | `bladerecon nuclei hackerone.com --profile balanced` | `results/hackerone.com/nuclei/` 或跳过状态 |
| `report` | `bladerecon report hackerone.com` | 最新隔离的完整运行报告,或旧版的 `results/hackerone.com/reports/` |
| `full` | `bladerecon full hackerone.com --profile safe` | 在 `results/hackerone.com/runs//` 下创建新的隔离运行 |
| `doctor` | `bladerecon doctor` | 运行时依赖表 |
| `resume` | `bladerecon resume hackerone.com` | 恢复未完成的完整工作流模块 |
| `cache info` | `bladerecon cache info` | 缓存大小、来源和时间 |
| `cache clear` | `bladerecon cache clear` | 安全缓存清理摘要 |
| `--version` | `bladerecon --version` | 版本、构建日期、Python、平台 |
| `install-deps` | `bladerecon install-deps` | 外部依赖安装助手 |
## Doctor 命令
在首次正式扫描前运行 doctor:
```
bladerecon doctor
```
Doctor 检查:
- Go 可用性
- Nuclei 可用性
- Playwright 包
- Chromium 浏览器可用性
- 结果目录写入权限
可选依赖可以缺失。BladeRecon 会跳过相关模块并继续执行工作流。
## 扫描安全配置文件
BladeRecon 默认使用 `balanced`。在漏洞赏金项目或共享基础设施中使用 `safe`,仅在你明确希望增加主动请求量时才使用 `aggressive`。
| 配置文件 | 预期用途 | 主动保护措施 |
| --- | --- | --- |
| `safe` | 漏洞赏金和保守验证 | 低并发、低 RPS、更严格的请求上限,HTTP/浏览器模块对每台主机仅限一次请求 |
| `balanced` | 默认的日常侦察 | 中等并发、限制 JS/截图/Nuclei 目标数量、单主机限制 |
| `aggressive` | 明确选择的高速度 | 更高的上限和并发,同时仍保留速率限制 |
示例:
```
bladerecon probe hackerone.com --profile safe
bladerecon js hackerone.com --profile safe
bladerecon screenshot hackerone.com --profile safe
bladerecon nuclei hackerone.com --profile safe
bladerecon full hackerone.com --profile safe
```
当前激活的配置文件会写入到运行标记、`scan_state.json`、模块元数据和 HTML 报告中。`bladerecon resume ` 会恢复最新隔离的运行,并保留该运行存储的配置文件。
智能 Nuclei 保留了技术引导的标签选择功能,但它不再是
唯一的覆盖层。当自动选择标签时,BladeRecon 可能会
针对 `critical,high` 严重程度运行轻量级的无标签基线扫描,但这仅
适用于未覆盖的高置信度或已验证的机会主机。当没有标签、
已验证的攻击面或高置信度机会时,ROI 限制机制会
跳过仅基线的 Nuclei 扫描,而不是将运行时间浪费在低价值模板上。
如果 ROI 限制机制判定进行仅基线运行是合理的,BladeRecon 会首先将目标列表
限定在已验证或高置信度的机会主机上,而不是扫描
每一台存活主机。报告和 `nuclei/metadata.json` 会显示
`coverage_strategy`、`roi_decision`、`target_scope`、`baseline_reason`、
`baseline_skip_reason`、`baseline_roi`、`baseline_targets` 以及
`baseline_scan` 状态。
显式的 `--templates` 路径可以指向单个 Nuclei 模板文件或
自定义模板目录;它们不需要遵循官方的模板仓库
结构。
## 输出结构
完整扫描按运行隔离。每次 `bladerecon full ` 都会在 `results//runs/` 下创建一个新
文件夹,并且 `results//latest_run.json` 会指向最近一次的有效运行。`bladerecon report ` 会读取该
最新有效运行;如果不存在隔离的运行,它将回退到由各个模块命令使用的旧版扁平化 `results//` 目录结构。
```
results/
`-- example.com/
|-- latest_run.json
`-- runs/
`-- 20260611T121505Z-safe-ea0a5419/
|-- .bladerecon_run.json
|-- scan_state.json
|-- subdomains/
| |-- subdomains.txt
| |-- subdomains.json
| `-- subdomains.jsonl
|-- probe/
| |-- alive.txt
| |-- metadata.json
| |-- probe.json
| `-- probe.jsonl
|-- js/
| |-- js_files.txt
| |-- metadata.json
| |-- js_files.json
| `-- files/
|-- endpoints/
| |-- endpoints.txt
| |-- endpoints.json
| `-- metadata.json
|-- secrets/
| |-- secrets.txt
| `-- secrets.json
|-- parameters/
| |-- parameters.txt
| |-- parameters.json
| |-- parameters.jsonl
| `-- parameters_from_urls.txt
|-- technology/
| |-- technology.txt
| `-- technology.json
|-- intelligence/
| |-- attack_surface.json
| |-- cloud_assets.json
| |-- historical_dns.json
| |-- infrastructure.json
| |-- infrastructure_assets.json
| |-- risk_score.json
| `-- template_intelligence.json
|-- historical/
| |-- urls.txt
| |-- urls.json
| |-- parameters.txt
| |-- endpoints.txt
| |-- endpoints.json
| `-- metadata.json
|-- historical_js/
| |-- js_urls.txt
| |-- js_urls.json
| |-- endpoints.txt
| |-- endpoints.json
| |-- parameters.txt
| `-- metadata.json
|-- content_discovery/
| |-- interesting_paths.txt
| |-- interesting_paths.json
| `-- metadata.json
|-- historical_diff.json
|-- security_headers_assets.json
|-- asset_priority.json
|-- advanced_metadata.json
|-- screenshots/
|-- nuclei/
| |-- metadata.json
| |-- results.json
| |-- results.jsonl
| `-- results.md
|-- reports/
| |-- report.html
| `-- report.md
`-- logs/
|-- scan.log
|-- errors.log
`-- scan_meta.json
```
## 截图
截图是可选的,需要 Playwright Chromium:
```
python -m playwright install chromium
bladerecon screenshot hackerone.com
```
如果缺少 Chromium,BladeRecon 会显示跳过原因并继续执行。
截图元数据包括平均捕获时间、响应缓慢的目标、超时
目标以及单目标耗时,这样就能将耗时的浏览器捕获过程展现出来,而
不是隐藏在总运行时间中。
## 信号质量
Endpoint 发现会抑制在范围内的 JavaScript 中发现的第三方 API URL,除非该 endpoint 的主机也在范围内。历史 JS 的 endpoint 产物会被
合并到同一个 endpoint 输出中,这样即使实时页面被阻止,仍然可以
提供攻击面证据。
高级侦察元数据包含历史 URL 来源的源级别 ROI,
包括选定的 URL、机会候选项、来源持续时间以及
信噪比。利用这些信息可以决定某个来源在未来扫描中
是否值得投入运行时间。
## 路线图
- 保持 CLI 轻量级且对 Windows 友好
- 在不必要时不改变输出格式的前提下改进报告情报
- 为发布候选版本保持 README 和社交媒体资产的时效性
- 扩大对真实世界边缘情况的测试覆盖率
- 保持可选依赖的优雅和透明
- 准备 `v0.21` 以进行公开发布候选版本评估
## 文档
- [INSTALL](INSTALL.md)
- [QUICKSTART](QUICKSTART.md)
- [TROUBLESHOOTING](TROUBLESHOOTING.md)
- [CHANGELOG](CHANGELOG.md)
## 许可证
MIT
标签:Python, Web渗透测试, 动态插桩, 实时处理, 密码管理, 无后门, 日志审计, 特征检测, 自动化报告, 请求拦截, 逆向工具