论文整理:2018-基于深度学习的网络流量分类及异常检测方法研究_王伟
✍🏻作者简介:机器学习,深度学习,卷积神经网络处理,图像处理
🚀B站项目实战:https://space.bilibili.com/364224477
🐋 希望大家多多支持,我们一起进步!
😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+
🤵♂ CSDN个人主页:@purple的个人主页
导师给了个服务器IP分类的项目,因为之前没做过这种,就找了一篇博士论文。 看论文顺序:中文博士论文—中文综述—英文博士论文—英文综述
网络流量异常:
- 性能原因:网络结构设计不合理,如拥塞控制不当,设备故障+ 安全原因:网络攻击,如DDos,蠕虫病毒
异常检测方法:
- 基于网络流量分类 (重要)+ 基于统计+ 基于聚类+ 基于信息论
一般的网络流量分类方法:
-
基于端口:简单易实现,但准确度较低。 端口共65535个,0-1024公用
-
不可靠原因:新应用不再有固定端口号,p2p常用随机端口; 很多应用采用端口伪装技术(故意使用公用端口)躲避防火墙或入侵检测系统 NAT的使用,端口地址转换
-
基于有效载荷/DPI(深度报文检测):无法处理加密流量,复杂度较高(字节匹配,难以实时)
-
检查包头和载荷在内的整个数据包内容+ 发现预定义的固定字符串或字符串模式(指纹)+ 常用正则表达式匹配
-
优势:准确率高,早期识别(只需要对网络流的前几个数据包进行检测)+ 劣势:指纹获取比较困难,无法检测未知流量
以上两种属于基于规则的方法,根据人工制定且硬编码的固定规则进行匹配分类
-
基于统计 :基于机器学习。
-
基本思想:不同种类的应用产生的流量特性不同 例如,web是短时间内大量流量,VoIP是长时间内少量流量的稳定传输 + 常见流量特征:
-
网络流特征:双方一次通信的所有数据包 网络流持续时间,总字节数,平均每个数据包的字节数 + 数据包特征:每个数据包的特征 通信方向,包间隔时间
常用预处理过程,提取特征数据 + 优势:计算复杂度较低,可以用于加密流量 + 缺点:需要专门的特征设计,分类准确度没有DPI高,特别是无监督学习,误警率较高 -
基于行为 :基于机器学习
-
基本思想:不同应用有不同的行为模式+ 使用特征:主机通信的行为信息
深度学习:基于表征学习(特征学习):对原始输入数据进行逐层学习,自动得到高层次的特征数据
流量分类类型
恶意/正常流量分类
加密/非加密流量分类
流量加密已成事实标准 TLS
深度学习
- CNN:卷积神经网络,空间特征学习。常用于CV,图片分类,图片语义分割,物体识别+ RNN:循环神经网络,时序特征学习。常用于语音识别和NLP,LSTM长时短记忆网络用于NLP的情感分析、机器翻译
网络流量分类常见数据单元
- 单向+ 双向
CNN:将流量视为流量字节组成的流量图像,学习空间特征
RNN:视为流量字节组成的单元序列,或多个网络数据包组成的单元序列,学习时序特征
2.1 网络流量分类
恶意流量分类
-
基于指纹
-
基于端口:可靠性不高 + 基于深层包:提取特定字符串模式作为流量指纹,建立指纹库,对新流量进行正则表达式匹配 在云端存储指纹库
-
基于异常
-
基于统计+ 基于行为
加密流量分类
- 基于载荷 基于端口和深层包,用模式匹配检查包头格式 + 基于特征 基于统计和行为 ,网络流特征和数据包特征
2.2 网络流量异常检测
异常分类:
- 点异常+ 上下文异常+ 集合异常
网络攻击:
- 拒绝服务攻击+ 探测+ 本地用户提权+ 远程用户非法使用
入侵检测
-
基于主机的:监视主机日志信息,如对文件系统、注册表的改动+ 基于网络的:分析网络流量
-
误用检测:基于已有指纹库进行匹配+ 异常检测:机器学习模型
基于分类的方法
- SVM+ 贝叶斯网络+ 神经网络
基于统计的方法
- 给出的数据服从某种概率分布,通过不一致性发现异常数据+ 方法:混合模型、信号处理、PCA
基于聚类的方法
聚类检测的三个假设:
-
只对正常数据进行聚类,与正常聚类结果差别较大的判为异常+ 正常数据离聚类的形心更近,异常数据离得远,可用距离度量+ 小的聚类和稀疏的聚类常被视作异常
-
常规聚类:k-Means+ 协同聚类:在列和行两个方向同时应用聚类算法(降维)
基于信息论的方法
- 熵、条件熵、相对熵、信息增益
2.3 深度学习
-
深度:更强大的复杂函数拟合能力
-
SVM/逻辑回归LR、决策树等千层结构算法的局限性:样本有限的情况下表示复杂函数能力有限;泛化能力差
-
学习:
-
表征学习,直接从原始数据学习+ 分层学习
反向传播算法
卷积神经网络
-
语音识别,自然语言处理+ 卷积神经网络的改进
-
局部感受野(稀疏连接):下一层某个神经元只和上一层的的部分神经元连接。(一般的神经网络是全连接)+ 权值共享(参数共享):每个神经元与前一层的所有连接采用相同权重值+ 池化(下采样):对于获得的特征,将其分割成多个相邻小区域,并简化为一个单值。平均值池化、最大值池化
-
通过改进,减少了训练参数,位移不变性、尺度不变性、旋转不变性+ 时序数据:语音、文本: 一维CNN+ 时域频域数据:视音频:二维CNN+ 视频和立体图像:三维CNN
长时短记忆循环神经网络 LSTM
-
传统神经网络中,输出值只和当前输入值有关+ 序列数据的预测问题:下一个值由当前值和前面若干词共同决定+ RNN通过在隐层的神经元中添加自连接的权重值,使得每次训练可以记录前面训练时的输出值状态,实现了保存序列信息+ LSTM
-
输入门+ 遗忘门+ 输出门
三、基于表征学习的恶意流量分类方法
- 思想:将原始流量数据视为图片,用图片分类的CNN进行分类+ 流量分类—>图片分类
数据集::USTC-TFC2016
网络流量表示形式
基于机器学习的流量分类方法,需要按一定粒度把连续流量且分为多个离散单元。每个单元中的每个包,按照OSI或TCP/IP可划分为多个层。
-
流量粒度 网络流量切分方式:TCP连接、流、会话、服务、主机 流:有相同五元组(源IP、源端口、目的IP、目的端口、传输层协议)的所有包 会话:双向流组成的所有包,即上面的源和目的可以互换
-
CNN要求数据输入大小一致:只选取流或会话的前n个字节
-
协议层次 流量特征主要体现在应用层。 流量清洗/匿名化:对流量数据的特有信息随机化处理
数据预处理:
- 流量切分 pcap 数据 + 流量清理:用随机生成的新地址替换MAC和IP地址(如果流量来自同一网络环境则不需要)。清除没有内容的数据包,重复数据只保留一个 + 图片生成:文件按照784字节统一长度处理,超过则截取,不足则补充0x00。转换为灰度图片 + IDX转换:将图片转换成IDX格式,包含像素信息和统计信息,是CNN的输入文件标准格式
四、基于一维CNN的端到端(深度学习)加密流量分类方法
根据协议层不同,流量加密技术分为
- 应用层加密:bittorrent,skype+ 表示层加密:TLS+ 网络层加密:IPsec
主流的流量分类方法:
- 基于端口的:准确率偏低+ 基于DPI:无法解密内容+ 基于统计+ 基于行为
采用的数据集 :ISCX VPN-nonVPN ,7种常规加密和7种协议封装流量
- 思想:直接从流量原始数据自动学习流量特征,学到的高级特征直接在softmax层进行分类+ 流量—>类比成字符值,用文档分类技术处理
五、基于两阶段LSTM的流量分类
- 用LSTM学习数据包和网络流两个层次上的特征+ 思想:用NLP技术
步骤
- 预处理:流量切分+ 数据编码:ont-hot 独热数据形式,每个流量字节被编码为一个n维向量+ 数据包内时序特征学习+ 网络流内时序特征学习+ softmax分类器+ 测试与对比
六、基于层次化时空特征学习的流量异常检测
- 思想:使用CNN学习数据包内的空间特征(流量转化为图像),作为下层;使用RNN(LSTM)学习数据包之间的时序特征,作为上层;上层建立在下层基础上 + 数据集:DAPRA 1998和ISCX2012
七、展望
- 非平衡数据集问题 + 领域知识的应用 数据包的结构信息 + 基于半监督和无监督学习的异常检测 少量有标签和大量无标签数据
🧿选题指导,设计代做: https://space.bilibili.com/364224477
设计代做项目方向涵盖:
基于Python,MATLAB设计,OpenCV,,CNN,机器学习,R-CNN,GCN,LSTM,SVM,BP目标检测、语义分割、Re-ID、医学图像分割、目标跟踪、人脸识别、数据增广、
人脸检测、显著性目标检测、自动驾驶、人群密度估计、3D目标检测、CNN、AutoML、图像分割、SLAM、实例分割、人体姿态估计、视频目标分割,PyTorch、人脸检测、车道线检测、去雾 、全景分割、
行人检测、文本检测、OCR、姿态估计、边缘检测、场景文本检测、视频实例分割、人脸对齐、超分辨、去噪、强化学习、行为识别、OpenCV、场景文本识别、去雨、机器学习、风格迁移、视频目标检测、去模糊、活体检测、人脸关键点检测、3D目标跟踪、视频修复、人脸表情识别、时序动作检测、图像检索、异常检测等毕设指导,毕设选题,毕业设计开题报告,