没有合适的资源?快使用搜索试试~ 我知道了~
SPRD:基于应用UI和程序依赖图的Android重打包应用快速检测方法
0 下载量 61 浏览量
2021-01-14
06:59:05
上传
评论
收藏 869KB PDF 举报
温馨提示
试读
13页
研究发现重打包应用通常不修改应用用户交互界面(UI,user interface)的结构,提出一种基于应用 UI和程序代码的两阶段检测方法。首先,设计了一种基于UI抽象表示的散列快速相似性检测方法,识别UI相似的可疑重打包应用;然后,使用程序依赖图作为应用特征表示,实现细粒度、精准的代码克隆检测。基于所提方法实现了一种原型系统——SPRD(scalable and precise repacking detection),实验验证所提方法具有良好的可扩展性和准确性,可以有效地应用于百万级应用和亿万级代码的大规模应用市场。
资源推荐
资源详情
资源评论
2018 年 3 月 Journal on Communications March 2018
2018045-1
第 39 卷第 3 期 通 信 学 报 Vol.39
No.3
SPRD:基于应用 UI 和程序依赖图的
Android 重打包应用快速检测方法
汪润
1,2,3
,王丽娜
1,2,3
,唐奔宵
1,2,3
,赵磊
1,2,3
(1. 武汉大学空天信息安全与可信计算教育部重点实验室,湖北 武汉 430072;
2. 武汉大学计算机学院,湖北 武汉 430072;3. 武汉大学国家网络安全学院,湖北 武汉 430072)
摘 要:研究发现重打包应用通常不修改应用用户交互界面(UI, user interface)的结构,提出一种基于应用 UI
和程序代码的两阶段检测方法。首先,设计了一种基于 UI 抽象表示的散列快速相似性检测方法,识别 UI 相似的
可疑重打包应用;然后,使用程序依赖图作为应用特征表示,实现细粒度、精准的代码克隆检测。基于所提方法
实现了一种原型系统——SPRD(scalable and precise repacking detection),实验验证所提方法具有良好的可扩展性
和准确性,可以有效地应用于百万级应用和亿万级代码的大规模应用市场。
关键词:重打包;代码克隆;用户界面;程序依赖图;安全与隐私
中图分类号:TP309.1
文献标识码:A
doi: 10.11959/j.issn.1000-436x.2018045
SPRD: fast application repackaging detection
approach in Android based on application’s
UI and program dependency graph
WANG Run
1,2,3
, WANG Li’na
1,2,3
, TANG Benxiao
1,2,3
, ZHAO Lei
1,2,3
1. Key Laboratory of Aerospace Information Security and Trusted Computing Ministry of Education, Wuhan University, Wuhan 430072, China
2. School of Computer, Wuhan University, Wuhan 430072, China
3. School of Cyber Science and Engineering, Wuhan University, Wuhan 430072, China
Abstract: A two stage detection approach which combine application’s UI and program code based on the observation
that repackaging applications merely modify the structure of their user interface was proposed. Firstly, a fast hash similar-
ity detection technique based on an abstracted representation of UI to identify the potential visual-similar repackaging
applications was designed. Secondly, program dependency graph is used to represent as the feature of app to achieve fi-
ne-grained and precise code clone detection. A prototype system, SPRD, was implemented based on the proposed ap-
proach. Experimental results show that the proposed approach achieves a good performance in both scalability and accu-
racy, and can be effectively applied in millions of applications and billions of code detection.
Key words: repackaging, code clone, user interface, program dependency graph, security and privacy
收稿日期:2017-08-09;修回日期:2017-12-21
通信作者:王丽娜,lnwang@whu.edu.cn
基金项目:国家自然科学基金资助项目(No.U1536204, No.61672394, No.61373169, No.61672393);国家高技术研究发展计
划(“863”计划)基金资助项目(No.2015AA016004)
Foundation Items: The National Natural Science Foundation of China (No.U1536204, No.61672394, No.61373169, No.61672393),
The National High Technology Research and Development Program of China (863 Program) (No.2015AA016004)
·160· 通 信 学 报 第 39 卷
1 引言
移动互联网的快速发展使一些智能设备如智
能手机、智能手表等广泛普及并带来了移动应用数
量的剧增。根据全球移动通信系统协会(GSMA,
Global System for Mobile Communications Associa-
tion)的一份报告显示,从 2016 年开始移动设备的
数量已经超过了人类的总人数。目前,两大主流移
动平台,Android平台的官方商店 Google Play和 iOS
平台的 App Store 上均有超过百万的移动应用。移
动应用不仅能够提供给用户丰富的功能体验,而且
也给人们的生活带来了很多便利。在移动市场中由
于恶意应用的普遍存在,对用户的安全和隐私已经
造成了严重的威胁。
报告显示,Android 平台已经成为恶意软件泛
滥的重灾区,其中,98%以上的恶意应用都是发现
在 Android 平台。在这些恶意应用中,有超过 86%
的应用都是重打包应用
[1]
。重打包应用是由恶意开
发者反编译修改已经发布在应用商店中的合法应
用程序,在程序代码中插入恶意的代码片段或修改
部分代码片段,引诱用户下载安装使用,达到谋取
利益或传播恶意软件的目的。由于 Android 应用程
序具有易反编译修改等特点,重打包应用在
Android 平台上更为普遍。从恶意开发者制造重打
包应用的动机来看,主要有以下 2 种。
1) 谋取非法利益。恶意开发者替换应用中的广
告库,重打包后发布到应用市场,赚取广告收益或
汉化侵权谋取利益等。
2) 传播恶意软件。恶意开发者反编译修改应用
程序,插入恶意代码,窃取用户隐私信息如读取用
户短信、通信录等,上传到远程服务器或利用恶意
代码实施远程攻击等。
由于 Android 平台上重打包应用广泛存在且重
打包应用的严重危害性,已经引起了研究人员的广
泛关注并展开了一系列的相关研究工作
[2,3]
。这些研
究工作多是通过计算应用之间的相似性,利用应用
之间的相似度完成重打包应用的检测。具体来说,
概括为以下 2 种方法。第一种方法是基于代码克隆
的重打包应用检测
[4~8]
。这种方法主要是比较应用
程序代码的相似度,提取应用程序的代码模式如控
制流图和数据流图等作为应用代码的特征表示。但
是这种方法不能有效应对代码混淆的问题,同时由
于其检测效率低下并不适用于百万级应用市场的
亿万级代码检测。另外一种方法是基于 Android 应
用资源文件的重打包检测
[9~11]
。这种方法利用
Android 应用交互性强的特点,在 Android 应用的安
装文件中存在大量的资源文件,如图片、音频以及
视频文件等,而重打包应用不修改或较少地修改安
装文件中的资源文件,通过比较资源文件的相似性
实现重打包应用检测,这种方法可以有效缓解代码
混淆的攻击,但是存在较高的误报率。Android 应
用中存在大用户界面(UI),应用 UI 是一种特殊的
资源文件。有研究发现重打包应用为了引诱用户下
载通常不修改应用(UI)的结构,因此,有研究将
UI 作为应用相似性比较的特征
[9,10]
。这种方法也属
于基于 Android 应用资源文件的重打包应用检测方
法。但是这类方法的不足在于有些应用使用的是同
一套模板,导致在检测的时候存在较高的误报率。
研究发现,目前,针对 Android 平台重打包应
用检测方法存在的不足体现在以下 3 个方面:1) 能
够实现高检测准确率,但检测速度低下,不能有效
应用于百万级应用市场的重打包检测;2) 能够实现
快速检测,但不能保证检测的准确率;3) 一些方法
在检测的速度和准确率之间做到很好的平衡,但是
在预处理阶段需要消耗大量的计算资源。因此,如
何在检测的速度、准确率和计算资源开销这 3 个方
面进行平衡是目前重打包应用检测中亟待解决的
问题。在面对百万级应用市场的重打包应用检测
中,存在以下 3 个挑战。
1) 程序代码量巨大。在百万级的应用市场中存
在近 10 亿行代码,如果仅在代码层进行两两比较
需要进行超过 10
16
次比较。在有新的应用上架时,
同样需要重新进行一次比较,计算资源开销巨大,
无法做到实时的在线检测。
2) 源代码获取困难。安全分析人员仅能从应用
市场上获取应用的安装文件(apk),反编译获取
smali 代码,其可读性差,导致基于源码的代码克隆
检测等技术并不能直接应用。
3) 攻击方式多样。国内市场发布的应用多经
过代码混淆处理,导致基于控制流图等特征表示
的代码克隆检测方法效果不理想。恶意开发者还
会猜测检测系统的工作原理,精心构造重打包应
用绕过检测。
为了解决面向百万级应用市场的快速重打包
应用检测问题,同时保证检测的准确率和降低计算
资源的开销,在一定程度上对抗代码混淆的攻击。
2018045-2
第 3 期 汪润等:SPRD:基于应用 UI 和程序依赖图的 Android 重打包应用快速检测方法 ·161·
本文提出了一种基于应用 UI 和程序代码的两阶段
重打包应用检测方法。首先,利用重打包应用通常
不修改应用 UI 结构的特点,设计了一种基于应用
UI 抽象表示的散列快速相似性检测方法,识别出可
疑的重打包应用;然后,提取这些可疑重打包应用
的程序依赖图(PDG, program dependency graph)作
为应用的特征表示,在代码层进行细粒度的代码克
隆分析,检测相似的代码片段,有效地解决应用
UI 作为特征表示带来检测误报率高的问题。本文提
出的应用 UI 抽象表示方法能够对抗应用资源文件
的插入、修改等攻击。利用 PDG 作为应用的代码特
征表示可以有效抵抗代码插入、修改等攻击行为
[6]
。
实验表明,上述方法能够应用于百万级应用市场的
快速准确重打包应用检测,同时本文方法不需要在
预处理阶段反编译所有的待测应用,可以节约大量
的计算资源开销。本文的主要贡献如下。
1) 设计并实现了一套面向百万级应用市场的
两阶段重打包应用快速检测(SPRD, scalable and
precise repacking detection)系统,利用应用 UI 和
程序代码作为应用相似性检测的特征,实现快速准
确的重打包应用检测。
2) 提出了一种基于 Android 应用 UI 抽象表示
的散列快速相似性检测方法,可以在秒级时间内实
现百万级应用的快速相似性检测。
3) 利用应用程序依赖图作为应用程序代码的
特征表示,实现应用程序代码细粒度、高精度的克
隆检测,降低仅使用应用 UI 作为应用特征表示带
来的高误报率。
4) 实验中从 Google Play 官方商店和多个第三
方移动应用市场收集了超过 100 万个应用,在大规
模的实验数据集中验证了本文方法的有效性,实验
结果显示 SPRD 可以达到 93.3%的检测准确率。
2 相关工作
Android 平台已经成为移动恶意软件的重灾
区,对用户的安全和隐私造成了严重的威胁。因
此,建立健康的移动应用市场有着重要的意义。
近年来,学术界和工业界为此做了许多重要的工
作
[11~24]
。由于 Android 平台的开放性以及 Android
应用易反编译等特点,重打包应用成为 Android
平台最常见的恶意软件类型之一
[25~29]
。目前,针对
Android 重打包应用的检测主要分为基于代码克
隆
[4~8,30~33]
和基于应用资源文件相似性比较
[9,10,34~36]
这 2 类方法,它们都是通过计算应用之间的相似
性检测重打包应用。接下来,详细介绍这 2 类检
测方法。
2.1 基于代码克隆的检测
基于代码克隆的重打包应用检测是一种最常
见的代码相似性检测方法并被广泛应用于
Android 重打包应用检测。DroidMOSS
[4]
在操作码
上使用了一种模糊散列技术生成表示应用的指纹
信息,然后,使用编辑距离计算 2 个应用的相似
性。Juxtapp
[5]
首先利用 k-gram 对应用的操作码进
行处理,然后,使用一种基于 Bloom-filter 的特征
散列算法生成应用的向量表示,再使用 Jaccard
相似性距离计算 2 个应用的相似性。文献[4]和文
献[5]的 2 种方法可以实现大规模的应用相似性比
较,但是如果在代码中插入或调整代码位置等,
会导致检测方法失效,也就是说不能有效地检测
3.2 节中的类型 2 重打包应用。DNADroid
[6]
使用
程序依赖图作为应用的特征表示,借助 WALA 为
应用中每个类的每个方法生成一个 PDG,利用 图
的相似性匹配来检测相似的应用,这种方法有较
高的检测准确率,但是由于图匹配无法在多项式
时间内完成,因此该方法难以扩展到百万级的应
用市场检测。文献[7,8]利用一种基于计数的代码
克隆检测技术实现重打包应用的检测,同时该方
法有效地降低 Android 平台中第三方库在应用相
似性比较中造成的影响,但是文献中的方法难以
应用于存在严重代码混淆和百万级市场的程序代
码相似性比较情况。Chen 等
[30,31]
利用应用程序控
制流图的质心表示移动应用的特征,实现大规模
快速的应用相似性检测。但是该方法在处理之前
要抽取所有应用的控制流图,需要消耗大量的计
算资源,而且在代码混淆严重时,会影响控制流
图的生成,直接导致该方法失效。
2.2 基于应用资源文件的检测
由于 Android 应用的事件触发机制设计,在
Android 应用中存在丰富的用户交互界面 UI。有
研究发现恶意开发者为了迷惑用户下载安装应
用,通常不修改或较少修改应用的 UI 等资源文
件。ViewDroid
[9]
提出了一种将用户界面作为应用
特征表示的重打包应用检测方法,利用有向图表
示应用,其中,有向图的顶点是应用的视图
(view),有向边表示 2 个视图之间可以通过事件
进行切换,然后利用 VF2 算法
[37]
比较图的相似性
2018045-3
剩余12页未读,继续阅读
资源评论
weixin_38614287
- 粉丝: 5
- 资源: 933
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功