一种基于传感器的Android应用行为分析技术

2021-01-28 03:20频,涛,磊,
关键词:调用时序加速度

杨 频, 冉 涛, 张 磊, 刘 易

(四川大学网络空间安全学院, 成都 610064)

1 引 言

Android平台凭借其开放性和生态圈的丰富多样性,吸引了大量的开发者,也包括恶意攻击者.由于现有的安卓系统没有统一的入口,很多恶意软件能够轻易地绕过官方市场,进入普通用户的设备.因此,针对恶意软件的检测一直是安全领域的一个重要研究.

大多数恶意软件主要通过调用系统的特定API来获取用户信息.因此,目前识别恶意软件的方法主要以API调用分析为主,刘凯等人[1]以API调用为基础,提出一种基于图卷积网络的恶意代码聚类检测方法.赵翠镕等人[2]通过提取真机的API序列进行恶意代码检测从而避免反虚拟机检测.Zhang等人[3]则是通过抽象API调用产生的行为语义来实现恶意代码检测.Jung等人[4]则是通过构建良性与恶性API列表来提高检测准确度.还有其他检测方法:例如,Utku等人[5]实现了一个基于权限的多层感知系统用于检测恶意软件.刘晓建等[6]、葛文麒等人[7]通过对应用数据流进行分析,提取特征值来识别应用行为.AppIntent[8]提出一种基于数据转移来判断应用程序是否可疑的方法.目前已有研究表明应用行为模式分析[9-10]比数据流分析更能揭示应用存在的恶意性.目前的研究都没有考虑到设备状态这一技术点,但是设备的实时状态在反映应用行为恶意性这一点有更加明显迅速的优势.

为了弥补大多数基于API的行为分析研究与设备外部状态割裂造成的研究不准确,本文提出一种基于传感器的应用行为分析方法,该方法通过生成多元时序:设备外部状态时序、应用API调用时序和当前系统GUI首屏时序,基于多元时序数据提出一种恶意行为识别算法来识别应用的恶意性.本文主要贡献如下:(1) 设计并实现一种推算设备实时状态的算法,能利用传感器数据计算出当前设备的外部状态;(2) 设计了一种Android平台下高效准确的打桩方法,能通过该方法获取API调用的时序数据;(3) 提出一种分析应用行为的三元时序模型,以及基于该模型数据的恶意行为识别算法,并通过典型案例验证了模型的准确性.

2 基于传感器的应用行为识别技术

相对于常规行为分析的静态分析模块用来对需要分析的APK进行打桩外,本文还有采集器模块用来采集传感器数据用于计算设备外部状态、采集GUI首屏序列用于得出当前前台运行的程序,以及分析模块用于根据所得数据分析该应用是否恶意行为应用,得到如图1的技术流程图.

静态分析模块实现静态分析和打桩,通过逆向APK得出smali文件,并对敏感的API调用点标记输出应用调用该API的记录,再重新打包APK.采集器模块通过传感器采集数据,并实时分析数据生成手机状态时序得到手机的实时状态.GUI首屏采集通过实时采集系统首屏APP生成交互时序,用来查看当前的前台应用是否目标应用.恶意行为分析器,基于前面得到的数据生成多元时间序列模型,用于识别应用的恶意行为.

图1 基于传感器的应用识别技术流程

2.1 传感器数据采集与分析

为了能够计算出设备运行时的平放、翻转、手持、静止等外部状态,本文设计了一种计算设备实时状态的算法,该算法通过对加速度传感器的数据进行分析,最后,计算出当前设备处于的状态.例如当俯仰角角度为-180°左右,此时如果设备移动加速度小于1,通过上述算法就能推断出此时设备处于反扣静止状态.所以需要对传感器中的加速度传感器数据进行采集.

