2018-基于深度学习的网络流量分类及异常检测方法研究_王伟
网络流量异常:
- 性能原因:网络结构设计不合理,如拥塞控制不当,设备故障
- 安全原因:网络攻击,如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的输入文件标准格式