来源:arxiv2018,论文链接
利用RNN来进行网络流量的异常检测
核心思想:
将网络流量标记并压缩成形成表示计算机之间对话的“句子”的“单词”序列。然后使用这些句子来训练生成一个模型,该模型可以学习新生成的语言的语义和句法语法。本文通过使用LSTM单元来发现这些序列的关系以及其细微差别。然后使用语言模型来预测两个IP之间的通信,并且所预测出误差的被用来进行测量出特殊(atyptical)的通信与一般(typtical)的通信。通过学习针对每个网络的特定模型,并将其推广到网络内外的典型计算机到计算机通信,语言模型能够识别与模型相关的异常的网络活动序列。
总的来说就是结合NLP的方法来进行网络流量的异常检测。无需通过训练数据的标记,并且不需要了解每台机器的内部状态或流程即可进行恶意流量的检测。此外还可以用一个无监督型的模型,即从一个毫无代表性的流量中训练出的模型(自我理解,可以解决数据不充分的问题)来检测出恶意流量。
使用RNN的原因:网络流量类似序列型数据,则可以采用RNN解决
数据来源
ISCX IDS dataset。包含七天的网络活动,有正常流量以及四种不同的攻击流量
Introduction
近几年网络活动越来越多,造成恶意网络流量也越多。由于现在的IDS是通过匹配来辨别正常流量与恶意流量的方法效率不高。本文则采用LSTM单元来学习代表计算机网络的有序网络流量序列,然后评估此模型检测该网络上恶意活动的能力。
数据预处理方法
网络流量数据由网络上所连接的设备之间的通信日志组成(是否是pcap包)。网络流量通过IP地址聚合形成单条记录,记录包括通信的开始时间以及持续时间。每条记录包含两个网络通信设备的IP地址。此外网络流量还包含传输字节数、数据包、通信的端口号以及协议等。
存在一个问题:由于给设备分配的为动态IP,所以当前的IP不能一直表示此设备,即无法保证设备以及IP的一致性。
可能解决的方法:捕获设备的MAC地址,网络流量通过MAC地址聚合形成单条记录
NLP的处理方法
网络流量的元数据(metadata)也有自然语言的一些特征,网络设备之间的通信是按照顺序捕获的,期望这些通信遵循一组规则,类似于语法,由它们使用的服务和协议确定。
难点:由于一些语法规则无法让分析师理解,所以明确地对其进行建模是不可能的。因此,无监督语言模型是推断网络元数据生成过程的自然选择。
数据处理
从一堆网路流量中根据每个IP对(源IP-目的IP)生成一条条有序序列,以此构成数据集,并且每个IP对IPaIPb等价于IPbIPa。在每个序列中,单个流记录对应于单个标记(token),即NLP类比中的一个词。介绍两种不同的构造序列的方法:
1、按照协议来构造(Proto-byte):floor(log2(bytes)),IPaIPb:TCP:10|TCP:12|UDP:04
2、按照端口号来构造(Service port):IPaIPb:80|80|443|80。对于每个端口对,保留最低的端口值并删除较高的端口值。对于不常见的端口号,用一个粗略的值近似表示。
思考:两种不同的构造序列的方法共同构成一个序列用来训练,或者这两种序列形式分开训练,最后做融合。本文采用分开预测并相互对比其效果。
每个序列是由滑窗构成的,即一小时内两个IP地址之间的所有流量记录。这些IP对可能在某个时段出现恶意行为,而在其他时段不会出现恶意行为,并且恶意行为与正常行为相比要少的多,则定义如果原数据只要包含某时段的恶意行为,则将此时段内构成的所有序列标记为‘攻击行为’。仅将这些标签用于验证,而不是用于模型训练。
构造模型
使用RNN进行训练。网络结构如图所示:
InputLayer ---> embedding(100-dimensional) ---> Bidirectional(LSTM)[包含50个隐藏单元] ---> Dropout(0.2) ---> Bidirectional(LSTM)[包含50个隐藏单元] ---> Dropout(0.2) ---> Dense(relu) ---> Dropout(0.2) ---> Dense(softmax)
实验部分
分为三部分:clean baseline,dirty baseline,NoDoS
- clean baseline: 在ISCX dataset提取中第一天的数据以及一半的无攻击行为的数据,从而进行训练。预测得到异常流量。
- dirty baseline: 在完整的ISCX数据集上训练网络,使得模型可以学习攻击流量和非攻击流量。一旦学习了网络流量模型,然后使用该模型来预测数据集中每个流量的值。
- NoDoS: 在训练或评估过程中除去DoS攻击和DDoS攻击。由于DoS和DDoS攻击的流量可能导致模型过度适应这些类型的攻击,即产生过拟合(可能DoS或DDoS的流量有很多),因此无法将它们标记为异常。
结果:本文中所训练出的模型能够在clean baseline和dirty baseline辨别出异常流量。
评测指标:AUC。(无确定的阈值来判断是否是异常流量,即预测的是概率,所以采用AUC评测模型的好坏。二分类问题)[也可采用logloss]
AUC曲线图:
dirty baseline: (Proto-byte features)AUC=0.84, (Service port features)AUC=0.74
clean baseline: (Proto-byte features)AUC=0.78, (Service port features)AUC=0.53
NoDoS: (Proto-byte features)AUC=0.82, (Service port features)AUC=0.39
综上可得,dirty baseline这种方法取得的效果最好,原因之一有dirty baseline中的数据集要大,能够充分的进行训练。
结论
采用RNN方法来进行网络流量的异常检测,其中的一个优势是只需训练相对便宜且容易存储的流量,即使此流量与本实验不相关,也能进行学习训练。
展望(创新点)
建议将来在这一领域的研究人员考虑一个流式或小批量框架,其中模型是在网络数据的时间子集上学习的,并用于在生成新数据时对其进行评分。这样会尽量减少计算的需求,因为训练LSTM可以定期完成,而且是在计算资源便宜或者可用的时候。无监督模型与用户在回路反馈机制和监督学习相结合的方法可以提供有价值的性能改进,减少误报警并提高识别常见攻击媒介的可信度。
标签:minibatch、streaming、有监督与无监督相结合
思考点
采用Google的Wide&Deep方法,Wide部分是人工找特征,流量特征方面。Deep部分则采用本论文的方式,构造有序序列,采用RNN网络结构。其两者结合的方式探讨是否有效果。