Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Prototype-based Malware Traffic Classification With Novelty Detection

作者:Lixin Zhao, Lijun Cai, Aimin Yu, Zhen Xu, Dan Meng

单位:Institute of Information Engineering, Chinese Academy of Sciences (信息工程研究所,中国科学院)

出处:21st International Conference on Information and Communications Security (ICICS’19)

原文:目前无:2019-12-27

一、背景

恶意软件检测是一个传统的问题,目前,已有不少的恶意软件检测系统和防护机制等。例如,目前几乎所有的 Windows 10 系统上都默认安装有 Windows DefenderWindows Defender 可以为用户提供实时的防护和检测,保证用户系统的安全和正常运行。最近,由于机器学习和深度学习等相关领域的蓬勃发展,很多研究者开始使用这些新的技术来研究恶意软件,对软件进行自动化的检测并分类,或者基于流量进行分类等。本文中,作者就是利用深度学习的技术对恶意的流量进行检测和分类。

二、提出的方法以及解决的问题

使用机器学习或深度学习的方法来对恶意流量进行检测和分类早已不是什么新鲜事了,但是,目前已有的检测技术都会基于各种各样的前提假设(例如,所要检测的流量类别是固定的,并且是已知的(测试集中所出现的类别不会超过训练集中的类别),检测技术基于一个封闭的世界),这就导致了这些已有的检测技术不具有通用性和鲁棒性,无法检测出新的恶意流量类型。因此,作者提出了一种基于原型(Prototype-based)的、使用深度学习技术(CNN,Convolutional Neural Network)实现的恶意流量检测技术,该技术不但可以检测已知类型的恶意流量,还可以检测未知类型的恶意流量。

三、技术方法

1. 数据预处理

由于作者使用的是深度学习 CNN 技术来检测恶意流量,因此,作者首先就需要对 CNN 输入的数据进行处理,以便于 CNN 网络能够处理流量数据。由于流量数据是按照数据流进行划分(一个数据流由五个元素确定:源IP地址源端口号目的IP地址目的端口号和所使用的协议),不同的数据流的长度又不确定(数据包数量不确定),并且不同的数据包的长度也不确定,而 CNN 网络所需要的输入数据是固定长度的,因此,作者使用降维的方法来预处理数据,对于每一个数据流,只保留数据流的前 32 个数据包,对于每一个数据包,只截取报头的 512 字节,不够的用“0”来填充。因此,每一个数据流就可以表示为一个32*512的矩阵。最后再把每一个字节的数据除以 255,并把矩阵转化为128*128的矩阵,作为 CNN 网络的输入,作者所使用的 CNN 网络模型如下图所示:

CNN网络

2. 目标函数

对于数据集,作者使用

$D = { (x1,y1), (x2,y2), …, (x_n,y_n) }$

来表示,$x_i$ 表示一个数据实例,$y_i$ 表示该实例所属的类别。$y_i \in Y={1,2,…, k}$ 表示实例 $x_i$ 是 $k$ 种类别中的一种。

在测试的时候,假设测试的数据集是一个开放的数据集 $D0 = { (x_i,y_i)}{i=0}^{\infty}$,而此时的 $y_i \in Y={1,2,…, k, …, K}$, 这里的 $K > k$,也就是说,从标签 $y_i$ 从 $k$ 到 $K$ 之间的类别是没有在训练数据集中出现过的,是属于新的类别,作者把这种类别标记为 $novel$ 类别,而在作者的系统中,作者就是要检测出这种 $novel$ 类别,也就是以前的工作未能做到的。

以前的工作在测试阶段,对目标进行分类的时候,会把所有的目标划分到已知的类别中,而不会产生新的分类结果。

作者把深度学习特征定义为函数 $f(x; \theta)$,$x$ 是一个输入实例(比如一条数据流),$\theta$ 是 CNN 网络的参数,作者还定义了一个原型函数(Prototype,其实就是一个平均函数,可以认为是一个类的中心点):

$P_i = \cfrac{1}{ \Psi_i }\sum_{x \in \Psi_i}f(x;\theta)$

该函数中,$\Psi_i$ 表示属于类别 $y_i$ 的训练实例。

作者用欧几里得距离(Euclidean Distance)来给目标对象分类,并使用 $f(x; \theta)$ 和 $P_i$ 之间的靠近程度来确定一个示例是属于哪一个类别,$f(x; \theta)$ 和 $P_i$ 之间的距离越短,该实例属于类 $y_i$ 的概率越大,即:

