基于网络流量分析的安卓恶意软件实时检测方法与流程

文档序号:11156691阅读:463来源:国知局
基于网络流量分析的安卓恶意软件实时检测方法与制造工艺

本发明属于通信技术领域,更进一步涉及网络安全技术领域中的一种基于网络流量分析的安卓恶意软件实时检测方法。本发明可用于实时检测安卓移动终端中是否存在恶意软件,以便于其他网络安全技术对安卓移动终端中所存在的恶意软件进行处理,从而保障安卓移动终端用户的信息安全。



背景技术:

安卓恶意软件检测技术用于发现移动设备上存在的恶意软件,以便于其他网络安全技术阻止恶意软件对移动设备的危害活动。基于网络流量分析的安卓恶意软件检测技术在近些年受到了学者的关注,这种方法通常是对应用程序产生的网络流量数据进行分析,从中提取出能够区分正常软件和恶意软件的网络流量特征,作为恶意软件的检测依据。目前基于网络流量分析的安卓恶意软件检测技术有:

Anshul Arora等人在其发表的论文“Malware Detection Using Network TrafficAnalysis in Android Based Mobile Devices”(Eighth International Conference on NextGeneration Mobile Apps,Services and Technologies,2014)中提出一种基于网络流量分析的Android恶意软件检测方法。该方法分两个阶段,首先,通过分析Android恶意软件的网络流量,找出那些可以区分正常软件和恶意软件的网络流量特征;然后,使用这些特征建立一个基于规则的分类器;最后,使用建立的分类器模型进行恶意软件的检测。该检测方法存在的不足之处是:该方法以一次TCP会话的网络流量数据作为一个基本实例,这样的处理方式使得恶意软件检测的实时性无法得到保障。该方法中使用的网络流量数据特征类型比较单一,仅使用网络数据包的统计特征,另外,该方法仅对3个正常应用样本进行分析,不足以代表不同正常应用程序的网络流量特性。

济南大学在其拥有的专利技术“基于网络流量的多特征移动终端恶意软件检测方法及系统”(申请号CN 201510486986.2授权公告号CN 105022960A)中提出了一种利用移动终端网络流量来检测恶意软件网络行为的方法。该方法针对移动终端网络流量的多类特征,分别设计相应的不同检测模型,包括以下三种:第一,对于DNS请求的域名特征,使用第三方的域名检测服务器进行检测;第二,对于行为序列图特征,使用图相似匹配模型进行检测;第三,对于数值类型特征和标称类型特征,使用SVM分类算法进行检测。该检测方法存在的不足之处是:该方法设计的三种模型是相互独立的,第一种模型完全依赖于第三方域名检测服务器的准确性,第二种模型不能够检测采用加密协议进行网络数据传输的恶意软件,第三种模型不能够保证对恶意软件的实时检测。

综上所述,现阶段的一些基于网络流量分析的安卓恶意软件检测方法存在以下不足之处:首先,现有的基于网络流量分析的安卓恶意软件检测方法通常是对不同TCP会话中的网络流量进行分析,或者是对网络数据包逐个进行分析的处理方式使得恶意软件检测的实时性不能得到保障;然后,现有的基于网络流量分析的安卓恶意软件检测方法中使用的网络流量特征,通常是网络数据包的应用层头部字段特征,这种方法在面对使用TLS/SSL协议进行加密传输的应用程序时便不能有效进行检测;最后,现有的基于网络流量分析的安卓恶意软件检测方法使用的网络流量数据特征比较单一,没有充分利用网络流量的各种类型的特征。



技术实现要素:

本发明的目的是克服上述现有技术的不足,提出一种基于网络流量分析的安卓恶意软件实时检测方法。

实现本发明的具体思路是:本发明提出的方法包括模型建立阶段和实时检测阶段,其中模型建立阶段,是通过对正常软件和恶意软件的网络流量数据进行分析,根据网络流量是否为加密流量,提取出能够区分正常软件和恶意软件的网络数据特征,然后使用机器学习算法对不同类型的网络数据特征建立恶意软件检测模型;实时检测阶段,是使用模型训练阶段建立的恶意软件检测模型,对待检测软件样本进行实时检测,输出检测结果。