Android系统定义的传感器框架使用3轴坐标系来表示数据值.对于大多数传感器,当设备处于默认屏幕方向时,会相对于设备屏幕来定义坐标系(如图2).当设备处于默认屏幕方向时,X轴为水平方向右延伸,Y轴为垂直方向向上延伸,Z轴为垂直于屏幕向外延伸.

由于人体受脉搏跳动影响,在人处于静止不动状态时,捕获到的移动加速度传感器数值基本都是大于1.通过移动加速度的大小可以判断此时设备是处于静止的平面,还是在用户身上.移动加速度公式如下式.

(1)

其中,speed是我们要求的移动加速度,dx、dy、dz分别为加速度沿着图2坐标系的分量在采集时间t(单位:ms)间隔内的增量.

图2 Android传感器坐标系

设备状态计算算法思路:首先根据加速度在各方向的绝对值大小确定设备当前主要操作,然后,根据对应增量来判断具体情况.例如,当|z|>|y|&&|z|>|x|时,再根据z此时的值是否大于0来判断设备是正面向上还是正面向下.

2.2 应用静态分析及打桩

目前的静态打桩主要是针对需要分析的应用进行逆向分析,然后得到二进制代码插入可执行代码段输出自己需要的内容.由于Android应用还包含了大量的资源文件以及一些配置文件,所以在打桩之后会有一个打包过程,打包的同时会对包进行签名.Android对于APK的签名有着严格的验证,当发现当前签名包与官方签名值不一致的时候,就会进行异常签名处理.文献[11]提出利用Android的“Master Key”漏洞将修改过后的Dex文件植入原Apk文件.鉴于本文的目的仅仅是为了分析应用的行为,所以这里直接采用第三方签名,虽然不同于官方签名,但是能保证APK正常运行,也能达到分析应用行为的目的.

图3展示了针对APK静态分析以及打桩的具体流程,通过逆向工具对需要追踪的APK进行解包,反编译生成Smali文件,分析Smali文件在需要进行追踪的位置进行污点日志输出,然后重新打包并签名生成可执行APK.

为了得到APK对应的二进制运行文件,需要用分析工具将APK解码,分析工具一般使用Apktool,它可以将APK解码成资源文件形式,也能将解码后的资源文件重新打包成APK.打桩器主要用于向Smali文件中添加Smali语法的Log方法,用于输出对应API调用的日志记录.

图3 静态分析与打桩流程图

为更加高效地追踪API,本文提出一种结合AndroidManifest配置文件的高效打桩方法.该方法通过提取配置文件中的Uses-Permission权限列表,然后通过分析权限列表针对性的打桩.相对于根据敏感API普遍撒网式的打桩,它根据实际使用权限对应的API进行打桩,更加高效明确.

打桩语法如下所示.

1) const-stringv0, "u8c03u7528u6444"

2) invoke-static{v1,v0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

第一行定义了要输出的日志内容.引号内的Unicode内容是日志里面输出的内容,可以根据要记录的内容自定义,放在寄存器v0里面.第二行执行android系统方法Log方法,用于打印日志信息.v1寄存器是tag用于查看日志时快速区分,一般是使用应用的包名.当需要记录某个API调用的时候只需要在调用指令处,添加以上内容就能在调用该API的时候输出对应的日志.

2.3 GUI首屏时序获取

应用是否处在与用户交互的状态,对于判断其行为是否具有恶意性是一个很重要的指标.GUI首屏数据能很好地反映应用是否处于与用户交互状态.为了方便后期分析应用行为,本文在采集GUI首屏数据的时候,加上了时间戳形成了时序序列.GUI首屏也就是应用栈栈顶APP,更细分就是栈顶APP的对应的Activity.对于移动应用来说,除了在跟用户直接交互之外,其他时候都判定为后台时刻.本文把首屏时序作为识别恶意行为的一个非常重要的参考因子,因为绝大多数恶意行为都是在后台悄悄进行的.

Android5.0以前可以通过ActivityManager获取位于栈顶的应用包名,但是5.0以后Google对此做了限制,只允许获取桌面包名和自身应用的包名.因此本文通过UsageStatsManager来获取栈顶应用包名.UsageStatsManager是使用情况记录类,通过它可以获取应用的使用情况,应用在前台的时间、次数等.

2.4 恶意行为分析器

恶意行为分析器主要通过分析传入的首屏记录、API调用记录和设备状态记录来确定应用行为的恶意性.每条记录在输出的时候都会标记当前系统时间戳,这就使得不相关的数据能通过时间线合并成一个多元时间序列,作为最终分析的数据来源.

如图4所示,本来互不相关的设备外部状态、API调用记录和GUI首屏通过时间相互之间联系在一起有了交集E.

图4 多元时序原理

2.4.1 应用行为恶意性分类 根据彭国军等人[12]的研究表明,android恶意软件特征主要体现在其恶意负载上,主要有特权提升、远程控制、话费吸取、隐私窃取和自我保护这5类,具体如下.

1) 特权提升:通过利用android漏洞,突破android的权限机制和沙盒机制,允许恶意软件进行特权操作;

