Dashy476/recon-cve-cli
GitHub: Dashy476/recon-cve-cli
一款基于本地 LLM 的 Python 安全 CLI 工具,通过 SSH 侦察和多源 CVE 数据关联,自动生成红队攻击链与蓝队防御手册。
Stars: 0 | Forks: 0
# recon-cve-cli
一个 Python CLI 工具,通过 Secure Shell (SSH) 连接到 Linux 和 Windows 主机,对正在运行的服务、已安装的软件包和开放端口进行指纹识别,向 NVD 查询相关的 CVE,使用 Exploit-DB 的概念验证代码丰富查询结果,并通过本地 Ollama LLM 生成具有难度梯度的红队攻击链以及蓝队检测和修复操作手册。
本项目受 Luke Farchione 的原始项目启发并基于其构建:https://github.com/LukeFarch/cve-cli
## 工具
### HARBNGR
该平台的入口点。通过 Secure Shell (SSH) 连接到一个或多个目标 Linux 或 Windows 主机,自动检测操作系统和发行版,并收集正在运行的服务、已安装的软件包、开放端口和正在运行的进程。支持单一 IP、CIDR 范围、IP 范围和基于文件的目标输入。使用多线程并行扫描多个主机,并将收集到的系统数据提供给 CVINFERNO 或 CVBASTION 进行分析。
### CVINFERNO
红队分析工具。接收来自 HARBNGR 的系统数据或自然语言查询,在 NVD 中搜索相关的 CVE,在可用的情况下使用 Exploit-DB 的概念验证代码对其进行丰富,并生成具有难度梯度的攻击路径,展示攻击者如何破坏系统并在网络中进行跳板攻击。MITRE ATT&CK 技术从 CVE 描述中进行映射,并连同其官方名称一起传递给 LLM,以防止幻觉。
### CVBASTION
蓝队分析工具。接收与 CVINFERNO 相同的输入,但生成针对难度级别和可用工具定制的检测策略、遏制措施和修复步骤。
## 数据源
CVE 数据按优先级顺序从多个来源获取:
| 来源 | 用途 | 备注 |
|--------|----------|-------|
| **NIST NVD** | 主要的关键字和 CPE 搜索 | 需要免费的 API key。对于 CPE 映射的软件包,查询使用 `virtualMatchString`,并以 `keywordSearch` 作为后备。结果将过滤为 2019 年或之后发布的 CVE。 |
| **OSV.dev** | 次要来源 — Debian/Ubuntu/PyPI/npm 软件包 | 不需要 API key。根据软件包类型路由到对应的生态系统。 |
| **VulnCheck** | 仅用于精确的 CVE-ID 查询 | 免费层级仅可靠地支持直接的 CVE ID 查询;由于免费层级存在已知的数据质量问题,已禁用关键字/CPE 搜索。 |
| **Vulners** | 可选的最后手段后备 | 需要付费的 API key。如果未设置 `VULNERS_API_KEY`,则跳过此项。 |
| **CISA KEV** | 标记主动利用 | 通过 VulnCheck API。标记已知在野外被主动利用的 CVE。 |
| **FIRST.org EPSS** | 利用概率评分 | 免费,不需要 key。将评分传递给 LLM 以优先处理高可能性的攻击向量。 |
| **Exploit-DB** | 概念验证代码 | 通过 `pyexploitdb` 使用本地数据库。仅包含真实的 PoC 代码 — 明确抑制捏造的漏洞利用代码片段。 |
## 环境要求
- Python 3.10+
- 已安装并在本地运行 [Ollama](https://ollama.com)
- NVD API key(免费 — 请在 [nvd.nist.gov](https://nvd.nist.gov/developers/request-an-api-key) 注册)
- 以下 Python 包:
```
ollama
requests
rich
paramiko
pyexploitdb
python-dotenv
ipaddress # built-in
```
## 安装说明
**1. 克隆代码库**
```
git clone https://github.com/Dashy476/recon-cve-cli.git
cd recon-cve-cli
```
**2. 创建并激活虚拟环境**
```
python -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # Linux/Mac
```
**3. 安装依赖**
```
pip install ollama requests rich paramiko pyexploitdb python-dotenv
```
**4. 拉取 Ollama 模型**
```
ollama pull qwen2.5:3b # Entity extraction (all tools)
ollama pull deepseek-r1:14b # Attack chain analysis (CVINFERNO + CVBASTION)
```
**5. 设置你的 API key**
将这些设置为环境变量。在 Windows 上,使用 PowerShell:
```
# 永久 (Windows) — 设置后需要重新打开终端
[System.Environment]::SetEnvironmentVariable("NVD_API_KEY", "your-uuid-key-here", "User")
[System.Environment]::SetEnvironmentVariable("VULNCHECK_API_TOKEN", "your-token-here", "User")
# Linux/Mac
export NVD_API_KEY="your-uuid-key-here"
export VULNCHECK_API_TOKEN="your-token-here"
```
NVD key 为 UUID 格式(`xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`)。请在 [nvd.nist.gov/developers/request-an-api-key](https://nvd.nist.gov/developers/request-an-api-key) 免费注册。
VulnCheck 免费层级注册请访问 [vulncheck.com](https://vulncheck.com)。用于 CISA KEV 查找和精确的 CVE-ID 查询。
`VULNERS_API_KEY` 是可选的 — Vulners 仅用作付费的最后手段后备。
## 运行方式
### HARBNGR — SSH 侦察 + 分析
```
python HARBNGR.py
```
系统将提示你输入:
- 目标模式(单一 IP、CIDR 范围、IP 范围或文件)
- SSH 端口(默认为 22)
- 用户名
- 身份验证方法(密码或 SSH key)
- 如果使用 SSH key 的 key 模式(所有主机使用相同的 key 或每个主机使用单独的 key)
- 分析模式(红队或蓝队)
扫描完成后,HARBNGR 将显示所有主机的系统信息面板,然后让你选择要分析的主机。
### CVINFERNO — 红队分析(独立运行)
```
python CVINFERNO.py
```
在提示符下输入自然语言安全查询:
```
>> Any critical Apache vulnerabilities on my internal web server since 2022?
```
### CVBASTION — 蓝队分析(独立运行)
```
python CVBASTION.py
```
在提示符下输入自然语言安全查询:
```
>> What are the detection strategies for log4j vulnerabilities on a public-facing server?
```
## 示例输出
**HARBNGR 扫描 CIDR 范围:**
```
Target Mode : 2 (CIDR Range)
CIDR Range : 20.150.210.0/24
Port : 22
Username : azureuser
Auth Method : 2 (SSH Key)
Key Mode : 1 (Same key for all hosts)
Key Path : C:\ssh\key.pem
✓ 20.150.210.61 — linux ubuntu 24.04
✓ 20.150.211.136 — windows windows 10.0.20348
✗ 20.150.210.62 — Failed to connect
Select host to analyze:
1 - 20.150.210.61 (linux ubuntu 24.04)
2 - 20.150.211.136 (windows windows 10.0.20348)
3 - Analyze all hosts
```
## 功能
- **多目标扫描** — 支持单一 IP、CIDR 范围、IP 范围或包含 IP 的文件
- **并行扫描** — 具有线程安全日志记录的多线程扫描
- **每主机 SSH key** — 为不同的主机分配不同的 key
- **操作系统自动检测** — 检测 Linux 发行版/版本或 Windows 版本
- **多源 CVE pipeline** — 以 NIST NVD 为主,OSV.dev 为次,VulnCheck CVE-ID,Vulners 后备
- **CISA KEV 标记** — 标记在野外被主动利用的 CVE
- **EPSS 评分** — 来自 FIRST.org 的利用概率,用于优先处理攻击向量
- **Exploit-DB 集成** — 仅包含真实的 PoC 代码;抑制捏造的代码片段
- **MITRE ATT&CK 映射** — 从 CVE 描述中提取技术 ID 和官方名称
- **感知 CPE 的搜索** — CPE 映射涵盖 50 多种产品,确保 NVD 查询精确
- **相关性过滤** — 多层过滤(CPE 匹配 → 描述匹配 → 黑名单)可去除噪声
- **通用服务过滤** — 在查询 CVE 之前将不相关的操作系统服务列入黑名单
- **难度梯度** — 新手 / 简单 / 中等 / 困难 / 大师级别调整攻击/防御的复杂性
- **红队 + 蓝队** — 具有不同 LLM 和不同提示词策略的独立工具
- **本地 LLM** — 所有推理均通过 Ollama 进行,无云 AI 依赖
## 日志
每个工具都会在 `logs/` 目录中写入自己的日志文件:
- `logs/cve_red.log` — CVINFERNO
- `logs/cve_blue.log` — CVBASTION
- `logs/ssh_collector.log` — HARBNGR
## 注意事项
- HARBNGR 设计用于你已拥有有效凭据的主机 — 它不是撞库或暴力破解工具
- 在启动任何工具之前,必须运行 Ollama(`ollama serve`)
- 所有 LLM 推理均在本地进行 — 不会向外部 AI API 发送任何数据
- 要通过 SSH 连接到 Windows 目标,需要目标机器上已安装并运行 OpenSSH Server
- 本工具旨在用于你自己拥有的系统,或你拥有明确书面授权进行测试的系统
标签:AI风险缓解, SSH, Web报告查看器, XXE攻击, 插件系统, 数据展示, 本地大模型, 红队, 逆向工具