实现本发明目的的具体步骤如下:

(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)将待检测样本标记为正常软件,输出待检测样本对应的正常软件类别。

本发明与现有技术相比具有如下优点:

第一,由于本发明的方法在划分网络数据流分组步骤中,根据网络数据流分组的定义规则,对初始数据集进行分组,得到多个不同的网络数据流分组;在提取网络数据流最小单元步骤中,根据网络数据流最小单元的定义规则,分别从每个网络数据流分组中提取网络数据流最小单元,克服了现有技术通常是对不同TCP会话中的网络流量进行分析,或者是对网络数据包逐个进行分析的处理方式使得恶意软件检测的实时性不能得到保障的缺点,使得本发明的方法具有能够实时检测恶意软件的优点;

第二,由于本发明的方法通过对网络流量数据进行分析,提取网络数据包字段特征,提取网络数据流统计特征,克服了现有的基于网络流量分析的安卓恶意软件检测方法使用的网络流量数据特征比较单一,没有充分利用网络流量的各种类型的特征的缺点,使得本发明的方法具有良好的检测准确率。

第三,由于本发明的方法通过训练字段特征检测模型、训练统计特征检测模型,克服了现有的基于网络流量分析的安卓恶意软件检测方法中使用的网络流量特征,通常是网络数据包的应用层头部字段特征,这种方法在面对使用TLS/SSL协议进行加密传输的应用程序时便不能有效进行检测的缺点,使得本发明能够实现对使用TLS/SSL加密协议进行数据传输的应用程序的检测。

附图说明

图1为本发明方法的流程图;

图2为使用随机森林算法训练统计特征检测模型步骤的流程图;

图3为使用C4.5算法训练字段特征检测模型步骤的流程图。

具体实施方式

下面结合附图对本发明做进一步的描述。

参照附图1,对本发明的实现方法做进一步的描述。

步骤1,收集网络数据。

使用网络数据包捕获工具,分别收集正常软件样本和恶意软件样本所产生的网络流量数据,将收集的网络流量数据作为训练恶意软件检测模型的初始数据集。

步骤2,划分网络数据流分组。

根据网络数据流分组的定义规则,对初始数据集进行分组,得到多个不同的网络数据流分组。

所述的网络数据流分组的定义规则为,对于初始数据集中的网络数据包,按照网络数据包的时间顺序,将时间间隔小于4.5秒的相邻的网络数据包,划分为一个网络数据流分组。

步骤3,提取网络数据流最小单元。

根据网络数据流最小单元的定义规则,分别从每个网络数据流分组中提取网络数据流最小单元。

所述的网络数据流最小单元的定义规则为:对于每一个网络数据流分组内的网络数据包,按照网络数据包的时间顺序,将具有相同的源IP地址、源端口号、目的IP地址、目的端口号的网络数据包,划分成一个网络数据流最小单元,7<Count<256,其中,Count为网络数据流最小单元中数据包的总数。

步骤4,判断网络数据流最小单元中的端口号是否为80,若是,则执行步骤5,否则,执行步骤6。

步骤5,提取网络数据包字段特征。

从网络数据流最小单元的各个数据包的头部字段信息中,提取网络数据包字段特征。

所述的网络数据包字段特征包括,HTTP请求数据包的平均长度、HTTP响应数据包的平均长度、HTTP请求数据包个数/响应数据包个数、HTTP请求数据包字节数/响应数据包字节数、HTTP请求URI字段、HTTP请求方法字段、HTTP请求User-Agent字段、HTTP请求Host字段。

将提取的网络数据包字段特征作为向量的元素,组成一个字段特征向量。

步骤6,判断网络数据流最小单元中的端口号是否为443,若是,则执行步骤7,否则,执行步骤3。

步骤7,提取网络数据流统计特征;

根据网络数据流最小单元中的各个数据包的时间戳信息,得到时间类统计特征。

所述的时间类统计特征包括,发出的数据包的平均时间间隔、收到的数据包的平均时间间隔、网络流持续时间、平均每秒发送的数据包数、平均每秒接收的数据包数、平均每秒发送的字节数、平均每秒接收的字节数。

