基于静态分析的虚假安卓APP产品分析与检测.docx

上传人:b****5 文档编号:7891974 上传时间:2023-01-27 格式:DOCX 页数:6 大小:381.39KB
下载 相关 举报
基于静态分析的虚假安卓APP产品分析与检测.docx_第1页
第1页 / 共6页
基于静态分析的虚假安卓APP产品分析与检测.docx_第2页
第2页 / 共6页
基于静态分析的虚假安卓APP产品分析与检测.docx_第3页
第3页 / 共6页
基于静态分析的虚假安卓APP产品分析与检测.docx_第4页
第4页 / 共6页
基于静态分析的虚假安卓APP产品分析与检测.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

基于静态分析的虚假安卓APP产品分析与检测.docx

《基于静态分析的虚假安卓APP产品分析与检测.docx》由会员分享,可在线阅读,更多相关《基于静态分析的虚假安卓APP产品分析与检测.docx(6页珍藏版)》请在冰豆网上搜索。

基于静态分析的虚假安卓APP产品分析与检测.docx

基于静态分析的虚假安卓APP产品分析与检测

基于静态分析的虚假安卓APP产品分析与检测

0引言

随着移动互联网的发展,智能手机销量迅速增长。

这个过程中,安卓操作系统占据了移动设备市场的主导地位。

安卓操作系统在移动设备市场的流行性、开放性和巨大的利益,使它成为各种欺诈应用程序投放的重灾区。

著名安全厂商赛门铁克发表了一份报告,称安卓APP产品产品中有17%是恶意APP产品产品——每不到6个安卓APP产品产品中就存在一个恶意软件,安卓恶意APP产品产品的泛滥程度可见一斑。

根据赛门铁克的统计,在2013年,安卓平台上有70万个恶意APP产品产品;而到2014年,安卓恶意APP产品产品数量已经增长到100万个。

同时,还有230万的安卓APP产品产品被赛门铁克称之为“灰色软件”或是“疯子软件”。

这些灰色软件往往会用疯狂的手段给你推送各种弹窗、通知广告。

更重要的是,一项基于安卓系统恶意软件分析的最新研究表明[3],在分析1260件恶意应用程序后发现,1083个(即86.0%)恶意应用程序是经过仿冒的虚假APP产品产品,即经过合法版本与恶意程序重新打包生成的。

即使是在官方的安卓市场,也有可能存在从其他各种对合法应用程序进行仿冒的恶意应用程序。

以上报告与数据研究表明,虚假的应用程序是恶意应用程序进行伪装、传播的主要方式。

安卓平台应用的安全,特别是对虚假安卓APP产品产品的分析与识别,将是未来一段时间内的研究重点。

近年,信息安全工作者发表了一些高质量文章,有助于人们了解此领域的前沿研究方法和工作。

2012年5月,加州大学伯克利分校Li用代码重用的角度阐述了虚假程序的现状和检测代码重用的方法。

他的检测方法基于特征值哈希算法。

2013年,Huang总结大量虚假应用程序检测研究方法,分析了其中的利弊。

文章末尾提出了一种新的检测方法,并验证了其具有很高的准确性和稳定性。

国内对安卓平台安全研究起步较晚,且多是针对恶意程序的检测,关注度集中在可疑程序的权限和一些可疑程序行为的分析上,如读取电话本、收发短信、拨打电话等。

国内各大安全厂商对安卓平台安全研究投入巨大,但研究的领域都是以防范威胁、恶意程序行为检测为主,对造成恶意程序传播的源头、虚假应用程序的检测与研究相对薄弱。

针对这种情况,本文提出了针对虚假安卓APP产品产品的分析与检测系统,对现在泛滥的虚假APP产品产品,利用代码分析技术,结合机器学习相关技术,设计与实现了快速识别与检测虚假APP产品产品的系统。

首先利用解包与反编译等技术还原移动应用的相关特征,然后利用静态分析手段解析其应用名称、包名、APK文件清单、签名信息等特征,再利用机器学习算法对这些海量数据信息进行高效率、高准确的分析,从而判断这些移动安卓应用是否虚假。

1系统设计与架构

系统的设计与架构如图1所示。

系统由三个模块组成:

黑白名单模块、特征值提取模块、分类和交互模块。

图1系统的架构

黑白名单模块就是一个包含虚假安卓APP产品产品与非虚假安卓APP产品产品的数据库。

在这个数据库中存放的是安卓APP产品产品的信息,包含安卓APP产品产品的名字和安卓的apk文件的MD5哈希值。

