一种面向Android的移动网络终端恶意软件多特征检测方法与流程

文档序号:14923564发布日期:2018-07-13 08:02阅读:248来源:国知局

本发明属于移动软件分析及信息安全领域,具体涉及一种面向android的移动网络终端恶意软件多特征检测方法。



背景技术:

android恶意代码多标签检测问题,是在学术界和工业界中具有挑战性的难题。在判定软件恶意性的同时还应给出其所属家族。当前智能手机的应用已经涉及到人们生活的各个方面,而android系统在智能手机中占有大量的份额,因此准确的检测android恶意代码,对于保护android用户隐私和财产安全具有重要的意义和应用价值。

现有的android恶意软件检测技术主要分为2类:分别为基于静态分析和基于动态分析的检测技术。动态分析方法模拟软件的执行,能够绕过静态方法遇到的代码混淆和加密等问题;但是动态测试代码覆盖率低,并且有些恶意程序可以防止自身在模拟器下运行。静态分析方法主要研究使用反编译技术或者在smali中间代码上进行控制流和数据流分析技术,能够对软件进行自动化分析,具有较高的检测效率,代码覆盖率高,适用于对大量软件样本进行分析;缺点是需要解决静态方法难以检测的代码混淆、加密以及在动态执行中才解码恶意代码的问题。为了应对该问题,已有研究者在恶意软件检测中考虑了加密、代码动态加载、native代码动态加载等技术,如riskranker和droidranger等。

目前已有许多学者针对android恶意软件的多标签检测方法进行了相关研究。如danielarp等人提出了基于静态分析方法的android恶意代码多标签检测方法,在软件安装包中提取了大量的静态特征,并使用支持向量机进行分类,实现了高效检测;yufeng等人提出了描述android恶意家族的特征描述语言,并使用特征匹配算法对待测软件进行分类,实现了基于语义的android恶意软件检测;chaoyang等人使用两级行为图表示方法描述软件的逻辑行为,结合静态污点分析和组件间的行为图,通过恶意行为模式分析判断软件的恶意性,并实现了对恶意家族的分类。

然而,现有的android恶意软件多标签检测技术的研究,多选取恶意软件的所有样本进行分析,提取恶意软件所具有的特征,并以此作为待测软件恶意性判定的依据。而属于不同家族的恶意软件具有不同的恶意行为,其恶意性所表现出来的特征也具有较大差异。同一恶意软件家族的恶意软件,具有相似的恶意行为。但是,现有的恶意软件检测工具对于恶意软件的多标签检测能力较弱,如mcafee对于genome数据集中的恶意样本进行检测时,将其中超过90%的样本检测为trojan或downloader,而实际上属于多个不同的恶意软件家族(如droiddream等)。因此,速度和准确性均有待进一步提升,需要研究高效的恶意软件多标签检测方法。



技术实现要素:

本发明的目的在于提供一种面向android的移动网络终端恶意软件多特征检测方法,从而有效的提取android恶意软件的特征,提高android恶意软件检测的精度,并具有android恶意家族分类的能力。

实现本发明的技术解决方案为:一种面向android的移动网络终端恶意软件多特征检测方法,具体包括以下步骤:

步骤1、获取android恶意软件样本,并标记各样本所属的android恶意软件家族,然后获取非恶意软件样本,从而构建恶意和非恶意软件样本数据集;

步骤2、提取软件的安装包特征,包括:是否存在.so文件、是否存在用于root系统的文件、是否存在异常文件,以及是否存在子程序,从而构造安装包特征向量f;

步骤3、使用反编译工具处理android软件样本,解析androidmanifest.xml文件,根据xml中的标记字段,提取软件申请的权限列表p;

步骤4、反编译安装包,构建软件函数调用图,定位其中的安全敏感方法,构建软件的敏感行为图sbg,然后采用数据流分析方法获得安全敏感方法的上下文信息,将被直接或间接调用的安全敏感方法构成软件的敏感行为集sbs;

步骤5、对恶意样本中属于同一恶意软件家族的软件特征进行统计分析,获取各特征分量出现的概率,构建android恶意软件家族多特征模型m,从而构建恶意软件家族特征库;

步骤6、使用步骤2~4的方法提取待测软件的特征,将待测软件的特征与恶意软件家族特征库进行特征匹配,得到与之相似度最高的恶意软件家族名称,若相似度超过阈值则输出该软件为恶意软件,并输出其所属的恶意软件家族,否则输出该软件为良性软件。