2) 远程控制:远程控制信息回传,更新本地恶意功能等;

3) 话费吸取:通过手机的短信功能,偷偷利用短信功能定制服务并从中牟利;

4) 隐私窃取:获取用户的各种隐私信息,例如通讯录,定位,通话录音,背景录音,拍照,通话记录等,这些信息多用于进行进一步攻击的前奏;

5) 自我保护:Android恶意软件开始采用商业级代码保护技术,造成自动化静态分析失败,人工反汇编反编译困难,启发式检测、已知特征检测等难度加大.

2.4.2 恶意行为识别 为了能够更加准确地识别应用行为的恶意性,在推断之前需要进行时序数据的过滤.根据时序数据我们可以分为Wa:API调用时序,Wg: GUI时序,Wp:设备状态时序.最终需要得到We:应用事件时序.We应该是3个序列的交集:

We=Wa∩Wg∩Wp

(2)

首先,我们根据对应应用的包名在Wa里面获取应用的API调用序列,过滤掉噪声数据;然后,根据每次API调用记录的时间,在Wg和Wp里面过滤掉其他的噪声数据;最后,就得到了We用于识别应用行为的恶意性.

在进行应用行为识别的时候一般有以下两个着手点,一种是根据需要监控的API着手,然后通过We得到的数据并结合设备的行为推断当前应用行为的恶意性.一种是根据设备行为,先找出最能辨别出应用高恶意性的时段(这里是静止状态),然后根据这个时间段在We里面查找应用是否做出了高敏感的API调用.两种方法各有优点,可以根据实际需求在分析的过程中灵活选择.

3 实验设计与结果分析

3.1 实验设计

本文实验环境:红米note5a,Android7.0,采集应用授予传感器权限,不限制后台用电,未root.不限制后台用电是防止采集应用被系统回收,不能正常采集数据.

(a)完全静止桌面

为了评估更加的准确,本文首先验证了人手持设备靠桌静止下的设备加速度和设备放在静止的桌面上的设备加速度如图5,由于脉搏跳动的影响,人始终都在振动,所以手持设备如图5(b)就算人完全保持静止状态,设备得到的加速度还是要大于设备处于完全静止的桌面图5(a).然后通过典型案例验证了模型对恶意应用识别的准确性,以及一个黑盒测试验证模型的识别能力.

3.2 实验结果

为验证本文模型识别的准确性,本文从Drebin[13]恶意样本库提取出了Установщик,在静态打桩阶段分析其主要权限请求里面包括读取联系人,发短信等敏感API操作.从而判断其恶意行为可能是利用短信进行的扣费行为,所以在验证本文提出方法的可行性时,主要是针对短信调用API打桩,然后在经过一段时间的日志抓取之后,从中得到图6的行为记录,图中各顶点与交点代表右边对应的事件,其中设备明显处于闲置状态,手机屏幕向下翻转,首屏APP是小米自带的桌面管理器.然后,能明显看到Установщик发送了一条短信.以上证明本文系统能够准确地识别应用的恶意行为.

