基于多特征的安卓恶意软件家族聚类方法技术

技术编号:33531331 阅读:12 留言:0更新日期:2022-05-19 02:02
本发明专利技术提出了一种基于多特征的安卓恶意软件家族聚类方法。该方法首先抽取权限特征、API特征和操作码特征,用于表示样本不同方面的信息;其次在预处理阶段过滤API特征和操作码特征中冗余特征,以减少后续计算时间并提高聚类效果;然后使用Jaccard系数计算样本之间的权限特征、API特征和操作码特征的相似度,同时利用API序列信息计算API的序列相似度,集成所有相似度得到恶意软件之间的相似度;最后,通过设置相似度阈值构建恶意软件网络,使用社区发现中的InfoMap算法实现聚类。通过本发明专利技术方法能有效实现恶意软件的家族聚类,对恶意软件检测和原因分析有着非常重要的意义。件检测和原因分析有着非常重要的意义。件检测和原因分析有着非常重要的意义。

【技术实现步骤摘要】
基于多特征的安卓恶意软件家族聚类方法


[0001]本专利技术涉及一种基于多特征的安卓恶意软件家族聚类方法,属于软件维护领域。

技术介绍

[0002]随着移动互联网技术的快速发展,以智能手机为代表的移动终端设备得到广泛普及。安卓系统因其具有开源性、开放性和灵活性等特点,已经成为移动终端中最广泛使用的操作系统之一。但与此同时,安卓系统也成为恶意攻击者的主要目标,大量安卓恶意软件的不断涌现严重威胁着人们的信息安全。在2016年发现的名为Godless的恶意软件可以“感染”低版本的安卓系统以获取root权限。类似地,2017年发现的名为Dvmap的恶意软件,可以在低版本的安卓系统中将恶意代码注入运行中的时间库来获得root权限。当攻击者获得了设备的root权限,就可以无需用户授权直接对该设备进行操作,包括窃取用户的手机数据和擅自安装其他应用等。
[0003]报道显示每年新增安卓恶意软件的数量达到百万级,而其中大部分都是在已有恶意软件的基础上开发而来。具体而言,开发者通过将恶意组件或恶意代码“注入”到正常的App中,并重新打包生成新的恶意软件。因此,这些恶意软件具有一定的家族性质,即包含着相同的恶意组件或代码。目前,在恶意软件相关分析中,安卓恶意软件的家族分类也是一个重要的研究内容。通过对恶意软件进行聚类,将不同的恶意软件划分到不同的家族中,从而识别出同一家族内常见的恶意组件和代码,可以帮助开发人员更好地理解恶意软件的属性以及行为,从而更高效地识别恶意软件,判断其危害程度。因此,安卓恶意软件家族聚类有着非常重要的意义。
[0004]针对安卓恶意软件家族聚类问题,研究者提出了许多分类方法。这些方法往往也是选择不同的软件特征,利用机器学习算法通过训练分类器来实现对安卓恶意软件的家族分类,将恶意软件划分到不同的家族中。但已有的方法大多都是基于有监督学习,非常依赖标注好的数据集,而且无法有效划分那些未知家族的安卓恶意软件。针对这些问题,本专利技术提出了一种新的恶意软件家族聚类方法。

技术实现思路

[0005]为了有效实现恶意软件家族聚类,本专利技术提出了一种基于多特征的安卓恶意软件家族聚类方法,可以有效地将恶意软件划分到不同的簇中。
[0006]为实现上述目的,本专利技术的技术方案是:
[0007]一种基于多特征的安卓恶意软件家族聚类方法,包括以下步骤:
[0008]步骤一:给定m个Android应用恶意软件安装包(apk文件)集合A=(A1,A2,

A
m
),对于每个恶意软件安装包A
i
(i=1,2,

,m),借助安卓分析工具Androguard获取其中的AndroidManifest.xml文件和classes.dex文件;
[0009]步骤二:从AndroidManifest.xml文件中抽取权限信息,从classes.dex文件中抽取API序列信息以及操作码序列信息;每个恶意软件可以表示为A
i
=(apkId,permission,
APISequence,opcode),其中apkId表示恶意软件安装包的编号,permission表示权限集合信息,APISequence表示API序列信息,opcode表示操作码序列信息;
[0010]步骤三:对permission和APISequence进行过滤:根据官方文档定义的权限列表,过滤permission中第三方或自定义的权限;通过识别API中的packageName,过滤APISequence中非官方的API;
[0011]步骤四:对opcode信息进行特征抽取:利用N

Gram模型抽取opcode中字节片段特征gram,每个gram都是由n个操作码组成,如“1a 71 39”代表一个3

gram操作码特征,“1a 71 39 45”代表一个4

gram操作码特征;N