本发明与现有技术相比,其显著优点为:1)本发明提出了一种面向android的移动网络终端恶意软件多特征检测方法,针对不同的恶意软件家族,基于静态分析方法,从软件包特征、申请权限特征和软件的行为调用特征三个方面对软件进行分析;2)本发明采用统计分析方法,提取恶意软件家族的特征,构造恶意软件家族特征库,基于该特征库提出了恶意软件多标签检测方法,能够达到较好的恶意性判定精度和恶意家族分类精度。

下面结合附图对本发明作进一步详细阐述。

附图说明

图1为本发明的一种面向android的移动网络终端恶意软件多特征检测方法的流程图。

图2为运用本发明的恶意软件检测精度及恶意家族分类精度与virustotal中部分引擎的对比结果。

具体实施方式

结合附图,本发明的一种面向android的移动网络终端恶意软件多特征检测方法,包括以下步骤:

步骤1、获取android恶意软件样本,并标记各样本所属的android恶意软件家族,然后获取非恶意软件样本,从而构建恶意和非恶意软件样本数据集;

步骤2、提取软件的安装包特征,包括:是否存在.so文件、是否存在用于root系统的文件、是否存在异常文件、以及是否存在子程序,从而构造安装包特征向量f;

所述异常文件指文件的后缀与文件内容本身指定的类型不匹配的文件;判断文件是否存在.so文件,并通过md5值判断库文件是否为rootexploit文件;判断jar文件、dex文件和apk文件是否存在子程序。

步骤3、使用反编译工具处理android软件样本,解析androidmanifest.xml文件,根据xml中的标记字段,提取软件申请的权限列表p;

步骤4、反编译安装包,构建软件函数调用图,定位其中的安全敏感方法,构建软件的敏感行为图sbg,然后采用数据流分析方法获得安全敏感方法的上下文信息,将被直接或间接调用的安全敏感方法构成软件的敏感行为集sbs;

所述安全敏感方法包括:权限保护的方法、信息流source/sink方法和其他可疑方法;权限保护方法指android系统中需要申请权限才能使用的api,信息流source/sink方法指可能产生或发送敏感信息的方法,其他可疑方法包括动态加载函数、反射函数、加解密函数、native代码执行及调用函数。

构建的软件函数调用图为下列四元组:

sbg=(vd,vn,e,μ)

其中,vd为软件敏感行为调用图中点集的子集,其中的任一节点vd∈vd为安全敏感方法的一种;vn为软件敏感行为调用图中点集的子集,其中的任一节点vn∈vn为非安全敏感方法,但是直接或间接的调用了安全敏感方法;e∈vn×vd为软件敏感行为调用图边的集合,表示方法之间具有调用关系,其中任一条边e=(vn,vd)∈e表示软件中的非安全敏感方法vn∈vn直接或间接的调用了安全敏感方法vd∈vd,或组件cs中的方法vn通过icc直接或间接触发了组件ct中的方法vd;标记函数μ:vd→<id,entrytype,para>用于标记图中结点包含的内容,即该方法的上下文信息,包括方法id、入口点类型entrytype和参数para;

敏感行为集为如下所示的集合:

sbs={s1,…,si,…,sm}

其中,si={v|(vi,v)∈e∧vi∈vn∧v∈vd}为安全敏感方法集,表示敏感行为调用图sbg=(vd,vn,e,μ)中,vn集合的第i个非敏感安全方法直接或间接调用的所有安全敏感方法构成的集合;m=|vn|为集合sbs的长度。

步骤5、对恶意样本中属于同一恶意软件家族的软件特征进行统计分析,获取各特征分量出现的概率,构建android恶意软件家族多特征模型m,从而构建恶意软件家族特征库;

所述构建的android恶意软件家族多特征模型为下列六元组:

m=(sbsc,α,fc,β,pc,γ)

其中,为恶意软件家族共有的敏感行为集,通过统计分析同一恶意软件家族样本的敏感行为集sbs获得;标记函数用于标记sbsc中敏感方法集在恶意软件家族样本中出现的概率;fc为通过分析同一恶意软件家族样本的安装包特征向量f,统计得到的恶意软件家族样本具有的共有软件安装包特征;标记函数β:f∈fc→[0,1]用于标记fc中各种特征在恶意软件家族样本中出现的概率;pc为通过分析同一恶意软件家族样本的权限列表p,统计得到的恶意软件家族样本频繁申请的权限列表;标记函数γ:p∈pc→[0,1]用于标记pc中各权限在恶意软件家族样本中出现的概率。