系统动态的维护这个数据库,在我们对一个安卓APP产品产品进行检测之后,根据测试结果将其进行处理,选择加入非虚假APP产品产品库中,或者是加入到虚假APP产品产品库中。

特征值提取模块就是系统的检测模块,此模块接收安卓APP产品产品的apk文件作为输入,功能是进行分类分析与与用户的交互功能的web后端。

当系统的检测模块接收到安卓APK文件,它将APK文件发送给特征提取模块,由特征提取模块对apk文件进行处理,返回一个表征这apk文件的二元向量,系统的机器学习分类检测器会接收这个二元向量作为输入,返回此安卓APP产品产品的类别标签,即是虚假APP产品产品或者是非虚假APP产品产品。

分类和交互模块就是数据的特征提取模块,特征提取模块接受来自于系统的检测模块的输入,获得安卓APP产品产品的apk文件。

然后采用静态分析的手段,对此APK文件进行分析,在对此APK文件进行处理后,得到一个表征此APP产品产品的二元特征向量,然后转交给系统的检测模块。

2虚假应用程序检测方法

2.1特征提取

系统采用相关APIs和其他相关特征来表征特定的安卓APP产品产品,包括数字签名特征、运行权限特征、Dalvik可执行文件特征、资源文件特征、配置文件特征。

其中,资源文件特征和配置文件特征都可以通过解包与反编译直接得到,其他三个特征的提取方式则如下所述。

(1)数字签名的提取

在完成对待检测程序的规范化后,进行对特征值的提取工作。

首先提取的是APK文件的数字签名信息。

基于安卓签名机制的目的,即是对APK文件完整性和发布机构唯一性的一种校验机制。

安卓系统安装程序可以获APK数字签名,于是可以通过包解析中的publicbooleancollectCeni6cates(Packagepkg,intflags)方法获取。

具体工程实现中,通过在androguard里调用函数get_signature()函数完成对数字签名的提取。

(2)运行权限的提取

安卓权限机制决定了在应用程序安装时,包的安装程序会检测该应用程序请求的运行权限。

根据该应用程序的数字签名或提示用户分配相应权限,而请求的权限显式地声明在AndroidManifest.xml中。

具体的工程实验中,可通过androguard的一个函数get_permissions()来提取APK文件所申请的权限。

(3)Dalvik可执行文件的提取

一个APK文件其实就是压缩文件,可利用Linux自带的解压缩文件打开一个APK文件,里面会看到classes.dex文件。

提取Dalvik可执行文件的过程就是调用androguard的函数get_dex()。

为了选取能够表示安卓APP产品产品是否为虚假安卓APP产品产品的相关APIcalls,可以定义在虚假APP产品产品中最常使用的APIcalls。

通过使用开源工具Androwarn和DroidAPIMiner,搜寻在虚假应用程序中最常使用的APIcalls。

通过这些方法的结合,系统最终得到了743个特征组成特征向量。

对于数据集中的每一个应用程序,在提取该应用程序的二元特征向量后,会增加它的类别标签来表明此应用程序是否是虚假应用程序(0或1)。

2.2特征精简

特征选取是提高分类器准确性和性能的重要手段。

对于选取的743个特征,可以选取其中的子集作为特征集。

这样做有两个好处,一个好处是能够减少系统的复杂度,相对少的特征能够减少系统的分类时间,二是能够避免over-fitting。

然而,在进行特征精简时也要考虑不要影响分类器的准确率。

为此,系统使用特征相关性评估方法,基于所有特征之间的Pearson相关系数对特征的相关性进行排名,然后挑选其中最好的前300个特征。

2.3机器学习分类模型

系统采用不同的机器学习分类模型对虚假应用程序进行分析与检测,包括随机森林、K-近邻(KNN)、支持向量机(SVM)。

2.3.1随机森林

随机森林[15]最早由LeoBreiman和AdeleCutler提出,是利用多棵决策树对样本进行训练并预测的一种分类器。

其中,每棵决策树都依赖于独立采样的随机矢量值,且具有相同的分布。

它输出的类别取决于所有决策树中分类结果最多的类。

优势主要包括能够处理数据集中大量的变量;能够在生成森林的过程中生成一个泛化误差的内部无偏估计;对训练数据的容错能力强,能够有效估计丢失的数据;实现简单,容易实现并行化且不会出现过拟合。

随机森林基于决策树算法[16],使用如下过程构造每棵决策树:

(1)设训练用例或样本个数为N,样本的特征向量长度为M,即有M个特征。

