1、第 49卷 第 9期2023年 9月Computer Engineering 计算机工程基于应用行为划分的 Android恶意应用检测技术林中霖1,时金桥1,王美琪2,3,王学宾2,3,王雨燕1(1.北京邮电大学 网络空间安全学院,北京 100876;2.中国科学院信息工程研究所,北京 100093;3.中国科学院大学 网络空间安全学院,北京 100049)摘要:在目前 Android恶意应用检测技术研究中,单维度应用特征检测技术容易被黑客针对该特征的缺点设计恶意代码,而多维度应用特征检测技术存在对新样本检测准确率低的问题。同时,基于用户交互信息的应用行为特征划分方法被广泛运用在多维度应用特征
2、检测技术上,显著提升对新恶意样本的检测准确率。但是,已有的研究工作都是通过在 UI控件上的文本信息识别用户有意识行为与应用隐匿行为,而该方法在面对简短文本信息时存在识别困难的问题。为此,设计一种基于用户交互信息的应用行为划分算法。通过捕获应用中发生的用户与应用交互行为,获取交互行为发生的时间信息并进行应用行为划分,得到用户有意识行为特征集与应用隐匿行为特征集。设计并构建一种双通道应用分类模型 2ch-LSTM-TCN,同时对用户有意识行为特征集和应用隐匿行为特征集进行学习,并对两者的计算输出统合后进行分类判别。实验结果表明,该算法的准确率和召回率分别达到 94.8%和 93.3%,能够有效区分
3、 Android良性应用和恶意应用,实现一个 Android恶意应用自动化检测原型系统。关键词:Android应用;动态分析;自动化检测;恶意行为;深度学习开放科学(资源服务)标志码(OSID):中文引用格式:林中霖,时金桥,王美琪,等.基于应用行为划分的 Android 恶意应用检测技术 J.计算机工程,2023,49(9):125-136.英文引用格式:LIN Z L,SHI J Q,WANG M Q,et al.Android malware application detection technology based on the application behavior divisi
4、on J.Computer Engineering,2023,49(9):125-136.Android Malware Application Detection Technology Based on the Application Behavior DivisionLIN Zhonglin1,SHI Jinqiao1,WANG Meiqi2,3,WANG Xuebin2,3,WANG Yuyan1(1.School of Cyberspace Security,Beijing University of Posts and Telecommunications,Beijing 10087
5、6,China;2.Institute of Information Engineering,Chinese Academy of Sciences,Beijing 100093,China;3.School of Cyberspace Security,University of Chinese Academy of Sciences,Beijing 100049,China)【Abstract】In the current research on Android malware application detection technology,single-dimensional appl
6、ication feature detection technology is prone to hackers designing malicious code based on the shortcomings of this feature,whereas the problem with multi-dimensional applications is low feature detection accuracy for new samples.Methods for classifying application behavior features based on user in
7、teraction information are widely used in multi-dimensional feature detection applications,significantly improving the detection accuracy of new malicious samples.However,most of the existing research identifies conscious user and hidden application behaviors based on the text information entered thr
8、ough User Interface(UI)controls.However,this method has difficulty in identifying short segments of text information.In this study,an application behavior division algorithm is designed based on user interaction information.By capturing the interaction between user and application,the time informati
9、on on interaction behavior is obtained,whereby the application behavior is divided to obtain the users conscious behavior and applications hidden behavior.A two-channel Long Short-Term Memory Temporal Convolution Network(2ch-LSTM-TCN)application classification model is designed,to simultaneously lea
10、rn the feature sets associated with users conscious and applications hidden behaviors,to discriminate the classification of the two feature sets after integrating the outputs from both calculations.The experimental results show that the accuracy and recall of the proposed algorithm reach 94.8%and 93
11、.3%,基金项目:广东省重点研发计划(2019B010137003)。作者简介:林中霖(1998),男,硕士研究生,主研方向为软件安全;时金桥,教授、博士;王美琪,博士研究生;王学宾,讲师、博士;王雨燕,硕士研究生。收稿日期:2023-02-06 修回日期:2023-03-17 Email:网络空间安全文章编号:1000-3428(2023)09-0125-12 文献标志码:A 中图分类号:TP3912023年 9月 15日Computer Engineering 计算机工程respectively,and can effectively distinguish between Android
12、 benign applications and malware applications,achieving an Android malware application automation detection prototype system.【Key words】Android application;dynamic analysis;automation detection;malicious behavior;deep learningDOI:10.19678/j.issn.1000-3428.00668640概述Android 恶意应用的变异是一个持续的过程。黑客通常会在下一次入
13、侵行动前改进原本的恶意代码,从而产生更隐蔽的恶意应用变体,因此,每年都会 有 大 量 新 的 Android 恶 意 应 用 被 发 现。根 据V-Test数据显示,2020年新出现的 Android恶意应用总数达到 881 万1。智能移动设备的持续发展离不开移动安全研究的支撑,并且需要一个安全的移动设备使用环境。因此,实现快速且准确的 Android恶意应用检测是一项重要的工作。恶意应用是一种不安全的软件或垃圾软件,可能会窃取用户的个人信息或损害用户设备,被分为不同的类别,例如,广告恶意软件、风险软件、短信恶意软件、银行木马等。这些恶意应用通过伪装成正常的良性应用诱使用户安装到移动终端上,进
14、而控制用户的个人终端设备,以实现其非法目的。在目前的 Android恶意应用检测技术研究中,单维度应用特征检测技术存在易被对抗的问题,而多维度应用特征检测技术存在对新样本检测准确率低的问题。同时,基于用户交互信息的应用行为特征划分方法被广泛应用在多维度应用特征检测技术上,能够显著提升对新恶意样本的检测准确率。但是,已有的研究工作都是通过在 UI控件上的文本信息识别用户有意识行为与应用隐匿行为,但是该方法在面对简短文本信息时存在识别困难的问题。针对已有方法在利用用户交互信息时存在的问题,本文设计一种基于用户交互信息的应用行为划分算法。通过从 Java层 API调用中提取用户与应用交互的时间信息并
15、进行应用行为划分,得到用户有意识行为特征集与应用隐匿行为特征集。针对传统机器学习算法模型对时序特征的学习效果较差以及长短时记忆(Long Short-Term Memory,LSTM)和时间卷积网络(Temporal Convolutional Network,TCN)等深度学习模型为单通道模型的问题,本文设计一 种 双 通 道 应 用 分 类 模 型 2ch-LSTM-TCN,通 过LSTM 模型对时序特征进行提取优化,通过 TCN 模型从时序中提取序列排序特征。1相关工作Android 系统架构可以划分为 5 层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和 Linux 内
16、核层。因为 Android 系统具有以上多层结构,所以研究人员在选择特征时可以有多个维度的应用特征进行选择。本节主要对单维度应用特征与多维度应用特征在 Android恶意应用检测领域的研究成果进行介绍。1.1基于单维度应用特征的恶意应用检测关于 Android应用的检测方法,早期的研究工作主要使用单维度应用特征作为检测对象,从静态特征或动态特征的角度,又可以将基于单维度应用特征的恶意应用检测方法分为基于静态单维度应用特征的检测方法和基于动态单维度应用特征的检测方法。1.1.1 基于静态单维度应用特征的检测方法基于静态单维度应用特征的检测方法是通过从apk文件的字符串信息、dex字节码、API以
17、及类名中的某一项特征进行恶意应用检测。HE 等2模仿逆向工程分析恶意样本过程,解析敏感 API 周围的代码片段,由图神经网络识别恶意的代码片段。但是,该方法的人工操作部分占比较大,不利于流程自动化,因 此,无 法 适 用 于 大 规 模 的 恶 意 应 用 检 测。JERBI等3通过静态分析 API序列,根据一组明确定义的演化规则来演化 API 调用序列,以证明应用存在恶意行为。但是,由于仅利用 Java 层 API 作为输入特征,而忽略了 native 层 API,因此恶意应用可以通过 native层的代码逃逸其检测。文献 4-5 利用从apk 文件中提取的字节码进行静态解析并推理组件的行为
18、,通过跟踪应用程序中存在敏感流的源点和汇点,从而检测恶意敏感信息泄露。但是,以上方法无法检测到软件加壳后的恶意字节码,难以检测APT组织的高水平恶意样本。因此,静态检测方法往往具备检测速度快和部署简单的特点,但是其局限性在于难以对抗软件加壳技术和代码混淆技术,无法正确解析恶意代码。1.1.2 基于动态单维度应用特征的检测方法基于动态单维度应用特征的检测方法是指从Android 应用的执行环境中获取底层执行的硬件信息、指令信息以及 API 调用序列中的某一项来进行研究。TANG等6从系统底层收集指令信息,利用指令的特征训练无监督机器学习模型,进而检测被恶意软件感染的程序在执行过程中发生的偏差。但
19、是,该系统的部署会造成系统永久性改变,在部署过程中还需要提权,整体流程比较复杂。TAM 等7设计一个自动基于 VMI的动态分析系统,通过观察和剖析系统调用序列(重构进程间通信 IPC 和远程过程调用 RPC 交互)来重构操作系统和 Android 特定高层行为。由于重构规则需要专家来更新,因此新Android 应用功能或服务的研究需要花费大量时间成本,无法识别新功能和新服务,也就无法分类新的恶 意 Android 应 用。李 舟 军 等8构 建 一 种 运 行 在126第 49卷 第 9期林中霖,时金桥,王美琪,等:基于应用行为划分的 Android恶意应用检测技术Library 层之上的沙盒
20、,通过收集调用 Java 框架层的API调用信息并使用 API信息熵判别恶意应用。但是,该方法无法对抗软件加壳技术,对加壳保护的恶意应用没有检测能力。在应用运行过程中,不同维度的动态特征各有特点,其代表的应用信息也不同,同时具有一定的局限性。为此,若要获得一个高效的基于动态单维度应用特征的恶意应用检测方法,研究人员必须考虑其局限性且备有应对方法。1.2基于多维度应用特征的恶意应用检测为提升检测技术被对抗的难度以及更好地应对新型的恶意样本,研究人员开始研究多维度应用特征组合在恶意应用检测技术上的效果。文献 9 表明利用多维度应用特征能够提高检测 Android 恶意样本的效率,然而,不同维度的应
21、用行为特征可以反映 Android应用程序上不同属性的差异。目前,基于多维度应用特征的恶意应用检测方法分为基于静态多维度应用特征的检测、基于动态多维度应用特征的检测、基于用户交互信息与动态多维度应用特征的检测。1.2.1 基于静态多维度应用特征的检测方法基于静态多维度应用特征的检测方法是指通过apk 文件的字符串信息、dex 字节码、API、包类信息中等多种应用特征进行恶意应用检测。QIU 等10开发一种新的多视图特征智能框架,提取多视图异构特征,包括语义字符串特征、API调用图特征和 smali操作码序列特征,实验结果表明,其性能和效果均优于经典方法 Drebin11。BAI等12提出一种基
22、于多种特征的恶意应用检测框架 FAMD,从样本中提取权限和 Dalvik 操作码序列来构建原始特征集,实验结果表明,组合特征可以有效提高恶意软件在 Drebin数据集上的检测准确率,在恶意软件家族分类上准确 率 可 达 97.38%。文 献13设 计 的 检 测 模 型TSDroid 将 API Level作为描述 API生命周期的时间特征,还将 apk文件大小、dex文件大小以及系统 API的数量作为空间特征,结合 2 类特征集训练恶意应用分类模型。ZHANG 等14提出利用 N-gram 分析和特征哈希化,从应用程序中提取多维度应用特征,通过综合每种维度应用特征的分类结果来判断应用的恶意程
23、度。然而,已有工作对不同维度应用特征组合效果相关的问题缺少关注。因此,组合后多维度应用特征的分类效果还需进一步分析并验证。1.2.2 基于动态多维度应用特征的检测方法基于动态多维度应用特征的检测方法是指利用在应用运行过程中产生的字符串信息、指令序列、API 调用序列、数据流等多种维度的应用特征进行恶意应用检测。文献 15 使用静态多维度应用特征训练出的恶意应用识别准确率达到 97.12%,使用动态多维度应用特征训练出的准确率为 86.18%,然而动静态混合的多维度应用特征训练出的识别准确率为 96.29%。文献 15 选择动静态混合的多维度应用特征的分类效果相较于使用静态的多维度应用特征较差。
24、其原因为选取的静态特征和动态特征并无关联性,而动态特征的检测效果与静态特征相比较差,因此,组合后混合特征的分类准确率受动态特征的影响而下降。因此,部分多维度应用特征在组合后有可能会对算法产生负面效果,多维度应用特征组合需要经过分析后再利用。1.2.3 基于用户交互信息与动态多维度应用特征的检测方法Android 应用是根据用户的需求进行设计与开发的,通过用户与应用的交互信息也可以反向推测用户与应用的行为意图。研究人员从多维度应用特征中抽象出用户行为意图和应用行为意图,以提升对 Android恶意应用检测的准确率。文献 16 根据疑似恶意应用 UI 控件的可疑度对应用软件进行针对性动态测试。UI
25、控件的可疑度是依据 UI控件上的文本信息来设置的,而基于 UI 控件可疑度设计的动态测试方法对恶意样本检测的漏报率为 18.3%。文献 17 对 UI控件所反映应用意图与应用行为之间的关联性进行研究,实验结果表明,UI控件所反映应用意图与应用行为之间的差异用于区分恶意的 Android应用。但是,在不同上下文中 UI 控件的图标和文本可能出现类似的情况,例如,登出界面里的“确认”键和文件发送界面的“确认”键在图标和文本信息上存在相似的情况,导致语义解析结果相同。用户交互信息有利于提高特征集的分类效果,但是基于 UI控件文字信息与动态 多 维 度 应 用 特 征 的 检 测 方 法 还 存 在
26、待 解 决 的问题。2Android恶意应用检测技术2.1总体设计针对已有方法不能充分利用用户交互信息的问题,本文设计一种基于用户交互信息的应用行为划分算法,通过捕获应用中发生的用户与应用交互行为,获取交互行为发生的时间信息,并以此构建反应时长序列,再通过反应时长序列对原始特征集进行应用行为划分,划分出用户有意识行为特征集与应用隐匿行为特征集。本文所提算法将存在用户交互环境下的应用行为特征与不存在交互环境下的应用行为特征进行分离,从而避免两者在模型训练过程中相互干扰,达到提升特征集分类效果的目的。针对用户有意识行为特征集与应用隐匿行为特征集的算法学习问题,本文还设计双通道应用分类模型2ch-L
27、STM-TCN,用于用户有意识行为特征集与应用隐匿行为特征集的训练,在保留特征向量中时序特性的同时充分利用 2 组特征集生成深度学习网络,从而实现对恶意应用的分类。本文基于以上研1272023年 9月 15日Computer Engineering 计算机工程究内容实现 Android恶意应用自动化检测原型系统,实现对恶意应用进行检测的目的。关于本文设计的恶意应用检测系统运行时的平台搭建工作,本文利用 Genymotion 模拟器启动一个 Android 虚拟机,并将其作为 Android 样本的运行环境,虚拟机的设备类型选择 Android 9 系统下的 Redmi Note 7。本 文 的
28、 实 验 平 台 架 构 如 图 1所示。本文借助frida框架来收集应用行为,frida是一个动态代码检测工具包,将 JavaScript代码片段或自定义的库注入到 Android 应用程序中。本文基于 frida的 hook 框架编写了用于采集 Android 应用运行时产生各类应用行为的工具,利用 frida 收集 Android 应用运行时多层次的应用行为信息。在数据采集开始时,本文通过 frida脚本联系 frida-server,并对刚完成安装和启动的目标应用程序进行动态修改,hook其内部的目标函数。随后,通过 frida-server将自动化点击模块的共享库加载到应用程序的内存
29、中,并主动调用自动化点击模块的功能函数设置定时任务。该过程具体步骤如下:1)等待 20 s后开始第一次点击;2)依据第一次点击的时间延后 10 s进行下一次点击(其原因为应用程序在启动后需要一个初始化时间,在初始化过程中大概率会存在触发点击异常的情况);3)让应用程序在运行 180 s后结束运行并卸载;4)从原始数据(json格式的应用行为日志)提取应用行为特征;5)将应用行为特征进行应用行为划分;6)将划分后的特征集输入到检测模型中并得到结果。本文通过用户交互行为(活动行为、用户点击行为、用户输入行为、剪贴板使用行为、权限请求行为等)对目标应用行为(网络传输行为、文件访问行为、6 类系统调用
30、行为)进行划分,将每 10 s 内的目标应用行为统计信息作为一个状态,代表该时段的应用运行状态。最后,本文利用固定预训练迭代 50次得到的 2ch-LSTM-TCN 模型对测试集进行分类任务,检测框架如图 2所示。本文设计的 Android 恶意应用检测方法主要由特征选择、自动化点击、应用分类 3 个阶段完成。2.2特征选择阶段在特征选择过程中,本文需要完成3项任务:1)本文给出所使用的应用行为特征定义;2)选取部分应用行为特征作为模型的输入特征;3)将应用行为特征分为用户有意识行为特征集和应用隐匿行为特征集。2.2.1 特征定义本文将应用行为定义为 Android 应用在运行过程中触发或响应
31、的执行任务。在不同层中,应用行为存在多维度,如在应用层查看某个文件,而在应用框架层则是打开文件对象、获取文件输入流以及读取文件。由于 Android 执行体系存在 5 层结构(应用层、应用框架层、系统运行库、硬件抽象层以及 Linux 内核层),因此程序语义在执行过程中存在多层次表达,而恶意程序包含的恶意代码也会在多个层次中出现恶意行为,并且越底层的恶意行为隐蔽性越高。多层次的应用行为特征为 Android 恶意应用的检测提供多维度特征选择。从开发者的角度分析,图 1实验平台架构Fig.1The architecture of experimental platform图 2Android恶意
32、应用自动检测框架Fig.2Automation detection framework of Android malware application128第 49卷 第 9期林中霖,时金桥,王美琪,等:基于应用行为划分的 Android恶意应用检测技术Android 执行体系的 5 层结构是由 Java 代码、C 语言代码以及机器指令来实现的。对于应用的 Java 代码实现部分,一般称为 Java 层。对于应用的 C 语言代码实现部分,一般称为 native 层。本文通过分析不同层次语义特点,在不同层次中部署不同的 API监控,并利用多维度应用行为描述 Android 应用程序执行过程中的变化
33、差异。不同维度应用行为间的关系如图 3 所示。因此,在特征选择阶段,本文分析 Android 系统中多个层次的应用行为特征,分别是活动行为、用户点击行为、用户输入行为、剪贴板使用行为、权限请求行为、网络传输行为、文件访问行为、系统调用等。依据文献 18 的工作可知,系统调用是直接使用应用的系统调用序列或调用频率作为特征进行分类应用,导致分类结果较差,并由此得出无法依据简单的系统调用序列信息进行高效应用分类的结论。其原因为在目前 Android 市场中上架的应用程序往往具有属于多个行为类的功能,导致其产生的应用行为十分复杂,不同 Android应用产生的系统调用序列可能十分相似。以微信为例,微信
34、将即时通信功能与社交媒体共享结合在一起,同时还集成了语音聊天、购买车票、转账付款、浏览视频、在线购物等功能。恶意的 Android 应用在实际入侵事件中大多伪装成热门应用来诱惑用户安装使用,甚至部分恶意应用为防止被检测到,只是将小段的恶意代码嵌入到正常代码中,恶意代码量占比极少,只需使用一个或多个系统调用即可达到目的。为解决该问题,本文在对选择系统调用特征时先对系统调用进行分类,再去除掉安全的或无法直接对用户信息与设备造成危害的系统调用策略(如字符串处理、终端输入输出、内存分配等函数)。恶意应用在实现对用户终端设备进行控制时需要依靠控制和管理类的系统调用。因此,这 2 类系统调用属于高危系统调
35、用,共有 119 个。本文选取所有的控制和管理类系统调用作为研究对象,并依据功能划分类别,包括进程控制类、文件系统控制类、系统控制类、内存管理类、网络管理类、用户管理类、进程间通信类。应用框架层的行为特征:应用层负责与用户进行直接交互,而该部分的功能是由应用框架层提供的 API 实现。因此,分析应用框架层的 API 调用也可以知悉应用层的用户行为变化。活动切换、用户点击、用户输入、剪贴板使用、权限请求这 5 种行为是由用户的交互行为主动产生的,因此能准确反映用户的行为意图。系统运行库的行为特征:任何 Android应用运行都离不开信息传输,而信息传输方式分为网络传输和本地文件读写 2种。应用框
36、架层的网络传输任务和文件读写任务都是从系统运行库中导出的函数实现的,并且部分恶意应用喜欢在 native层中实现网络传输和文件访问,在监视系统运行库层中的网络传输 和 文 件 访 问 相 关 API 可 以 避 免 漏 报。根 据YERIMA 等19的研究,其中有超过 93%的恶意应用程序需要网络连接。因此,本文选择在系统运行库层研究网络传输行为和文件读写行为。Linux 内核层的行为特征:在 Android 系统中有250 多 个 Linux 内 核 的 系 统 调 用 正 在 被 使 用20。Android 的核心系统服务是基于 Linux 内核,系统的安全性、内存管理、进程管理、网络协议
37、栈、驱动模型等都依赖于 Linux 内核,而 Android 应用获取系统服务是通过系统调用实现的。因此,本文通过选择进程控制类、文件系统控制类、系统控制类、内存管理类、网络管理类、用户管理类、进程间通信类这 7 类系统调用作为研究对象。本文不考虑应用层和硬件抽象层的内容,其原因为应用层对于应用程序执行只是个抽象概念,不涉及程序自身任务的执行过程,而硬件抽象层的接口往往受移动设备硬件改变而变化,不利于实验结果的稳定性。2.2.2 特征筛选本文从活动切换、用户点击、用户文字输入、剪贴板的复制粘贴、权限申请、网络传输、文件访问,以图 3不同维度应用行为间的关系Fig.3The relationsh
38、ip of application behavior in different dimensions1292023年 9月 15日Computer Engineering 计算机工程及 7 类系统调用(进程控制类、文件系统控制类、系统控制类、内存管理类、网络管理类、用户管理类、进程间通信类)中筛选一部分特征作为后续分析的输入特征。为此,本文从行为发生频率的角度,通过实验对这些应用行为进行分析。本文在 API 层选取以 Android 4 大组件和 Intent Filter 作为 API 特征(应用框架层),在 native 层选取文件读写、网络传输,以及 7 类系统调用等作为 API特征(系
39、统运行库层和 Linux内核层),并对 API层和native层的 API特征进行对比。关于实验采集对象,本文选取 500 个恶意样本与 500 个良性样本组成对照组,统计这 2组样本在 180 s内出现与 Android 4大组件相关 API、Intent对象调用、文件读写事件、网络传输事件,以及 7类系统调用的频率,该实验记为实验 1。为方便将 2组样本的频率特征一起表示,本文将分别取样本组中各类行为频率数值的平均值,并用于表示样本组中各类行为的频率特征情况。为了使数据更好的可视化,本文对该轮实验的频率结果进 行 对 数 变 换,实 验 1 的 结 果 分 别 如 图 4 和 图 5所示。
40、从图 4和图 5可以看出,Java层组件发生的调用次数明显少于 native 层的调用特征。虽然 Intent 相关 API 调用频率较高,但是与其他 Java 层组件发生调用次数的差异较大。因此,Java 层的 API 调用频率与 native层的 API调用频率差异较大,并且 Java层的 各 类 调 用 频 率 存 在 明 显 差 异,表 现 并 不 稳 定。native 层的应用行为和 Java 层应用行为并不适合混合使用,而 native 层的应用行为比高层次的 Java 层应用行为更适合作为分类特征。网络管理类的系统调用在应用中被使用的频率较低,因此将其从特征向量中去除。因为活动切
41、换、用户点击、用户文字输入、剪贴板的复制粘贴、权限申请等行为是由用户交互直接产生的,所以它们的调用频率完全取决于人工操作的频率。在本文检测框架中所有的用户交互行为均由自动化点击模块生成的。因此,该类行为的发生频率会根据应用 UI布局设计的不同而不同。本文没有将受 UI 布局设计影响的活动切换、用户点击、用户文字输入、剪贴板的复制粘贴、权限申请等行为特征作为输入特征,而是将网络上下载数据量、文件读写频次以及 6 类系统调用频次作为应用分类的输入特征。2.2.3 特征划分在恶意应用中,应用行为意图与用户行为意图相悖,该特点可以被利用到恶意应用的检测中。但是,应用行为意图无法直接获得,需要分析应用运
42、行过程中产生的应用行为才能得到。为获取用户与应用交互的行为信息,本文收集活动行为、用户点击行为、用户输入行为、剪贴板使用行为、权限请求行为等来自应用框架层的应用行为。在特征提取过程中,本文依据应用响应用户的反应时间(后续本文以“反应时长”代替)来划分用户有意识行为和应用隐匿行为。反应时长代表用户有意识地使用和控制应用程序的时间,在该时间范围内应用程序主要服务于用户的意图,而本文将该部分时间产生的行为定义为用户有意识行为。除反应时长以外的时间,应用在按开发人员设计的程序逻辑自主执行,而本文将在该段时间内应用产生的应用行为定义为应用隐匿行为。依据应用程序服务于用户的理念,本文认为在用户停止使用时(
43、也就是除反应时长之外的时间),应用程序的活动频率应该是较少的,只存在用于维持连接的少量通信活动和管理控制类行为。而依据反应时长划分出的用户交互时间段是由用户与应用交互频率确定的。用户在使用 app时,app上的界面发生改变、某个按钮被点击、某个输入框被输入文字、某段文字信息被剪贴板复制或粘贴等交互行为越频繁,划分出用户交互的时间段就越多。在反应时长内,当用户交互频繁时,网络通信、文件访问和管理控制类的应用行为数量骤增,意味着应用程序可能正在窃取用户的敏感信息。本文试图通过划分出的用户有意识行为特征集和应用隐匿行为特征集来研究恶意应用与良性应用的差异。虽然用户在有意识行为和应用隐匿行为中都可能存
44、在恶意行为,但是划分出的 2 类特征集能够对原有特征集进行信息降噪,减弱 2 类行为特征集在分析时相互干扰的影响。图 4在 Java层中应用行为频率统计Fig.4Application behavior frequency statistics in Java layer图 5在 native层中应用行为频率统计Fig.5Application behavior frequency statistics in native layer130第 49卷 第 9期林中霖,时金桥,王美琪,等:基于应用行为划分的 Android恶意应用检测技术反应时长数值的确定是应用行为划分的关键问题。随着硬件技术的
45、进步,应用的执行速率也越来越快,大部分应用功能都可以在几秒的时间区间内做出响应。因此,本文以 ms 为单位设置反应时长,按固定梯度增加反应时长并观察划分后特征集的分类效果,最后选取具有分类效果最佳的反应时长数值作为最终的确定数值。最后,本文将收集到的活动行为、用户点击、剪切板使用、输入框输入、权限请求等应用框架层应用行为的发生时间点加上 n ms的反应时长后得到一个时间段,并将所有时段都加到一个集合中以得到应用响应时段集合。此外,本文在 Android应用刚启动的前 10 s 内,启动过程产生的应用行为看作是由用户启动 app 产生的,实际上该过程以初始化操作为主,应用主动发起的初始化任务较多
46、。因此,本文没有将该时段内的应用行为分为用户有意识行为。因为目前应用启动界面普遍默认停留的时间为 10 s左右(用户不点击“跳过”按钮时所停留的时间),所以本文从 Android 应用开始运行 10 s 后启动自动化点击模块,并依据反应时长分为用户有意识行为和应用隐匿行为,而前 10 s 的应用行为都属于应用隐匿行为。算法 1 用户有意识行为特征集和应用隐匿行为特征集的划分输入 捕获的应用行为集合 lst输出 记录用户有意识行为集合 tmpUserLst和记录应用隐匿行为集合 tmpappLst1.初始化临时用户有意识行为的字典 tmpUserLst NULL2.初始化临时应用隐匿行为的字典
47、tmpappLst NULL3.flag True4.i 05.WHILE i 18 DO6.FOR obj IN lst DO7.content obj的 content成员8.curTime content Time9.IF flag THEN10.tmpTime curTime11.firstTime curTime12.flag False13.IF tmpTime curTime contentTime or(userTime+1 000)content Time THEN18.tmpappjson obj.type +=119.ELSE20.tmpUserjson obj.type
48、 +=121.IF firstTime+1801 000 tmpTime THEN22.BREAK23.tmpUserList=tmpUserList+由 tmpUserjson.values()组成的 list24.tmpappList=tmpappList+由 tmpappjson.values()组成的 list25.tmpTime=tmpTime+1 0001026.i=i+1本文设计原来表征每个 Android 应用的特征向量是一条由 18个应用行为状态段连接得到的序列,每个应用行为状态段用于表示在 10 s时间间隔内应用行为的执行状态,而每个应用行为状态段用 10个字段表示,分别是
49、网络发送字节数、网络接收字节数、文件读取次数、文件写入次数,以及 6 类系统调用事件发生次数。本文将每 10 s的时间段看作一个应用行为执行状态,每个状态由以上 10个字段来描述。最终,本文设计的特征向量是由 18个时间段表示的状态按顺序拼接在一起组成的应用行为状态序列,用于描述 Android 应用在 180 s 内的应用行为执行状态变化。2.3基于视图树的自动化点击在动态收集特征的方法中,为确保在应用行为收集过程中尽可能多地覆盖应用功能,并产生足够用于分类模型训练的特征数量,研究人员在应用运行过程中使用如 Monkey自动化工具模拟用户点击。但是,该类自动化工具在使用前都需要编写定制化脚本
50、,对于大规模的应用测试实验十分不便。为了方便本文应用行为采集工作,本文基于视图树设计与实现一个自动化点击模块。在 Android 应用程序中,View 是绘制在应用页面上能与用户交互的视图对象,所有的用户界面元素都是由 View 对象和 ViewGroup 对象构成的,如Button按钮类是由 View类继承得到的。本文在应用启 动 之 初 获 取 应 用 的 Top Activity,之 后 获 取 该Activity中的视图 View。通过顶层视图的 View 对象来 逐 层 向 下 遍 历,获 取 子 视 图 View 对 象。ViewGroup 对象是指代一个 View 集合,而移动应