Lowingx/threat-intelligence-feed-parser

GitHub: Lowingx/threat-intelligence-feed-parser

威胁情报查询管道,聚合多源数据并加权评分,为 SOC 提供可落地的 IOC enrichment 与风险分级。

Stars: 0 | Forks: 0

# 🧠 威胁情报查询管道 ![Python](https://img.shields.io/badge/Python-3.11%2B-blue?logo=python&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-green) ![Blue Team](https://img.shields.io/badge/Blue%20Team-SOC%20Portfolio-0d6efd) ![MITRE ATT&CK](https://img.shields.io/badge/MITRE-ATT%26CK-red) ![STIX 2.1](https://img.shields.io/badge/Export-STIX%202.1-orange) ![Feeds](https://img.shields.io/badge/Feeds-7%20sources-green) ## 检测工作流集成 ``` ┌─────────────────────────────────────────────────────────────────┐ │ Detection Engineering Stack │ │ │ │ Project 2: Honeypot Project 1: Log Analyzer │ │ honeypot_events.jsonl → alerts.db │ │ │ │ │ │ └──────────┬────────────┘ │ │ ▼ │ │ Project 3: TI Enrichment Pipeline │ │ ┌─────────────────────────────────┐ │ │ │ 7 feeds queried in parallel │ │ │ │ Weighted score 0-100 │ │ │ │ Risk band classification │ │ │ │ ASN correlation analysis │ │ │ │ MITRE ATT&CK heuristic hints │ │ │ │ STIX 2.1 IOC export │ │ │ └──────────────┬──────────────────┘ │ │ ▼ │ │ SOC-ready report / SIEM feed │ └─────────────────────────────────────────────────────────────────┘ ``` ## 架构 ``` graph TD A[IP Sources\nHoneypot · Alerts DB · File · CLI] --> B[ti_lookup.py\nOrchestrator] B --> C[core/cache.py\nSQLite TTL cache\nhit ratio display] C -->|miss| D[feeds/implementations.py\n7 feeds in parallel] C -->|hit| E[FeedResult cached] D --> D1[AbuseIPDB] D --> D2[OTX] D --> D3[VirusTotal] D --> D4[Shodan] D --> D5[IPInfo] D --> D6[Feodo Tracker] D --> D7[Emerging Threats] D --> F[core/scoring.py\nWeighted 0-100\nRisk band] F --> G[core/correlation.py\nASN clustering\nHosting ratio] F --> H[core/history.py\nTimeline awareness\nfirst/last seen] F --> I[outputs/report.py] I --> I1[Text — terminal] I --> I2[JSON — pipeline] I --> I3[Markdown — reports] I --> I4[STIX 2.1 — TI ecosystem] ``` ## 功能特性 - **7 个威胁情报源** 并行查询 - **加权风险评分**:显式 0-100 公式及每个来源的分项拆解 - **风险带分类**:LOW / SUSPICIOUS / MALICIOUS / CRITICAL - **标准化标签分类法**:`known_attacker`、`c2_server`、`scanner`、`tor_exit`、`botnet` 等 - **MITRE ATT&CK 提示**:基于标签的启发式技术映射 - **ASN 相关性**:按基础设施聚类 IP,检测协同攻击 - **托管与住宅比例**:VPS = 很可能为租用的攻击基础设施 - **时间线感知**:`first_seen`、`last_seen`、`lookup_count` 跨会话统计 - **SQLite 缓存**:每个来源的 TTL 及命中率显示 — 可绕过速率限制 - **STIX 2.1 导出**:标准 IOC 格式,便于集成到 TI 平台 - **蜜罐增强**:将 TI 上下文注入 JSONL 日志的每个事件 - **零依赖要求**:纯 Python 标准库,`requests` 可选 ## 项目结构 ``` threat-intel/ ├── ti_lookup.py # CLI entry point ├── core/ │ ├── models.py # TIResult, FeedResult, RiskBand, Tags │ ├── cache.py # SQLite cache with TTL + hit ratio │ ├── scoring.py # Weighted scoring engine + risk band │ ├── correlation.py # ASN clustering + multi-IP patterns │ └── history.py # Timeline tracking per IP ├── feeds/ │ ├── base.py # BaseFeed interface + HTTP helper │ └── implementations.py # All 7 feeds + REGISTERED_FEEDS registry ├── outputs/ │ └── report.py # text / JSON / Markdown / STIX 2.1 ├── config/ │ └── keys.env.example # API key template ├── data/ # SQLite DBs + downloaded blocklists ├── samples/ │ └── ips.txt # Sample IPs for testing ├── README.md └── EXPLICACAO_TECNICA_COMPLETA.md ``` ## 快速开始 ``` git clone https://github.com/Lowingx/threat-intel.git cd threat-intel # 无所需依赖(requests 可选但推荐) pip install requests # optional # 配置 API 密钥(全部免费) cp config/keys.env.example config/keys.env # 编辑 config/keys.env 以添加您的密钥 # 检查哪些数据源处于活跃状态 python ti_lookup.py --list-feeds # 查询 IP 地址 python ti_lookup.py 203.0.113.50 198.51.100.7 # 来自蜜罐日志 python ti_lookup.py --from-honeypot ../honeypot-v2/logs/honeypot_events.jsonl # 来自日志分析数据库 python ti_lookup.py --from-alerts ../log-analyzer-v2/logs/alerts.db # 带关联性的完整报告 python ti_lookup.py --file samples/ips.txt --correlate \ --format markdown --output report.md ``` ## 风险评分公式 ``` risk_score = weighted_score( abuseipdb = 0.35, # largest attacker corpus otx = 0.20, # malware / C2 coverage virustotal = 0.20, # AV engine consensus shodan = 0.10, # infrastructure context ipinfo = 0.05, # ASN / type context feodo = 0.05, # C2 blocklist (binary) emerging = 0.05, # compromised IP blocklist ) # 阻止列表增强:如果 IP 出现在 Feodo 或 Emerging Threats 中,则 +20 # 分数始终可通过 --format json 解释 → score_breakdown ``` | 风险带 | 分数 | 含义 | |---|---|---| | `LOW` | 0–24 | 无显著威胁信号 | | `SUSPICIOUS` | 25–49 | 部分指标,需持续监控 | | `MALICIOUS` | 50–74 | 多个威胁信号,很可能为攻击者 | | `CRITICAL` | 75–100 | 高置信度威胁,命中封禁列表/C2 | ## 源配置 | 来源 | 提供内容 | 免费额度 | 环境变量 | |---|---|---|---| | AbuseIPDB | 滥用评分 0-100,攻击类别 | 1000/天 | `ABUSEIPDB_API_KEY` | | AlienVault OTX | 脉冲计数、恶意软件家族 | 10000/天 | `OTX_API_KEY` | | VirusTotal | AV 引擎检测数 | 4/分钟 | `VIRUSTOTAL_API_KEY` | | Shodan | 开放端口、CVE、Banner | 1/秒 | `SHODAN_API_KEY` | | IPInfo | ASN、组织、国家、IP 类型 | 5万/月 | `IPINFO_API_TOKEN` | | Feodo Tracker | C2 IP 列表(Emotet、Cobalt Strike) | 无限制 | 无需密钥 | | Emerging Threats | 被妥协 IP 列表 | 无限制 | 无需密钥 | Feodo 与 Emerging Threats 在首次下载后本地缓存离线使用 — 无需 API 密钥、无速率限制。 ## 使用参考 ``` python ti_lookup.py [ips...] [options] INPUT ips Direct IP addresses --file, -f PATH Text file of IPs --from-honeypot PATH Extract IPs from honeypot JSONL --from-alerts PATH Extract IPs from Log Analyzer SQLite DB --enrich-honeypot PATH Enrich honeypot JSONL with TI context OUTPUT --format text | json | markdown | stix --output, -o PATH Save to file --correlate Include ASN correlation analysis --min-band LOW | SUSPICIOUS | MALICIOUS | CRITICAL CACHE --no-cache Force live queries (bypass cache) --cache-stats Show hit ratio and exit --invalidate-cache F Clear cache for feed F and exit MISC --workers N Parallel feed threads (default: 4) --list-feeds Show feed status and exit --quiet, -q Suppress progress output ``` ## STIX 2.1 导出 ``` # 导出 IOC 为 STIX 2.1 Bundle python ti_lookup.py --file samples/ips.txt --format stix --output iocs.stix.json # 导入 OpenCTI、MISP 或任何 STIX 兼容平台 ``` 每个 SUSPICIOUS+ 的 IP 会生成一个 STIX `indicator` 对象,包含: - `pattern`:`[ipv4-addr:value = 'x.x.x.x']` - `confidence`:从风险带映射 - `labels`:标准化标签 + MITRE 技术 ID - `external_references`:各来源分数归属 ## 蜜罐管道集成 ``` # 为每个蜜罐事件丰富 TI 上下文 python ti_lookup.py --enrich-honeypot logs/honeypot_events.jsonl # 创建:logs/honeypot_events_enriched.jsonl # 每个事件现在包含: # "ti": { # "risk_score": 85, "risk_band": "CRITICAL", # "tags": ["known_attacker", "c2_server"], # "country": "NL", "asn": "AS60781", # "mitre": [{"tactic": "Command and Control", "technique": "T1071"}] # } ``` ## 许可证 MIT — 可自由使用与学习。
标签:7个来源, ASN关联分析, C2通信, Cloudflare, Feeds查询, Feeds聚合, IOC导出, MITRE ATT&CK, MITRE ATT&CK启发式, Python, Python 3.11, SOC分析师, STIX 2.1, TI丰富化, TI流程, 加权评分, 威胁情报, 威胁情报查询, 安全情报, 安全运营, 并行查询, 开发者工具, 恶意IP, 扫描框架, 数据统计, 无后门, 日志分析项目, 检测工作流, 端口扫描, 蓝队组合, 蜜罐, 蜜罐项目, 证书利用, 逆向工具, 风险分级, 风险带分类