这篇教程深度学习在入侵检测中的应用写得很实用,希望能帮到您。
基于机器学习的入侵检测方法中,80%的工作量是花在特征工程上,即思考该从各种日志,网络包中提取什么特征。大多数公司的数据科学家都花费大量精力做特征工程的工作。而深度学习的出现将我们从特征工程的工作中解放出来,通过深度的网络自动提取特征,大大提高了数据科学家的工作效率。下面介绍一个基于深度学习的入侵检测案例。
恶意URL检测
基于深度学习的恶意URL检测算法,只需要使用URL字符串本身的信息,无须看URL所指的内容,即可判断URL是否恶意。
下面是一些钓鱼URL的示例:
http://tarapotosecurity.com/updatepaypal/1a78275f842589a4902ebcdf769559de/mpp/date/websc-billing.php http://bealesgifts.com/paypal-support-team/new-update/2016/login?cmd=_signin&dispatch=0d505bd63bb9d2b1c70ec1d2d&locale=en_us http://payment-paypal.com.de/kundenservice/konfliktloesung/anmelden.php
上面几个URL有一个共同点:它们在模拟合法的paypal的网址。我们可以使用机器学习的方法识别类似的URL。
使用传统的方法,我们会考虑从URL串中提取特征作为机器学习算法的输入,这样的特征有,字符串长度,某些模式的出现次数。
但是以深度学习为代表的无特征方法却用了新的思路,训练一个模型去自动提取特征,而不是手动去设计特征。自动生成的特征的效果远优于手动设计的特征。
一个可训练的特征生成器
我们的无特征的URL检测方法框架如下图所示。
图1:算法框架图
如上图所示,我们先对URL使用嵌入的方法进行编码;然后再使用卷积的方法学习特征,最后再通过一个前向神经网络层计算一个URL是恶意的概率。整个过程,从character embedding到特征提取,再到分类,大概有几百万个参数被训练出来。下面我们详细描述各个过程的细节。
使用嵌入(embedding)的方法学习字符的意义
我们的算法框架中的第一个步骤是将字符编码成嵌入向量。
图2:character embedding
图2的过程中,每一个字符都被编码成一个向量,而URL就被编码成一个向量序列。你可以认为神经网络将字符映射成一个特征向量,这个特征向量代表字符的意义。图3表示神经网络学习出的URL字符之间的关系。
图3:字符关系图
从图3可以看出,大写字符更加相近,小写字母和数字更加相近,而运算符号之间更加相近。
使用卷积识别URL中的复杂模式
为什么我们的网络可以学习到字符的意义?因为它通过URL中的字符序列学习到更好的模式,我们通过卷积做到这点,参考图4.
图4:字符关系图图4:字符关系图
卷积滤波器是一组矩阵,沿着嵌入特征序列做加权,得到一组加权后的值,代表滤波器和子序列的匹配程度。我们的网络中使用了数百个长度不同的各种滤波器,在训练的过程中,滤波器可以识别出各种特征。
分类:计算一个URL是恶意的概率
我们的网络结构在URL序列上运行完卷积操作之后,接下来的工作是在卷积结果的基础上计算URL是恶意的概率。我们使用一个前向神经网络完成这项工作。
图5:全连接神经网络
结果:人工特征和机器特征的比较,机器胜
KDD99数据集的特征(Features)介绍 返回列表 |