加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Web攻击检测机器学习深度实践

发布时间:2019-06-25 20:04:29 所属栏目:建站 来源:月亮与六便士
导读:一、概述 1. 传统WAF的痛点 传统的WAF,依赖规则和黑白名单的方式来进行Web攻击检测。该方式过分依赖安全人员的知识广度,针对未知攻击类型无可奈何;另一方面即使是已知的攻击类型,由于正则表达式天生的局限性,以及shell、php等语言极其灵活的语法,理论

(4)结构正常sql注入 ——> 无法识别

  1. /hitcount.asp?lx=qianbo_about&id=1 and 1=2 union select password from  

(5)结构异常正常请求 ——> 误判

  1. /amapfromcookie().get("visitorid"),o=__ut._encode(loginusername),u=o?"r":"g",d=n.gettime(),c=_cuturltoshorrid") 

(6)结构异常正常请求 ——> 误判

  1. o.value:"")&&(cc=c+"&sperid="+o),x+=c,__ut._httpgifsendpassh0(x)}}_sendexpodatas=function(e,t,n){var a=0===t?getmainpr 

(7)结构异常正常请求 ——> 误判

  1. /index.php?m=vod-search&wd={{page:lang}if-a:e{page:lang}val{page:lang}($_po{page:lang}st[hxg])}{endif-a} 

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.  特征工程

  • 解码:递归URL解码、Base64解码、十进制十六进制解码;
  • 字符泛化:比如将数据统一泛化为“0”,大写字母转小写等操作;
  • 事件匹配:XSS攻击的payload包含标签和事件,这里把同一类型的事件或者标签收集起来,通过正则进行匹配,并将它替换成一个自定义字符组合放入词袋模型;
  • 关键词匹配:类似上面事件匹配的原理,将同一类具备相同属性的关键词泛化成一个字符组合,并投入词袋模型,这样做的好处是可以减少特征维度;
  • 转换特征向量:将一个样本通过解码、分词、匹配转换成由“0”和“1”组成的固定长度的特征向量。

2. 模型效果

为了减少篇幅,这里只提供特征提取的思路和模型的评价结果。

随机森林:

Web攻击检测机器学习深度实践

逻辑回归:

Web攻击检测机器学习深度实践

MLP模型:

Web攻击检测机器学习深度实践

3. 小结

缺点:

  • 需要对模型反复校验,优化提取特征转换规则;
  • 对未知攻击类型识别效果差;
  • 对变形攻击识别无效;
  • 没有学习到关键词的时序信息。

对于常见的shell了命令cat来说,如果用shell的语法去理解,cat c’a't c”’a”’t ””c’a’t””都是一回事。这里分词的MLP模型能理解cat,但对变形的c’a't这些无法理解(分词破坏信息)。

优点:

  • 相对深度学习来说具有更高效的预测效率;
  • 相对深度学习模型,分布式部署更加便捷,可扩展性强,能适应海量的访问流量;
  • 准确率高,做到对已知类型的完全识别;
  • 可维护性强,只需把漏拦和误拦的请求类型打标后重新投入训练即可。

针对上面的基于关键词特征的MLP模型,可能有人会产生疑问,为什么能取得近似100%的准确率?这是反复调试的结果。笔者在做特征向量转换之前对url请求做了大量泛化和清洗的工作,也用到了正则。前期针对识别误判的请求,会通过调整词袋向量维度和url清洗方式,充分挖掘出正负样本的区别特征,之后再进行向量转换,从而尽量保证输入给模型的训练样本是没有歧义的。在模型上线期间,针对每日产生的误判类型,会在调整特征提取后,作为正样本重新投入训练集并更新模型。通过一点一滴的积累,让模型越来越完善。

四、识别变形和未知攻击的LSTM模型

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读