PKHarsimran/SwiftIOC-ML-Scoring-Engine
GitHub: PKHarsimran/SwiftIOC-ML-Scoring-Engine
基于机器学习的威胁情报指标评分与优先级排序引擎,将 SwiftIOC 收集的原始 IOC 数据转化为分析师可直接使用的高中低优先级输出。
Stars: 0 | Forks: 0
# SwiftIOC-ML-Scoring-Engine
一个实用的机器学习管道,用于对从 SwiftIOC 收集的威胁情报指标进行评分和优先级排序。
该项目的目标是通过以下方式将原始的 IOC 导出数据转化为便于分析师使用的输出:
- 加载和清洗 SwiftIOC 数据
- 生成弱监督标签
- 构建模型特征
- 训练基于家族的评分模型
- 对新指标进行评分
- 导出排序后的结果以供审查
## 本项目的作用
本代码库接收 SwiftIOC CSV 导出文件,并生成确定好优先级的 IOC 输出,例如:
- `high_value`
- `medium_value`
- `low_value`
它采用基于家族的方法,而不是将所有指标同等对待。这有助于区分截然不同的 IOC 类型,例如:
- `ipv4`
- `cve`
- `url`
- `sha256`
生产评分流程还会针对已知的运营情况应用轻量级的感知来源规则,例如:
- `tor_exit_nodes`
- `feodo_ipblocklist`
- `openphish_feed`
## 项目结构
```
SwiftIOC-ML-Scoring-Engine/
├── data/
│ ├── raw/
│ ├── processed/
│ └── labeled/
├── models/
├── notebooks/
├── reports/
├── src/
│ ├── __init__.py
│ ├── benchmark_production_model.py
│ ├── export_ranked_results.py
│ ├── features.py
│ ├── inspect_model.py
│ ├── label_data.py
│ ├── load_data.py
│ ├── preprocess.py
│ ├── run_pipeline.py
│ ├── score_iocs.py
│ └── train_model.py
├── .gitignore
├── LICENSE
├── README.md
└── requirements.txt
```
## 数据流
```
data/raw/latest.csv
↓
load_data.py
↓
data/processed/processed_iocs.csv
↓
label_data.py
↓
data/labeled/labeled_iocs.csv
↓
features.py
↓
data/processed/featured_iocs.csv
↓
train_model.py
↓
models/ioc_priority_family_bundle_v1.joblib
↓
score_iocs.py
↓
reports/scored_iocs_family_v4.csv
↓
export_ranked_results.py
↓
reports/exports/
```
## 环境要求
安装依赖项:
```
pip install -r requirements.txt
```
## 输入格式
将最新的 SwiftIOC 导出文件放置在此处:
```
data/raw/latest.csv
```
该管道需要以下核心列:
- `indicator`
- `type`
- `source`
- `first_seen`
- `last_seen`
- `confidence`
- `tags`
- `reference`
- `context`
## 如何运行
### 完整的生产管道
```
python src/run_pipeline.py
```
### 仅从评分开始
```
python src/run_pipeline.py --from-step score
```
### 仅导出
```
python src/run_pipeline.py --only export
```
### 仅基准测试
```
python src/run_pipeline.py --only benchmark
```
### 显示可用步骤
```
python src/run_pipeline.py --list-steps
```
## 管道步骤
### 1. `load_data.py`
加载原始的 SwiftIOC CSV,验证所需的列,应用预处理,并保存清洗后的数据集。
**输出:**
- `data/processed/processed_iocs.csv`
### 2. `label_data.py`
应用弱评分逻辑并创建训练标签。
**添加:**
- `weak_score`
- `label`
**输出:**
- `data/labeled/labeled_iocs.csv`
### 3. `features.py`
从已标记的数据集构建可直接用于模型的特征。
**特征组包括:**
- 指标家族
- 文本丰富度
- 关键词命中次数
- 时间特征
- 置信度特征
- 家族诊断
**输出:**
- `data/processed/featured_iocs.csv`
### 4. `train_model.py`
训练基于家族的生产模型包并保存摘要文件。
**输出:**
- `models/ioc_priority_family_bundle_v1.joblib`
- `reports/training_summary_family_v1.csv`
- `reports/training_summary_family_v1.txt`
### 5. `score_iocs.py`
使用训练好的基于家族的模型和感知来源的生产规则对最新的 IOC 数据集进行评分。
**输出:**
- `reports/scored_iocs_family_v4.csv`
### 6. `export_ranked_results.py`
创建面向分析师的 CSV 导出文件和摘要报告。
**输出:**
- `reports/exports/all_ranked_iocs.csv`
- `reports/exports/high_priority_iocs.csv`
- `reports/exports/medium_priority_iocs.csv`
- `reports/exports/top_100_for_review.csv`
- `reports/exports/summary.txt`
## 基准测试
使用生产基准测试脚本评估评分逻辑在预留的来源组中的表现:
```
python src/benchmark_production_model.py
```
基准测试有意与主要生产管道分开,以便评分模型可以在完整的标记数据集上进行训练,同时验证仍保持独立的工作流。
## 目前的建模方法
### 弱监督
本代码库目前使用基于规则的弱标签,而不是分析师验证的真实基准。
这意味着该项目应被理解为一个实用的 IOC 优先级排序引擎,而不是一个完美的研究级分类器。
### 基于家族的评分
指标按家族进行路由,这样模型就不会试图将 CVE、URL、哈希和 IPv4 当作同一个问题来学习。
### 感知来源的运营规则
在能够提高运营实用性的地方,使用了一些有针对性的模型后规则,特别是对于已知的订阅源行为。
示例:
- 纯 `tor_exit_nodes` 订阅源 → `low_value`
- 纯 `feodo_ipblocklist` 订阅源 → `high_value`
- 纯 `openphish_feed` URL 行 → `high_value`
## 主要输出
### 生产模型
```
models/ioc_priority_family_bundle_v1.joblib
```
### 已评分的 IOC 结果
```
reports/scored_iocs_family_v4.csv
```
### 面向分析师的导出
```
reports/exports/
```
## 建议的工作流
1. 将最新的 SwiftIOC 数据导出到 `data/raw/latest.csv`
2. 运行完整管道
3. 审查:
- `reports/scored_iocs_family_v4.csv`
- `reports/exports/high_priority_iocs.csv`
- `reports/exports/top_100_for_review.csv`
- `reports/exports/summary.txt`
4. 在验证对标签、特征、评分规则或模型逻辑的更改时,运行基准测试
## 注意事项
- 本项目中的标签是根据弱评分逻辑生成的,而非分析师审查过的真实基准。
- 这使得本项目在优先级排序、分类和运营排名方面极为实用,但它并不是威胁严重程度的最终裁决者。
- 应使用基准测试脚本在不同来源组中验证当前的生产评分行为。
- `features.py` 中的家族诊断有助于捕获类型与指标不匹配的问题,特别是针对哈希数据。
## 未来改进
可能的未来改进:
- 分析师审查过的训练标签
- 更丰富的 IPv4 扩展特征
- 更好的特定家族模型
- 置信度校准
- 自动化的计划运行
- 用于审查已排序 IOC 的仪表板或 UI
标签:AI安全, Apex, Chat Copilot, CSV数据处理, CVE, IOC优先级排序, IOC评分, Joblib, Python, SHA256, SOC工具, SwiftIOC, Tor出口节点, 代码示例, 僵尸网络, 威胁情报, 安全运营, 开发者工具, 弱监督学习, 恶意IP, 恶意URL, 扫描框架, 数字签名, 数据分析, 数据清洗, 无后门, 机器学习, 漏洞发现, 特征工程, 网络安全, 自动化评分, 蓝军, 逆向工具, 钓鱼检测, 隐私保护