接着本文以聚会相片一款伪装成相片管理的恶意应用作为行为分析对象,通过本文提出的基于权限高效打桩方法,对聚会相片APP进行打桩并运行采集行为,发现这款应用安装之后桌面并不显示其图标,在其运行过程中采集到其行为如图7,发现该应用在非人为操作情况下会向固定手机号码和邮箱发送信息对应图最高顶点和次高顶点,根据该异常行为,最后,调试发现该应用在手机接收短信之后拦截短信,并发送到其指定邮箱和手机.以上实验证明本文提出的方法能有效地识别恶意行为,方便安全人员调试.

最后,为验证模型能识别未知恶意行为,本文采用黑盒测试的方法来验证识别未知行为的能力,在不知道样本具体恶意行为的前提下,对样本进行行为分析,然后得到图8所示行为图,根据行为图我们得到以下分析:传感器数据表明此时设备处于正面向下静止状态,17点27分4秒应用调用了摄像头,如图8中次高顶点显示,然后几秒之后应用产生了一次网络请求,图8最高顶点显示,而且这些操作都是在后台完成,图中首屏显示为小米桌面管理.根据该行分析为有理由认为该样本具有恶意性,因为在无人操作的情况下,应用在后台自动拍照,并进行了网络请求,其行为包含恶意行为中的第2条远程控制和第4条隐私窃取.

图6 Установщик行为分析图

图7 聚会相片行为分析图

图8 黑盒测试行为分析图

3.3 实验对比

为了更直观地对比本方法的功能,本文选用了Mobile-Security-Framework(MobSF)[14]一个使用python实现的恶意样本分析平台,选择其主要原因是MobSF是基于经典开源分析平台Androguard[15]实现,并在其基础上增加了新版本系统的支持,以及一些优化.选择的测试样本是从Drebin恶意样本库中选取的一款短信类恶意软件Установщик.通过MobSF分析该样本得到的结果图9所示,以下主要展示了其基础信息、安全分析以及恶意性分析模块的截图.通过分析结果我们能看到,MobSF会对APP有一个比较全面的分析,结果会罗列出APP的基础信息和各种组件数量,以及用到的一些权限,并针对一些高风险的权限标记dangerous,然后在安全分析以及恶意分析里面仅仅给出了可能存在高风险的操作,并不能捕获到具体的恶意行为.MobSF并未像本文提出的基于传感器的应用行为识别那样,能直接捕获到应用的恶意行为如图6,并且本文提出的方法捕获到的行为能作为有力的取证分析切入点或者证据.两者主要对比如表1所示.

图9 MobSF下Установщик分析结果

表1 本文方案与MobSF对比

4 结 论

本文针对应用恶意行为识别提出一种基于传感器的应用行为识别方法.针对目前API识别都忽略的设备状态问题,设计了一个基于传感器的设备状态时序、API使用时序和GUI首屏时序的三元时序模型,以及一个基于该模型的恶意行为识别器,用于识别应用行为的恶意性.通过典型案例验证了模型对恶意应用识别的准确性,利用黑盒测试验证模型的识别能力,从而证明该方法的有效性,最后通过一个对比实验,演示了本文方法相对于现有方法更加直观更加高效.

猜你喜欢
调用时序加速度
顾及多种弛豫模型的GNSS坐标时序分析软件GTSA
“鳖”不住了!从26元/斤飙至38元/斤,2022年甲鱼能否再跑出“加速度”?
清明
基于GEE平台与Sentinel-NDVI时序数据江汉平原种植模式提取
你不能把整个春天都搬到冬天来
系统虚拟化环境下客户机系统调用信息捕获与分析①
创新,动能转换的“加速度”
死亡加速度
向心加速度学习一卡通
利用RFC技术实现SAP系统接口通信