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攻击, 插件系统, 数据展示, 本地大模型, 红队, 逆向工具