SpoorthiPai/hybrid-log-anomaly-detection
GitHub: SpoorthiPai/hybrid-log-anomaly-detection
一个结合机器学习、规则和域自适应Transformer的跨系统日志异常检测框架,用于自动化识别网络安全威胁。
Stars: 1 | Forks: 0
# 跨系统日志异常检测的混合域自适应框架
一个以网络安全为重点的日志异常检测框架,该框架结合了机器学习、基于规则的检测、混合异常分析以及域自适应Transformer架构,用于在异构系统日志中检测可疑行为。
本项目是作为PES大学信息安全、取证与网络弹性中心实习/研究工作的一部分开发的。
# 项目概述
现代计算基础设施(如Linux服务器、云平台、分布式系统、企业环境和超级计算机)持续生成海量的运行时日志。这些日志包含有关认证事件、系统异常行为、登录失败尝试、未授权访问、权限提升和安全事件的重要信息。
手动检查此类大规模日志效率低下且困难。本项目实现了一个统一的混合与域自适应框架,用于自动化日志异常检测,采用:
- 基于机器学习的序列分析
- 基于规则的网络安全检测
- 混合异常检测
- 基于Transformer的序列学习
- 使用梯度反转层的域自适应
该框架专注于识别可疑活动,例如:
- 暴力破解登录攻击
- 无效用户枚举
- 过度使用sudo命令
- 认证异常
- 跨系统日志异常
# 重要说明
本代码库包含一个简化的、可复现的基于Linux的日志异常检测工作流实现。
完整的研究工作包括:
- 大规模数据集
- 高级预处理管道
- HDFS、BGL、Windows和Linux日志实验
- 基于Transformer的异常检测
- 使用梯度反转层的域自适应学习
- 跨域迁移学习实验
最终完整的实验实现未能完全恢复。然而,本代码库包含了可复现的基于Linux的实现、笔记本实验、项目报告以及记录完整方法和结果的研究论文。
# 主要特性
- Linux认证日志解析
- 使用结构化事件ID进行事件抽象
- 滑动窗口序列生成
- 基于频率的异常检测
- 基于规则的网络安全告警生成
- 混合机器学习 + 基于规则的检测框架
- 受DeepLog启发的序列学习
- 基于Transformer的序列日志建模
- 基于梯度反转层的域自适应
- 跨系统异常检测实验
- 使用准确率、精确率、召回率、F1分数、ROC曲线和混淆矩阵进行评估
# 使用的数据集
| 数据集 | 描述 | 用途 |
|---|---|---|
| HDFS | Hadoop分布式文件系统日志 | 序列学习与Transformer实验 |
| BGL | 蓝色基因/L超级计算机日志 | 跨域迁移评估 |
| Windows事件日志 | Windows安全/系统日志 | 跨系统泛化 |
| Linux认证日志 | auth.log及Linux LogHub数据集 | 实际的网络安全异常检测 |
# Linux日志事件映射
Linux认证日志被转换为结构化事件ID以便进行序列学习。
| 事件ID | 含义 |
|---|---|
| E0 | 正常/后台/未分类事件 |
| E1 | 密码认证失败 |
| E2 | 成功登录 |
| E3 | sudo命令使用 |
| E4 | 无效用户尝试 |
| E5 | 会话关闭 |
| E6 | 连接关闭 |
| E7 | PAM认证事件 |
# 方法论
## 1. 日志文件加载
原始Linux认证日志从以下位置加载:
- `/var/log/auth.log`
- Linux LogHub数据集
- 自定义的Linux安全日志
示例:
```
with open("linux.log", "r") as file:
logs = file.readlines()
```
## 2. 事件解析与抽象
原始日志行通过基于关键字的模式匹配被转换为结构化事件ID。
示例:
```
if "failed password" in line:
return "E1"
elif "accepted password" in line:
return "E2"
elif "sudo" in line:
return "E3"
elif "invalid user" in line:
return "E4"
else:
return "E0"
```
这种抽象降低了文本复杂性,并使得高效序列建模成为可能。
## 3. 序列生成
使用滑动窗口技术生成固定长度的事件序列。
示例:
```
Event Stream:
E2 → E3 → E1 → E1 → E4 → E2 → E3
Generated Sequences:
[E2, E3, E1]
[E3, E1, E1]
[E1, E1, E4]
[E1, E4, E2]
[E4, E2, E3]
```
这使得模型能够学习事件之间的时间关系。
## 4. 基于机器学习的异常检测
实现了一个基于频率的序列学习模型。
该模型:
- 学习观察到的事件序列的概率
- 识别低概率序列
- 将罕见或可疑序列标记为异常
低频事件模式被视为异常行为。
## 5. 基于规则的网络安全检测
实现了一个规则引擎来检测已知的攻击特征。
### 包含的规则
### 暴力攻击检测
当连续发生重复的密码尝试失败时触发。
### 用户枚举检测
当检测到多个无效用户尝试时触发。
### 过度sudo使用检测
当观察到异常的sudo活动或权限提升行为时触发。
## 6. 混合检测框架
混合框架结合了:
- 机器学习预测
- 基于规则的告警
如果满足以下任一条件,序列将被分类为异常:
- 机器学习模块检测到低概率序列,或
- 规则引擎检测到可疑模式
这提高了整体的异常覆盖率和检测平衡性。
# 系统架构
所提出的框架包含以下主要模块:
1. 数据收集
2. 日志预处理
3. 事件提取
4. 序列生成
5. 机器学习模块
6. 基于规则的检测模块
7. 混合检测框架
8. 基于Transformer的序列学习
9. 使用GRL的域自适应Transformer
10. 评估与可视化
# 域自适应Transformer框架
项目的高级阶段专注于基于深度学习的跨系统异常检测。
## Transformer组件
- 嵌入层
- 位置编码
- 多头自注意力
- 层归一化
- 前馈网络
- Sigmoid分类层
## 梯度反转层
集成了梯度反转层用于域自适应。
GRL使模型能够学习:
- 域不变表示
- 共享的异常模式
- 跨系统行为关系
这提高了在异构日志系统之间的迁移学习能力。
# 跨域实验
进行的实验包括:
- HDFS → BGL
- HDFS → Windows
- 跨HDFS、BGL和Windows的多域训练
基于GRL的域自适应Transformer显著提高了跨系统泛化能力。
# 基于Linux的模型结果
| 模型 | 准确率 | 精确率 | 召回率 |
|---|---:|---:|---:|
| 仅ML频率模型 | 0.715 | 0.214 | 0.068 |
| 基于规则的模型 | 0.920 | 1.000 | 0.668 |
| 混合模型 | 0.876 | 0.745 | 0.737 |
# 结果分析
## 仅ML模型
仅ML模型成功学习了正常序列行为,但在处理未见过的异常和罕见攻击模式时遇到困难。
这导致召回率较低。
## 基于规则的模型
基于规则的模型达到了非常高的精确率,因为网络安全规则是确定性和高度特异性的。
然而,它可能会遗漏与预定义攻击特征不匹配的异常。
## 混合模型
混合框架通过结合以下两者实现了平衡的检测性能:
- ML的适应性
- 基于规则的可靠性
这在保持高精确率的同时提高了异常覆盖率。
# 基于Transformer的跨域结果
| 模型设置 | F1分数 | 观察结果 |
|---|---:|---|
| 普通Transformer:HDFS → BGL | 0.15 | 严重的域偏移失败 |
| 正则化Transformer:HDFS → BGL | 0.20 | 少许改进 |
| 使用GRL的域自适应Transformer | 0.93 | 强大的跨域泛化能力 |
| 域自适应Transformer:HDFS → Windows | 0.97 | 取得的最佳结果 |
# 使用的技术
- Python
- Scikit-learn
- TensorFlow / Keras
- NumPy
- Pandas
- Matplotlib
- Jupyter Notebook
- Linux日志
- LogHub数据集
- Transformer模型
- 梯度反转层
- 机器学习
- 基于规则的网络安全检测
# 代码库结构
```
hybrid-log-anomaly-detection/
│
├── README.md
├── requirements.txt
├── main.py
├── .gitignore
├── LICENSE
│
├── docs/
│ ├── Report-Final.docx
│ └── Internship Research Paper.pdf
│
├── notebooks/
│ └── hdfs-log-anomaly-detection.ipynb
│
├── results/
│ └── result images
│
├── diagrams/
│ └── architecture diagrams
│
└── sample-data/
└── sample-auth.log
```
# 如何运行
## 1. 克隆代码库
```
git clone https://github.com/your-username/hybrid-log-anomaly-detection.git
cd hybrid-log-anomaly-detection
```
## 2. 安装依赖
```
pip install -r requirements.txt
```
## 3. 运行Linux日志检测脚本
```
python main.py
```
## 4. 运行笔记本
打开:
```
notebooks/hdfs-log-anomaly-detection.ipynb
```
并执行单元格以研究基于HDFS的异常检测工作流。
# 示例输出
```
Total logs: 20
ML Detected Anomalies:
Anomaly detected due to low-probability sequence
RULE-BASED ALERTS:
Brute Force Attack Detected
User Enumeration Attack Detected
Excessive Sudo Usage / Possible Privilege Escalation Detected
```
# 可视化结果
该项目包含:
- 系统架构图
- Linux日志解析工作流
- 滑动窗口序列生成
- 性能比较图表
- 混淆矩阵
- ROC曲线比较
- 域自适应Transformer架构
# 局限性
- 部分异常标签是使用启发式逻辑生成的。
- 未实现实时流式部署。
- Linux ML模块使用基于频率的序列学习。
- 日志数据集高度不平衡。
- 跨域性能在很大程度上依赖于预处理质量。
- 最终的实验代码版本未能完全恢复。
# 未来展望
- 实时流式异常检测
- 与Splunk或Elastic SIEM的SIEM集成
- Docker部署
- 在AWS/Azure上的云部署
- Transformer-LSTM混合架构
- 自监督日志表示学习
- 联邦异常检测
- 实时SOC仪表板集成
# 结论
本项目表明,稳健的日志异常检测需要整合多种互补的方法。
- 基于规则的系统为已知攻击提供高精确率
- 机器学习实现自适应异常识别
- 混合框架提高平衡检测性能
- 域自适应Transformer提高跨系统泛化能力
所提出的框架为异构计算环境中的网络安全监控、SOC运营、SIEM分析和自动化威胁检测提供了一个可扩展且实用的基础。
# 关键词
日志异常检测,网络安全,SOC,SIEM,机器学习,深度学习,Transformer,梯度反转层,域自适应,Linux日志,HDFS日志,BGL日志,Windows事件日志,混合检测,DeepLog,威胁检测
标签:AMSI绕过, Apex, NoSQL, sudo滥用检测, TCP/UDP协议, Transformer模型, 云计算, 企业安全, 分布式系统, 响应大小分析, 域自适应, 威胁检测, 子域名暴力破解, 序列分析, 异常检测, 无效用户枚举检测, 日志挖掘, 日志预处理, 暴力登录攻击检测, 机器学习, 梯度反转层, 深度学习, 混合框架, 网络安全, 网络资产管理, 自动化检测, 规则引擎, 认证异常分析, 跨域迁移学习, 跨系统日志, 逆向工具, 隐私保护