android重包装应用程序静态分析系统的设计

上传人:小** 文档编号:34128826 上传时间:2018-02-21 格式:DOC 页数:6 大小:62.50KB
返回 下载 相关 举报
android重包装应用程序静态分析系统的设计_第1页
第1页 / 共6页
android重包装应用程序静态分析系统的设计_第2页
第2页 / 共6页
android重包装应用程序静态分析系统的设计_第3页
第3页 / 共6页
android重包装应用程序静态分析系统的设计_第4页
第4页 / 共6页
android重包装应用程序静态分析系统的设计_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《android重包装应用程序静态分析系统的设计》由会员分享,可在线阅读,更多相关《android重包装应用程序静态分析系统的设计(6页珍藏版)》请在金锄头文库上搜索。

1、Android 重包装应用程序静态分析系统的设计 孙翌博 邰淳亮 宫婧 南京田家炳高级中学 南京邮电大学计算机学院 南京邮电大学理学院 摘 要: 本文以 Android 重包装应用程序的检测为研究内容, 通过对当前主流的静态分析技术进行对比与总结, 提出了一种基于众包的 Android 重包装应用程序静态分析方法。该方法选取能表征 Android 应用程序唯一性的信息作为特征字符串, 利用众包构建 Android 应用程序注册与数据库服务平台, 对比签名鉴别重包装应用程序。最后为验证所提出方法的有效性, 构建原型系统进行实验测试。实验结果表明, 本方法能够有效进行 Android 重包装应用程

2、序的静态分析。关键词: Android 应用程序; 重包装; 静态分析; 众包; 作者简介:孙翌博 (2000, 6) , 男, 汉族, 江苏南京人, 高中生, 研究方向:计算机技术及其应用。1 相关技术研究现在的 A n d r o i d 恶意应用程序分析方法主要是利用动态分析技术或静态分析技术进行恶意应用的检测。Android 恶意程序的各种攻击方式中, 应用程序重新打包是极为常见的手段。文献1研究发现, 当攻击者通过反编译手段获得一个良性 Android 应用程序的源码后, 可以实施的恶意操作通常有三类。(1) 注入广告 SDK。向原程序中加入广告 SDK, 实现广告收入。(2) 替换

3、应用内广告。替换掉原程序作者在其应用中设置的广告 SDK 的发布者ID, 实现窃取程序开发者的广告收入。(3) 添加恶意代码。在大体了解代码流程的基础上, 加入恶意代码片段, 使得用户执行过程中触发恶意操作。前两种恶意操作方式主要是对知识产权的侵害, 后一种的危害则是十分巨大的。攻击者在实施恶意操作后只需要重新打包签名形成新的安装包 APK 文件就可以上传至应用商城。用户看到的貌似是正常的一款应用程序安装包, 安装后也能使用程序功能, 但 Android 终端实际上已经遭到了恶意程序的入侵。文献1研究显示许多流行的 Android 应用程序包括 QQ、Angry Birds 等都已经出现了被重

4、包装的情况。由于静态分析不需要运行程序, 可以实现代码的全覆盖以及没有运行时开销等优势, 特别适合进行 Android 重包装应用程序的分析。文献2就设计了一种Droid MOSS 检测系统, 对官方来源的应用实现反编译获得源码, 然后采用模糊哈希技术对程序切片提取 Android 应用行为模式作为特征形成指纹, 构建应用数据库进行分析。该研究发现第三方应用商城中至少有 5%至 13%的 Android 应用存在重新包装的情况, 多数植入了恶意代码和添加了广告 SDK, 情况不容乐观。但是该方法对于恶意攻击者可以在代码中加入无效冗余代码以降低形成指纹的相似性来逃避分析和可以进行高度的混淆加密进

