xFa00/Threat-Hunting-Analytics
GitHub: xFa00/Threat-Hunting-Analytics
基于 Windows 身份验证日志的威胁狩猎分析方案,利用特征工程和 Isolation Forest 无监督学习检测异常用户行为,并通过 MySQL 和 Tableau 实现结果存储与可视化。
Stars: 0 | Forks: 0
# 威胁狩猎分析
## 描述
本项目实现了一种基于 Windows 身份验证日志的 Threat Hunting 行为分析解决方案。
该解决方案通过特征工程技术、探索性数据分析以及使用 Isolation Forest 的无监督机器学习,将一组日志转换为用户的行为特征。
作为补充,结果将存储在 MySQL 数据库中,以执行分析查询,随后通过 Tableau 开发的仪表板进行可视化。
## 总体目标
开发一种分析解决方案,旨在通过行为特征、无监督 Machine Learning 技术和 SQL 查询,识别 Windows 身份验证日志中存在异常行为的用户。
## 具体目标
- 提取并清理身份验证日志。
- 通过 Feature Engineering 构建用户的行为特征。
- 对生成的变量进行统计分析。
- 使用 Isolation Forest 检测行为异常的用户。
- 通过可解释的规则解释检测到的异常。
- 将结果存储在 MySQL 中。
- 执行 SQL 查询以支持 Threat Hunting 过程。
- 通过 Tableau 可视化结果。
# 解决方案架构
```
+-------------------------+
| Logs Windows (.txt) |
+------------+------------+
|
v
+-------------------------+
| Extracción y limpieza |
| DataExtractor |
| DataCleaner |
+------------+------------+
|
v
+-------------------------+
| Feature Engineering |
| Construcción de perfiles|
+------------+------------+
|
v
+-------------------------+
| Análisis Exploratorio |
| (EDA) |
+------------+------------+
|
v
+-------------------------+
| Isolation Forest |
| Detección de anomalías |
+------------+------------+
|
+------------------+
| |
v v
+----------------+ +----------------------+
| MySQL | | Tableau Dashboard |
| Consultas SQL | | Visualización |
+----------------+ +----------------------+
```
# 项目结构
```
TalentB
│
├── data/
│ └── LZ_Datos_Dummy_TalentoB.txt
│
├── notebook/
│ └── threat_hunting.ipynb
│
├── src/
│ ├── analytics/
│ ├── database/
│ ├── models/
│ ├── pipeline/
│ └── utils/
│
├── sql/
│ └── threat_hunting_analytics.sql
│
├── dashboard/
│ └── Threat_Hunting_Dashboard.twb
│
├── requirements.txt
│
└── README.md
```
# 使用的技术
- Python 3
- Pandas
- NumPy
- Matplotlib
- Scikit-Learn
- Isolation Forest
- SQLAlchemy
- PyMySQL
- MySQL
- Jupyter Notebook
- Tableau
# 工作流程
本解决方案按照以下流程开发:
1. 提取日志。
2. 清理和准备数据。
3. 特征工程。
4. 构建用户特征。
5. 探索性数据分析。
6. 变量选择。
7. 训练 Isolation Forest 模型。
8. 异常解释。
9. 存储至 MySQL。
10. SQL 查询。
11. 在 Tableau 中进行可视化。
# 安装
创建虚拟环境
```
python -m venv venv
```
激活环境
Mac / Linux
```
source venv/bin/activate
```
Windows
```
venv\Scripts\activate
```
安装依赖项
```
pip install -r requirements.txt
```
# 执行
打开 notebook
```
notebook/threat_hunting.ipynb
```
按顺序执行所有单元格。
notebook 将自动执行:
- 加载数据集。
- 清理。
- Feature Engineering。
- 构建用户特征。
- 探索性分析。
- 训练 Isolation Forest。
- 异常解释。
- 存储至 MySQL。
- SQL 查询。
- 结果可视化。
# 数据库
本项目包含完整的数据库备份。
文件:
```
sql/threat_hunting_analytics.sql
```
包含以下表:
- logs_clean
- user_profile
- anomaly_results
恢复方法:
```
CREATE DATABASE threat_hunting_analytics;
```
随后导入文件:
```
sql/threat_hunting_analytics.sql
```
# 仪表板
本项目包含一个使用 Tableau 开发的仪表板,旨在便于直观地探索所获得的结果。
该仪表板展示了:
- 活动最频繁的用户。
- 检测到的异常用户。
- 事件分布。
- 正常特征与异常特征的比较。
- 检测过程的总体指标。
# 获得的结果
在项目开发过程中,获得了以下结果:
- 处理了 60,322 个身份验证事件。
- 构建了 21 个行为特征。
- 基于身份验证行为的特征工程。
- 通过 Isolation Forest 自动检测异常用户。
- 对检测到的异常进行可解释的说明。
- 将结果持久化存储在 MySQL 中。
- 使用 SQL 查询支持 Threat Hunting 活动。
- 用于可视化分析的交互式仪表板。
# 主要发现
分析成功识别出其行为与组织内其他用户存在显著差异的用户。
与这些特征相关的主要特点包括:
- 事件量巨大。
- 使用的端口具有高度多样性。
- 在工作时间以外的活动较多。
- 夜间活动的比例较高。
- 偏离模型学习到的总体模式的行为。
这些结果说明了行为特征分析如何通过优先处理需要深入调查的用户,从而为 Threat Hunting 过程提供支持。
# 结论
- 行为特征的构建成功地将数千条独立的日志记录转化为可用于用户分析的信息。
- 相比于直接使用原始日志,特征工程显著提升了行为表现的刻画效果。
- Isolation Forest 成功识别出了异常特征,且无需依赖预先标记的数据。
- 与 MySQL 的集成促进了针对 Threat Hunting 的分析查询的执行。
- Tableau 能够清晰地展示结果并简化其解读过程。
# 作者
**Fabián Chiran**
系统工程与信息学专业
哥伦比亚国立大学
本项目是为 **TalentB – Prueba de conocimiento Talento B** 技术挑战赛开发的解决方案。
标签:Apex, Isolation Forest, NoSQL, 代码示例, 后端开发, 异常检测, 数据分析, 机器学习, 逆向工具