Mr20x20/pyshield-threat-intel

GitHub: Mr20x20/pyshield-threat-intel

PyShield 威胁情报引擎是一个全自动化漏洞扫描器,通过端口扫描、Banner 抓取、服务版本检测和 NVD CVE 查询,生成结构化风险报告以支撑漏洞管理。

Stars: 0 | Forks: 0

# 🔍 PyShield 威胁情报引擎 一个全自动化的漏洞扫描器,它接收目标 IP,发现开放端口,通过抓取 banner 识别运行中的服务及其版本,并查询 NIST 国家漏洞数据库(NVD)API 以查找已知的 CVE —— 从而生成结构化的风险报告。 作为 **PyShield** 安全产品组合的一部分,旨在接入 PyShield SIEM 仪表板。 ## 🏗️ 流水线架构 ``` Target IP │ ▼ ┌─────────────┐ │ scanner.py │ Multithreaded TCP port scan (100 threads) └──────┬──────┘ │ open ports ▼ ┌─────────────┐ │ banner.py │ Banner grabbing — reads service self-identification └──────┬──────┘ SSH/FTP/SMTP: reads immediately │ HTTP/HTTPS: sends HEAD request first │ raw banners ▼ ┌──────────────┐ │ detector.py │ Regex parsing → service name + version └──────┬───────┘ "SSH-2.0-OpenSSH_8.2p1" → ("openssh", "8.2p1") │ ▼ ┌──────────┐ │ cpe.py │ CPE 2.3 string generation └──────┬───┘ ("openssh","8.2p1") → "cpe:2.3:a:openbsd:openssh:8.2p1:*:*:*:*:*:*:*" │ ▼ ┌──────────┐ │ nvd.py │ NVD API v2 → CVEs + CVSS scores + references └──────┬───┘ │ ▼ ┌──────────────────┐ │ risk_engine.py │ Weighted scoring → risk level + ranked findings └──────┬───────────┘ │ ▼ ┌──────────────────────────┐ │ threat_intel_report.json │ Structured output → PyShield SIEM └──────────────────────────┘ ``` ## 📋 示例输出 ``` ======================================================= THREAT INTELLIGENCE REPORT Target : 192.168.1.1 Timestamp : 2026-06-27 10:00:00 Risk Score : 87 Risk Level : CRITICAL ======================================================= Open Ports : 4 CVEs Found : 12 Critical : 3 High : 5 ------------------------------------------------------- SUMMARY: • Target: 192.168.1.1 | Risk Score: 87 | Level: CRITICAL • 4 open port(s) found, 12 CVE(s) identified. • CRITICAL: 3 critical CVE(s) — immediate action required. • Critical ports exposed: 22, 3389 • Port 22 (openssh 8.2p1) → CVE-2023-38408 CVSS 9.8 CRITICAL ------------------------------------------------------- ``` ## 🚀 快速开始 ### 1. 克隆仓库 ``` git clone https://github.com/Mr20x20/pyshield-threat-intel.git cd pyshield-threat-intel ``` ### 2. 创建虚拟环境 ``` python -m venv venv # Windows venv\Scripts\activate # Linux / macOS source venv/bin/activate ``` ### 3. 安装依赖 ``` pip install -r requirements.txt ``` ### 4. 设置 NVD API 密钥 在此获取免费的 API 密钥:https://nvd.nist.gov/developers/request-an-api-key 在项目根目录下创建一个 `.env` 文件: ``` NVD_API_KEY=your-api-key-here ``` 如果没有密钥,该工具仍然可以工作,但请求频率会被限制为每 30 秒 5 次请求。 ### 5. 运行扫描 ``` # 扫描 localhost python run.py 127.0.0.1 # 使用自定义端口范围扫描特定主机 python run.py 192.168.1.1 1 1024 # 扫描前 512 个端口 python run.py 192.168.1.1 1 512 ``` ## 📁 项目结构 ``` pyshield-threat-intel/ ├── run.py # Entry point — orchestrates full pipeline ├── scanner.py # Multithreaded TCP port scanner ├── banner.py # Banner grabbing per service protocol ├── detector.py # Regex-based service/version detection ├── cpe.py # CPE 2.3 string generator ├── nvd.py # NVD API v2 client ├── risk_engine.py # Scoring engine + risk assessment ├── config.py # All settings in one place ├── requirements.txt └── reports/ # Auto-created — output JSON reports └── threat_intel_report.json ``` ## 🔎 支持的服务 | 服务 | Banner 识别 | CPE 生成 | |---|---|---| | OpenSSH | ✅ 从 banner 获取版本 | ✅ | | Dropbear SSH | ✅ 从 banner 获取版本 | ✅ | | nginx | ✅ 从 Server 标头获取 | ✅ | | Apache HTTP | ✅ 从 Server 标头获取 | ✅ | | Microsoft IIS | ✅ 从 Server 标头获取 | ✅ | | ProFTPD | ✅ 从 banner 获取版本 | ✅ | | vsftpd | ✅ 从 banner 获取版本 | ✅ | | Postfix SMTP | ✅ 从 banner 获取版本 | ✅ | | MySQL / MariaDB | ✅ 从握手信息获取版本 | ✅ | | PostgreSQL | ✅ | ✅ | | Redis | ✅ 通过 PONG 检测 | ✅ | | MongoDB | ✅ | ✅ | | VNC | ✅ RFB 版本 | ✅ | | RDP | 基于端口的回退检测 | ✅ | | Telnet | ✅ | ✅ | ## ⚙️ 配置 `config.py` 中的所有设置: | 设置 | 默认值 | 描述 | |---|---|---| | `SCAN_START_PORT` | 1 | 首个扫描端口 | | `SCAN_END_PORT` | 1024 | 最后一个扫描端口 | | `SCAN_THREADS` | 100 | 并行扫描线程 | | `BANNER_TIMEOUT` | 3s | 每个 banner 的超时时间 | | `NVD_MAX_CVES` | 10 | 每个服务的最大 CVE 数量 | | `NVD_RATE_LIMIT_DELAY` | 0.7s | NVD 请求之间的延迟 | ## 📊 风险评分 | CVE 严重性 | CVSS 分数 | 增加分数 | |---|---|---| | CRITICAL | ≥ 9.0 | +25 | | HIGH | ≥ 7.0 | +15 | | MEDIUM | ≥ 4.0 | +7 | | LOW | ≥ 0.1 | +2 | 关键端口(22、3389、3306、6379、27017 等)将获得 **1.5 倍乘数**。 | 总分 | 风险等级 | |---|---| | 0 | CLEAN | | 1–9 | LOW | | 10–29 | MEDIUM | | 30–59 | HIGH | | 60+ | CRITICAL | ## 🔗 SIEM 集成 输出的 `threat_intel_report.json` 兼容 [PyShield 仪表板](https://github.com/Mr20x20/PyShield_Dashboard) 流水线。报告结构与现有的传感器输出格式相匹配。 ## 🛠️ 技术栈 - **语言:** Python 3.11+ - **网络:** Python `socket`、`ssl`(标准库) - **HTTP:** `requests` - **CVE 数据:** NIST NVD API v2 - **标准:** CPE 2.3 (NIST) ## 🔐 法律与道德声明 本工具专为**授权的安全评估**设计。 请仅扫描您拥有或获得明确书面测试许可的系统。 未经授权的端口扫描在您所在的司法管辖区可能是非法的。 ## 📜 许可证 MIT 许可证 —— 有关详情,请参阅 [LICENSE](LICENSE)。 ## 👤 作者 **Mr20x20** — 安全工程爱好者 GitHub: [github.com/Mr20x20](https://github.com/Mr20x20) ## 🔗 相关项目 - [PyShield 仪表板](https://github.com/Mr20x20/PyShield_Dashboard) — 实时 SIEM 仪表板 - [PyShield 蜜罐](https://github.com/Mr20x20/pyshield-honeypot) — 攻击者分析器
标签:DNS查询工具, 加密, 漏洞扫描器, 端口扫描器, 网络扫描器, 逆向工具