1、Android 恶意 程 序 常 用权 限 分 析 及统 计 研究 李红灵 詹翊 云 南 大学 信 息学 院 计算 机 科学 与 工程 系 云南 省 信息 安 全 测评 中 心 摘 要: 为解决Android 恶意程序检测中代码分析量大、 核心代码定位难、 检 测判断效率 低等问题, 提出了将静态分析与动态分析相结合的 Android 恶意程序行为监测 和分析的复合检测方法。 该方法在对收集整理的 226 个和开放的恶意程序样本进 行综合分析的基础上, 用Python 语言编写了自动化 Android 恶意程序权限统计 程序, 并统计分析了打开网络套接字、 将数据写到外部存储设备和接收系统启动
2、 时的广播事件动作等 15 种常用权限, 确定了静 态分析中需要重点关注的权限及 其调用函数。以Android 恶意程序Cute Puppies Wallpaper.apk 作为实例, 应 用Apktool 工具对待检 测APK 文件进行反编译, 得到反汇编后的Smali 文件, 通 过定位程序关键代码、 定位重要权限关联 API 函数两种途径快速找到程序的入口 和其重要功能代码部分。 同时, 采用沙箱系统的 Android 恶意软件动态分析方法, 得到开机启动、 应用程序变更等事件及其对应的激活方式。 研究表明, 使用该复 合检测方法可以有效提高分析效率, 缩短恶意代码分析时间, 快速定位核
3、心 代 码, 及时阻止恶意程序传播。 关键词 : Android 恶意程序; 检测; 常用权限; 静态分析; 动态分析; 作 者简 介: 李红灵 (1966-) , 女, 副教授, 研究方向为计算机网络、 信息安全。 基 金: 国家自然科学基 金资助项目 (61562090) Statistics Analysis and Research on Common Permissions of Android Malwares LI Hong-ling ZHAN Yi Department of Computer Science and Engineering, School of Informa
4、tion Science and Engineering, Yunnan University; Information Security Evaluation Center of Yunnan Province; Abstract : In order to solve problems including excessive codes, key-permission orientation difficulty and lowdetection efficiency in Android malware detection, a composite detection solution
5、with static and dynamic analysis is proposed for Android malware monitoring and analyzing.On the basis of synthetic analysis of collected 226 samples and public malware samples, it uses Python language to compile an automatic Android malware permissions statistical program.Besides, 15 most common pe
6、rmissions including unfolding network socket and activating broadcast event action while transferring data to external storage device or receiving system are carried on statistical analysis, determination of those key permissions and corresponding call functions which required further attention.Malw
7、are Cute Puppies Wallpaper.apk, taken as an example, has been decompiled via APKtool and the decompiled Smali file has been obtained.By locating key codes of the malware and locating crucial permission-related API functions the entering and crucial functioning parts of the codes have been efficientl
8、y located.Meanwhile, Sandbox Android malware dynamic analysis on events including booting up and application change along with their corresponding activation patterns have been summarized.The time consumption of codes analysis has been reduced by using it and the key codes have been quickly located
9、while spreading of malware is terminated in time. Keyword : Android malware program; detection; common permissions; static analysis; dynamic analysis; 1 概述 随着移动智能设备的普及, Android 系统的发展也十分迅速, 同时也使 Android 恶意程序快速发展和广泛传播, 给Android 用户带来了严重的安全隐患1。 恶意程序是一种软件程序代码, 旨在干扰正常的使用, 收集系统/用户的敏感信 息, 获取未经授权的信息等等。 恶意程序包
10、括病毒、 蠕虫、 木马、 后 门、 逻辑炸 弹、 漏洞攻击程序、 间 谍软件、 广告软件、rootkit 后门以及其他恶意程序代码 2 。Android 恶意程序是指在用户不知情或未授权的情况下, 在移动智能终端 系统中安装、运行, 以达到不正当目的的APK 文件3。 国内在Android 安全研究及 Android 恶意程序检测等方面卓有成效。 例如, 蒋绍 林等4 通过分析Android 安全机制, 认为 Android 通过adb 工具可以获取系统 root 权限, 会对文件造成 安全威胁, 指出增强Android 应用框架层的安全机制; 张志远等5通过静态分析和动态调试以及反逆向技术等
11、方法来介绍怎样对 Android 应用进行逆向分析, 从而实现Android 应用的安全可控;李子锋等6提 出一种采用静态分析检测 Android 恶意程序的方法。 该方法使用静态数据流分析 技术实现常量分析算法, 通过追踪Android 应用程序使用常量值的序列, 达到 检 测应用程序恶意行为的目的。吴俊昌等7 提出一种基于Android 权限分类的 静态分析方法, 用于检测 Android 应用程序的恶意代码。王志强等8 采用静态 分析与动态分析相结合的方式, 对Android 应用程序的关键系统调用和方法的 控制流序列进行提取。 研究分析了已知恶意软件样本库, 成功训练出恶意软件特 征集
12、合和恶意判定阈值, 通过比对Android 应用程序与恶意特征集的相似度判 定是否为恶意程序。 最终设计并实现了Android 恶意行为检测系统SCADect 。 Zhou Yajin 等9通过分析 1 260 个正常应用的权限使用, 与收集的恶意应用申请的 权限进行对比, 在恶意应用和正常应用中, 访问网络、 读手机状态、 访问网络状 态、写SD 卡等权限都被广泛使用, 但恶意应用更倾向于使用短信相关的权限、 开机自启动权限、更改网络状态的权限, 正常应用很少使用这些权限。在国外, Akash Malhotra 等10通过静态分析和动态分析结合黑白名单的方法, 对 Android 恶意软件进
13、行研究, 使用逆向分析检查恶意代码, 又使用工具来识别 包结构, 再用白名单过滤的策略来识别恶意程序。Thomas 等11提出一种 Android 应用程序沙箱。该沙箱使用 Android SDK 中的Monkey 工具, 生成伪随 机事件流, 并模拟用户点击、 触摸、 手势或系 统事件等操作, 通过监测系统和库 函数调用, 生成的日志记录, 来分析Android 应用程序是否存在恶意行为。 在对工作中收集整理到的226 份Android 恶意 程序样本和一些公开的恶意程序样 本进行综合分析的基础上, 应用Python 编写了相关的统计程序, 统计出 Android 恶意程序常用的权限类型与使
14、用频度, 并确定了静态分析环节中需要 重点关注的权限。另外, 结合信息安全测评工作的实践活动, 基于沙箱系统的 Android 恶意程序动态分析方法, 进行了Android 恶意程序激活方式研究, 归纳 了动态分析中激活恶意程序的方法。 结合静态分析与动态 分析, 总结出恶意程序 行为分析的有效方法。 2 Android 恶意程序 常用权限统计 访问控制是系统实施安全控制的有效手段之一, 而访问控制具体体现在主体对 客体的访问权, 即主体对系统资源的访问权限上12, 因此对恶意程序常用权 限的统计分析是恶意程序行为研究的基础。 2.1 Android 恶意 程序常 用权 限统计 的目 的 An
15、droid 系统在应用程序框架中提供了权限许可机制, 为开发者定义了一百多 种权限用于保护系统资源, 并提供了对应的 API 用于访问上述系统资源。 由于Android 严格的权限许可机制, 恶意程序如果试图获取用户隐私、 系统信息 或者执行系统操作, 都必须在Android Manifest.xml 文件中申明相应的权限, 否则在程序运行时就会触发安全异常13。Android 系统也规定应用程序在运行 过程中无法动态地改变自身权限。 故恶意权限的使用情况可以作为 Android 应用 恶意行为判别的重要依据。 因此有必要针对 Android 恶意程序进行权限统计, 由 此得到恶意 程序最常用
16、的权限。 这些权限使用情况及其对应的 API 函数, 是静态 分析的核心部分, 优先分析这些权限组合及函数调用可以大幅缩减代码分析量, 有效降低人为分析的强度, 提高恶意程序分析的效率。 2.2 Android 恶意 程序样 本介 绍 对于此次研究, 统计分析的 Android 恶意程序样本部分源于以下各开放网 站:https:/ com/?78npy8h7h0g9y;http:/ 。 其余样本是由实际 工作中收集整理的, 共226 个。 2.3 Android 恶意 程序常 用权 限统计 的实 现 所用命令与参数如下: 程序输出结果略 (鉴于篇幅) 。 2.4 Android 恶意 程序常
17、用权 限统计 结果 分析 根据以上样本及程序分析得出如表 1 所示的统计结果。 表中所反映的这些权限及 相关的API 函数就是在静态分析中需要重点关注的部分。 3 Android 恶意程序 反编译实例 3.1 Android 恶意 程序反 编译 下面以分析Android 恶意程序Cute Puppies Wallpaper.apk 为例进行说明。通 过使用Apktool 工具可对待检测 APK 文件进行反编译 (过程略) 。 编译后可以产生和程序包层次结构相同的 Smali 目录, 目录中包含着反汇编后 的Smali 文件14。 表1 恶意程序常用权限及使用频率 下载原表 反编译后的Smali
18、 文件代码通常较长, 而且指令繁多, 代码分析时很难捕捉到 重点, 因此有必要快速定位程序关键代码, 提高分析效率, 降低分析强度。 3.2 快速 定位程 序关 键代 码 Android 程序由一个或多个Activity 以及其他组件构成, 不同的Activity 实现 不同的功能, 但每个程序有且只有一个主 Activity 。 对于大多数应用程序而言, 主Activity 的On Create () 就是程序的代码入口, 所有功能从这里开始执行 14 。 以下是快速定位的操作步骤。 步骤1: 先解析出Android Manifest.xml 文件, 找到主Activity, 如图 1 所示
19、。 图1 解析 Android Manifest.xml 文件找到主 Activity 下载原图 步骤2: 查看其所在类的 On Create () 方法 的反汇编代码, 提高分析效率, 如图 2 所示。 图2 定位 On Create () 方法 下载原图 通过以上两个步骤就可以定位到程序的代码入口。 3.3 快速 定位重 要权 限关 联 API 函数 还需要根据表1, 重点分析恶意程序常用权限的函数调用情况。 通过定位程序关键代码、 定位重要权限关联 API 函数两种途径, 就可以快速找到 程序的入口及其重要功能代码部分。 在源代码分析过程中, 优先分析程序关键代 码可以避免顺序分析中阅读
20、大量无关代码, 加快了分析速度, 提高了分析效率。 4 Android 恶意程序 动态分析 Android 恶意程序动态分析利用沙箱原理, 即在计算机系统内部构造一个独立 的虚拟空间, 恶意程序所作的任何写磁盘操作, 都将重定向到这个虚拟空间 15 。 这样将阻止可疑程序对系统访问, 转变成将可疑程序对磁盘、 注册表等的 访问重定向到指定文件夹下, 从而消除恶意程序对系统的危害。 4.1 分析 环境搭 建 将装有Droidbox、Wireshark 、Androguard 等检测分析工具的主机 ( 或是笔记本 电脑) 通过有线或无线方式接入互联网, 打开笔记本电脑无线网络, 将其设置 为访问接
21、入点AP (SSID:Test) , 打开待检测手机的 WIFI 功能, 接入无线网络, 这样就完成了分析环境的搭建。其拓扑结 构如图 3 所示。 4.2 触发 恶意程 序 以下从分析恶意程序的激活方式, 创建激活条件激活恶意程序, 使用 APIMonitor 对恶意程序进行分析三个方面进行介绍。 图3 分析环境网络拓扑 下载原图 (1) 恶意 程序激 活方 式。 经对Android 恶意程序实例分析并结合工作实践经验, 分析和总结了 Android 恶意程序的主要激活方式, 如表2 所示。 表2 运行 main.py 程序的输出内容 下载原表 (2) 创建 激活条 件激 活恶 意程 序。 通
22、过以下四个步骤可以完成恶意程序激活的全过程。 步骤1: 提供WIFI 与移动数据网络两个 Internet 网络出口。有些恶意程序为了 规避流量监测, 采取了智能判断, 仅当有WIFI 连接时才有网络行为。 步骤2: 需更改测试环境的时区及时间设置。 有些恶意程序, 为了提高其隐蔽性, 在其源代码中加入了时间判断, 在正常工作时间 (07:00-24:00) 不工作, 有效 规避了分析人员在正常时间内对其进行动态分析。 步骤3: 尽可能尝试多种网络协议类型的操作。有些恶意程序通常 在用户主动进 行网络操作时才运行, 如打开浏览器 (HTTP) 、网络下载 (FTP) 等, 因此在动 态分析时需
23、要主动尝试多种网络行为。 步骤4: 根据表2 总结的恶意程序激活方式尽可能模拟很多的监听事件, 触发木 马恶意行为。 (3) 使用 APIMonitor 对 恶意 程序进 行分 析。 APIMonitor 是Droid Box 中独立的动态分析工具, 它通过向目标APK 包中插入 监视代码来监测应用程序在运行过程中调用的 API。 APIMonitor 首先反编译所要处理的 APK 包, 接着遍历Smali 代码。如果找到在 配置文件中 配置的需要监测的 API, 则分析这个 API 参数, 插入Droid Box 包下 相应的类的静态函数, 最后重新打包这个APK 包。 这样, 当应用程序在
24、运行过程 中调用到插入了监视代码的API 后, 系统日志 就会出现标签Droid Box 标记的日 志信息, 只需过滤出这些日志信息, 就可以获得应用程序调用系统 API 的信息。 默认监控的API 列表存放在 config/default_api_collection 文件下。 其内容如 图4 所示。 图4 程序调用系统 API 的信息 下载原图 通过静态分析结合动态分析, 可在短时间内快速全面掌握 Android 恶意程序的 基本功能、 程序流程、 网络行为。 较传统分析而言, 大大缩短了分析时间, 提高 了分析效率。 5 结束语 为解决Android 恶意程序检测中代码分析量大、 核心代
25、码定位难、 检 测判断效率 低等问题, 提出了将静态分析与动态分析相结合的 Android 恶意程序行为监测 和分析的复合检测方法。 该方法对收集整理的 226 个和开放的恶意程序样本进行 了综合分析, 应用 Python 语言编写了自动化 Android 恶意程序权限统计程序, 统计分析了打 开网络套接字、 将数据写到外部存储设备和接收系统启动时的广播 事件动作等15 种常用权限, 并以此确定静态分析中需要重点关注的权限及其调 用函数。以Android 恶意程序Cute Puppies Wallpaper.apk 为验证实例, 使用 Apktool 工具对待检测的APK 文件进行了反编译,
26、得到了反汇编后的Smali 文件, 通过定位程序关键代码、 定位重要权限关联 API 函数两种途径快速找到程序入口 及其重要功能代码部分。 同时, 采用沙箱系统的 Android 恶意软件动态分析方法, 得到开机启动、 应用程序变更等事件及其对 应的激活方式。 使用该方法, 可以有 效提高分析效率, 缩短恶意代码分析时间, 快速定位核心代码, 及时阻止恶意 程序传播。 参考文献 1 张艺腾.基于并行计 算弱 KMP 模式挖掘算法的 Android 恶意应用检测 EB/OL.2014.http:/ 2Stallings W, Brown L. 计算机安全原理与实践M.贾春福, 刘春波, 高敏芬,
27、 等, 译. 北京:机械工业出版社, 2008:75-142. 3 王叶.PC 与智能手 机黑客攻防大全M.北京:机械工业出版社, 2015. 4 蒋绍林, 王金双, 张涛, 等.Android 安全研究综述J.计算机应用与软件, 2012, 29 (10) :205-210. 5 张志远, 万月亮, 翁越龙, 等.Android 应用逆向分析方法研究J. 信息网 络安全, 2013 (6) :65-68. 6 李子锋, 程绍银, 蒋凡.一种 Android 应用程序恶意行为的静态检测方法J. 计算机系统应用, 2013, 22 (7) :148-151. 7 吴俊昌, 骆培杰, 程绍银, 等
28、.基于权限分类的 Android 应用程序的静态分 析C/ 第四届信息安全漏洞分析与风险评估大会.出版地不详:出版者不详, 2011:24-28. 8 王志强, 张玉清, 刘奇旭, 等.一种Android 恶意行为检测算法J. 西安电 子科技大学学报, 2015, 42 (3) :8-14. 9Zhou Y, Jiang X.Dissecting android malware:characterization and evolutionC/2012 IEEE symposium on security and privacy.s.l.:IEEE, 2012:95-109. 11 system
29、 for suspicious software detectionC/International conference on malicious and unwanted software.s.l.:s.n., 2010:55-62. 12 李洋.Android 安 全架构及权限控制机制剖析 EB/OL.2013-09-08.http:/ 13 高岳, 胡爱群. 基 于权限分析的Android 隐私数据泄露动态检测方法 EB/OL.2013-08-09.http:/ 14 丰生强.Android 软件安全与逆向分析M. 北京:人民邮电出版社, 2013. 15 刘志永, 王红凯, 李高磊, 等.一种基于主机特征的未知恶意程序动态识别 系统J. 计算机与现代化, 2016 (3) :105-110.