CikolataliPuding/MergenSec

GitHub: CikolataliPuding/MergenSec

基于 Nmap 异步扫描与 NVD API 自动关联 CVE 的自主漏洞映射框架,提供交互式仪表板和可下载报告,帮助安全团队快速完成从端口发现到漏洞风险评估的完整流程。

Stars: 2 | Forks: 1

# 🏹 MergenSec **自主漏洞映射框架** *灵感来自 Mergen —— 突厥神话中的智慧与射箭之神* ![Python](https://img.shields.io/badge/Python-3.12+-3776AB?style=flat&logo=python&logoColor=white) ![Streamlit](https://img.shields.io/badge/Streamlit-1.29-FF4B4B?style=flat&logo=streamlit&logoColor=white) ![Nmap](https://img.shields.io/badge/Nmap-7.9+-0E83CD?style=flat&logo=nmap&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-22c55e?style=flat) ![Status](https://img.shields.io/badge/Status-In%20Development-f59e0b?style=flat)
## 什么是 MergenSec? MergenSec 会扫描目标网络,检测开放的服务,并自动将它们映射到国家漏洞数据库 (NVD) 中已知的 CVE 记录。它会生成交互式风险仪表板和可下载的 JSON 报告 —— 仅需一条命令即可替代数小时的手动安全审计。 ## 功能特性 - **异步网络扫描** — 使用 `python-nmap` 和 `asyncio` 发现开放的 TCP/UDP 端口 - **自动 CVE 查询** — 查询 NVD API 并返回匹配的漏洞记录 - **CVSS 风险评分** — 将每个发现分类为严重、高危、中危或低危 - **交互式仪表板** — 通过 Streamlit 实时可视化结果 - **JSON 报告** — 为每次扫描会话导出结构化的安全报告 ## 架构 ``` User enters target IP or CIDR range │ ▼ AsyncScanner ← python-nmap + asyncio (port & service discovery) │ ▼ CVEFetcher ← NVD API + aiohttp (fetch matching CVE records) │ ▼ VulnMapper ← pandas + CVSS scoring (match services → CVEs) │ ┌──────┴──────┐ ▼ ▼ Dashboard JSON Report (Streamlit) (reports/) ``` ## 前置条件 在安装之前,请确保您具备以下条件: - **Python 3.12+** — [下载](https://www.python.org/downloads/) - **Nmap** — [下载](https://nmap.org/download.html) 并添加到系统 PATH - **NVD API Key** — [免费申请](https://nvd.nist.gov/developers/request-an-api-key) 验证您的设置: ``` python --version # Python 3.12+ nmap --version # Nmap 7.x ``` ## 安装说明 **1. 克隆仓库** ``` git clone https://github.com/YOUR_USERNAME/mergensec.git cd mergensec ``` **2. 创建并激活虚拟环境** ``` python -m venv venv # Windows venv\Scripts\activate # Linux / macOS source venv/bin/activate ``` **3. 安装依赖** ``` pip install -r requirements.txt ``` **4. 配置环境变量** ``` cp .env.example .env ``` 打开 `.env` 并添加您的 NVD API 密钥: ``` NVD_API_KEY=your_api_key_here DATABASE_URL=sqlite:///mergensec.db ``` **5. 初始化数据库** ``` python -c "from database.db import init_db; init_db()" ``` **6. 启动仪表板** ``` streamlit run dashboard/app.py ``` 仪表板将在 `http://localhost:8501` 打开。 ## 使用方法 1. 输入目标 IP 地址或 CIDR 范围(例如 `192.168.1.1` 或 `192.168.1.0/24`) 2. 点击 **Start Scan**(开始扫描) 3. 查看风险摘要、CVE 表格和 CVSS 分布图表 4. 使用 **Export Report** 按钮下载 JSON 报告 ## 项目结构 ``` mergensec/ ├── core/ │ ├── scanner.py # AsyncScanner — async port and service discovery │ ├── cve_fetcher.py # CVEFetcher — NVD API integration │ ├── vuln_mapper.py # VulnMapper — CVE matching and CVSS scoring │ └── report_generator.py # JSON report generation ├── database/ │ ├── models.py # SQLAlchemy ORM models │ └── db.py # Database connection and initialization ├── dashboard/ │ └── app.py # Streamlit web interface ├── tests/ │ ├── test_scanner.py │ ├── test_cve_fetcher.py │ └── test_vuln_mapper.py ├── reports/ # Generated scan reports (gitignored) ├── .env.example # Environment variable template ├── requirements.txt ├── CONTRIBUTING.md └── README.md ``` ## 运行测试 ``` # 运行所有测试并输出 verbose 结果 pytest tests/ -v # 运行特定 module 的测试 pytest tests/test_scanner.py -v # 生成 coverage 报告 pytest tests/ --cov=core --cov-report=term-missing ``` ## 贡献指南 MergenSec 采用**功能分支工作流**。所有贡献均通过针对 `dev` 分支的 Pull Request 进行。 ``` # 从最新的 dev branch 开始 git checkout dev git pull origin dev # 创建你的 feature branch git checkout -b feature/your-feature-name # Push 并打开一个 Pull Request → target: dev git push origin feature/your-feature-name ``` 请阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 以获取有关分支命名、提交消息格式和代码风格要求的完整指南。 ## 常见问题 | 错误 | 原因 | 解决方法 | |---|---|---| | `nmap: command not found` | 未安装 Nmap | 从 [nmap.org](https://nmap.org/download.html) 安装 | | `KeyError: NVD_API_KEY` | 缺少 `.env` 文件 | 运行 `cp .env.example .env` 并添加您的密钥 | | `429 Too Many Requests` | 超出 NVD 速率限制 | 速率限制会自动处理;请等待 30 秒后重试 | | `PermissionError` | Nmap 需要提升权限 | 在 Linux/macOS 下使用 `sudo` 运行,或在 Windows 下以管理员身份运行 | | `ModuleNotFoundError` | 虚拟环境未激活 | 请先运行 `source venv/bin/activate` | ## 团队 | 姓名 | 角色 | 模块 | |---|---|---| | Egemen Korkmaz | 首席开发者 | 扫描引擎、集成、协调 | | Selameddin Tirit | 后端开发者 | CVE 获取器、NVD API | | Çağrı Doğan | 后端开发者 | 漏洞映射器、JSON 报告 | | Mustafa Bite | 前端开发者 | Streamlit 仪表板 | | Zid Alkahni | 数据库与 QA | SQLAlchemy 模型、Pytest | ## 许可证 本项目基于 MIT 许可证授权 —— 详见 [LICENSE](LICENSE) 文件。 ## 致谢 作为 Fırat 大学 **YMH220/YMH210 Python 项目** 的一部分构建。 漏洞数据由 [National Vulnerability Database (NVD)](https://nvd.nist.gov/) 提供。
MergenSec — 2025 | Fırat University | YMH220/YMH210
标签:asyncio, ATT&CK 框架, CVE扫描器, CVSS评分, GPT, JSON报告, Kubernetes, MergenSec, Nmap, NVD API, Python, Streamlit, 安全仪表盘, 密码管理, 开源安全工具, 异步编程, 插件系统, 数据统计, 无后门, 无线安全, 服务发现, 漏洞管理, 端口扫描, 结构化查询, 网络安全, 网络资产扫描, 自动化安全, 自动漏洞映射, 虚拟驱动器, 计算机取证, 访问控制, 逆向工具, 逆向工程平台, 隐私保护