5、而导致无法生成指纹的情况没有考虑到。文献3则综合选取了 Android 应用程序的签名、权限和可执行文件作为对比的依据, 指标具有综合性。但是该方案仍然存在文献2中需要在源代码中嵌入代码的缺点, 适用性比较受限。综上, 如何快速、有效地分析 Android 平台中重包装应用程序仍是亟待解决的问题。主要难点就是如何快速判断两个安装包 APK 文件是属于同一个程序。事实上, 只要能够知道两款软件其实是一个程序, 那么比较一下程序的开发者签名, 就能够立即得知其中是否存在重包装的情况。2 基于众包的 Android 重包装应用程序静态分析方法2.1 众包机制众包 (crowdsourcing) 指的

6、是一个公司或机构把过去由员工执行的工作任务, 以自由自愿的形式外包给非特定的大众网络的做法。它本身描述了一种新的商业模式, 现在也指从广泛群体, 特别是在线社区, 获取所需想法、服务或内容贡献的实践。在软件安全性分析领域, 众包多用来收集数据, 需要社会成员广泛的参与, 可以取得很好的效果4。但与此同时, 众包也会带来很大的隐私争议5。近年来, 文献5都提出使用众包 (crowdsourcing) 机制来参与 Android 应用程序的分析, 希望通过监测大量真实的用户使用程序的数据, 来获取充足特征值判断程序的性质。本文即是基于此提出了一种基于众包的 Android 重包装应用程序静态分析方

7、法, 使用众包机制搜集信息来判断程序的一致性, 以此来快速分析程序重新打包问题, 并设计了一种高效的重包装分析原型系统。2.2 特征获取分析 A nd r oid 重包装应用程序首要解决的问题就是如何判断两个安装包 A PK 文件是属于同一个程序。判断安装包 A PK 文件是否属于同一个程序, A nd roid 本身是提供现有机制的。A nd roid 应用程序发布时会生成一个 A PK 文件, 即应用程序的安装文件, 其本质上是一个 z ip 格式的压缩包。除了源代码及资源文件, 它还包含名为 Android Manifest.xml 的清单文件, 以向 Android 系统声明必要的信息

8、, 见图 1。A n d r o i d 系统使用包名 (P a c k a g e Na m e) 来唯一标识一个应用程序, 包名在开发时由开发者指定, 位于清单文件 A nd r oid M a n i fe s t.x m l 的“p a c k a g e”属性。包名相同的程序可以升级覆盖原先版本的程序。除了包名, A n d r o i d M a n i f e s t.x m l 清单文件 I n t 类型的 android:version Code 主要用于版本标识, 确定升级信息。String 类型的 android:version Name 用于显示给用户版本号信息。另外,

9、 Android 系统使用签名在用户、程序和进程之间建立信任关系, 对应用程序的完整性和发布机构的唯一性进行校验。一般使用 JDK 自带的 Key tool和 Jarsig ner 给程序签名。Keytool 是个密钥和证书管理工具。Jarsigner 利用密钥仓库中的信息来对 A PK 文件进行签名。如果不同开发者使用了相同的包名, 签名不同的程序不会被升级替换, 这样可防止已安装的应用被相似的恶意软件通过升级替换掉。开发者持有签名的私钥, APK 文件内 META-INFCERT.RSA存放公钥, 通过比较公钥可以判断私钥是否一致。因此可以提取以上信息, 组拼成字符串来唯一标识一个 And

10、roid 应用程序。基于以上信息, 可以利用众包机制, 构建出一个数据库服务作为 Android 应用程序的注册平台, 要求开发者向平台提供程序唯一性标识信息。平台采用先到先注册的机制, 并检查保持包名的唯一性。当用户需要安装一款应用程序时, 只要查寻一下 Android 应用程序的注册平台就可以知道 Android 应用程序是否存在重新包装情况。2.3 分析流程从 APK 类型文件中提取唯一性信息需要以下工具:(1) keytool.exe:JDK (Java Development Kit) 自带的密钥和证书管理工具, 主要用于密钥和证书的创建、修改、删除等。keytool 工具利用以下命

