HAST-IDS-基于时空特征和深度学习的恶意流量检测-论文解析_菜小白P的博客-程序员宝宝

技术标签: 流量分类  深度学习  独热编码  恶意流量检测  

论文基于HAST-IDS:Learning Hierarchical Spatial-Temporal Features Using Deep Neural Networks to Improve Intrusion Detection
原文链接:https://ieeexplore.ieee.org/abstract/document/8171733
源码链接:https://github.com/echowei/DeepTraffic/tree/master/3.HAST-IDS

基于异常的恶意流量检测。采用深度学习的方法,来完成恶意流量检测的技术。其中采用了CNN和RNN模型来学习流量的时空特征来完成识别恶意流量。其中论文主要拆解为了两部分,一部分是单纯采用CNN来学习流量的空间特征,另一种是从数据流当中提取出数据包,通过CNN和RNN来学习时空特征。
想法的来源在于难以设计流量的手工特征,所以通过深度模型这个黑箱子来学习恶意流量的特征。其重要的思想在于将数据流和数据包的每一字节用独热向量来表示,这样当选取前面的n个字节作为输入时,便形成了一张图片的形式。对于多条流和多条包便形成了多张图片。因为对于CNN而言,其输入的图片的shape必须是一致的,这时就必须固定数据流或者数据包的输入字节的长度。图片的另一维等于独热向量的维度,因为字节数据为0-255,所以图片的另一个维度为256维,是确定的。

实验中使用的数据集主要包括两部分,因为HAST-IDS要基于原始的网络流数据,所以要使用包含原有流数据的数据集。因此使用了DARPA1998ISCX2012两个数据集。其中DARPA1998和ISCX2012均用于HAST-I,而仅有ISCX2012应用于HAST-II。原因是因为DARPA1998数据集当中的流长度太短了,特别是如果流当中只有一个包的时候,那么使用RNN则没有意义。所以仅将ISCX2012应用到HAST-II。具体两个数据集的细节可见原文。
数据集分布情况

因为论文的实验分为了HAST-I和HAST-II两个部分。所以首先我们来介绍第一部分,仅通过CNN来学习空间特征。当选取了独热向量的维度为256时,此时使用一条流的n个字节来表示图像,图像的shape为256×n。这里流的长度将在之后的实验中选取最合适的长度。当单纯使用CNN来学习流的空间特征时,需要考虑的是流的长度对训练效果带来的影响。因为在数据集当中每条流的长度是不同的,但是CNN需要固定大小的输入,所以需要将每条流规整为同一流长度。此时通过使用不同长度的输入进行训练,最终得出了对于DARPA1998数据集而言,最好的流长度为800或者1000-1300。但是由于训练时间的影响,则选择了800字节作为流的输入长度。对于ISCX2012而言,最好的长度为600字节。但通过两个数据集的数据分布发现,原先流平均长度为5000+和50000+,但是最终选择的输入长度却远小于平均长度。原因在于流的前部信息比较重要。而且可以发现尽管两者的平均长度差距较大,但是最终选择的适应长度却均在600-800范围之内,根据之前应用于MNIST数据集当中的实验效果表明,该结构能够很好的适应该大小的输入。

接下来是HAST-II。实验2仅仅使用了ISCX2012这个数据集,原因也在前面给出了,在这一部分中,不仅仅使用了CNN来学习空间特征,同时包含了时间特征的学习。此处在CNN之后使用了LSTM来学习时间特征。因此需要考虑的包括流中包括的包的多少以及流中包的长度。首先研究了包的长度,选取了数据集中流中包的个数的中值作为输入的流中包的个数,然后通过不同的包的大小作为输入,最终得出最佳的包的大小为100-200个字节。由于训练时间的考量,最终选择了100字节作为包的大小。可见包大小的平均值为742,但是最终作为输入的包的大小为100,则说明100字节主要包含了报的头部,对于恶意流量检测十分重要。这个问题可以跟NLP当中的情感分析相比,其中选取了512个字符来表示一个句子。但是512个字符可以表示大多数句子但是100字节不能概括一个包。之后根据设计包的大小为100字节,然后探究流当中包的个数的影响,最终合适的包个数为6,8,14。最终选择了6为流中包的个数。得出最佳的包大小为100个字节,最佳的包个数为6个。
总体流程

最终得出HAST-II得到了最佳的效果。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41763134/article/details/94849403

智能推荐

PHP:函数的定义与调用__欲穷千里目的博客-程序员宝宝

1、初识函数* 函数:封装一段用于完成特定功能的代码。* 通俗理解函数:可以完成某个工作的代码块,就像小朋友搭房子用的积木一样,可以反复使用,在使用的时候,拿来即用,而不用考虑它的内部构成。函数分类:①内置函数(字符串操作函数、数组操作函数)②自定义函数内置函数 $str = 'ABcd'; $upper = strtoupper($str); // 调用strtouppe...

