Web攻击检测机器学习深度实践(2)
(4)结构正常sql注入 ——> 无法识别
(5)结构异常正常请求 ——> 误判
(6)结构异常正常请求 ——> 误判
(7)结构异常正常请求 ——> 误判
2. 基于统计量的结构特征 对URL请求提取特征,如URL长度、路径长度、参数部分长度、参数名长度、参数值长度、参数个数,参数长度占比、特殊字符个数、危险特殊字符组合个数、高危特殊字符组合个数、路径深度、分隔符个数等等这些统计指标作为特征,模型可以选择逻辑回归、SVM、集合数算法、MLP或者无监督学习模型。 若只拿单个域名的url请求做验证该模型有尚可的表现;然而我们面对的是集团公司成千上万的系统域名,不同的域名表现出不同的URL目录层级、不同的命名习惯、不同的请求参数…针对这样极其复杂的业务场景,在上述特征领域,数据本身就会存在大量的歧义。这样,针对全栈的url请求模型区分效果较差,准确率也太低。实时上,即使有较良好的适配环境,相对单纯的场景,模型准确率也很难提升到97%以上。 3. 基于分词的代码片段特征 根据特定的分词规则,将url请求切片,利用TF-IDF进行特征提取,并保留具有区分能力的关键词组合特征,同时结合网上开源攻击样本尽可能完善特征。在这里如何“无损”分词和特征关键词组合的结构息息相关,是特征工程的重点,需要结合后期模型表现结果不断调整完善(下文重点讲述)。 实际上,保留的特征都是些Web攻击当中常见的危险关键词以及字符组合,而这些关键词及字符组合是有限的。理论上,结合目前所拥有的海量访问流量和WAF充分的Web攻击样本,几乎能全部覆盖的这些关键词及字符组合。 三、基于分词的特征提取和MLP模型 根据万能近似定理Universal approximation theorem(Hornik et al., 1989;Cybenko, 1989)描述,神经网络理论上能以任意精度你和任意复杂度的函数。 1. 特征工程
2. 模型效果 为了减少篇幅,这里只提供特征提取的思路和模型的评价结果。 随机森林: 逻辑回归: MLP模型: 3. 小结 缺点:
对于常见的shell了命令cat来说,如果用shell的语法去理解,cat c’a't c”’a”’t ””c’a’t””都是一回事。这里分词的MLP模型能理解cat,但对变形的c’a't这些无法理解(分词破坏信息)。 优点:
针对上面的基于关键词特征的MLP模型,可能有人会产生疑问,为什么能取得近似100%的准确率?这是反复调试的结果。笔者在做特征向量转换之前对url请求做了大量泛化和清洗的工作,也用到了正则。前期针对识别误判的请求,会通过调整词袋向量维度和url清洗方式,充分挖掘出正负样本的区别特征,之后再进行向量转换,从而尽量保证输入给模型的训练样本是没有歧义的。在模型上线期间,针对每日产生的误判类型,会在调整特征提取后,作为正样本重新投入训练集并更新模型。通过一点一滴的积累,让模型越来越完善。 四、识别变形和未知攻击的LSTM模型 (编辑:ASP站长网) |