步骤6、使用步骤2~4的方法提取待测软件的特征,将待测软件的特征与恶意软件家族特征库进行特征匹配,得到与之相似度最高的恶意软件家族名称,若相似度超过阈值则输出该软件为恶意软件,并输出其所属的恶意软件家族,否则输出该软件为良性软件。

所述待测软件与恶意软件家族的相似度表示为:

其中sf为软件特征向量的相似度,sp为权限列表的相似度,ssbs为敏感行为集的相似度,μi为各相似度在计算时的权重值;

软件特征向量相似度sf的计算方法为:给定待测软件的特征向量f={f1,f2,f3,...,fm},待匹配的恶意软件家族多特征模型中的特征向量以及对应的标记函数β,则:

按照各特征出现的概率计算相似度,若恶意家族多特征模型中的特征向量中的值均为0,则相似度为0;其中修正因子ωf的计算方法为:向量f中所有使fific=1的特征数量除以向量fc中值为1的特征数量;

软件的权限列表相似度sp的计算方法为:给定待测软件的权限列表p,待匹配的恶意软件家族多特征模型中的权限列表pc={p1c,p2c,...,pnc},以及对应的标记函数γ,则:

其中修正因子ωp的计算方法为:权限集合p中属于pc的权限数量除以集合pc的长度;当权限列表pc中的元素包含在待测软件的权限列表p中时,值为1,否则为0;

敏感行为集相似度ssbs的计算方法为:给定软件的敏感行为集sbs,待匹配的恶意软件家族多特征中的敏感行为集以及对应的标记函数α,则:

式中,ωsbs为修正因子,其计算方法为:sbs中所有使的集合sic的数量除以集合sbsc的长度;其中,函数表示:在sbs中存在某一集合s,与集合中的相似元素占两个集合所有元素的比例大于θ(0<θ≤1)。

由上可知,本发明采用统计分析方法,提取恶意软件家族的特征,构造恶意软件家族特征库,基于该特征库提出了恶意软件多标签检测方法,能够达到较好的恶意性判定精度和恶意家族分类精度。

为了使本领域技术人员更好地理解本发明中的技术问题、技术方案和技术效果,下面结合附图和具体实施例对本发明作进一步详细说明。

实施例

一种面向android的移动网络终端恶意软件多特征检测方法,使用drebin数据集和googleplay中获取的非恶意软件样本,构成数据集,恶意代码检测和家族分类具体包括以下步骤:

步骤1:将drebin中的样本按照其所属的恶意家族进行分割,使用网络爬虫方法,在googleplay上获取非恶意软件,并使用virustotal在线检测服务进行验证,从而构建样本数据集,包括24个恶意软件家族的4486个恶意软件样本,和2140个良性软件样本;

步骤2:使用zip解压缩工具将待分析的软件安装包解压缩,提取软件的安装包特征,包括:是否存在.so文件、是否存在用于root系统的文件、是否存在异常文件,以及是否存在子程序,从而构造安装包特征向量f;判断是否存在用于root系统的文件时,通过将现有的rootexploit库文件的md5值与软件安装包中的文件进行对比;判断是否存在异常文件,通过apachetika工具分析文件内容,获得文件类型,并与文件后缀进行对比;判断是否存在子程序,通过查看程序中是否存在jar文件、dex文件及apk文件实现;

步骤3:使用apkparser处理android软件样本,解析androidmanifest.xml文件,根据xml中的标记字段,提取软件申请的权限列表p;

步骤4:使用soot工具反编译安装包,构建软件函数调用图,定位其中的安全敏感方法,构建软件的敏感行为图sbg,然后采用数据流分析方法获得安全敏感方法的上下文信息,将被直接或间接调用的安全敏感方法构成软件的敏感行为集sbs;

关注的安全敏感方法包括:权限保护的方法、信息流source/sink方法和其他可疑方法;权限保护的方法指android系统中需要申请权限才能使用的api,信息流source/sink方法指可能产生或发送敏感信息的方法,其他可疑方法包括动态加载函数、反射函数、加解密函数、native代码执行及调用函数。

构建的敏感行为调用图为下列四元组:

sbg=(vd,vn,e,μ)

