jagruth97/Python-vulnerability-detection-toolkit
GitHub: jagruth97/Python-vulnerability-detection-toolkit
模块化 Python CLI 工具,整合 Nmap 端口扫描、CVE 签名匹配与 Linux auth 日志威胁检测,输出 MITRE ATT&CK 映射的双格式安全报告。
Stars: 0 | Forks: 0
# Python 网络漏洞与威胁检测工具包
模块化的 **Python CLI**,结合了 **Nmap** 端口/服务扫描、**CVE 签名匹配**以及 **Linux auth log** 威胁检测 —— 输出映射到 **MITRE ATT&CK** 的 JSON 和 Markdown 格式报告。
## 功能
- 基于自动化的 Nmap 端口及服务/版本发现
- 基于本地 JSON 签名数据库的 CVE 匹配
- SSH 暴力破解检测(基于阈值,按源 IP 区分)
- 从 auth log 中检测 Sudo/权限提升指标
- MITRE ATT&CK 技术映射(T1110.003, T1548.003)
- 双格式报告(用于工具的 JSON,用于分析师的 Markdown)
## 前置条件
| 要求 | 备注 |
|-------------|-------|
| Python 3.8+ | 在 Linux / WSL 上测试通过 |
| Nmap | 必须安装并在 `PATH` 中 |
| Linux auth logs | `/var/log/auth.log` 格式(或使用包含的样本) |
## 安装说明
```
git clone https://github.com/jagruth97/Python-vulnerability-detection-toolkit.git
cd Python-vulnerability-detection-toolkit
pip install -r requirements.txt
```
## 使用说明
```
python main.py --target 192.168.146.129 --ports 1-1000 --authlog logs/sample_auth.log
```
| 参数 | 默认值 | 描述 |
|----------|---------|-------------|
| `--target` | (必填) | 目标 IP 地址 |
| `--ports` | `1-1024` | Nmap 的端口范围 |
| `--authlog` | `logs/sample_auth.log` | 身份验证日志的路径 |
**输出:** 工作目录下的 `report.json` 和 `report.md`。
## 项目结构
```
Python-vuln-detection-toolkit/
├── main.py # CLI entry point
├── scanner/
│ ├── port_scanner.py # Nmap wrapper (-sV service detection)
│ └── vuln_matcher.py # CVE signature matching (semver)
├── analyzer/
│ └── log_parser.py # Brute-force & sudo detection
├── utils/
│ └── report_generator.py # JSON + Markdown report writers
├── data/
│ └── vuln_signatures.json # Local CVE signature database
└── logs/
└── sample_auth.log # Sample SSH/sudo log for demo
```
## 示例输出
**扫描结果:**
- `21/ftp` — vsftpd 2.3.4(开放)
- `80/tcp` — Apache 2.2.8(开放)
**检测到的漏洞:**
- vsftpd 2.3.4 → **CVE-2011-2523**(后门)
- Apache 2.2.8 → **CVE-2021-41773**(路径遍历 / RCE)
**基于日志的威胁:**
- 检测到暴力破解 | 192.168.1.100 → MITRE: `T1110.003`
- 使用 Sudo 命令 → MITRE: `T1548.003`
## 扩展签名数据库
编辑 `data/vuln_signatures.json`:
```
{
"service": "ftp",
"product": "vsftpd",
"version": "2.3.4",
"cve": "CVE-2011-2523",
"description": "Backdoor command execution in vsftpd 2.3.4"
}
```
使用精确版本(`"2.3.4"`)或范围前缀(`"<2.4.50"`)通过 `packaging.version` 进行小于匹配。
## MITRE ATT&CK 覆盖范围
| 技术 | ID | 检测方式 |
|-----------|-----|-----------|
| 暴力破解:密码猜测 | T1110.003 | 来自同一 IP 的 ≥3 次 SSH 登录失败 |
| 滥用提升控制权限:Sudo | T1548.003 | auth log 中使用 Sudo 命令 |
| 命令执行(计划中) | T1059.001 | 反弹 shell 模式检测 |
## 核心要点
- **模块化 pipeline 可扩展** — 将扫描、匹配、分析和报告层分离,使每个组件都可测试和扩展。
- **版本感知匹配至关重要** — 朴素的字符串匹配会导致误报;semver 比较可减少噪音。
- **日志分析补充了网络扫描** — 基于主机的指标(暴力破解、Sudo 滥用)揭示了 Nmap 无法察觉的攻击。
- **MITRE 映射增加了上下文** — 将检测结果与 ATT&CK 技术相关联,使发现与行业威胁模型保持一致。
- **JSON 签名将情报与代码解耦** — 无需重新部署扫描器即可更新 CVE 数据。
## 经验总结
1. **Nmap 是系统依赖项** — `python-nmap` 封装了 Nmap 二进制文件;需要独立于 pip 包进行文档说明和安装验证。
2. **阈值调整可减少误报** — 默认的暴力破解阈值(3 次失败)适用于演示,但需要根据具体环境进行调整。
3. **Sudo 告警需要过滤** — 标记每一条 Sudo 命令会产生大量噪音;生产环境使用时应将可疑命令(例如 `/bin/bash`、`nc`)加入白名单。
4. **报告质量驱动采用率** — 双重 JSON/Markdown 输出可同时服务于自动化 pipeline 和人工分析师审查。
5. **实验室验证必不可少** — 针对 Metasploitable 风格的目标(vsftpd 2.3.4、Apache 2.2.8)进行测试可验证端到端的检测能力。
## 简历价值
展示蓝队工具技能:网络侦察、CVE 关联、日志取证、MITRE ATT&CK 映射以及自动化安全报告 —— 适用于漏洞评估、SOC 分析和检测工程职位。
标签:CTI, Python, 无后门, 逆向工具