(2)从样本库中随机采取N1个样本构成训练集;未被选中的N2个样本作为测试集,用于测试分类效果。

(3)配置每棵数的特征数目m,用于构建每棵决策树,其中m≤M。

每棵决策树均随机选取不同的m个特征。

(4)由于随机森林的投票特性,每棵决策树构建完成后不需要进行剪枝。

至于一棵决策树的构建,采用的是自顶向下的递归方法。

它的基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于同一类。

熵的定义为:

其中,X为随机变量,P(xi)为X=xi时的概率。

构建决策树有不同的策略,主要有ID3、C4.5和C5.0算法。

2.3.2K-近邻(KNN)

KNN[17]是通过测量不同特征值之间的距离进行分类地。

它的思路是:

如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

在KNN中,通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题。

在这里,距离一般使用欧氏距离或曼哈顿距离,分别为:

2.3.3支持向量机(SVM)

SVM[18-19]被广泛认为是用于高维数据二元分类最先进的模型,是定义在特征空间上的间隔最大的线性分类器,可利用间隔最大化求最优分离超平面。

SVM提供了一种避开高维空间的复杂性而直接用此空间的内积函数,再利用在线性可分情况下的求解方法,直接求解对应的高维空间的决策问题。

这是一个凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最优解。

同时,SVM基于结构风险最小化原则,避免了过拟合问题。

泛化能力强,在小样本训练集上有很好的效果。

SVM是在N维空间内,将点集P={pi}使用超平面划分为两个子集。

超平面的方程可写作:

w→·x→-b=0(4)

其中w→为超平面的法向量。

如果训练数据是线性可分的(存在超平面可以完美将数据分隔为对应的两部分),可求得一个离两部分点集距离最远的超平面,该法向量称为支持向量。

如果训练数据不是线性可分的,则需要引入铰链损失函数:

当分割的点在正确的一侧时,损失函数值为零;对于在错误一侧的数据,该函数与超平面的距离成正比。

SVM平面的误差函数为:

对于训练集划分,可使用梯度下降算法对超平面进行拟合,以达到误差函数最小的目标。

3实验及评估

系统相较于其他现有的虚假安卓APP产品产品检测工具,主要特点就是易于部署,还能保持较高的准确率与处理性能。

为了对系统进行评估,通过训练数据对多种机器学习模型进行构建。

虚假APP产品产品样本由电信研究室提供,而非虚假的APP产品产品样本则从GooglePlayStore和国内的安卓市场下载。

本文认为从官方渠道下载的APP产品产品都是非虚假的,共收集了15000份APP产品产品,其中2700(18%)是虚假的,其他12300(82%)是非虚假的,虚假的APP产品产品数量远小于非虚假的APP产品产品数量,符合现实情况。

对于多种机器学习模型,分别从准确率(Accuracy)、精确率(Precision)、召回率(Recall)和误报率(FP)为标准进行评估,实验结果如表1所示。

表1不同分类器的分类结果(743个特征)

从实验结果可以得到,随机森林、K最近邻以及支持向量机在样本集中达到了较高的检测准确率,说明实验所提取的特征能较好地反映正负样本的特点,其中随机森林的准确率相比较于其他两种分类算法有微弱优势。

评估各种分类算法时,误报率是一个比较重要的概念,因为如果把虚假APP产品产品分类为非虚假APP产品产品,带来的结果将十分严重。

为了证实对安卓APP产品产品的特征精简是有效的,将上述结果与精简过的拥有300个特征的分类器的分类结果进行比较,实验结果如表2所示。

表2不同分类器的分类结果(300个特征)

使用精简过的300个特征,随机森林算法达到了96.95%的准确率(如图2所述)和0.03的误报率(如图3所述)。

测试表明,特征数量从743降到300时,随机森林分类器的分类准确率从99.51%降到96.95%,而误报率则从0.005增长到0.03。

对于其他分类器,准确率和误报率也只有较少变化。

这些实验数据表明,系统可以使用精简过的特征集对虚假APP产品产品进行分类与检测,仍然能够达到非常高的准确率。

图2有无特征精简的不同分类器的分类准确率

图3有无特征精简的不同分类器的分类误报率

4结语

本文研究并实现了一种基于静态特征的虚假安卓APP产品产品分析与检测系统。

在分类器的选择上,采用流行的机器学习算法,达到了较好的分类与检测效果。

针对近年来新出现的深度学习技术,下一步将基于所提算法,结合深度学习技术来提取虚假安卓APP产品产品的敏感特征,从而进一步降低实验的误判率,提高整体的检测精度。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1