案例来源:@七雨
0. 背景:
a. 硬规则的异常检测容易被黑客绕过,并且无法应对0day攻击;同时规则构造和维护成本高。
b. 引入机器学习技术,但是web入侵样本稀少,变化多样,对模型训练造成难度
1. 思路:基于profile的方法,对正常访问日志建模,与正常流量不符的视为一场流量
2. 方法:
1)基于统计学习模型:对正常流量进行数值化特征提取,分布统计,进行异常检测。特征包括:
a. 参数value长度
b. 字符分布:字符出现的频率是否符合理论分布
c. 参数缺失
d. 参数数据
e. 访问频率:单ip访问频率、总访问频率
f. 访问时间间隔
2)基于文本分析的机器学习模型:参考下图,绿色为正常流量,红色为异常流量。可以看到正常流量满足“数字_字母_数字”的模式。借鉴文本序列模式建模,比较成功的是基于HMM的序列建模。
3)基于单分类模型:由于我们只有大量白样本,因此考虑采用单分类模型,学习单类样本最小边界,边界外为异常值。单分类方法有:
a. one-class SVM
b. 深度自编码机
4)基于聚类模型