logo资料库

论文研究-Android软件敏感行为的监控及预测研究 .pdf

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
5 10 15 20 25 30 35 40 中国科技论文在线 Android 软件敏感行为的监控及预测研究 http://www.paper.edu.cn 李健鹏,辛阳** (北京邮电大学信息安全中心,北京 100876) 摘要:由于 Android 应用市场缺乏有效的监管机制,其中存在大量应用可能威胁用户的信息 安全。本文针对 Android 应用中的侵犯用户隐私的敏感行为展开分析,提出一种对这些敏感 行为进行监控和预测的方法。首先,基于 Android 应用的动态分析来检测应用的敏感行为, 并将这些敏感行为进行分析处理,以图表的方式形象地展示应用的行为轨迹、统计特征等, 然后对这些敏感行为进行建模,进而使用机器学习的方法对应用的未来行为进行预测。通过 对几个典型软件的分析证明,本方法可以有效地监控应用在运行过程中发生的敏感行为,并 可以有效预测某些行为的未来发生情况。 关键词:Android;动态检测;可视化;行为预测;机器学习 中图分类号:TP309.2 Research on the monitoring and predicting of sensitive behaviors for Android applications (Information Security Center, Beijing University of Posts and Telecommunications, Beijing LI Jianpeng, XIN Yang 100876) Abstract: Android application security issues are increasingly prominent. In this paper, we present a method to monitor and predict sensitive behaviors for Android applications. Firstly, we detect the sensitive behaviors of the applications based on Android dynamic analysis, and display these sensitive behaviors in the form of charts. And then, by analyzing the relationship between these sensitive behaviors, we propose a model for predicting the future behavior. Finally, we use the machine learning methods to predict the future behavior of the application. The experiment proves that this method can visually demonstrate the behavior of the software at all points in time and can predict the occurrence of the future for some sensitive behavior. Keywords: Android; dynamic analysis; visualization; behavior prediction; machine learning 0 引言 据 kantar 报道,截止 2017 年 4 月,中国的手机操作系统市场中 Android 占有率为 83.4%, 而 iOS 占有率仅为 16.2%[1]。iOS 系统比较封闭,且苹果对应用的审查比较严格,iOS 应用 的安全风险相对较低。而由于 Android 系统的开源性且其应用市场缺乏有效的监管,导致 Android 恶意应用层出不穷。这些恶意应用有着各种各样的表现形式,如:后台静默通话行 为(包括电话和短信)、后台私自联网、恶意窃取用户隐私数据等。除此之外,还存在着一 些流氓应用,这些应用会常驻内存、自动启动、与其他应用相互唤醒、植入广告等,给用户 带来非常差的使用体验以及安全风险。因此,需要行之有效的方法对 Android 应用中的恶意 软件进行检测和判别。 目前对 Android 应用的检测方法从整体思路上分为静态检测和动态检测两种。静态检测 是通过对应用的源文件进行反编译,然后分析其中的代码特征,动态检测则是通过分析应用 运行时的一些行为特征来达到检测目的。Android 应用的静态检测方法主要使用反编译和代 作者简介:李健鹏(1993--),男,硕士研究生,主要研究方向为移动应用安全 通信联系人:辛阳(1977-),副教授,主要研究方向:互联网安全、软件安全. E-mail: yangxin@bupt.edu.cn - 1 -
45 50 55 60 65 70 75 中国科技论文在线 http://www.paper.edu.cn 码审计技术,通过对反编译后的 Manifest.xml 文件进行解析,获取应用的概括信息,然后通 过代码审计技术对反编译获得的应用代码进行检测,分析其中的 API 调用情况以及可能存 在的漏洞风险。不过,目前大多数的应用发布前都会对应用进行加固等处理以防止被调试, 这就使得静态检测的应用场景受到限制。Android 应用的动态检测主要是运用 Hook 技术, 检测 Android 应用在运行过程中某些 API 的调用情况,进而分析应用的行为特征。因为动态 检测不需要应用的源代码,反调试技术对动态检测的限制非常小,所以动态检测的应用场景 更为广泛。 目前针对 Android 应用的检测问题,主要分析方法依然是静态分析、动态分析或者静态 动态的组合分析。常规方法对应用的检测依然还是停留在检测层面上,没有对应用的行为进 行可视化的展示和对应用下一步行为的预测。应用对用户来说依然不是透明的,所以有必要 提供一种技术,以一种可视化的方式和时间线形式呈现出应用每时每刻的行为,如应用在什 么时间进行了联网,什么时间进行了文件操作等。 目前,市面上主流的安全软件,如 360 手机卫士、百度手机卫士、腾讯手机管家等,都 可以实现对应用的常规检测,但都没有很好的对应用进行透明分析和未来行为预测。本文在 Android 应用动态检测的基础上,提出一种可视化的基于时间线的展示方式,并对应用未来 行为进行预测,以弥补当前应用检测功能的不足。 1 相关研究 前人已经对 Android 应用检测技术进行了大量的研究,研究方法主要分为静态检测和动 态检测以及静态动态组合检测。由于静态检测方法的局限性和缺点,目前动态检测已成为主 流的研究方法。 静态检测方面,Paul G 等人在文献[2]中通过对 apk 中 AndroidManifest.xml 文件以及其他 二进制文件进行反编译,提取 AndroidManifest.xml 中的注册权限,分析应用申请了哪些权限, 进而判断应用可能的行为。 动态检测方面,Sun C 等人在文献[3]中,利用 Hook 机制和 Java 反射技术,可以在运行 时动态检测软件的行为,其原理是在系统敏感 API 调用前后植入检测的代码,一旦有应用 调用受监控的 API,就会执行检测代码,以此达到实时检测的目的。 在文献[4]中,Singh S 等人采用了一种动态检测和静态检测相结合的方法。 另外,Rovo89 开发了 Xposed 框架[5],该框架通过控制 Android 中的 zygote 进程,实现 对 Dalvik 虚拟机的 Hook。该框架使得使用者可以替换系统中的任何 class 文件,是目前 Android 平台上最负盛名的一个框架。 应用行为预测方面,各种预测算法已经比较成熟。郭跃东等人在文献[6]中提出了一种改 进梯度下降法,能够加快线性回归算法在机器学习中的训练速度,本研究将这种算法应用到 Android 应用的行为预测中。 此外,还有很多论文也涉及到这一领域,现将部分论文研究成果分析整理汇总如表 1 所示: 文献 基于行为的移 动智能终端恶 意软件自动化 主要内容 表 1 前人工作整理 检测方法 动态检测 采用静态和动态分析技术相结合 的方式捕捉敏感行为,基于 SVM 算法对判定是否属于恶意应用。 不足之处 只是根据应用实际发生的行为来展开 结合静态 研究,没有对这些行为内部联系进行 检测 分析,检测效率不够高。 - 2 -
中国科技论文在线 http://www.paper.edu.cn 分析与检测系 [7] 统 安卓平台应用 程序风险检测 的研究与应用 通过静态检测和动态检测相结合 的方法对 Android 应用进行了分 析,主要是对应用的网络行为进行 动态检测 结合静态 检测 [8] 了详细分析,以获取应用的网络行 为特征。 只是对网络行为进行了分析,却没有 研究网络行为之间的某种规律性。 Android 软件行 为分析系统的 [9] 设计与实现 研发了一套动态检测沙箱并提出 了一种自动化检测方法,并针对一 动态检测 该系统着重于 Android 应用的行为分 析,但是对于行为动态检测的实现并 些新型恶意行为提出了一种特殊 场景模拟的方法。 没有太多研究。 以上文献都没有对应用的未来行为作预测,也没有提供一种很好的应用行为展示方法, 文献[10]中运用了支持向量机(Support Vector Machine, SVM)来进行恶意应用的分类和识别, 文献[11]中运用随机森林(Random Forest, RF)识别恶意应用。其用到的机器学习方法主要用于 恶意软件的识别和分类,都没有对应用的未来行为进行预测。本文在动态检测的基础上,提 出一种可视化的方法展示应用各个时间点的行为,并根据应用的历史行为运用线性回归方法 进行未来行为的预测。 2 研究方案 2.1 方案整体架构设计 本方案首先研究 Android 应用敏感行为的获取,并将获取的敏感行为基于时间线进行合 理形象地展示,然后根据这些敏感行为发生的规律提出一种预测该应用未来行为的模型,用 于预测某一敏感行为下一次发生的时间。本方案包括敏感行为检测、行为展示、行为预测三 个模块。其中,敏感行为检测是行为展示、行为预测的前提。敏感行为检测模块主要研究 Android 应用的动态检测、Hook 的具体实现方法和调研统计敏感行为的具体 API。行为展示 模块重点研究软件行为的可视化,研究如何将获取到的敏感行为形象的展示给用户,以便让 用户知道应用每时每刻在后台都进行了什么操作。行为预测模块重点对已经获取的应用行为 进行分析,以及构建机器学习模型对应用的未来行为进行预测。 2.2 敏感行为检测研究 动态检测的核心就是对敏感 API 进行监听。Android 系统平台下 API 的 Hook 监听主要 有三种方法。 第一种是通过重新打包的方法,对 APK 包的 Smali 源码进行修改。这个方法有一定的 局限性,有些应用打包发布前会对其进行加固以防止被反编译。应用的签名检查也会影响这 个方法的效果。 第二种在 Framework 层修改 Android 系统源码。此方法需要查看 Android 系统源码,寻 找特定的 API,添加自己的监听代码,然后重新编译源码形成镜像文件,重刷系统。Android 系统 Framework 层源码会随着版本的更新也会进行更新。此方法不具有很好的迁移性,过 程太过麻烦。 第三种方法是获取 root 权限下,修改/system/bin/目录下的 app_process 文件,再运用 Java - 3 - 80 85 90 95 100 105
中国科技论文在线 http://www.paper.edu.cn 反射机制对原有方法进行 Hook。本方案采用第三种方法,基于开源框架 Xposed 实现,检测 方案架构示意图如下: 110 115 图 1 敏感行为检测方案架构图 笔者通过调研,将较常出现的 Android 应用敏感行为分析整理出 18 种,并对其行为的 敏感程度做了分级(数值越大表示该行为越敏感),这些行为分别是:发短信,监听电话, 录制视频,录制音频,拍照,读取账户信息,控制其他应用,操作闹钟,读取位置信息,打 开网络,读取系统数据库(短信、彩信、联系人等),安装卸载应用,执行二进制文件,注 册和接收广播,联网,通知,创建进程等。现将这 18 类应用行为分别对应的系统函数包名 以及方法名以及敏感级别归纳如下表 2 所示: 应用行为 敏感级别 包名 表 2 敏感 API 包名和方法名 通知 广播操作 闹钟操作 写系统数据库 网络操作 录制音频 1 2 3 4 5 6 android.app.NotificationManager android.app.ContextImpl android.app.ActivityThread android.app.AlarmManager android.content.ContentResolver java.net.URL android.webkit.WebView org.apache.http.impl.client.AbstractHttpClient android.media.AudioRecord 方法名 notify registerReceiver handleReceiver setImpl Insert openConnection loadUrl execute startRecording - 4 -
中国科技论文在线 录制视频 拍照 读取位置信息 读系统数据库 控制其他应用 读取账户信息 短信操作 通话状态操作 蜂窝数据操作 开启进程 执行二进制文件 安装卸载应用 7 8 9 10 11 12 13 14 15 16 17 18 android.media.MediaRecorder android.hardware.Camera android.location.Location android.content.ContentResolver android.app.ActivityManager android.accounts.AccountManager android.telephony.SmsManager android.telephony.TelephonyManager android.net.ConnectivityManager java.lang.ProcessBuilder java.lang.Runtime android.app.ApplicationPackageManager http://www.paper.edu.cn start stop takePicture getAltitude getLatitude getLongitude query killBackgroundProcesses forceStopPackage getAccounts getAccountsByType sendTextMessage getAllMessagesFromIcc sendDataMessage sendMultipartTextMessage listen setMobileDataEnabled start exec installPackage deletePackage 为了实现 Hook 模块的重用性和扩展性,本方案定义了一个辅助接口 Hookhelper 类和 Hook 成功的回调函数 AbstractBehaviorHookCallBack,通过在回调函数中重写 beforeHookedMethod 方法以及 afterHookedMethod 方法,来控制敏感 API 在被调用之前和被 调用之后的操作。 以发送短信操作为例,本方案可以在应用调用发送短信的 API(如:sendTextMessage) 之前对其进行拦截,并将其参数保存在 Hookparam 中,让其先执行本方案定义的 beforeHookedMethod 方法输出敏感行为日志,然后再执行应用本身要调用的 API,调用完成 之后可以选择执行本方案定义的 afterHookedMethod 方法来进行一些 Hook 之后的操作。这 样就实现了对敏感 API 的调用控制。 2.3 行为展示研究 本方案提出三种软件行为的可视化展示方法:基于时间线的应用行为展示方式、某些时 段单个应用调用 API 次数的柱状图展示、较长时间内所有非系统应用 API 调用情况的饼状 图展示。 基于时间线的应用行为展示方式主要统计应用从打开到后台运行期间的 API 调用情况。 本方案可以检测到 18 种软件行为,为了直观的展示出某个应用的危害程度和 API 风险程度, 本方案按照风险程度对各种敏感行为分为 1-18 级(如表 2 敏感级别一列所示),其中数值 越大表示此 API 越重要、该行为的危险程度就越高。 某些时段单个应用调用 API 次数的柱状图主要展示应用在某些时段的活动情况。由于 应用的软件行为较多,考虑到展示的清晰性和绘制可行性,本文只展示主要 API 的调用情 况。这种展示方式可以很清楚的看出应用在各个时段的活动情况,也为软件未来行为的预测 提供参考。 120 125 130 135 140 较长时间内所有非系统应用 API 调用情况的饼状图可以形象的展示出系统的各个 API 调用比例情况。通过饼状图可以清晰的看出哪些 API 的调用是高频行为。 - 5 -
中国科技论文在线 2.4 行为预测研究 http://www.paper.edu.cn 145 150 笔者根据 Android 软件的开发经验和通过分析大量的 Android 应用日志发现,软件在不 同网络状态下、不同时间、用户的不同操作等情况下会表现出不同的行为。以联网为例,用 户的不同操作会触发不同形式的联网动作,有些动作需要长时间的网络传输,有些动作只需 要进行少量的网络交互。目前没有一个很好的数学模型可以很好的应对这种不确定性进行建 模预测。 通过观察统计发现,软件的某些行为具有一定的规律性,特别是在软件后台运行时,如 联网、通知、广播接收、数据库操作等行为会表现出一定的周期性。笔者通过对 UC 浏览器、 今日头条、新浪微博这三款 Android 应用分析发现,这些应用在启动后会注册一个时钟,然 后定期联网和进行数据库操作。针对应用的这些周期性行为,本文提出一种基于线性回归算 法的方法对应用的某些行为进行预测。 线性回归是一种通过建立线性模型来模拟和预测变量之间关联关系的一种回归算法,其 155 基本思想是找到一个线性模型描述自变量和因变量之间的关系并且使得代价函数最小,然后 通过此线性模型来预测自变量所对应的因变量。 160 165 170 针对某一有规律的特定行为,建立如下预测模型: ... x   1 1 h x ( )      0 其中, i是该线性预测模型的参数,为表达方便,引入 0 1  x n n x  .,则有: h x ( )   n   i * x i  T  x 其中、 x 都是向量,其中 n 表示该预测模型自变量的个数。 代价函数公式如下:  0 i J ( )   1 2 m  i 1  ( h x (  i )  2 i y ) (1) (2) (3) ( h x 表示已知的假设函数,m 为训练集的数量。 其中, ix 表示训练集中向量 x 的第 i 个元素, iy 表示训练集中向量 y 的第 i 个元素, )i 为求得使代价函数最小时的参数,可以使用迭代的方法,首先设定一个的初始值, 然后重复地改变的值,直到代价函数最小,为了使迭代的过程更有效率,可以使用梯度下 降算法,设学习率为 α,则有以下定义: J  ( )  :j       j  j (4) 即: (5) 然后通过处理敏感 API 的调用日志,提取特征向量,再针对每一种有规律性的敏感行     i h x (  y x ) i :    1  ( ) i j i j j m 为用机器学习方法训练预测模型(为方便第三步恶意应用判别和计算简单,在该训练模型中, 仅仅以时间作为自变量,该种敏感行为发生的次数作为因变量),即可求得该种敏感行为在 未来的发生情况。 - 6 -
175 180 185 中国科技论文在线 3 实验 3.1 应用的敏感行为检测和展示实验 http://www.paper.edu.cn 为验证本系统对软件行为检测的可靠性,本文从 Virusshare(地址为:http://virusshare.com) 采集了 53 个恶意样本,从豌豆荚应用市场采集了 37 个正常样本。其中正常样本涵盖旅游、 视频、音乐、聊天、购物等 17 类应用。参照文献[10]中的方法,把全部样本上传到 virustotal(地 址为:https://www.virustotal.com/)上进行检测。当应用同时被超过四个反病毒软件检测软件 为恶意应用才定义为恶意软件;当所有反病毒软件都标记为良性时,才将应用定义为正常软 件。 除此之外,本方法还和 Droidbox(地址为 https://github.com/pjlantz/droidbox)进行了对比 实验。53 个恶意样本中,Droidbox 成功安装并检测 27 个,本实验机型成功安装并检测 28 个。由于 Droidbox 在虚拟机上运行,所以会出现应用不兼容和崩溃的情况。通过对所有的 恶意样本和正常样本分别在本系统和 Droidbox 下进行实验,本系统可以成功检测出 14 类软 件行为,Droidbox 可以成功检测出 12 种软件行为。 下面将本方案的检测方法与和其他文献中提出的检测方法进行对比,由于无法重现各自 190 文献中的具体方法,也不能获取各个文献的测试用例,本文只参考该文献中所提及的数据进 行对比。对比结果如表 3 所示,“*”表示文献未提及。 文献 文献 检测方案 [1] [8] [10] [12] [13] 文献 Droidbox 本方案 文献 文献 表 3 实验结果对比 检测到的敏感行为数量 API 监听数量 * * 11 8 * 12 14 12 213 * * 12 * 29 195 200 本实验采用的机型是三星 SM-G3508I,Android 系统版本为 Android 4.1.2。针对以下实 验,本实验手机中安装了 6 款非系统应用,其中包括 4 款正常应用,分别是 UC 浏览器、新 浪微博、今日头条、RE 文件浏览器;一款由笔者开发的恶意应用(仿照微信界面,后台发 送短信),另一款是 Droidbox 提供的恶意应用测试用例,这两款恶意应用主要用来模仿恶 意应用的 API 调用情况,进而验证本系统对敏感 API 检测和拦截的有效性。 本文一共采集三种类型的数据,分别是: 1. 单次打开某个应用在启动期间的 API 调用情况。 2. 单个应用长时间处于后台运行时的 API 调用情况。 3. 所有非系统应用后台运行 48h 的 API 调用情况。 UC 浏览器、今日头条、Droidbox 样例、仿微信应用这 4 个应用的启动期间的 API 调用 情况如图 2 所示。 - 7 -
中国科技论文在线 http://www.paper.edu.cn 205 210 图 2 单次打开应用启动期间 API 调用情况 仿微信应用是笔者自己开发的测试样例,会在后台不断的发送短信。Droidbox 测试用 例会读取手机中的联系人、短信和联网。由图 2 可以看出本文采用的方法可以有效的检测出 应用的恶意行为。还可以看出恶意应用的行为对应的 API 等级较高,出现在图的上方;普 通应用的行为出现在图的中下部。由 API 调用图就可以大概推断出哪些软件属于恶意应用。 本文以今日头条为例,统计了其在较长的一段时间内的 API 调用情况。为了绘图方便, 本文只统计了应用的联网、读写数据库和广播的注册和接收行为。今日头条 8 小时内的 API 调用情况如如图 3 所示。 215 图 3 今日头条后台运行期间 API 调用情况 非系统应用后台运行 48h 的所有 API 调用情况如图 4 所示。 - 8 -
分享到:
收藏