$p(x \in y_i x) \infty -   f(x; \theta)- P_i   _2^2$

正则化(Normalize)该公式得:

$p(y_i x) = \cfrac{exp(- \gamma   f(x; \theta)- P_i   2^2)}{\sum{i=1}^k exp( - \gamma   f(x; \theta)- P_i   _2^2)}$

上式中的 $k$ 是训练数据集中的类别数量,$\gamma$ 是 CNN 的参数。

基于上述公式,作者定义了一个基于交叉熵的距离函数(Distance based Cross Entropy, DCE):

$L_{DCE}(x;\theta,P) = -logp(y_i x)$

还有一个度量正规化函数(Metric Regularization, MR):

$L{MR}(x;\theta,P) = \sum{i=1}^k h(\alpha-\overline{y}(1- \frac{   f(x; \theta)- P_i   _2^2}{\tau}))$

该函数可以使得 CNN 的网络模型中的特征区分度更加明显,即:类之间的距离更明显(Large Between-Class Separation),类内部之间距离更短(Small Within-Class Scatter)

最终,作者所设计的目标函数如下:

$J = min(L{DCE}(x;\theta,P) + \lambda L{MR}(x;\theta,P))$

其中,$\lambda$ 是平衡函数,用来平衡 $DCE$ 项和 $MR$ 项之间的权值。

四、实验评估

1. 实验环境

  • CPU : -
  • Memory : -
  • OS : -
  • Tools : -

:作者未说明实验环境

2. 数据集

作者使用了两个数据集,一个是 MCFP,另一个是 USTC-TFC2016,如下表所示

dataset

其中,MCFP 是由【Malware Capture Facility Project】维护,作者主要用该数据集当做训练数据,表中的 Flows 表示数据流的数量(一个数据流可能有多个数据包组成),在数据集中,每个恶意软件都包含了多个数据流。USTC-TFC2016 中的数据主要用来当做测试使用。

3. 实验结果

作者首先对 MCFP 数据集中的数据进行测试,并跟已有的工作做对比,该项测试中不包含未知的类别(Closed World Test),即在测试中所出现的所有类别都在训练过程中出现过。表中的已有工作[1]使用机器学习方法,[9]和24]都使用深度学习方法。表中的 $pre.$ 表示 precision,$rec.$ 表示 recall,$acc.$ 表示 accuracy。DCE 表示作者的训练模型中只使用 DCE 函数训练所取得的结果,DCE+MR 表示使用两个函数联合训练出来的模型的测试结果,从表中可以看出,作者实现所取得的效果最好,并且,启用 MR 函数比单纯使用 DCE 函数取得更好的结果。

MCFP_result

下图中的(a)图是原始的数据,黑色的点表示在测试过程中新出现的点,经过作者的系统测试之后,得到右边的图(b),从图中可以看出,各个类别已经分的很清楚,并且新出现的类别(黑色的点表示)不会被误分类的已有的类别中。

novel_class_detection

下图中的测试数据是包含了 USTC 数据集的数据,并且作者把 USTC 中的类别都当做了未知类别(已有工作无法检测未知类别),从图中可以看出,作者的系统能不但能够检测出新的类别,还能以很高的准确度来识别这些类别。

此外,作者还手工分析了被误分类的样本,然后发现这些样本大部分是由短数据流造成的,短数据流是指数据流中的数据包不够 32 个,导致数据预处理的时候需要在数据流中填充大量的 “0” 数据包,因此导致分类错误。

USTC_result

最后,作者还对 CNN 网络的训练模型中的系统参数(Hyper-Parameters)进行测试,以分析这些参数对系统的敏感程度,这些系统参数包括:$\lambda$、$\tau$ 和 $\eta$,测试结果如下所示(以系统的准确度来评估三个参数对系统的影响):

hyper-parameterslt

从图中可知,$\lambda$ 参数对系统影响很小,$\tau$ 和 $\eta$ 对系统影响比较大。

六、总结和看法

在这篇文中,作者提出了一个基于原型(Prototype-based)的恶意流量分类系统,该系统的优点就是能够检测出在训练过程中未出现过的类别,并且,作者提出了一个新的目标函数,该目标函数可以使得类内距离更短,类间区分更明显。从实验中也可以看出,作者的系统不但比已有的检测系统取得更高的准确度,而且还能识别出未在训练阶段中出现的新的类别。