
基于API调用分析的Android应用行为 意图推测.doc
10页基于API调用分析的Android应用行为 意图推测沈科叶晓俊刘孝男李斌清华大学软件学院中国信息安全测评中心摘要:围绕移动应用程序的用户行为意图分析,结合后台应用程序接口 (application program interface, API)调用和前台应用图形用户界而(graphic user interface, GUI)状态,该文提出一种在移动应用(App)运行时产生的多元时 间序列数据上识别应用行为模式的方法,给出一个包括Android应用程序静态 预处理、动态监控运行和行为意图推测3阶段的不良应用程序用户行为推测框 架介绍了慕于Android平台API调用分析的应用行为意图动态推测系统原型实 现技术,选取代表性应用案例验证了该文提出的不良行为模式识别算法的有效 性,并通过实际应用剖析了基于API调用分析推测用户行为的实用性关键词:数据安全;Mdroid应用;应用编程接口(APT)调用;程序行为;动态分析; 作者简介:沈科(1991—),男,工程师作者简介:叶晓俊,教授,E-mail:yexj@tsinghua. edu. cn收稿日期:2016-12-10基金:国家重点研发计划(2016YFB0800901)Android Appbehavior-intentinference based on API usageanalysisSHEN Ke YE Xiaoiun LIU Xiaonan LI BinSchool of Software, Tsinghua University; ChinaInfonnation Technology Security EvaluationCenter;Abstract:An application behavior intention analysis is presented which analyzes the application program interface (APT) usage in the background and the graphic user interface (GUI) state transitions in the foreground of the target App with behavior pattern recognition of the multivariate time series data at runtime. An API usage analysis based behavior intent inferring prototype was developed for Android Apps with static preprocessing, dyiiamic monitoring and behavior intent inference- This paper examines the effectiveness of the prototype on typical mobile Apps via case studies and validates the practica b 订 ity and opera bi lity of the approach through real-world App profiling.Keyword:data security; Android appliestion; APT usage; application behavior; dynamic analysis;Received: 2016-12-10Android平台凭借开放性和灵活性吸引了众多移动应用开发者,也滋生出很多 侵害用户权益的不良意图应用(简称“不良应用”)。
不良应用常伴随特定API 的滥用,且多发生在用户不知情的情况下首先,敏感数据可被系统调用等平台 API直接访问得到,关注这类API调用的应用行为模式可省却数据流图中不必要 的路径分析,且比关注数据内容更有效;其次,第三方API本质是供App调用的 高度封装的函数,这类API的调用直观反映应用程序使用第三方服务过程;最后, 监控用户在App上的交互是至关重要的,即关注图形用户界面(graphic user interface, GUT)操作和状态变化,对比应用后台行为,筛出不符合用户操作 和意图的可疑行为安全领域一直致力于App应用恶意行为检测技术研究[1 -3]Applntent强调从 数据转移检测判断App程序行为是否符合应用用户意图IHiAsDroid关注App程 序行为和用户交互的对比,但只是静态分析特定API相关的顶层函数和GUI组件 源程序,进行语义层面的匹配疋行为分析[6-8]和APT分析[9-10]方法主张程 序行为模式比数据流更能揭示应用程序存在的恶意性,而基于监控机制采集的 API使用情况能够反映App应用的行为模式本文提出一种基于App运行时的API调用分析应用行为意图推测方法(简称 “ABI方法”)。
该方法修改App应用安装包(Apk)文件,以提取应用内部信 息并污染特定APT,这样在运行时可动态抽取APT调用的时序数据和上下文信 息本文给出了用于构造八pp应用行为的多元时间序列模型和运行不良行为 模式识别相关算法以推测App应用的行为意图,如典型的周期API调用、游离 API调用等通过典型案例的不良行为研究和复杂应用行为模式识别实验,验证 了本方法对App运行时API使用的分析能力和行为意图的推测能力1应用行为意图假设一个应用引导用户输入个人信息并点击某个按钮如果按钮上的提示信息是 “保存”,则可能是将数据保存在App终端设备或远程服务器;如果按钮文字是 “发送”或“同步”,则表示数据将上传到服务器然而此类按钮通常只显示为 “确定”,致使用户无法确定App在GUI界面背后的行为因为App可能设有 “自动同步终端数据到服务器”的开关选项,或在安装时申请了特殊权限并得 到了用户授权,导致Android平台自发地上传终端数据,不管用户是否知悉或 授权这类在移动应用领域十分普遍、具有不确定性和用户无意识的应用程序行 为有可能是良性的,也可能是有危害的相关的恶意应用检测方法基木集中在敏感数据泄露方面11辺。
不良应用行为未 必涉及数据,如自启动的活动或意图,调用敏感的系统APT而无需用户输入, 其行为模式可能是复杂和不确定的本文将不良应用定性为超越用户意识和意图的特定API滥用从污点分析的角度, 污染源、污点传播和污点触发三者构成数据泄露检测的关键良性应用和不良应 用的区别不在于数据污染源,而在于传播过程和触发函数在App应用运行时追 踪APT调用,并结合用户交互和应用的GUT状态转移,则能够覆盖污点的传播和 触发过程,对分析人员推断应用行为意图有直接帮助2应用行为意图推测方法木文提出的方法包含3个阶段:1)静态分析和插桩,即从Dalvik字节码中提取 代码结构数据,执行自动插桩;2)多元时间序列数据生成,即跟踪APT调用, 实时捕获GUI状态并记录用户交互数据;3)应用行为意图推断,即接收监测器 生成的多元时序数据并进行意图推测,推测可能的非用户意图行为2.1字节码层面的污点自动插桩图1展示了静态分析和插桩阶段的处理架构给定一个Apk文件,插桩工具链首 先对其解包、反编译,然后提取代码结构数据,在字节码层面植入污点输出器后 重新打包和签名此外,本文调研了 Java和Android平台的敏感的系统API,并 根据功能类别和引入频率统计了部分第三方API,为Android平台应用程序的 API分析构建了一个API插桩策略库。
2. 1.1插桩工具链工具链包含3部分:工具Apktool用于解包、反编译、重编译和重打包Apk文件 他;插桩器用于提取代码结构数据、执行字节码插桩以污染冃标API;签名器用 于给二次打包的Apk文件有效的签名,使篡改后的Apk能够安装运行插桩工具链需使App应用的字节码插桩自动化和高度可用1) 自动插桩:在静态分析时,插桩器创建一个外部类,并根据APT污点输出器 的需要,动态地添加负责特定输出的静态成员函数这一方法有效避免了 Dalvik字节码修改丁作中的寄存器分配问题2) “反签名验证”措施:签名校验能够得到当前运行包的签名并与应用官方的 签名值比对,发现异常签名则执行条件语句为了绕过签名验证,签名器利用了 Android的“Master Key”漏洞,将篡改后的Dex文件嵌入原Apk文件插桩器在扫描日标路径下所有Smal i文件的过程中仅维护轻量级的局部上下文 数据(如API的Hash表),兼顾插桩的准确率和效率2.1. 2代码结构提取插桩器还负责搜集应用程序信息、字节码结构数据和包路径统计信息插桩器抽 取字节码的拓扑结构数据,如“包-类-函数”关系和“类-APT"映射,从中提 取出代码片段的标识和依赖,用于准确匹配冃标API、植入污点输岀器。
插桩器 还构建一个包路径森林,即所有源码的路径树的合并(实验选择了 740个应用), 把所有路径和子路径都当作节点保存其引用频次,用于统计被引入的第三方库、 构建针对第三方API分析的插桩策略库2.1. 3 API收集和污染根据API功能和引用频次构建API插桩策略库有2个作用:1)针对冃标应用中可 追踪的API,提供分析建议和插桩策略;2)将GUI视图事件打上污点,当GUI操 作触发相应事件处理函数时,插桩器能通过日志为自动GUI测试创造条件给定一个目标API,插桩器在每个调用指令处插入一个输出器,在运行时输出 APT的标识、实参值等信息例如,表1显示了为DexClassLoader构造函数植 入的输出器第5行是原调用指令,寄存器V3指向一个DexClassLoader实例,寄 存器》、w、w、P2指向4个实参第1—4行是插桩器自动植入的字节码第1 行调用了一个外部类的静态成员方法,输出目标API标识信息,且目标API的编 号为100;第2—4行输出3个实参的值,这3个参数都是字符串类型对GUI视图事件的污染也是插桩器自动执行的通过对视图事件的追踪,动态监 测器能够从日志中识别用户操作触发的GUI事件,从中筛选出有效的用户交互, 允许维护一个GUI自动运行的反馈系统。
表1 DexClassLoader构造函数的污点植入 下载原表2・2多元时间序列数据生成图2为动态监测器的运行图:GUI运行器持续接收捕获器得到的App顶层窗口信 息和口志处理器得到的GUT事件口志,向运行中的设备发送GUT输入最终监测 器将收集的多元时间序列数据转给推测引擎进行App应用行为分析为提取多元时间序列数据,动态监测器负责收集API调用日志和采集GUI状态变 化这一阶段,需将Android Logcat流重定向并解析,同时实时捕获目标应用 的状态通过适当的筛选,监测器可获得Logcat流数据,获得包含插桩器植入的输出器 所输出的被污染调用的追踪数据,包括:1)冃标API的调用记录;2)API调用的 上下文信息,包含污点触发函数的参数值;3)视图事件处理器的调用记录,显 示GUI事件的执行情况监测器用一个较短的时间间隔循环采样当前设备的顶层 窗口,获悉GUI状态的变化每条API追踪数据记录和每个GUI采样都被打上当 前系统时间戳,使得不同的序列数据成为多元的时间序列,合并进入基于多元 时间序列的推测引擎图2动态监测运行示意图 下载原图2. 3应用行为意图推测监测器将APT调用、用户交互、GUT事件和顶层窗口 4个时间序列传入推测引擎, 经过必要的数据预处理,推测引擎建立多元时间序列模型,运行行为模式识别 算法,最终推测应用的行为意图。
2. 3・1不良行为模式定义。