Gram是一种基于概率的判别模型,通过将文本内容按照字节进行大小为n的窗口滑动操作,计算每个gram出现的概率;将所有的gram按照概率从大到小进行排序,选取其中概率最大的K%个gram;
[0012]经过步骤三和四的预处理后,每个恶意软件包可以表示为A
i
=<apkId,prePermission,preAPISequence,preOpcode>;
[0013]步骤五:将所有软件包中的prePermission表示成字袋形式,创建集合步骤五:将所有软件包中的prePermission表示成字袋形式,创建集合其中l
i
表示第i个软件包中的权限个数;对于任意软件包A
a
和A
b
,利用Jaccard系数计算prePermission的相似度Sim
per
(A
a
,A
b
);Jaccard系数主要根据两个软件包中包含的相同的权限的个数与所有不同权限的个数的比例来度量相似度;
[0014]步骤六:将所有软件包中的preOpcode表示成字袋形式,创建集合步骤六:将所有软件包中的preOpcode表示成字袋形式,创建集合其中d
i
表示第i软件包中的操作码个数;对于任意软件包A
a
和A
b
,利用Jaccard系数计算软件包中preOpcode的相似度Sim
opc
(A
a
,A
b
);
[0015]步骤七:对于软件包中的preAPISequence,将所有的API组成序列集合t
i
为第i个软件包中的API的个数;preAPISequence实际上是由API组成的序列信息,因此应该同时考虑其语义相似度和序列相似度,其中语义相似度利用Jaccard系数计算,序列相似度利用API的序列位置对应关系进行计算;综合两种相似度值得到任意软件包A
a
和A
b
中preAPISequence的相似度Sim
api
(A
a
,A
b
);
[0016]步骤八:将三种不同类型的相似度进行集成,计算任意软件包A
a
和A
b
之间的最终相似度Sim(A
a
,A
b
):
[0017][0018]步骤九:软件包聚类:利用InfoMap方法对软件包进行聚类,InfoMap是一种非常高效的社区发现方法,其核心原理为信息论中的最小化熵;通过InfoMap方法将所有恶意软件划分为c类。
[0019]作为优选,所述步骤四包括以下步骤:
[0020]子步骤4

1、在给定恶意安卓软件样本集A=(A1,A2,

A
m
...

【技术保护点】

【技术特征摘要】
1.一种基于多特征的安卓恶意软件家族聚类方法,其特征在于:包括一下步骤步骤一:给定m个Android应用恶意软件安装包集合A=(A1,A2,

A
m
),对于每个恶意软件安装包A
i
(i=1,2,...,m),借助安卓分析工具Androguard获取其中的AndroidManifest.xml文件和classes.dex文件;步骤二:从AndroidManifest.xml文件中抽取权限信息,从classes.dex文件中抽取API序列信息以及操作码序列信息;每个恶意软件可以表示为A
i
=(apkId,permission,APISequence,opcode),其中apkId表示恶意软件安装包的编号,permission表示权限集合信息,APISequence表示API序列信息,opcode表示操作码序列信息;步骤三:对permission和APISequence进行过滤:根据官方文档定义的权限列表,过滤permission中第三方或自定义的权限;通过识别API中的packageName,过滤sequence中非官方的API;步骤四:对opcode信息进行特征抽取:利用模型抽取opcode中字节片段特征gram;经过步骤三和四的预处理后,每个恶意软件包表示为A
i
=<apkId,prePermission,preAPISequence,preOpcode>,i=1,2

m;步骤五:将所有软件包中的prePermission表示成字袋形式,创建集合步骤五:将所有软件包中的prePermission表示成字袋形式,创建集合其中l
i
表示第i软件包中的权限个数;对于任意软件包A
a
和A
b
中prePermission,利用Jaccard系数计算prePermission的相似度Sim
per
(A
a
,A
b
),公式为:其中||表示集合中包含的权限的个数;步骤六:将所有软件包中的preOpcode也表示成字袋形式,创建集合步骤六:将所有软件包中的preOpcode也表示成字袋形式,创建集合其中d
i
表示第i软件包中的操作码个数;对于任意软件包A
a
和A
b
中preOpcode,利用Jaccard系数计算软件包中preOpcode的相似度Sim
op
(A
a
,A
b
),公式为:步骤七:对于软件包中的preAPISequence,将所有的API组成序列集合其中t
i
表示第i软件包中的操作码个数;利用Jaccard系数计算其语义相似度,以及API的序列位置信息计算其序列相似度;最终综合这两种相似度得到任意软件包A
a
和A
b
的preAPISequence相似度Sim
api
(A
a
,A
b
);步骤八:将三种不同类型的相似度进行集成,计算软件包之间的最终相似度;给定任意两个软件包A
a
和A
b
,最终相似度Sim(A
a
,A
b
)定义为:步骤九:软件包聚类:利用InfoMap方法对软件包进行聚类;通过InfoMap方法将所有恶意软件划分为c类。2.根据权利要求1所述的一种基于多特征的安卓恶意软件家族聚类方法,其特征在于:所述步骤四包括以下步骤:
子步骤4

1、在给定恶意安卓软件样本集A=(A1,A2,

A
m
),抽取所有软件包的操作码的n

gram(n=5)特征,构建集合Ω={o1,o2,...,o
s
},s为所有5

gram操作码的数量;子步骤4

2、计算Ω中每个...

【专利技术属性】
技术研发人员:陈信殷嘉铖俞东进俞海华
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1