根据网络数据流最小单元中的各个数据包的长度信息,得到空间类统计特征。

所述的空间类统计特征包括,收到的数据包个数/发出的数据包个数、收到的数据包字节数/发出的数据包字节数、发出的数据包个数、收到的数据包个数、发出的数据包字节数、收到的数据包字节数、数据包的最小值、最大值、均值、中位数绝对偏差、标准差、方差、偏移度、峰度。

将提取的时间类统计特征和空间类统计特征作为向量的元素,组成一个统计特征向量。

步骤8,训练统计特征检测模型。

分别将每个统计特征向量标记为与该统计特征向量对应的软件样本类别,将所有标记后的统计特征向量组成统计特征检测模型的训练样本集。

利用随机森林算法,对训练样本集进行训练,得到统计特征检测模型。

参照附图2,对使用随机森林算法训练统计特征检测模型的步骤做进一步的描述。

所述的随机森林算法的具体步骤如下。

第1步,在[100,200]的范围内任意选取一个数,将其设定为随机森林中的基分类器的总数。

第2步,使用自助采样法,对统计特征向量组成的训练样本集进行采样,得到基分类器的训练样本集。

第3步,从基分类器的训练样本集的统计特征集合中,随机选取m个特征,组成特征子集,m=log2M,其中M表示统计特征集合中的特征总数。

第4步,使用基分类器的训练样本集和特征子集对一棵决策树模型进行训练,将训练后的决策树模型存入到基分类器集合中。

第5步,判断基分类器集合中的决策树模型总数是否等于设定的基分类器的总数,若是,则执行第6步,否则,执行第2步。

第6步,将基分类器集合中的所有决策树模型组成随机森林,作为统计特征检测模型。

步骤9,训练字段特征检测模型。

分别将每个字段特征向量标记为与该字段特征向量对应的软件样本类别,将所有标记后的字段特征向量组成字段特征检测模型的训练样本集。

利用C4.5算法,对训练样本集进行训练,得到字段特征检测模型。

参照附图3,对使用C4.5算法训练字段特征检测模型的步骤做进一步的描述。

所述的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模型作为字段特征检测模型。

步骤10,提取待检测样本的网络数据特征。

第1步,利用网络数据包捕获工具,实时捕获待检测样本的网络流量数据。

第2步,根据网络数据流分组的定义规则,得到待检测样本的网络数据流分组。

所述的网络数据流分组的定义规则为,对于初始数据集中的网络数据包,按照网络数据包的时间顺序,将时间间隔小于4.5秒的相邻的网络数据包,划分为一个网络数据流分组。

第3步,根据网络数据流最小单元的定义规则,从待检测样本的网络数据流分组中提取网络数据流最小单元。

所述的网络数据流最小单元的定义规则为:对于每一个网络数据流分组内的网络数据包,按照网络数据包的时间顺序,将具有相同的源IP地址、源端口号、目的IP地址、目的端口号的网络数据包,划分成一个网络数据流最小单元,7<Count<256,其中,Count为网络数据流最小单元中数据包的总数。

第4步,判断网络数据流最小单元中的端口号是否为80,若是,则执行第5步,否则,执行第6步。

第5步,提取网络数据包字段特征作为向量的元素,组成字段特征向量。

第6步,判断网络数据流最小单元中的端口号是否为443,若是,则执行第7步,否则,执行第1步。

第7步,提取网络数据流统计特征作为向量的元素,组成统计特征向量。

步骤11,判断待检测样本的特征向量是否为字段特征向量,若是,则执行步骤12,否则,执行步骤13。

步骤12,将待检测样本的特征向量输入字段特征检测模型,判断字段特征检测模型的输出是否为恶意软件类别,若是,则执行步骤14,否则,执行步骤15。

步骤13,将待检测样本的特征向量输入统计特征检测模型,判断统计特征检测模型的输出是否为恶意软件类别,若是,则执行步骤14,否则,执行步骤15。

步骤14,将待检测样本标记为恶意软件,输出待检测样本对应的恶意软件类别。

步骤15,将待检测样本标记为正常软件,输出待检测样本对应的正常软件类别。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1