perrywinkle2004/Threat-Intelligence-Aggregator

GitHub: perrywinkle2004/Threat-Intelligence-Aggregator

实时聚合多源威胁情报,自动提取并关联IOC,通过风险评分生成可操作封禁列表的交互式分析系统。

Stars: 0 | Forks: 0

# 🛡️ 威胁情报聚合器 (TIA) ### 实时 IOC 关联与网络威胁分析系统 ## 📋 概述 **威胁情报聚合器**是一款生产级网络安全工具,可从多个来源聚合威胁情报,自动提取和规范化妥协指标 (IOC),跨情报源关联重复威胁,根据风险严重程度进行评分,并通过交互式 Streamlit 仪表板生成可操作的封禁列表。 ## 🚀 设置与安装 ### 前置条件 - Python 3.9 或更高版本 - pip ### 安装依赖 ``` pip install -r requirements.txt ``` ### 运行应用程序 ``` streamlit run app.py ``` 应用在 [threat-intel-aggregator](https://threat-intel-aggregator.streamlit.app/) 打开 ## ✨ 功能 | 功能 | 描述 | |--------|-------------| | 🔍 **多格式解析** | 支持 CSV、JSON、TXT 和 URL 情报源 | | 🧩 **IOC 提取** | 基于正则表达式提取 IP、域名、URL、MD5/SHA256 哈希、邮箱 | | 🔗 **关联引擎** | 识别跨多个情报源出现的 IOC | | 📊 **风险评分** | 动态 0–100 评分 → 高/中/低严重程度 | | 🚫 **封禁列表生成器** | 按类型导出 TXT、CSV、JSON 格式的封禁列表 | | 📈 **5 种可视化** | 柱状图、饼图、热力图、时间线、散点图 — 全部深色主题 | | 💾 **持久化分析** | 将 IOC 元数据存储在 JSON 中(不存储原始情报内容)| | 📄 **情报报告** | 可下载的人类可读威胁摘要 | ## 🏗️ 架构 ``` Threat Feed (CSV / JSON / TXT / URL) │ ▼ ┌─────────────┐ │ IOC Parser │ ← Regex extraction + IP validation └──────┬──────┘ │ ▼ ┌────────────────┐ │ Normalizer │ ← Unified schema {type, value, source, timestamp} └───────┬────────┘ │ ▼ ┌─────────────────┐ │ Correlation Eng │ ← Groups by (value, type), counts cross-feed hits └───────┬─────────┘ │ ▼ ┌─────────────────┐ │ Risk Scorer │ ← base_type + freq_bonus + correlation_bonus → score └───────┬─────────┘ │ ┌─────┴──────┐ ▼ ▼ ┌──────────┐ ┌──────────┐ │Blocklist │ │Analytics │ ← Metadata → threat_history.json │Generator │ │Tracker │ └────┬─────┘ └────┬─────┘ │ │ ▼ ▼ Export Dashboard TXT/CSV/JSON 5 Charts ``` ## 🔬 支持的 IOC 类型 | 类型 | 示例 | 检测方法 | |------|---------|-----------------| | **IP 地址** | `185.220.101.47` | 正则表达式 + `ipaddress` 库(仅公共 IP)| | **域名** | `malware-c2.xyz` | TLD 感知正则表达式,支持 30+ TLD | | **URL** | `http://evil.com/payload` | HTTP/HTTPS 模式 | | **MD5 哈希** | `44d88612...` | 32 字符十六进制 | | **SHA256 哈希** | `3395856c...` | 64 字符十六进制 | | **邮箱** | `phish@evil.com` | RFC-5322 模式 | ## 📊 风险评分公式 ``` risk_score = base_type_score + (frequency / max_frequency) × 30 ← frequency bonus + 10 if correlated across feeds ← cross-feed bonus Capped at 100. Severity mapping: ≥ 70 → HIGH (🔴) ≥ 40 → MEDIUM (🟠) < 40 → LOW (🟢) ``` **各类型基础评分:** | 类型 | 基础评分 | |------|-----------| | hash | 50 | | url | 45 | | ip | 40 | | domain | 35 | | email | 25 | ## 📁 项目结构 ``` tia/ ├── app.py ← Streamlit application (2 pages) ├── requirements.txt ├── README.md │ ├── modules/ │ ├── __init__.py │ ├── ioc_parser.py ← Multi-format IOC extraction │ ├── normalizer.py ← Unified schema conversion │ ├── correlator.py ← Cross-feed correlation │ ├── risk_scoring.py ← Severity scoring engine │ └── blocklist_generator.py ← TXT/CSV/JSON export │ ├── analytics/ │ ├── __init__.py │ ├── tracker.py ← JSON metadata persistence │ ├── charts.py ← matplotlib/seaborn chart builders │ └── visualizer.py ← Chart orchestration │ ├── utils/ │ ├── __init__.py │ ├── helpers.py ← Format detection, report generation │ └── validators.py ← URL/IP/hash validation │ ├── data/ │ └── threat_history.json ← Persistent analytics store │ └── sample_inputs/ ├── malicious_ips.txt ← Botnet C2 IP feed ├── malicious_domains.txt ← Phishing/malware domain feed ├── mixed_ioc_feed.csv ← Multi-type CSV feed └── apt_threat_report.json ← APT intelligence JSON feed ``` ## 🎯 使用方法 ### 页面 1 — 威胁处理 1. **上传文件**(CSV、JSON、TXT)——或——**输入 URL**——或——**粘贴原始文本** 2. 可选:命名您的情报源(例如 `botnet-c2-list`) 3. 点击 **⚡ 处理威胁情报** 4. 查看: - IOC 总数及风险分布 - 完整指标表(按风险着色) - 高风险指标面板 - 关联指标(在多个情报源中出现的) - 按类型封禁列表下载(TXT / CSV / JSON) - 可下载的情报报告 ### 页面 2 — 分析仪表板 - 全时间范围的情报处理统计 - 5 个交互式图表(基于当前或历史数据生成) - 情报处理历史表 - 完整历史 IOC 导出(JSON) ## 📦 示例输入 `sample_inputs/` 目录下提供了三个示例情报源: ### 恶意_ips.txt 纯文本形式的僵尸网络 C2 和勒索软件基础设施 IP 列表。 类别:Emotet、Cobalt Strike、REvil、APT29、钓鱼主机。 ``` 185.220.101.47 91.109.204.91 45.153.160.140 ... ``` ### 恶意_domains.txt 钓鱼域名、恶意软件 C2、DGA 样本、勒索软件门户。 ``` secure-paypa1-login.com update-flash-player.net emotetc2panel.xyz ... ``` ### 混合_ioc_feed.csv 多列 CSV,包含多个威胁类别中的 IP、域名、URL、哈希和邮箱。 ``` type,indicator,threat_category,confidence,source_feed ip,185.220.101.47,botnet_c2,high,abuse_ch url,http://malware-delivery.xyz/payload/dropper.exe,malware_download,high,urlhaus hash,44d88612fea8a8f36de82e1278abb02f,eicar_test,low,virustotal ... ``` ### apt_威胁_report.json 结构化 JSON APT 报告,涵盖 APT29、Lazarus Group 和 REvil,包含 IP、域名、哈希、URL 和邮箱。 ## 🎨 颜色映射 ### 风险等级 | 等级 | 颜色 | |-------|-------| | 高 | 🔴 `#E74C3C` | | 中 | 🟠 `#F39C12` | | 低 | 🟢 `#27AE60` | ### IOC 类型 | 类型 | 颜色 | |------|-------| | IP | 🔵 蓝色 `#2980B9` | | 域名 | 🟣 紫色 `#8E44AD` | | URL | 🩵 青色 `#00BCD4` | | 哈希 | ⚪ 灰色 `#95A5A6` | | 邮箱 | 🟡 黄色 `#F1C40F` | ## 🔒 安全与隐私 - **不存储原始情报内容** — 仅存储 IOC 元数据(值、类型、评分、频率、时间戳) - 私有 IP 范围(RFC1918:10.x、172.16.x、192.168.x、127.x)自动排除 - 所有处理均在本地进行 — 分析期间不向外部服务发送数据 - URL 获取是唯一的网络操作(由用户发起) ## 🧠 演示的网络安全概念 | 概念 | 实现方式 | |---------|---------------| | **威胁情报** | 多源情报聚合与规范化 | | **僵尸网络基础设施** | 跨 Emotet、TrickBot、Cobalt Strike 情报源的 IP 关联 | | **钓鱼检测** | 域名 typosquatting 模式匹配 | | **APT 归因** | 按攻击者分组的 IOC 结构化 JSON 报告 | | **恶意软件分析** | MD5/SHA256 哈希提取与去重 | | **防御安全** | 自动化封禁列表生成,用于防火墙/IDS 部署 | | **OSINT** | 从开放威胁情报源获取 URL 情报 | | **风险优先级** | 频率加权评分,用于分诊 | ## 📜 许可证 MIT 许可证 — 教育/研究使用。示例 IOC 数据仅供说明。 *为网络安全黑客马拉松、学术演示和威胁情报研究而构建。*
标签:AMSI绕过, APT分析, C2通信, DAST, ESC4, Homebrew安装, IOC, IP情报, Kubernetes, masscan, OSINT, Python, Streamlit, URL情报, 僵尸网络, 关联分析, 可视化分析, 哈希分析, 块列表, 域名情报, 妥协指标, 威胁情报, 威胁情报平台, 威胁检测, 安全运营, 实时分析, 开发者工具, 恶意域名, 恶意软件分析, 扫描框架, 数据库接管, 数据聚合, 无后门, 暗网情报, 热力图分析, 网络安全, 访问控制, 逆向工具, 邮件情报, 隐私保护, 风险评分