Gurkirat-sudo-su/threat-intel-aggregator

GitHub: Gurkirat-sudo-su/threat-intel-aggregator

一个基于规则的多源威胁情报 IOC 聚合与关联工具,能够解析、规范化、评分多格式数据源并生成可部署的阻止列表与摘要报告。

Stars: 0 | Forks: 0

# 🛡️ 威胁情报聚合器(非 AI) 一个基于规则(无 ML/AI)的工具包,用于从多个威胁情报源收集、解析、规范化和关联入侵指标(IOC),然后生成可部署的阻止列表和摘要 TI 报告。 作为网络安全实习项目(Unified Mentor)的一部分而构建。 ## 功能 - **多格式数据源解析**:支持 CSV、TXT 和 JSON(包括小型的类 STIX `indicator` 包格式)。 - **支持的 IOC 类型**:IP 地址、域名、URL、文件哈希(MD5/SHA1/SHA256)和电子邮件地址。 - **规范化与验证**:清理、去重并验证每种指标类型(例如,对 IP 进行真正的 `ipaddress` 验证,对哈希/域名/电子邮件进行基于正则表达式的结构检查)。 - **关联引擎**:跨多个数据源出现的指标会自动被标记为更高的严重性级别(低 / 中 / 高)。 - **阻止列表生成器**:导出可直接部署的阻止列表,按执行点进行拆分 —— 防火墙 IP 集、Web 过滤 URL/域名列表、EDR/AV 哈希列表、电子邮件阻止列表 —— 每种格式均包含 TXT、CSV 和 JSON。 - **报告**:Markdown + JSON 摘要报告,包含计数、严重性分布以及重复次数最多/最高优先级的指标。 - **两种接口**:提供用于脚本/自动化运行的 CLI(`cli.py`),以及用于交互式操作(支持文件上传、图表显示和一键 ZIP 导出)的 Streamlit 仪表板(`app.py`)。 ## 项目结构 ``` ti-aggregator/ ├── app.py # Streamlit dashboard ├── cli.py # Command-line interface ├── core/ │ ├── models.py # Unified IOC data model │ ├── parser.py # CSV/TXT/JSON/STIX-like feed parsing │ ├── normalizer.py # Validation, cleaning, deduplication │ ├── correlator.py # Cross-feed correlation & severity scoring │ ├── blocklist.py # Blocklist generation (TXT/CSV/JSON) │ └── reporter.py # Markdown/JSON report generation ├── sample_feeds/ # Example CSV/TXT/JSON feeds for testing ├── requirements.txt └── README.md ``` ## 环境配置 ``` python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt ``` ## 用法 — CLI ``` python cli.py --feeds sample_feeds/feed_osint.csv sample_feeds/feed_blocklist.txt sample_feeds/feed_stix.json --output output ``` 选项: - `--high-threshold N` — IOC 必须出现的最小数据源数量,以将其标记为**高**严重性(默认为 3) - `--medium-threshold N` — 标记为**中**严重性的最小数据源数量(默认为 2) - `--min-blocklist-severity {Low,Medium,High}` — 仅将处于或高于此严重性级别的 IOC 导出到阻止列表中 输出(位于 `--output` 目录下): - `firewall_ips.{txt,csv,json}` - `web_filter_urls.{txt,csv,json}` - `web_filter_domains.{txt,csv,json}` - `edr_hashes.{txt,csv,json}` - `email_blocklist.{txt,csv,json}` - `TI_Report.md` / `TI_Report.json` ## 用法 — 仪表板 ``` streamlit run app.py ``` 上传您自己的数据源文件或使用内置的示例数据源,在侧边栏中调整严重性阈值,点击 **Run Aggregation**,然后浏览 Overview(概览)/ IOC Table(IOC 表格)/ Blocklists(阻止列表)/ Report(报告)标签页。所有内容均可作为单个 ZIP 文件下载。 ## 添加您自己的数据源 **CSV** — 需要名为 `indicator`、`ioc` 或 `value` 的列(缺省时回退到第一列)。如果存在可选的 `type` 和 `category` 列,也会予以保留。 **TXT** — 每行一个指标;以 `#` 开头的行将被忽略。 **JSON** — 接受扁平的字符串列表、由 `{"value": ..., "type": ..., "category": ...}` 对象组成的扁平列表,或最小化的类 STIX 包:`{"objects": [{"type": "indicator", "pattern": "[ipv4-addr:value = '1.2.3.4']", "labels": [...]}]}`。 ## 严重性如何评分 严重性评估是刻意设计得简单且透明的(无 ML):越多的独立数据源报告同一个指标,就越能反映出该指标代表了当前活跃的、经过多方印证的恶意基础设施。 | 在数据源中出现次数 | 严重性 | |---|---| | ≥ high-threshold(默认 3) | 高 | | ≥ medium-threshold(默认 2) | 中 | | 低于 medium-threshold | 低 | ## 工具与库 Python 标准库(`re`、`csv`、`json`、`ipaddress`、`hashlib`、`pathlib`),外加用于仪表板的 `streamlit` 和 `pandas`。 ## 学习成果 - 在真实的 SOC/蓝队工作流中,TI 数据源是如何组织和使用的 - 跨异构格式的 IOC 解析、验证和规范化 - 跨源关联和严重性优先级划分逻辑 - 生成和导出可供防火墙、Web 过滤器和 EDR/AV 工具使用的阻止列表
标签:Kubernetes, PB级数据处理, Python, 威胁情报, 安全运维, 开发者工具, 数据清洗, 无后门, 自动化运营, 逆向工具