Ra887/threat-intelligence-enrichment
GitHub: Ra887/threat-intelligence-enrichment
基于 Python 的威胁情报 IOC 富化引擎,自动对域名、IP、文件哈希等失陷标志进行类型识别、威胁分类、来源标注和置信度评分,输出结构化的威胁情报数据。
Stars: 0 | Forks: 0
# 威胁情报富化引擎
## 📌 项目概述:
本项目是一个基于 Python 的威胁情报 IOC(失陷标志,Indicator of Compromise)富化引擎。它会自动使用相关元数据对原始 IOC(域名、IP、文件哈希)进行富化,元数据包括:
- 威胁类型(基于关键字或 IP 范围规则)
- IOC 类型(域名、IP 地址、文件哈希等)
- 来源情报源(内部、MISP、OSINT)
- 内部:您组织自己的威胁情报
- OSINT,即开源情报,在网络安全领域是指收集和分析公开可用的信息,以获取对潜在威胁和漏洞的洞察的实践。
- MISP,代表恶意软件信息共享平台和威胁共享,是一个开源威胁情报平台,用于收集、存储、分析和共享网络威胁信息。
- 勒索软件是一种恶意软件,它通过加密等方式限制对计算机系统或文件的访问,并要求支付赎金以解除限制。
- InfoStealer(信息窃取者的简称)是一种专门设计用于在受害者不知情的情况下从其设备中窃取敏感数据的恶意软件。网络犯罪分子通常使用它来提取有价值的个人、财务或企业信息。
- Botnet(僵尸网络的简称)是由受感染的计算机或设备组成的网络——通常被称为“bots”或“zombies”——这些设备感染了恶意软件,并由被称为 botmaster 的网络犯罪分子远程控制。这些设备可以包括 PC、服务器、IoT 设备和移动电话,在所有者不知情的情况下被暗中征用以执行协调的恶意任务。Botnet 通常用于大规模网络攻击,例如分布式拒绝服务攻击,
- 置信度分数
- 时间戳(UTC 格式)
它还支持从 JSON 文件中接入威胁情报源,并对每个 IOC 进行评估以进行富化。
## 🧠 问题陈述:
给定一组威胁 IOC 和一系列规则/情报源:
- 识别每个 IOC 的类型(域名、ipv4 地址、文件哈希)
- 使用匹配规则将每个 IOC 映射到特定的威胁类型
- 识别来源(内部、misp、osint)
- 根据来源 + 威胁类型计算置信度分数
- 生成带有时间戳的结构化富化输出
## ✅ 功能:
- 基于规则的威胁类型分类
- 通过正则表达式确定 IOC 类型
- 使用启发式模型进行置信度评分
- 用于规则和威胁情报集的 Feed 加载器
- 使用 `pytest` 和 `pytest-cov` 实现完整的单元测试覆盖率
## ⚙️ 如何使用:
1. 克隆项目并导航至根目录。
2. 确保已安装 Python 3.12+。
3. 创建并激活虚拟环境:
python -m venv venv
venv\Scripts\activate # 在 Windows 上
4. 运行测试:
pytest threat_detector/tests/ -v
5. 生成 HTML 覆盖率报告:
pytest --cov=enrich --cov-report=html threat_detector/tests/
pytest --cov=src tests/ --cov-report=html
🧪 测试:
1. 所有核心逻辑(enrich.py)均由 unittest 用例覆盖。
2. 包含针对以下内容的正面和负面测试:
威胁类型判定
IOC 类型检测
置信度计算
使用真实输入对 IOC 进行全面富化
3. 还包括针对以下内容的测试:
feeds_loader.py 中的 Feed 加载函数
JSON 错误处理
文件未找到和值错误的边缘情况
📝 注意事项:
1. 引擎会优雅地处理未知默认值(例如,空输入或未匹配的规则)。
2. 使用正则表达式来确定 IOC 类型。
3. 如果未找到已知来源,置信度分数将默认为最小值(例如 10)。
4. 使用 UTC 格式的 datetime 进行报告。
📦 需求 (requirements.txt):
```
pip install pytest
pip install pytest-cov
pip install tzdata
```
标签:IOC富化, Python, 威胁情报, 安全规则引擎, 开发者工具, 无后门, 逆向工具