11、令查询APK 文件中的签名信息:图 1 Android 重包装应用程序示意图 下载原图keytool.exe-printcert-file apkCERT.RSA(2) aapt.exe:Android Asset Packaging Tool 是 Android SDK (Software Development Kit) 自带的资源打包工具, 具备查看 APK 文件内资源的功能。aapt 工具利用以下命令查询 APK 文件中的唯一标识信息:aapt.exe dump badging.apk 文件路径使用脚本程序调用 keytool 和 aapt 工具, 并对结果字符串信息提取, 获得所需的

12、查询信息 (Package Name, vers ion Code, version Name, Application signing) , 生成字符串, 进行数据库查询。具体重包装分析流程如下。S t ep1:输入 A PK 文件 OR 应用程序安装文件 UR L 地址。Step2:预处理。If (输入为 URL 地址) 启动网络爬虫工具下载 APK 类型文件。Step3:信息提取。提取 APK 文件信息构造成字符串信息。Step4:查询。提交查询信息至 Android 应用程序注册平台;利用 Package Name、version Code、version Name 查询唯一相同的应用

13、;比较 Application signing 字段。Step5:输出结果。If (两相同应用的 Application signing 相同) 输出非重包装程序;If (两相同应用的 Application signing 不同) 输出重包装程序;If (未查询到相同应用) 输出应用未曾注册, 不能判别。A nd roid 应用程序的注册平台利用众包机制要求非特定群体提供出 And roid应用程序的唯一性标识信息。Android 应用程序的注册平台不提供应用程序下载推广工作, 仅为维护 Android 平台安全, 不会对其他应用商城构成竞争, 还会有促进与规范作用。因此, 利用众包机制构建

14、一个应用程序的注册平台并实施重包装分析具备可行性。3 Android 重包装应用程序静态分析原型系统设计3.1 系统流程框架设计Android 重包装应用程序静态分析原型系统需要对进行过重包装的 Android 恶意软件进行快速分析识别, 同时功能模块也要考虑到服务器运算能力、网络等资源紧张的现实, 主要分析步骤如下。(1) 用户通过手机客户端提交需要检测的 APK 文件, 或者选择提交 APK 文件下载路径的 URL 地址到服务器端。图 2 Android 重包装应用程序静态分析原型系统流程图 下载原图(2) 服务器对接收到的信息进行校验。如果接收到的是 URL 地址, 启动网络爬虫工具下载

15、地址对应的 APK 文件, 对获得的 APK 文件进行解压等预处理。(3) 服务器对被预处理的 APK 文件进行信息提取, 组拼成特征字符串。(4) 服务器将提取的特征字符串通过网络通信模块, 送至注册平台查询数据库记录, 对比签名信息, 生成报告返回到客户端展示。3.2 系统功能模块根据图 2 可以看出该系统设计为客户端和服务器两部分, 五大功能模块。其中客户端含有“文件提交模块”, 负责用来提交需要分析的 APK 文件。繁重的分析工作由服务器端进行, 主要有“提交接收模块”“网页抓取模块”“信息提取处理模块”和“网络通信模块”4 个部分。“提交接收模块”首先需要接收用户提交的应用安装包信息

16、, 校验提交的文件格式是否正确。若用户上传的是应用程序安装文件 URL 地址, 则启动“网页抓取模块”, 利用网络爬虫工具下载 APK 类型文件。服务器顺利获取 APK 文件后, “信息提取处理模块”开始解析 APK 类型文件, 获取应用独特的包名、签名和版本号等信息, 生成特征字符串唯一标识该程序。然后通过“网络通信模块”与 Android 应用程序注册平台的数据库记录对比, 查看同样包名的应用程序是否存在一致的签名信息, 如果发现同样的程序出现不同签名, 则判定为重新打包生成的恶意程序, 直接反馈结果给客户端。无论出于什么目的, 重新打包原作者的应用程序后再发布, 就判断为恶意软件。若签名一致, 则排除为重新打包的情况。3.3 推荐系统的实现该系统采用 Cl ient/S er ver 架构进行开发, 客户端运行环境是 Android 6.0系统, 服务器运行环境是 Ubuntu14.10 系统。在“重包装分析工具”中点击输入框, 选取需要分析的 APK 文件, 使用“应用上传

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号