hadoop使用yarn执行MapReduce时, 一直卡在mapreduce.Job: Running job_楼下着火了的博客-程序员宝宝

做下笔记以后可能用到。在初次配置完yarn,然后执行MapReduce时,总是不成功,但jps发现前面的工作,resourceManager和nodeManager都成功启动。于是查询了下resourceManager的日志,发现有报错。我查看完发现,原因是配置的服务器地址链接不上。我最开始没注意这个ip,先去检查了下yarn-site.xml,发现我配置的是hadoop134,于是我进行了...

超便利】IDEA自动Git更新代码插件-GitToolBox(推荐)_王大师王文峰的博客-程序员宝宝

【超便利】IDEA自动Git更新代码插件-GitToolBox-推荐!!! 第一步 大威天龙???? 第二步 大魔法咒????‍???? 第二步: 希望啊????学习目标(附超链接传送门)面试题总结???? 文末总结 第一步 大威天龙????IDEA>Setting>Plugins>GitToolBox 第二步 大魔法咒????‍????重新启动IDEA>打开Other Settings 选择 Git ToolBox Project >Auto fetch>

java org.springframework.web.multipart.MultipartFile 上传文件等_dazunqu2481的博客-程序员宝宝

接口需求是Android/iPhone需要通过接口上传一些文件,例如图片,jar包,rar压缩包,视频,音乐...等!困扰我这个菜鸟很久,整理一下!!分享给同我一样的菜鸟后台需要处理这些数据,之前没有接触过!但类似的FileUpLoad的插件用过,其实原理差不多,因为计算机原始数据都是01代码,所以只要将这些文件保存成二进制就可以,数据库(mysql),最大4G!!问题1,如果实现!...

MYSQL中group_concat有长度限制!默认1024_PolarisHuster的博客-程序员宝宝

转载自:https://blog.csdn.net/catoop/article/details/41805437在mysql中,有个函数叫“group_concat”,平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了,其实MYSQL内部对这个是有设置的,默认不设置的长度是1024,如果我们需要更大,就需要手工去修改配置文件。详细说明如下:用了group_concat后,...

SAP请求传输事务代码_两袖轻风的博客-程序员宝宝

800(PRD正式环境)传输请求:SCC1200(DEV开发环境)释放:SE09传输:STMS(901 E6Q 测试环境)SAP踢人:SM04物料账打开:OB52 MMPV找事务代码路径:search_sap_menu创建用户:SU01权限:SU53更改请求号描述:SE10查看程序;SE30是否产生请求号:SCC4...

随便推点

VC助手自动补全功能脚本代码_xulin_2005的博客-程序员宝宝

<br />ModCode;<br />modcode;<br />修改代码段;<br /> <br />// [$MONTH$-$DAY$-$YEAR$ $HOUR$:$MINUTE$:$SECOND$] mod by xulin-zr-I2014 for $disc$ BEGIN<br />$end$<br />// [$MONTH$-$DAY$-$YEAR$ $HOUR$:$MINUTE$:$SECOND$] mod by xulin-zr-I2014 for $disc$ END

简单理解jsp、servlet、filter   tomcat_weixin_34128411的博客-程序员宝宝

一、 jsp1)、jsp是什么:jsp是tomcat new出来的一个对象,它更是httpservlet的一个子类对象。其中&lt;% %&gt;中的代码只不过是其类方法中的一个片段,我们可以用编写网页的方式来编写它。2)、jsp主要用来干什么:它主要用来做页面渲染,把从浏览器接收来的用户动作传递给servlet,也可以接收从servlet中出来的数据进行渲染我们看的懂的页面...

干货推荐 | 区块链行业的下一个爆发点在哪?注意这7大市场属性_火星财经的博客-程序员宝宝

“区块链的核心价值是信任成本的降低。不论是什么样的商业模式,抽丝剥茧之后必然是这个内核,否则就不能说是一个基于区块链的差异化商业模式。”本文来源:橙皮书;该内容旨在传递更多市场信息,不构...

SQLSyntaxErrorException: ORA-00936: missing expression_赤子juan的博客-程序员宝宝

在oracle中执行sql语句:报下列错误: com.inspur.meta.db2db.dao.StageExportDao:(213) java.sql.SQLSyntaxErrorException: ORA-00936: missing expression at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.jav...

面试题54 二叉搜索树的第k大节点(java)_东山阿强的博客-程序员宝宝

给定一棵二叉搜索树,请找出其中第k大的节点。 示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 /...

关于VM16打开虚拟机显示无法找到文件_百折不挠1的博客-程序员宝宝_无法打开虚拟机未找到文件

当我们从VM15.5打开虚拟机,显示找不到文件,以及浏览文件,选择添加.vmdk文件也无法显示的时候。我们把虚拟机关闭。重新以管理员身份打开运行的时候就可以打开虚拟机了。

推荐文章

热门文章

相关标签