开源项目机器学习驱动的WEB应用防火墙

Posted MottoIN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源项目机器学习驱动的WEB应用防火墙相关的知识,希望对你有一定的参考价值。




fWaf – Machine learning driven Web Application Firewall


GitHub:https://github.com/faizann24/Fwaf-Machine-Learning-driven-Web-Application-Firewall


文章目录:

1.数据集

2.训练

3.结果准确性

4.下一步


数据集:


    首先要做的是寻找带有标记的数据,本项目中使用的是一些2010的数据,包含了数百万条HTTP查询日志,原数据来源于一个叫secrepo的站点,通过自己编写的一些脚本,对这些数据打上了安全标签。

    修正好数据后,还需要收集一些恶意的查询,我想到的方法是从GitHub上收集一些包含XSS、SQL和其它攻击的Payloads,加上自己之前整理的,组成了恶意查询数据集。

    通过上边的方法,我现在有了两个文件:一个是干净的WEB查询数据集(包含1000000条数据),一个是恶意的WEB查询数据集(包含50000条数据),这就是训练分类器所需的数据了。

训练:

    关于机器学习的算法,我使用的是Logistic回归分析模型,它比较快速,这点对我的脾气。其实还可以使用SVM或神经网络,不过他们跟Logistic相比需要更多的时间。我们的问题是一个二进制分类问题,因为我们需要预测出来一个查询是恶意的还是正常的。这个项目选用了N-grames算法,N=3.

    我们先直接嵌入代码:


【开源项目】机器学习驱动的WEB应用防火墙


    加载数据集:


【开源项目】机器学习驱动的WEB应用防火墙


    加载了goodqueries 和 badqueries。 接下来,使用主成分分析法(PCA)将这两类数据库可视化显示出来。如下图所示,红色表示坏的查询语料,蓝色表示好的查询语料。

【开源项目】机器学习驱动的WEB应用防火墙


    可以看到,在不同的位置上,坏点(红点)和好点(蓝点)确实出现了。


【开源项目】机器学习驱动的WEB应用防火墙


    接下来,我们使用Tfidvectorizer算法将数据转为tfidf值,然后使用我们的分类器进行训练。 之所以使用tfidf值,是因为我们要对ngrams参数赋予相应的权重,比如赋予 ‘<img ’ 一个较大的权重,因为如果一个查询中包含这个类型,很有可能是恶意的查询。浏览 http://www.tfidf.com 可以了解更多关于TFIDF的情况。


【开源项目】机器学习驱动的WEB应用防火墙


    接下来让我们开始适用逻辑回归。


【开源项目】机器学习驱动的WEB应用防火墙


    搞定!


结果准确性:


    你一定很关心结果的准确性,对不对?  准确率99%,很神奇是不是。或许你还在怀疑,无图无真相,那我就实际的检查一些查询,看看模型是否能够准确的进行判别。结果如下:


【开源项目】机器学习驱动的WEB应用防火墙


下一步:


    下一步要做什么呢? 这是一个业余项目,还有很多工作可以去完善它。比如,可以做多类别的分类检测恶意查询是否属于SQL注入、XSS或其他注入。我们可以收集一个更大的数据集,包含了所有类型的恶意查询,从而扩大了训练模型的范围使其可以检测到恶意查询的类型。您还可以把这个模型与WEB服务器关联起来。如果你做了这些工作,不妨和我交流一下。

   GitHub:https://github.com/faizann24/Fwaf-Machine-Learning-driven-Web-Application-Firewall


【文章来源】

Fsecurify


*MottoIN小编翻译整理,接下来会陆续推出“机器学习与网络安全”为主题的相关文章,欢迎感兴趣的同学一起学习、交流。


*转载请注明来自MottoIN


【开源项目】机器学习驱动的WEB应用防火墙


【MottoIN原创文章奖励计划正在进行】

欢迎投稿,来信请寄root#mottoin.com


以上是关于开源项目机器学习驱动的WEB应用防火墙的主要内容,如果未能解决你的问题,请参考以下文章

2023年推荐几款开源或免费的web应用防火墙

轻松了解“Web应用防火墙”

web应用防火墙的作用

Web应用防火墙开发

2020年十大开源waf介绍

使用docker搭建Web应用防护系统或web防火墙(OpenWAF)