1.一种基于网络流量分析的安卓恶意软件实时检测方法,包括以下步骤:
(1)收集网络数据:
使用网络数据包捕获工具,分别收集正常软件样本和恶意软件样本所产生的网络流量数据,将收集的网络流量数据作为训练恶意软件检测模型的初始数据集;
(2)划分网络数据流分组:
根据网络数据流分组的定义规则,对初始数据集进行分组,得到多个不同的网络数据流分组;
(3)提取网络数据流最小单元:
根据网络数据流最小单元的定义规则,分别从每个网络数据流分组中提取网络数据流最小单元;
(4)判断网络数据流最小单元中的端口号是否为80,若是,则执行步骤(5),否则,执行步骤(6);
(5)提取网络数据包字段特征;
(5a)从网络数据流最小单元的各个数据包的头部字段信息中,提取网络数据包字段特征;
(5b)将提取的网络数据包字段特征作为向量的元素,组成一个字段特征向量;
(6)判断网络数据流最小单元中的端口号是否为443,若是,则执行步骤(7),否则,执行步骤(3);
(7)提取网络数据流统计特征;
(7a)根据网络数据流最小单元中的各个数据包的时间戳信息,得到时间类统计特征;
(7b)根据网络数据流最小单元中的各个数据包的长度信息,得到空间类统计特征;
(7c)将提取的时间类统计特征和空间类统计特征作为向量的元素,组成一个统计特征向量;
(8)训练统计特征检测模型:
(8a)分别将每个统计特征向量标记为与该统计特征向量对应的软件样本类别,将所有标记后的统计特征向量组成统计特征检测模型的训练样本集;
(8b)利用随机森林算法,对训练样本集进行训练,得到统计特征检测模型;
(9)训练字段特征检测模型:
(9a)分别将每个字段特征向量标记为与该字段特征向量对应的软件样本类别,将所有标记后的字段特征向量组成字段特征检测模型的训练样本集;
(9b)利用C4.5算法,对训练样本集进行训练,得到字段特征检测模型;
(10)提取待检测样本的网络数据特征:
(10a)利用网络数据包捕获工具,实时捕获待检测样本的网络流量数据;
(10b)根据网络数据流分组的定义规则,得到待检测样本的网络数据流分组;
(10c)根据网络数据流最小单元的定义规则,从待检测样本的网络数据流分组中提取网络数据流最小单元;
(10d)判断网络数据流最小单元中的端口号是否为80,若是,则执行步骤(10e),否则,执行步骤(10f);
(10e)提取网络数据包字段特征作为向量的元素,组成字段特征向量;
(10f)判断网络数据流最小单元中的端口号是否为443,若是,则执行步骤(10g),否则,执行步骤(10a);
(10g)提取网络数据流统计特征作为向量的元素,组成统计特征向量;
(11)判断待检测样本的特征向量是否为字段特征向量,若是,则执行步骤(12),否则,执行步骤(13);
(12)将待检测样本的特征向量输入字段特征检测模型,判断字段特征检测模型的输出是否为恶意软件类别,若是,则执行步骤(14),否则,执行步骤(15);
(13)将待检测样本的特征向量输入统计特征检测模型,判断统计特征检测模型的输出是否为恶意软件类别,若是,则执行步骤(14),否则,执行步骤(15);
(14)将待检测样本标记为恶意软件,输出待检测样本对应的恶意软件类别;
(15)将待检测样本标记为正常软件,输出待检测样本对应的正常软件类别。
2.根据权利要求1所述的基于网络流量分析的安卓恶意软件实时检测方法,其特征在于,步骤(2)、步骤(10b)中所述的网络数据流分组的定义规则为,对于初始数据集中的网络数据包,按照网络数据包的时间顺序,将时间间隔小于4.5秒的相邻的网络数据包,划分为一个网络数据流分组。
3.根据权利要求1所述的基于网络流量分析的安卓恶意软件实时检测方法,其特征在于,步骤(3)、步骤(10c)中所述的网络数据流最小单元的定义规则为:对于每一个网络数据流分组内的网络数据包,按照网络数据包的时间顺序,将具有相同的源IP地址、源端口号、目的IP地址、目的端口号的网络数据包,划分成一个网络数据流最小单元,7<Count<256,其中,Count为网络数据流最小单元中数据包的总数。
4.根据权利要求1所述的基于网络流量分析的安卓恶意软件实时检测方法,其特征在于,步骤(5)中所述的网络数据包字段特征包括,HTTP请求数据包的平均长度、HTTP响应数据包的平均长度、HTTP请求数据包个数/响应数据包个数、HTTP请求数据包字节数/响应数据包字节数、HTTP请求URI字段、HTTP请求方法字段、HTTP请求User-Agent字段、HTTP请求Host字段。
5.根据权利要求1所述的基于网络流量分析的安卓恶意软件实时检测方法,其特征在于,步骤(7a)中所述的时间类统计特征包括,发出的数据包的平均时间间隔、收到的数据包的平均时间间隔、网络流持续时间、平均每秒发送的数据包数、平均每秒接收的数据包数、平均每秒发送的字节数、平均每秒接收的字节数。
6.根据权利要求1所述的基于网络流量分析的安卓恶意软件实时检测方法,其特征在于,步骤(7b)中所述的空间类统计特征包括,收到的数据包个数/发出的数据包个数、收到的数据包字节数/发出的数据包字节数、发出的数据包个数、收到的数据包个数、发出的数据包字节数、收到的数据包字节数、数据包的最小值、最大值、均值、中位数绝对偏差、标准差、方差、偏移度、峰度。
7.根据权利要求1所述的基于网络流量分析的安卓恶意软件实时检测方法,其特征在于,步骤(8a)、步骤(9a)中所述的软件样本类别包括,正常软件样本和恶意软件样本两种类别。
8.根据权利要求1所述的基于网络流量分析的安卓恶意软件实时检测方法,其特征在于,步骤(8b)中所述的随机森林算法的具体步骤如下,
第1步,在[100,200]的范围内任意选取一个数,将其设定为随机森林中的基分类器的总数;
第2步,使用自助采样法,对统计特征向量组成的训练样本集进行采样,得到基分类器的训练样本集;
第3步,从基分类器的训练样本集的统计特征集合中,随机选取m个特征,组成特征子集,m=log2M,其中M表示统计特征集合中的特征总数;
第4步,使用基分类器的训练样本集和特征子集对一棵决策树模型进行训练,将训练后的决策树模型存入到基分类器集合中;
第5步,判断基分类器集合中的决策树模型总数是否等于设定的基分类器的总数,若是,则执行第6步,否则,执行第2步;
第6步,将基分类器集合中的所有决策树模型组成随机森林,作为统计特征检测模型。
9.根据权利要求1所述的基于网络流量分析的安卓恶意软件实时检测方法,其特征在于,步骤(9b)中所述的C4.5算法的具体步骤如下,
第1步,将字段特征向量及其对应的软件样本类别作为训练样本集,其中每个字段特征向量的所有字段特征组成特征集合;
第2步,创建一个树节点;
第3步,判断训练样本集中的样本是否全属于同一类别,若是,则执行第4步,否则,执行第5步;
第4步,将树节点标记为该类叶子结点,执行第13步;
第5步,判断特征集合中的候选特征是否不为空,若是,则执行第7步,否则,执行第6步;
第6步,将树节点标记为训练样本集中样本数最多的软件样本类别,执行第13步;
第7步,按照下式,计算特征集合中的每个字段特征的信息增益率:
其中,Ii表示的第i个字段特征的信息增益率,H(D)表示训练样本集D的信息熵,∑表示求和操作,V表示当前字段特征的取值的总数,|·|表示取绝对值操作,Dj表示当前字段特征取值相同的所有训练样本,H(Dj)表示Dj的信息熵;
第8步,从特征集合中的所有字段特征的信息增益率中,选择信息增益率最大的字段特征,作为树节点的最优特征;
第9步,按照训练样本在树节点的最优特征上的不同取值,将训练样本集划分为不同的训练样本子集;
第10步,分别判断每个训练样本子集是否不为空,若是,则执行第11步,否则,执行第12步;
第11步,将训练样本子集作为训练样本集,从特征集合中去掉当前最优特征,继续递归执行第2步;
第12步,将当前分支结点标记为叶子结点,类别标记为训练样本集中样本最多的类别,执行第13步;
第13步,将得到的C4.5模型作为字段特征检测模型。