iamissifu/cyber-threat-intelligence-forecasting
GitHub: iamissifu/cyber-threat-intelligence-forecasting
使用机器学习方法解决钓鱼网站检测、漏洞利用预测和网络攻击量预测三个网络安全问题的分析项目。
Stars: 0 | Forks: 0
# 网络威胁情报与预测
在三个不同的网络威胁情报问题中应用了机器学习:钓鱼网站检测、漏洞利用预测以及网络攻击量预测,涵盖了分类、不平衡类别处理和时间序列建模。
## 概述
威胁情报工作涵盖了广泛的预测问题,从二元分类(这个 URL 是钓鱼网站吗?)到不确定性下的优先级排序(这个 CVE 真的会被利用吗?)再到运营预测(攻击量何时会激增?)。本项目使用最适合每种情况的模型来解决这三个问题,最后讨论了如何将它们组合成一个主动威胁情报 pipeline。
| 问题 | 任务类型 | 模型 |
|---|---|---|
| 钓鱼网站检测 | 二元分类 | Logistic Regression, Random Forest |
| 漏洞利用预测 | 二元分类(不平衡) | Random Forest (class-weighted) |
| 网络攻击量预测 | 时间序列预测 | ARIMA |
## 涵盖内容
**钓鱼网站识别**
- 加载和检查 UCI Phishing Websites 数据集(30 个 URL/网页特征)
- 对哪些特征最能区分钓鱼网站和合法网站进行探索性分析
- Logistic Regression 与 Random Forest 的比较
**漏洞利用预测**
- 清洗 CVE 数据集(CVSS 分数、攻击向量、复杂性、发布日期)
- 预测给定漏洞是否存在公开的 exploit
- 类别不平衡处理,明确说明为什么优先考虑 recall 而不是 precision —— 遗漏一个可利用漏洞的后果比误报严重得多
**网络攻击预测**
- 基于 CIC-IDS-2017 风格的模式(每周季节性 + 趋势)构建的合成每日攻击量时间序列
- ARIMA(5,1,0) 预测模型,讨论了 ARIMA 在哪些方面会失效(不规则激增、多重季节性)以及用什么能更好地处理这些情况(Prophet, LSTM)
**总结与讨论**
- 跨任务的模型性能比较
- 漏洞利用预测中误报和漏报之间在现实世界中的成本不对称性
- ARIMA 在网络攻击预测中的局限性及更强大的替代方案
- 提出一个三层统一威胁情报 pipeline:预防(钓鱼过滤)→ 优先级排序(感知 exploit 的补丁调度)→ 预期(用于 SOC 人员配备的攻击量预测)
## 关键发现
- Random Forest 在两项分类任务上的表现均优于 Logistic Regression,这与钓鱼和 CVE 数据中存在的非线性特征交互是一致的。
- 在漏洞利用预测中,有意识地优先考虑 recall:这里的漏报意味着一个可利用的漏洞未打补丁,这比花在误报上的分析师时间的代价要高昂得多。
- ARIMA 相当好地捕捉了潜在的趋势和每周的季节性,但在由大规模攻击活动驱动的激增日上表现会下降,这正是预期 Prophet 或 LSTM 等模型会表现更好的地方,但代价是需要更多的数据和训练时间。
- 这三个问题自然地组合成一个分层 pipeline:实时预防、持续优先级排序和具有前瞻性的预期 —— 促使安全团队从被动防御转向主动防御姿态。
## 技术栈
`Python` · `pandas` · `NumPy` · `scikit-learn` · `statsmodels` (ARIMA) · `matplotlib` · `seaborn`
## 运行说明
```
pip install pandas numpy scikit-learn statsmodels matplotlib seaborn jupyter
jupyter notebook cyber-threat-intelligence-forecasting.ipynb
```
- 钓鱼检测使用 [UCI Phishing Websites 数据集](https://archive.ics.uci.edu/dataset/327/phishing+websites)。
- 利用预测使用带有 CVSS 评分字段的 CVE 数据集。
- 预测使用在 notebook 内生成的合成时间序列(该部分无需外部下载)。
标签:Apex, 威胁情报, 开发者工具, 时间序列预测, 机器学习, 漏洞预测, 网络钓鱼检测, 逆向工具