其中,vd为软件敏感行为调用图中点集的子集,其中的任一节点vd∈vd为安全敏感方法的一种;vn为软件函数调用图中点集的子集,其中的任一节点vn∈vn为非安全敏感方法,但是直接或间接的调用了安全敏感方法;e∈vn×vd为敏感行为调用图边的集合,表示方法之间具有调用关系。其中任一条边e=(vn,vd)∈e表示软件中的非安全敏感方法vn∈vn直接或间接的调用了安全敏感方法vd∈vd,或组件cs中的方法vn通过icc直接或间接触发了组件ct中的方法vd;标记函数μ:vd→<id,entrytype,para>用于标记图中顶点包含的内容,包括方法id、入口点类型entrytype和参数para。

敏感行为集为如下所示的集合:

sbs={s1,s2,…,sm}

其中,si={v|(vi,v)∈e∧vi∈vn∧v∈vd}为安全敏感方法集,表示敏感行为调用图sbg=(vd,vn,e,μ)中,vn集合的第i个非敏感安全方法直接或间接调用的所有安全敏感方法构成的集合;m=|vn|为集合sbs的长度;

步骤5、选取24个恶意软件家族样本中的75%(3341个样本)作为特征提取的样本,构建恶意软件家族特征库。对恶意样本中属于同一恶意软件家族的软件特征进行统计分析,获取各特征分量出现的概率,构建android恶意软件家族多特征模型m,从而构建恶意软件家族特征库;

构建的android恶意软件家族多特征模型为下列六元组:

m=(sbsc,α,fc,β,pc,γ)

其中,为恶意软件家族共有的敏感行为集,通过统计分析同一恶意软件家族样本的敏感行为集sbs获得;标记函数用于标记sbsc中敏感方法集在恶意软件家族样本中出现的概率;fc为通过分析同一恶意软件家族样本的安装包特征f,统计得到的恶意软件家族样本具有的共有软件安装包特征;标记函数β:f∈fc→[0,1]用于标记fc中各个特征在恶意软件家族样本中出现的概率;pc为通过分析同一恶意软件家族样本的权限列表p,统计得到的恶意软件家族样本频繁申请的权限列表;标记函数γ:p∈pc→[0,1]用于标记pc中各权限在恶意软件家族样本中出现的概率;

步骤6、使用步骤2~4的方法提取待测软件的特征,将待测软件的特征与恶意软件家族特征库进行特征匹配,得到与之相似度最高的恶意软件家族名称,若相似度超过0.7则输出该软件为恶意软件,并输出其所属的恶意软件家族,否则输出该软件为良性软件;

待测软件与恶意软件家族的相似度表示为:

其中sf为特征向量的相似度,sp为权限列表的相似度,ssbs为敏感行为集的相似度,μi为各相似度在计算时的权重值,实验中三个权重值均取

软件特征向量的相似度计算方法为,给定待测软件的特征向量f={f1,f2,f3,...,fm},待匹配的恶意软件家族多特征模型中的特征向量fc={f1c,f2c,f3c,...,fmc},以及对应的标记函数β,其相似度的计算方法如下式所示:

按照各特征出现的概率计算相似度,若恶意家族多特征模型中的特征向量的值均为0,则相似度为0。其中修正因子ωf的计算方法为:向量f中所有使fific=1的特征数量除以向量fc中值为1的特征数量。

软件权限列表相似度的计算方法为,给定待测软件的权限列表p,待匹配的恶意软件家族多特征模型中的权限列表pc={p1c,p2c,...,pnc},以及对应的标记函数γ,其相似度的计算方法如下式所示:

其中修正因子ωp的计算方法为:权限集合p中属于pc的权限数量除以集合pc的长度。

敏感行为集相似度的计算方法为,给定软件的敏感行为集sbs,待匹配的恶意软件家族多特征中的敏感行为集以及对应的标记函数α,其相似度的计算方法如下式所示:

为了防止特征较多的恶意软件家族覆盖特征较少的家族,引入修正因子ωsbs,其计算方法为:sbs中所有使的集合的数量除以集合sbsc的长度。其中,函数表示:在sbs中存在某一集合s,与集合中的相似元素占两个集合所有元素的比例大于80%。

使用上述方法对剩余25%(1145个)的恶意软件样本以及2140个良性软件样本进行测试实验,软件恶意性判定及恶意家族分类的结果,与virustotal中常见的8个反病毒引擎的检测结果的对比如图2所示。

由上可知,本发明选取软件包特征、权限特征和软件敏感行为调用特征作为恶意软件判定的依据,可提高软件恶意行为检测的准确性,同时具有恶意软件家族分类的能力。

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