1.本发明涉及一种基于android应用行为分类的恶意应用检测方法,属于安卓恶意应用检测技术领域。
背景技术:2.随着移动互联网逐年快速发展,android系统作为占据市场最大份额的移动端操作系统也在蓬勃发展。据cnnic发布的资料显示,截至2020年6月,我国手机网民规模持续增长,已经达到9.32亿的规模,网民使用移动互联网的比例达到了99.2%,国内android应用市场上的在架应用多达359万个。android移动应用占据了国内移动互联网较大的份额,其发展应用也愈加深远。
3.然而android作为移动设备主流操作系统,由于其系统源码的开放性以及应用开发的开放性,android平台成为攻击者制造恶意应用的主要阵地。据360联合中国信息通信研究院发布的《2020年中国手机安全状况报告》显示,android应用市场到2020为止共截获移动端恶意应用约454.6万个,且恶意应用增长趋势逐年上升,恶意应用数量相比于2019年的180.9万个增长了151.3%。,其恶意行为主要体现在资源消耗、隐私窃取和恶意扣费等类型上。
4.针对恶意应用的安全检测方法,一般分别从静态代码层面和动态行为层面针对android应用进行安全检测,而恶意应用也针对这两个方面进行安全检测的逃逸行为。恶意应用的静态代码安全检测方法是将android应用的apk安装包进行反编译,获取其字节码文件,通过对字节码文件的代码逻辑进行分析从而判断是否为恶意应用;而动态行为检测则是通过截获应用在运行过程中产生的数据交互信息,从而判断该应用是否为恶意应用。目前,许多恶意应用对抗安全检测的方法也在不断进化,比如通过代码混淆的变种恶意软件或依附在正常软件上的恶意模块导致检测结果不理想。因此,准确且有效的检测与防范变种恶意软件技术十分关键。
5.随着移动应用生态系统的不断完善,各种应用软件层出不穷。由于众多的第三方应用商店缺乏统一的审核和监管应用的规范,恶意应用软件的数量急剧增加。这对android的生态系统造成了巨大的破坏,也给应用市场和监管部门带来了严峻挑战。恶意应用带来的安全问题,例如恶意扣费和隐私窃取,促使研究人员开发出高效、自动化的检测方法,可以有效地检测出android恶意应用。目前的恶意应用检测方法大部分是针对android应用反编译后生成的字节码文件进行恶意检测,这类检测方法具有速度快、耗能低、实时性要求低等优点,但由于其高度依赖静态代码的特点,对于各类代码混淆技术的抗干扰能力较差。
技术实现要素:6.本发明所要解决的技术问题是提供一种基于android应用行为分类的恶意应用检测方法,采用全新设计执行策略,能够针对安卓应用进行高效检测,完成对恶意应用的检测。
7.本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种基于android应用行为分类的恶意应用检测方法,用于针对n个待测安卓应用进行恶意应用检测,包括如下步骤:
8.步骤a.以待测安卓应用的apk安装包名为参数,获取各个待测安卓应用的apk安装包的原始包名,然后进入步骤b;
9.步骤b.基于待测安卓应用的启动,获得各待测安卓应用分别对应的父进程标识符,然后进入步骤c;
10.步骤c.分别针对各个待测安卓应用,基于待测安卓应用运行下的测试与追踪,获得该待测安卓应用分别对android操作系统下360种系统的系统调用次数,构成该待测安卓应用所对应360
×
1维的系统调用次数向量;进而获得各待测安卓应用分别所对应的系统调用次数向量tn,构成全部待测安卓应用对应的360
×
n维系统调用特征矩阵a=(t1,...,tn,...,tn)
t
,1≤n≤n,tn表示第n个待测安卓应用所对应的系统调用次数向量,然后进入步骤d;
11.步骤d.针对系统调用特征矩阵a中所涉及对应各种系统的维度进行降维操作,更新其中各待测安卓应用分别所对应的系统调用次数向量tn为m
×
1维向量,进而更新系统调用特征矩阵a为m
×
n维矩阵,m表示系统调用特征矩阵a进行降维操作后、所涉及对应各种系统的个数,然后进入步骤e;
12.步骤e.基于系统调用特征矩阵a,针对n个待测安卓应用进行分类,获得各个已分类应用集合,然后进入步骤f;
13.步骤f.分别针对各个已分类应用集合,计算获得已分类应用集合中各待测安卓应用权限集合分别与所属集合中其余各待测安卓应用权限集合之间的相似度,并进一步获得该已分类应用集合中各待测安卓应用分别在所属集合内对应的平均相似度,进而获得n个待测安卓应用分别所对应的平均相似度,然后进入步骤g;
14.步骤g.分别针对各个待测安卓应用,判定待测安卓应用所对应平均相似度是否小于预设相似度阈值,是则判定该待测安卓应用为恶意应用;否则不对该待测安卓应用进行判定。
15.作为本发明的一种优选技术方案:所述步骤b中,分别针对各个待测安卓应用,基于待测安卓应用的启动,获取该待测安卓应用所在环境正在运行的进程信息集合,并根据该待测安卓应用的原始包名,由该进程信息集合中对应进程信息的name列,获得该待测安卓应用对应的应用进程信息,进一步获取该应用进程信息的父进程标识符;进而获得各待测安卓应用分别对应的父进程标识符,然后进入步骤c。
16.作为本发明的一种优选技术方案:所述步骤c中,分别针对各个待测安卓应用,基于待测安卓应用的运行,以该待测安卓应用的原始包名为参数,针对该待测安卓应用执行随机测试,并以该待测安卓应用所对应父进程标识符为参数,追踪该待测安卓应用的系统调用序列,待测试结束,获得追踪所获该待测安卓应用分别对android操作系统下360种系统的系统调用次数,构成该待测安卓应用所对应360
×
1维的系统调用次数向量。
17.作为本发明的一种优选技术方案:所述步骤d包括如下步骤d1至步骤d4;
18.步骤d1.根据全部待测安卓应用对应的360
×
n维系统调用特征矩阵a,获得相对应的360
×
360维系统调用特征左奇异矩阵u、以及n
×
n维系统调用特征右奇异矩阵v
t
,然后进入
步骤d2;
19.步骤d2.计算获得系统调用特征左奇异矩阵u所对应的特征值集合λu={λ
u1
,λ
u2
,λ
u3
,...,λ
u360
}和特征向量集合ξu={ξ
u1
,ξ
u2
,ξ
u3
,...,ξ
u360
},以及获得系统调用特征右奇异矩阵v
t
所对应的特征值集合λv={λ
v1
,λ
v2
,λ
v3
,...,λ
vn
}和特征向量集合ξv={ξ
v1
,ξ
v2
,ξ
v3
,...,ξ
vn
},然后进入步骤d3;
20.步骤d3.根据系统调用特征左奇异矩阵u、系统调用特征右奇异矩阵v
t
、特征向量集合ξu、特征向量集合ξv,获得系统调用特征矩阵a中除对角线外、其余元素都为0的中间矩阵w,然后进入步骤d4;
21.步骤d4.判断中间矩阵w中是否存在(i,i)位置的元素为0,是则针对该各个(i,i)位置,删除系统调用特征矩阵a中各待测安卓应用对应各第i种系统的系统调用次数,更新各待测安卓应用分别所对应的系统调用次数向量tn为m
×
1维向量,进而更新系统调用特征矩阵a为m
×
n维矩阵,m表示系统调用特征矩阵a更新后所涉及对应各种系统的个数,1≤i≤360,然后进入步骤e。
22.作为本发明的一种优选技术方案:所述步骤d1中,根据全部待测安卓应用对应的360
×
n维系统调用特征矩阵a,按如下公式:
[0023][0024]
获得相对应的360
×
360维系统调用特征左奇异矩阵u、以及n
×
n维系统调用特征右奇异矩阵v
t
。
[0025]
作为本发明的一种优选技术方案:所述步骤d3中,根据系统调用特征左奇异矩阵u、系统调用特征右奇异矩阵v
t
、特征向量集合ξu、特征向量集合ξv,按如下公式:
[0026][0027]
获得系统调用特征矩阵a中除对角线外、其余元素都为0的中间矩阵w,1≤i≤360,j表示中间矩阵w的列,w
ij
表示中间矩阵w中第i行第j列的元素。
[0028]
作为本发明的一种优选技术方案:所述步骤e包括如下步骤e1至步骤e4;
[0029]
步骤e1.随机生成num个维数为m的聚点向量的聚点向量集合clu={c1,...,c
num
,...,c
num
},num等于n,1≤num≤num,然后初始化聚点向量集合clu中各聚点向量分别所对应的已分类应用集合为空集,以及初始化各待测安卓应用的状态为未分类状态,并进入步骤e2;
[0030]
步骤e2.基于系统调用特征矩阵a,依次针对状态为未分类状态的各个待测安卓应用,计算获得聚点向量集合clu中与待测安卓应用系统调用次数向量之间距离最小的聚点向量,并将该待测安卓应用加入至该聚点向量所对应的已分类应用集合中,更新该待测安卓应用的状态为已分类状态,待完成对全部待测安卓应用的分类操作后,即更新聚点向量集合clu中各聚点向量分别所对应的已分类应用集合,然后进入步骤e3;
[0031]
步骤e3.针对聚点向量集合clu中各聚点向量分别所对应的已分类应用集合,判断
其中是否存在所包含待测安卓应用个数不大于n/a的已分类应用集合,是则删除该各个已分类应用集合,并定义该各个已分类应用集合中各待测安卓应用的状态为未分类状态,以及以剩余已分类应用集合的数量更新num,再进入步骤e4;否则即完成对n个待测安卓应用的分类,获得各个已分类应用集合,并进入步骤f;其中,a为预设参数,1《a《n;
[0032]
步骤e4.分别针对各个已分类应用集合,基于已分类应用集合中各待测安卓应用的系统调用次数向量,计算更新该已分类应用集合所对应的聚点向量,进而更新各已分类应用集合分别所对应的聚点向量,更新num个聚点向量的聚点向量集合clu={c1,...,c
num
,...,c
num
},然后返回步骤e2。
[0033]
作为本发明的一种优选技术方案:所述步骤e2中,依次针对各个待测安卓应用,按如下公式:
[0034][0035]
计算获得聚点向量集合clu中与待测安卓应用系统调用次数向量tn之间距离最小的聚点向量c
num
,其中,c
num
=(c
num,1
,c
num,2
,...,c
num,m
),tn=(t
n,1
,t
n,2
,...,t
n,m
)。
[0036]
作为本发明的一种优选技术方案:所述步骤e4中,分别针对各个已分类应用集合,基于已分类应用集合中各待测安卓应用的系统调用次数向量,按如下公式:
[0037][0038]
计算更新该已分类应用集合所对应的聚点向量c
num
,其中,l
num
表示第num个已分类应用集合中待测安卓应用的个数,t
lnum,num
表示第num个已分类应用集合中第l
num
个待测安卓应用的系统调用次数向量。
[0039]
作为本发明的一种优选技术方案:所述步骤f中,按如下获得两安卓应用p、q的权限集合role
p
与roleq之间相似度sim
pq
的公式:
[0040][0041]
分别针对各个已分类应用集合,计算获得已分类应用集合中各待测安卓应用权限集合分别与所属集合中其余各待测安卓应用权限集合之间的相似度;其中,|role
p
|表示安卓应用p的权限集合role
p
中权限的个数,|roleq|表示安卓应用q的权限集合roleq中权限的个数,|role
pq
|表示权限集合role
p
与roleq之间共同权限的个数。
[0042]
本发明所述一种基于android应用行为分类的恶意应用检测方法,采用以上技术方案与现有技术相比,具有以下技术效果:
[0043]
(1)本发明所设计基于android应用行为分类的恶意应用检测方法,首先使用自动化测试工具对android应用进行覆盖性测试,在覆盖测试的过程中使用接口拦截工具获取测试过程中调用的接口信息;接着根据调用接口构造系统调用向量,对向量进行降维处理后将每个向量对应的应用执行分类处理,将应用分别添加到不同类别的应用集合;最后计算每个应用集合中,各个应用与其它应用系统调用向量的相似度,将相似度低于所设阈值的应用设为恶意应用;整个设计方法能够弥补目前主流的静态检测算法对抗代码混淆能力
不足的问题,具有实时性的特点,不会受制于静态代码,因此采用动态检测对恶意行为背后的意图和恶意行为演化进行分析,相对于静态检测具有较好的兼容性,且执行效率高,能够真对大量样本的android应用集合进行恶意性检测;
[0044]
(2)本发明所设计基于android应用行为分类的恶意应用检测方法,使用自动化测试技术和系统调用拦截工具提取应用在运行过程中的系统调用状况,并依此建立系统调用向量;获取系统调用的过程中,采用工具对正在检测的应用进行随机测试,实现充分测试的目的,并在测试过程中,使用工具截取应用在测试过程中调用系统接口的次数信息;同时采用向量降维算法将系统调用向量进行降维,从而降低后续根据系统调用向量进行应用分类的算法复杂度。
附图说明
[0045]
图1是本发明所设计基于android应用行为分类的恶意应用检测方法的流程图。
具体实施方式
[0046]
下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。
[0047]
本发明设计了一种基于android应用行为分类的恶意应用检测方法,用于针对n个待测安卓应用进行恶意应用检测,实际应用当中,如图1所示,具体执行包括如下步骤a至步骤g。
[0048]
步骤a.基于各个待测安卓应用在android模拟器上的安装,分别针对各个待测安卓应用,在命令提示符上针对apk安装包,使用sdk提供的aapt工具,以待测安卓应用的apk安装包名为参数,获取各个待测安卓应用的apk安装包的原始包名,然后进入步骤b。
[0049]
步骤b.分别针对各个待测安卓应用,基于待测安卓应用在android模拟器上的启动,在命令提示符中执行sdk提供的adb工具,获取该待测安卓应用所在环境正在运行的进程信息集合,并根据该待测安卓应用的原始包名,由该进程信息集合中对应进程信息的name列,获得该待测安卓应用对应的应用进程信息,进一步获取该应用进程信息的父进程标识符;进而获得各待测安卓应用分别对应的父进程标识符,然后进入步骤c。
[0050]
步骤c.分别针对各个待测安卓应用,基于待测安卓应用运行下的测试与追踪,以该待测安卓应用的原始包名为参数,使用adb monkey工具针对该待测安卓应用执行随机测试,并以该待测安卓应用所对应父进程标识符为参数,使用strace工具追踪该待测安卓应用的系统调用序列,待测试结束,获得strace工具追踪所获该待测安卓应用分别对android操作系统下360种系统的系统调用次数,构成该待测安卓应用所对应360
×
1维的系统调用次数向量;进而获得各待测安卓应用分别所对应的系统调用次数向量tn,构成全部待测安卓应用对应的360
×
n维系统调用特征矩阵a=(t1,...,tn,...,tn)
t
,1≤n≤n,tn表示第n个待测安卓应用所对应的系统调用次数向量,然后进入步骤d。
[0051]
步骤d.针对系统调用特征矩阵a中所涉及对应各种系统的维度进行降维操作,更新其中各待测安卓应用分别所对应的系统调用次数向量tn为m
×
1维向量,进而更新系统调用特征矩阵a为m
×
n维矩阵,m表示系统调用特征矩阵a进行降维操作后、所涉及对应各种系统的个数,然后进入步骤e。
[0052]
实际应用当中,上述步骤d具体执行如下步骤d1至步骤d4。
[0053]
步骤d1.根据全部待测安卓应用对应的360
×
n维系统调用特征矩阵a,按如下公式:
[0054][0055]
获得相对应的360
×
360维系统调用特征左奇异矩阵u、以及n
×
n维系统调用特征右奇异矩阵v
t
,然后进入步骤d2。
[0056]
步骤d2.计算获得系统调用特征左奇异矩阵u所对应的特征值集合λu={λ
u1
,λ
u2
,λ
u3
,...,λ
u360
}和特征向量集合ξu={ξ
u1
,ξ
u2
,ξ
u3
,...,ξ
u360
},以及获得系统调用特征右奇异矩阵v
t
所对应的特征值集合λv={λ
v1
,λ
v2
,λ
v3
,...,λ
vn
}和特征向量集合ξv={ξ
v1
,ξ
v2
,ξ
v3
,...,ξ
vn
},然后进入步骤d3。
[0057]
步骤d3.根据系统调用特征左奇异矩阵u、系统调用特征右奇异矩阵v
t
、特征向量集合ξu、特征向量集合ξv,按如下公式:
[0058][0059]
获得系统调用特征矩阵a中除对角线外、其余元素都为0的中间矩阵w,1≤i≤360,j表示中间矩阵w的列,w
ij
表示中间矩阵w中第i行第j列的元素,然后进入步骤d4。
[0060]
步骤d4.判断中间矩阵w中是否存在(i,i)位置的元素为0,是则针对该各个(i,i)位置,删除系统调用特征矩阵a中各待测安卓应用对应各第i种系统的系统调用次数,更新各待测安卓应用分别所对应的系统调用次数向量tn为m
×
1维向量,进而更新系统调用特征矩阵a为m
×
n维矩阵,m表示系统调用特征矩阵a更新后所涉及对应各种系统的个数,1≤i≤360,然后进入步骤e。
[0061]
步骤e.基于系统调用特征矩阵a,按如下步骤e1至步骤e4,针对n个待测安卓应用进行分类,获得各个已分类应用集合,然后进入步骤f。
[0062]
步骤e1.随机生成num个维数为m的聚点向量的聚点向量集合clu={c1,...,c
num
,...,c
num
},num等于n,1≤num≤num,然后初始化聚点向量集合clu中各聚点向量分别所对应的已分类应用集合为空集,以及初始化各待测安卓应用的状态为未分类状态,并进入步骤e2。
[0063]
步骤e2.基于系统调用特征矩阵a,依次针对状态为未分类状态的各个待测安卓应用,按如下公式:
[0064][0065]
计算获得聚点向量集合clu中与待测安卓应用系统调用次数向量tn之间距离最小的聚点向量c
num
,并将该待测安卓应用加入至该聚点向量所对应的已分类应用集合中,更新该待测安卓应用的状态为已分类状态,待完成对全部待测安卓应用的分类操作后,即更新聚点向量集合clu中各聚点向量分别所对应的已分类应用集合,然后进入步骤e3;其中,c
num
=(c
num,1
,c
num,2
,...,c
num,m
),tn=(t
n,1
,t
n,2
,...,t
n,m
)。
[0066]
步骤e3.针对聚点向量集合clu中各聚点向量分别所对应的已分类应用集合,判断其中是否存在所包含待测安卓应用个数不大于n/a的已分类应用集合,是则删除该各个已分类应用集合,并定义该各个已分类应用集合中各待测安卓应用的状态为未分类状态,以及以剩余已分类应用集合的数量更新num,再进入步骤e4;否则即完成对n个待测安卓应用的分类,获得各个已分类应用集合,并进入步骤f;其中,a为预设参数,1《a《n。
[0067]
步骤e4.分别针对各个已分类应用集合,基于已分类应用集合中各待测安卓应用的系统调用次数向量,按如下公式:
[0068][0069]
计算更新该已分类应用集合所对应的聚点向量c
num
,进而更新各已分类应用集合分别所对应的聚点向量,更新num个聚点向量的聚点向量集合clu={c1,...,c
num
,...,c
num
},然后返回步骤e2;其中,l
num
表示第num个已分类应用集合中待测安卓应用的个数,t
lnum,num
表示第num个已分类应用集合中第l
num
个待测安卓应用的系统调用次数向量。
[0070]
步骤f.首先分别针对各个待测安卓应用,解压待测安卓应用的apk安装包,并从解压文件androidmanifest.xml中获得该待测安卓应用所对应的权限集合,进而获得各个待测安卓应用分别对应的权限集合;然后按如下获得两安卓应用p、q的权限集合role
p
与roleq之间相似度sim
pq
的公式:
[0071][0072]
分别针对各个已分类应用集合,计算获得已分类应用集合中各待测安卓应用权限集合分别与所属集合中其余各待测安卓应用权限集合之间的相似度,并进一步获得该已分类应用集合中各待测安卓应用分别在所属集合内对应的平均相似度,进而获得n个待测安卓应用分别所对应的平均相似度,然后进入步骤g;其中,|role
p
|表示安卓应用p的权限集合role
p
中权限的个数,|roleq|表示安卓应用q的权限集合roleq中权限的个数,|role
pq
|表示权限集合role
p
与roleq之间共同权限的个数。
[0073]
步骤g.分别针对各个待测安卓应用,判定待测安卓应用所对应平均相似度是否小于预设相似度阈值,是则判定该待测安卓应用为恶意应用;否则不对该待测安卓应用进行判定。
[0074]
上述技术方案所设计基于android应用行为分类的恶意应用检测方法,首先使用自动化测试工具对android应用进行覆盖性测试,在覆盖测试的过程中使用接口拦截工具获取测试过程中调用的接口信息;接着根据调用接口构造系统调用向量,对向量进行降维处理后将每个向量对应的应用执行分类处理,将应用分别添加到不同类别的应用集合;最后计算每个应用集合中,各个应用与其它应用系统调用向量的相似度,将相似度低于所设阈值的应用设为恶意应用;整个设计方法能够弥补目前主流的静态检测算法对抗代码混淆能力不足的问题,具有实时性的特点,不会受制于静态代码,因此采用动态检测对恶意行为背后的意图和恶意行为演化进行分析,相对于静态检测具有较好的兼容性,且执行效率高,能够真对大量样本的android应用集合进行恶意性检测;
[0075]
实际应用中,使用自动化测试技术和系统调用拦截工具提取应用在运行过程中的系统调用状况,并依此建立系统调用向量;获取系统调用的过程中,采用工具对正在检测的应用进行随机测试,实现充分测试的目的,并在测试过程中,使用工具截取应用在测试过程中调用系统接口的次数信息;同时采用向量降维算法将系统调用向量进行降维,从而降低后续根据系统调用向量进行应用分类的算法复杂度。
[0076]
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
技术特征:1.一种基于android应用行为分类的恶意应用检测方法,其特征在于:用于针对n个待测安卓应用进行恶意应用检测,包括如下步骤:步骤a.以待测安卓应用的apk安装包名为参数,获取各个待测安卓应用的apk安装包的原始包名,然后进入步骤b;步骤b.基于待测安卓应用的启动,获得各待测安卓应用分别对应的父进程标识符,然后进入步骤c;步骤c.分别针对各个待测安卓应用,基于待测安卓应用运行下的测试与追踪,获得该待测安卓应用分别对android操作系统下360种系统的系统调用次数,构成该待测安卓应用所对应360
×
1维的系统调用次数向量;进而获得各待测安卓应用分别所对应的系统调用次数向量t
n
,构成全部待测安卓应用对应的360
×
n维系统调用特征矩阵a=(t1,...,t
n
,...,t
n
)
t
,1≤n≤n,t
n
表示第n个待测安卓应用所对应的系统调用次数向量,然后进入步骤d;步骤d.针对系统调用特征矩阵a中所涉及对应各种系统的维度进行降维操作,更新其中各待测安卓应用分别所对应的系统调用次数向量t
n
为m
×
1维向量,进而更新系统调用特征矩阵a为m
×
n维矩阵,m表示系统调用特征矩阵a进行降维操作后、所涉及对应各种系统的个数,然后进入步骤e;步骤e.基于系统调用特征矩阵a,针对n个待测安卓应用进行分类,获得各个已分类应用集合,然后进入步骤f;步骤f.分别针对各个已分类应用集合,计算获得已分类应用集合中各待测安卓应用权限集合分别与所属集合中其余各待测安卓应用权限集合之间的相似度,并进一步获得该已分类应用集合中各待测安卓应用分别在所属集合内对应的平均相似度,进而获得n个待测安卓应用分别所对应的平均相似度,然后进入步骤g;步骤g.分别针对各个待测安卓应用,判定待测安卓应用所对应平均相似度是否小于预设相似度阈值,是则判定该待测安卓应用为恶意应用;否则不对该待测安卓应用进行判定。2.根据权利要求1所述一种基于android应用行为分类的恶意应用检测方法,其特征在于:所述步骤b中,分别针对各个待测安卓应用,基于待测安卓应用的启动,获取该待测安卓应用所在环境正在运行的进程信息集合,并根据该待测安卓应用的原始包名,由该进程信息集合中对应进程信息的name列,获得该待测安卓应用对应的应用进程信息,进一步获取该应用进程信息的父进程标识符;进而获得各待测安卓应用分别对应的父进程标识符,然后进入步骤c。3.根据权利要求1所述一种基于android应用行为分类的恶意应用检测方法,其特征在于:所述步骤c中,分别针对各个待测安卓应用,基于待测安卓应用的运行,以该待测安卓应用的原始包名为参数,针对该待测安卓应用执行随机测试,并以该待测安卓应用所对应父进程标识符为参数,追踪该待测安卓应用的系统调用序列,待测试结束,获得追踪所获该待测安卓应用分别对android操作系统下360种系统的系统调用次数,构成该待测安卓应用所对应360
×
1维的系统调用次数向量。4.根据权利要求1所述一种基于android应用行为分类的恶意应用检测方法,其特征在于:所述步骤d包括如下步骤d1至步骤d4;步骤d1.根据全部待测安卓应用对应的360
×
n维系统调用特征矩阵a,获得相对应的
360
×
360维系统调用特征左奇异矩阵u、以及n
×
n维系统调用特征右奇异矩阵v
t
,然后进入步骤d2;步骤d2.计算获得系统调用特征左奇异矩阵u所对应的特征值集合λ
u
={λ
u1
,λ
u2
,λ
u3
,...,λ
u360
}和特征向量集合ξ
u
={ξ
u1
,ξ
u2
,ξ
u3
,...,ξ
u360
},以及获得系统调用特征右奇异矩阵v
t
所对应的特征值集合λv={λ
v1
,λ
v2
,λ
v3
,...,λ
vn
}和特征向量集合ξv={ξ
v1
,ξ
v2
,ξ
v3
,...,ξ
vn
},然后进入步骤d3;步骤d3.根据系统调用特征左奇异矩阵u、系统调用特征右奇异矩阵v
t
、特征向量集合ξ
u
、特征向量集合ξv,获得系统调用特征矩阵a中除对角线外、其余元素都为0的中间矩阵w,然后进入步骤d4;步骤d4.判断中间矩阵w中是否存在(i,i)位置的元素为0,是则针对该各个(i,i)位置,删除系统调用特征矩阵a中各待测安卓应用对应各第i种系统的系统调用次数,更新各待测安卓应用分别所对应的系统调用次数向量t
n
为m
×
1维向量,进而更新系统调用特征矩阵a为m
×
n维矩阵,m表示系统调用特征矩阵a更新后所涉及对应各种系统的个数,1≤i≤360,然后进入步骤e。5.根据权利要求4所述一种基于android应用行为分类的恶意应用检测方法,其特征在于:所述步骤d1中,根据全部待测安卓应用对应的360
×
n维系统调用特征矩阵a,按如下公式:获得相对应的360
×
360维系统调用特征左奇异矩阵u、以及n
×
n维系统调用特征右奇异矩阵v
t
。6.根据权利要求4所述一种基于android应用行为分类的恶意应用检测方法,其特征在于:所述步骤d3中,根据系统调用特征左奇异矩阵u、系统调用特征右奇异矩阵v
t
、特征向量集合ξ
u
、特征向量集合ξv,按如下公式:获得系统调用特征矩阵a中除对角线外、其余元素都为0的中间矩阵w,1≤i≤360,j表示中间矩阵w的列,w
ij
表示中间矩阵w中第i行第j列的元素。7.根据权利要求1所述一种基于android应用行为分类的恶意应用检测方法,其特征在于:所述步骤e包括如下步骤e1至步骤e4;步骤e1.随机生成num个维数为m的聚点向量的聚点向量集合clu={c1,...,c
num
,...,c
num
},num等于n,1≤num≤num,然后初始化聚点向量集合clu中各聚点向量分别所对应的已分类应用集合为空集,以及初始化各待测安卓应用的状态为未分类状态,并进入步骤e2;步骤e2.基于系统调用特征矩阵a,依次针对状态为未分类状态的各个待测安卓应用,计算获得聚点向量集合clu中与待测安卓应用系统调用次数向量之间距离最小的聚点向量,并将该待测安卓应用加入至该聚点向量所对应的已分类应用集合中,更新该待测安卓
应用的状态为已分类状态,待完成对全部待测安卓应用的分类操作后,即更新聚点向量集合clu中各聚点向量分别所对应的已分类应用集合,然后进入步骤e3;步骤e3.针对聚点向量集合clu中各聚点向量分别所对应的已分类应用集合,判断其中是否存在所包含待测安卓应用个数不大于n/a的已分类应用集合,是则删除该各个已分类应用集合,并定义该各个已分类应用集合中各待测安卓应用的状态为未分类状态,以及以剩余已分类应用集合的数量更新num,再进入步骤e4;否则即完成对n个待测安卓应用的分类,获得各个已分类应用集合,并进入步骤f;其中,a为预设参数,1<a<n;步骤e4.分别针对各个已分类应用集合,基于已分类应用集合中各待测安卓应用的系统调用次数向量,计算更新该已分类应用集合所对应的聚点向量,进而更新各已分类应用集合分别所对应的聚点向量,更新num个聚点向量的聚点向量集合clu={c1,...,c
num
,...,c
num
},然后返回步骤e2。8.根据权利要求7所述一种基于android应用行为分类的恶意应用检测方法,其特征在于:所述步骤e2中,依次针对各个待测安卓应用,按如下公式:计算获得聚点向量集合clu中与待测安卓应用系统调用次数向量t
n
之间距离最小的聚点向量c
num
,其中,c
num
=(c
num,1
,c
num,2
,...,c
num,m
),t
n
=(t
n,1
,t
n,2
,...,t
n,m
)。9.根据权利要求7所述一种基于android应用行为分类的恶意应用检测方法,其特征在于:所述步骤e4中,分别针对各个已分类应用集合,基于已分类应用集合中各待测安卓应用的系统调用次数向量,按如下公式:计算更新该已分类应用集合所对应的聚点向量c
num
,其中,l
num
表示第num个已分类应用集合中待测安卓应用的个数,t
lnum,num
表示第num个已分类应用集合中第l
num
个待测安卓应用的系统调用次数向量。10.根据权利要求1所述一种基于android应用行为分类的恶意应用检测方法,其特征在于:所述步骤f中,按如下获得两安卓应用p、q的权限集合role
p
与role
q
之间相似度sim
pq
的公式:分别针对各个已分类应用集合,计算获得已分类应用集合中各待测安卓应用权限集合分别与所属集合中其余各待测安卓应用权限集合之间的相似度;其中,|role
p
|表示安卓应用p的权限集合role
p
中权限的个数,|role
q
|表示安卓应用q的权限集合role
q
中权限的个数,|role
pq
|表示权限集合role
p
与role
q
之间共同权限的个数。
技术总结本发明涉及一种基于android应用行为分类的恶意应用检测方法,首先使用自动化测试工具对android应用进行覆盖性测试,在覆盖测试的过程中使用接口拦截工具获取测试过程中调用的接口信息;接着根据调用接口构造系统调用向量,对向量进行降维处理后将每个向量对应的应用执行分类处理,将应用分别添加到不同类别的应用集合;最后计算每个应用集合中,各个应用与其它应用系统调用向量的相似度,将相似度低于所设阈值的应用设为恶意应用;整个设计方法能够弥补目前主流的静态检测算法对抗代码混淆能力不足的问题,具有实时性的特点,不会受制于静态代码,相对于静态检测具有较好的兼容性,且执行效率高,能够真对大量样本的Android应用集合进行恶意性检测。应用集合进行恶意性检测。应用集合进行恶意性检测。
技术研发人员:付雄 陶舒阳 邓松 王俊昌 程春玲
受保护的技术使用者:南京邮电大学
技术研发日:2022.07.19
技术公布日:2022/11/1