基于函数调用图分析的NGB TVOS恶意应用检测方法

2019-06-01 07:20王继刚李媛媛高珍祯
北京交通大学学报 2019年2期
关键词:应用程序编码矩阵

王继刚,李媛媛,高珍祯,王 伟

(1.中兴通讯股份有限公司,成都 610041;2.北京交通大学 智能交通数据安全与隐私保护技术北京市重点实验室,北京 100044)

近些年来,智能电视呈爆发式增长,进入了越来越多的家庭.操作系统作为智能电视的关键性基础工作,与智能电视的安全保障密切相关.广电总局带头研发了一套应用于网络电视的操作系统,NGB TVOS(TVOS)[1].TVOS基于Linux系统,具有自主知识产权、可管可控、安全高效、开放兼容等特点.TVOS利用现有的应用资源为智能电视创建电视应用生态系统,引入电视应用商店.目前,主流的第三方独立智能电视应用市场主要有:欢视商店、奇珀市场、当贝市场等.其中欢视商店是我国广电行业第一个正式商用的TVOS平台应用商店.

目前,国内相关研究人员针对TVOS系统做了诸多研究和努力.文献[2]对TVOS的系统架构进行深入分析,并总结TVOS系统的主要技术亮点.文献[3]介绍了TVOS应用对底层组件的调用,分析了应用框架层中API的封装模型.文献[4]分析了TVOS组件层的组件封装模型,阐述了组件内部的构成与组件内外部间的通信机制.文献[5]对TVOS智能电视操作系统的安全机制、安全体系架构加以分析论述,提出了广电智能终端操作系统自身的安全模型及技术实现方案.除了对TVOS的系统架构进行分析,还有部分针对TVOS应用的研究.文献[6]对TVOS应用的数字签名进行了介绍.TVOS中的应用采用多种数字签名方法确保自身的完整性、可用性与安全性,未经认证和授权的TVOS应用能被有效的防止安装.文献[7]阐述了在TVOS上开展的终端应用管理的可行性及应用开发的一些探索.文献[8]围绕TVOS所支撑的各类服务和应用介绍了智能电视应用的分类情况,并重点探讨了几类典型智能电视应用的技术特点和主要功能.

智能电视领域刚刚兴起,目前针对智能电视各方面的研究也相对较少.但TVOS系统与Android系统存在相似之处,且TVOS应用与Android移动终端应用也存在一定的联系,因此,Android移动终端恶意应用检测对TVOS恶意应用检测具有一定的借鉴意义.文献[9-10]提取Android应用的字符串类特征用于Android恶意应用检测.文献[11]采用多类字符串特征和应用的图结构特征相结合的方法对Android恶意应用进行检测.文献[12-15]采用的Android恶意应用检测的特征、特征筛选的方法等对于TVOS应用安全管理具有借鉴意义.

随着智能电视领域的不断发展,未来TVOS应用市场中必将会大量涌现各类TVOS应用,应用的功能也将日益复杂,这些变化会给TVOS的应用管理和系统安全带来新的挑战.本文作者对TVOS应用的行为进行分析,对TVOS恶意应用的检测方法展开研究.选取TVOS应用的函数调用图作为分析对象,采用基于核函数计算算法和基于图相似度算法的函数调用图分析方法来提取特征,采用机器学习算法对TVOS应用进行检测.

1 TVOS与Android系统对比分析

1.1 TVOS与Android系统架构对比

TVOS采用分层结构,其架构从上到下分别为应用程序层、应用框架层、执行环境层、功能组件层、硬件抽象层和内核层.与Android类似,TVOS中Java应用的执行环境是在Linux内核上选用了开源的Dalvik虚拟机,并在Dalvik虚拟机上为Java应用搭建了应用框架层.其次,TVOS也提供了部分与Android相同的系统服务.

1.1.1 内置数字电视业务模块

TVOS是专业的智能电视操作系统.其应用框架层、组件层和内核层均内置了数字电视业务功能的模块.数字电视业务功能成为TVOS必不可少的一部分.组件层的DTV组件承担大部分数字电视业务功能,由DTV服务端实现其核心能力,DTV客户端提供接口,内核层的Binder用来实现服务端和客户端驱动通信.应用框架层实现了DTV Java A-PI以方便Java应用调用DTV组件.

1.1.2 资源管理框架

为了提高系统资源的管理效率,提升各类应用的服务质量与速度,TVOS的应用框架层、组件层和内核层中均内置了资源管理模块,构成了全局的资源管理框架.其能够实现的功能为:1)对系统资源开展实时监控,根据需求与情况分配资源,及时更新资源信息,系统资源过载或资源分配后进行通告;2)获取应用的状态列表,负责应用调度模块,若有应用加入时进行通告;3)策略库更新;4)充当数据库的接口等.

1.1.3 Java应用框架的“垫片”机制

垫片机制是指为了适应不同的智能操作系统,在应用框架层对功能组件进行重新组合封装.垫片机制在不改变底层功能组件的核心能力的基础上,能够兼容与支持其他操作系统的应用.

1.1.4 TVM环境实现对J2ME应用的支持

TVOS采用Dalvik虚拟机作为Java应用的执行环境.Dalvik虚拟机的优点是可让每个应用在单独的Dalvik虚拟机中运行,多个虚拟机同时运行.即使单个应用崩溃也不影响其他应用的正常运行,体现其良好的隔离性.然而,TVOS的部分功能依赖于Sun J2ME规范,广电运营商前期也开发了很多基于Sun J2ME规范的Java应用.为了利用广电运营商前期的开发成果同时吸纳Dalvik虚拟机的优点,TVOS引入了TVM(Television Virtual Machine),其原理是对Dalvik虚拟机进行如下改造:在Dalvik的核心Java库中补充了J2ME的相关库;添加可将J2ME应用的.jar包转换为.apk包的转换工具.

1.1.5 安全管理框架

TVOS引入安全管理框架,由每层的安全管理模块共同组成.安全管理框架将TVOS系统分为传统的软件执行环境(Rich Execution Environment,REE)和安全执行环境(Trusted Execution Environment,TEE)两部分.REE和TEE之间存在硬件隔离,只能通过系统提供的通信接口交换信息,同时规定在REE侧无法访问TEE侧的数据.TEE侧有安全管理模块,可为安全业务提供基础软件服务,每个安全业务在TEE侧有一个对应的应用负责相关安全数据的处理.安全管理框架实现的主要功能有:存储、处理、传输需要保护的敏感数据;在底层硬件中添加安全芯片防止二次开发与刷机ROOT等操作;采取验证字节码、校验底层软件等方式实现系统的安全管理.

1.1.6 Java与Web并重

Java应用侧重于逻辑运算,具有良好的跨平台通用性.Web应用侧重于信息呈现.为了既能直接使用现有的Java应用,又能更好地兼容日益增长的Web应用,TVOS 选择了“以 Web 应用为发展主线,发展初期同时支持 Java 和 Web 应用”的发展策略,提供了两种执行环境,分别用于运行Java应用与Web应用,且在系统架构中二者并重.

1.2 TVOS应用与Android应用的对比

现有的TVOS应用包括Java应用和Web应用两类,其中,Java应用与Android应用类似,应用安装包的格式为.apk.

1.2.1 权限对比

权限限制了应用程序对某些系统资源访问和对某些组件进行调用.通过应用申请权限的情况可以看出Android应用和TVOS应用在功能方面的侧重点.表1为Android应用使用而TVOS应用不使用的部分权限及这些权限对应的功能.

表1 Android应用使用而TVOS应用不使用的部分权限

表1中主要有体感,实时定位,读取或写入通话记录,短信通知与接收,显示推送,指纹识别等.传统电视体积较大,不易挪动,也不能随身携带.上述功能的缺少与电视的常规特性相符.

表2为Android应用不使用而TVOS应用使用的部分权限.这些权限对应的功能主要与视频播放、搜索电视信号、本地视频上传与播放,电视节目回看等功能相关.可以看出,智能电视保留并优化了传统电视的大部分功能,使用户不但可以观看电视直播,也可以不用外接设备而播放自己的本地视频,为用户带来更良好的用户体验.

表2 TVOS应用使用而Android 应用不使用的部分权限Tab.2 Partial permissions Android applications apply but TVOS applications do not apply

1.2.2 硬件对比

硬件主要指应用程序申请的某种硬件功能,包括摄像头、传感器等,在一定程度上也可以反映出应用的主要功能.表3为TVOS应用申请的部分硬件功能.

表3 TVOS应用申请的部分硬件

可以看出TVOS应用申请的硬件主要实现以下功能:网络连接、蓝牙功能、USB功能、音频输出、摄影拍照、基本触屏功能等.对于Android应用而言,android.hardware.gamepad硬件功能的重要性相对较低,但是对于TVOS应用是一项重要的硬件功能.电视机遥控器让用户无需触碰电视机即可操控开关机及调频道等功能,已成为电视机必不可少的一部分.

表4为Android应用使用而TVOS应用不使用的部分硬件功能.对应的主要功能有:指纹识别、温度气压湿度计量、实时定位、重力感应、多点触屏功能、相机高级功能、计步等.TVOS应用功能相对简单主要归因于如下几特征:电视屏幕大,无需高级的多点触屏功能;电视多数时间处于室内,获取环境情况主要依赖于网络信息;多数电视体积较大、不易移动,无法随身携带,无需计步等功能,所以TVOS应用中不包含此类特征.

表4 Android应用使用而TVOS 应用不使用的部分硬件Tab.4 Partial hardware TVOS applications apply but Android applications do not apply

2 TVOS应用的检测框架及算法

2.1 系统框架设计

1.2节将TVOS应用与Android移动设备应用进行了对比分析.TVOS应用由于载体体积大、难移动、应用功能设计侧重点不同等特性,目前TVOS应用的功能相对简单.TVOS应用中很多权限和硬件调用均不涉及,因此采用传统的用于Android恶意应用静态检测的特征如权限、硬件调用等对TVOS应用进行检测可能无法准确的刻画应用的行为.相比传统的静态特征,函数调用图可以弥补权限、API调用频率等特征在TVOS应用程序上表征能力不足的缺点,且它对混淆技术具有一定的抵抗能力.因此本文采用函数调用图作为TVOS恶意应用检测特征.系统流程如图1所示.

图1 系统流程图Fig.1 Flow chart of system

1)样本采集与处理:本文采用的应用样本集由正常应用和恶意应用两部分构成.正常TVOS应用收集自欢视市场、当贝市场和奇珀市场.恶意TVOS应用来源于多种渠道.标定应用的方法为:将TVOS应用样本上传至Virus Total网站进行扫描,当所有杀毒软件均认为该应用为正常应用才视其为正常应用,超过三分之二的软件均认为该应用为恶意应用,则视其为恶意应用,否则弃之不用.

2)函数调用图的提取:采用静态分析的方法,利用数据流分析工具Flowdroid提供的功能获取函数调用图.

3)函数调用图的处理:本文采用两种方式对函数调用图进行处理,一种方式是图核函数计算:通过解析函数节点及其邻居节点的关系,对每个函数节点进行编码及编码压缩操作,计算两两应用之间的核函数,最终获得核函数矩阵.另一种方式是计算图相似度:通过图相似度算法计算两两应用之间的函数调用图的相似度,最终获得相似度矩阵.

4)恶意应用检测:将3)中得到的矩阵进行处理,得到特征矩阵,利用SVM、KNN、RF 3种算法进行模型训练,使用训练得到的模型对测试样本进行检测.

2.2 函数调用图

函数调用图能够准确地描述应用程序内部的函数调用关系[16].由于TVOS系统的特点,TVOS应用对许多用于Android恶意应用检测的特征均不涉及,但为实现程序的某些功能,TVOS应用会调用相应的API函数,这类函数会在应用的函数调用图中出现,且根据TVOS应用调用敏感API类包中的函数情况反映出TVOS应用程序是否涉及恶意行为;其次,基于恶意的TVOS应用一般具有相似的行为,正常的TVOS应用行为多样化的规律,将应用函数调用图之间的相似性作为恶意应用检测的特征,可达到对TVOS恶意应用进行检测的目的.

函数调用图一般由有向图G=表示,V代表图的节点集,每个函数都用一个节点表示,包括TVOS系统的库函数及开发人员自定义的函数.E代表图的有向边集,包含了图中的所有调用关系,即E⊆V×V,且对∀(u,v)∈V,∃(u,v)∈E.如果存在一条,由节点u指向节点v的有向边,则为节点u表示的函数调用了节点v表示的函数.Flowdroid是目前被广泛使用的应用程序数据流分析工具,它提供了利用组件生命周期生成精确的函数调用图的功能[17],本文通过调用Flowdroid的相关函数生成应用程序的函数调用图,如图2所示.

图2 函数调用图Fig.2 Function call graph

2.3 关键算法

2.3.1 函数调用图处理算法

1)函数调用图核函数计算.其主要思想是通过解析函数节点及其邻居节点的关系,对每个函数节点进行编码及编码压缩操作,计算两两应用之间的核函数,最终获得核函数矩阵.在生成函数调用图之后,需要对函数调用图中所有的函数节点进行编码.为达到检测TVOS恶意应用的目的,节点信息要能反映出该函数是否可能涉及恶意行为.为此,本文采取了敏感API作为生成节点编码的要素.敏感API是指与权限相对应的API函数,若应用程序申请的权限被授予,TVOS应用会通过权限调用相应的API函数以达到访问敏感资源的目的.因此,利用敏感API为要素生成的节点编码可以在一定程度上反映出应用的敏感行为.如表5所示,选取了19个敏感API的类包作为函数节点的编码要素.若函数调用了指定敏感API类包中的函数,则编码对应位置1,否则置0,每个函数被编码成19位的向量[18].

图的节点编码不仅要考虑图中节点函数所包含的信息,而且需要考虑其拓扑结构.因此要将图中结点信息与其邻居节点的结构信息融合.文献[19]在构造核函数时使用压缩函数生成更新编码.压缩函数的主要思想为:先将一个节点的初始编码左旋一位,然后与其所有的直接相连节点的初始编码进行异或,获得该节点的更新编码.压缩函数的公式如下

表5 包前缀对应的编码位

f(v)=ROT1(l(v))⊕

(1)

式中:⊕为异或操作;ROT1表示了将该编码左旋一位;vi节点表示v的邻居节点.更新节点编码反映了节点函数的子结构信息,将两个应用包含的所有非全零节点的编码两两比对,若两个节点的编码相同,则认为这两个节点具有相似的子结构信息.核函数公式计算如下

(2)

式中:c为两个应用包含的所有非全零的相同节点编码的数目;na,nb分别为两个应用的节点个数;k值越大,两个应用的行为越相似,相似度越高.计算所有应用之间的k值,即可得到核函数矩阵M,Mij表示第i个应用程序与第j个应用的核函数.将核函数矩阵作为机器学习算法的输入,生成训练模型.

2)函数调用图的相似度算法.其原理为通过判断两个函数调用图是否同构,计算两个图的相似度,并形成相似度矩阵,用于预测应用程序是否为恶意应用.

由于命名习惯的不同,不同应用程序中功能大体一致的函数往往具有不同的函数名.将这样的函数看作是不同的函数对于计算函数调用图相似度是不利的.因而要将函数根据其功能进行重命名.函数调用图的生成依靠应用程序的smali文件,每个smali文件都是一个类,每个类中的函数都包含一系列的操作码,这些操作码代表的功能和出现顺序可以一定程度上反映函数的功能.因此,利用操作码为函数重命名可实现函数的功能命名.具体的重命名过程如下:

1)编程遍历smali文件夹下所有smali文件,根据smali文件中的method关键字获取函数名,写入指定文件中.如在应用的一个smali文件中包含一个constructor()方法.

2)遍历函数中的操作码,根据操作码与命名形式之间的对应关系,得出函数的功能命名:在constructor()方法中有4个操作码,即new-instance、invoke-direct、sput-object、return-void;根据表6中操作码与命名形式之间的对应关系,生成节点的重命名为WISR,并写至指定文件原函数名之后.

3)遍历应用的函数调用图,利用文件中旧函数名和新函数名的对应关系将函数调用图中节点进行重命名.

表6 部分操作码与命名形式的对应关系

在对节点进行重命名后,计算TVOS应用函数调用图两两之间相似度.本文中采用的图相似度算法名为DeltaCon算法[20],该算法主要通过比较两个图中相同节点的连通性来计算两个图之间的相似性.给定G1=,G2=,为保证两个图具有相同的节点集,设V=V1∪V2,将图G1和G2扩展为G1=,G2=,节点集V中点的个数为n.

1)分别计算两个图中成对节点的影响度,并分别保存在n×n的矩阵S中,矩阵中的项sij表示节点i对节点j的影响度,当i到j中高权重短路径越多,则i对j的影响度越大.影响度的计算采用了置信度传播(Belief Propagetion,BP)算法.BP算法的两个关键过程为:利用加权乘积计算出所有的局部消息;节点之间的概率消息在随机场中的传递.函数调用图影响度向量的计算方法如下

[I+ε2D-εA]si=ei

(3)

式中:I为单位矩阵;A为图的邻接矩阵,矩阵项为aij;D为对角矩阵,且dii=∑jaij;ei是第i个元素为1的列向量;ε代表捕获相邻节点之间影响的常量,计算公式如下

ε=1/(1+maxi(dii)

(4)

所求si=[si1,…,sin]T,是从第i个节点对其他节点影响度的列向量.上述公式可转化为

S=[sij]=[I+ε2D-εA]-1

(5)

2)将两个图的影响度矩阵进行比较,计算两个图中相同节点影响度分数的差异,即计算两个矩阵的根欧式距离(Root Euclidean Distance,ROOTED)计算公式如下

d=ROOTED(S1,S2)=

(6)

3)为了方便介绍,将结果整合为两个图的相似度分数.即

(7)

之后,可生成M,将其作为机器学习算法的输入,建立训练模型.

2.3.2 机器学习算法

采用支持向量机、随机森林和K最近邻3种有监督机器学习算法.

1)支持向量机(Support Vector Machine,SVM)算法基于统计学习理论,主要用途为回归分析与分类,其核心思想为:给定训练样本集,在样本空间中找到一个最佳划分超平面,这个最佳划分超平面不仅能将不同类别的样本分开,而且产生的分类结果最鲁棒,对未见样本的泛化能力最强.

2)随机森林(Random Forest,RF)算法利用bootstrap抽样法有放回地选取一定数量的样本,生成m个训练样本集,在生成基决策树时,先从节点的属性集合中随机选择若干个属性作为属性子集,再从这个子集中选择最优属性进行划分.当判断未知样本的类别时,让森林中每棵决策树分别预测该样本的类别,最终的预测类别由所有基决策树输出类别的众数决定.

3)K最近邻算法(K-Nearest Neighborhood,KNN)算法是最简单的机器学习算法之一,主要用于回归和分类,主要思想是:基于某种距离度量方法找出训练样本集中距离测试样本点最近的k个样本,然后根据这k个邻居的类别信息确定测试样本的类别,通常采用“少数服从多数”的方法,也可以根据距离的远近进行加权平均或加权投票,距离越近的样本权重越大.

3 实验结果与分析

3.1 数据集

实验中采用的样本分为两类:正常TVOS应用与恶意TVOS应用.在 2016年11月到2017年2月期间从欢视商店、奇珀市场和当贝市场中下载并标定TVOS应用,多种渠道搜集获取TVOS恶意应用,最终获得TVOS正常应用1 020个,TVOS恶意应用168个,具体情况如表7所示.

表7 实验数据样本

3.2 实验结果分析

为使实验结果更具普适性,采用了五折交叉验证方法,数据集的80%用作训练数据,用来建立完整的分类模型,数据集的20%用作测试数据,用于评估训练模型的有效性以及测试分类器的效果.

当将函数调用图转化为核函数矩阵,并将其作为分类器的输入时,恶意应用检测的结果如表8所示.

表8 基于核函数计算的恶意应用检测实验结果Tab.8 Experimental results of malware detection based on kernel function %

可以看出,3种分类算法的准确率差异不大.RF算法的准确率最高,达到了95.48%,且RF算法的F-measure值最大,可见RF的整体结果最理想,这是由于RF算法的分类结果经多棵决策树投票而来,体现了集成学习的优势.SVM在恶意应用样本的识别方面优势较大,真阳性率达到了93.6%,这是由于在训练SVM分类模型时对于样本的权重因子进行了调节,对于数目少的恶意样本赋予了较大的权重,从而使模型对于恶意应用的识别能力有所提高,但存在精度较低的缺陷.KNN对恶意样本的识别能力虽然略逊色,但是误报率较低,只有0.70%.

将函数调用图转化为图相似度矩阵,并将其作为分类器的输入,恶意应用检测的结果如表9所示.可以看出,与核函数方法类似,RF取得了最理想的实验结果,准确率高达98.38%,SVM在恶意应用样本的识别方面优势明显,KNN算法的假阳性率最低,仅有0.36%.

表9 基于图相似度计算的恶意 应用检测实验结果Tab.9 Experimental results of malware detection based on similarity of graphs %

表10显示了本文提出的基于函数调用图分析的TVOS恶意应用检测方法与基于函数调用图分析的Android恶意应用检测效果对比情况.从表10中可以看出,不同于Android应用,本文提出的两种基于函数调用图的恶意应用检测方法对TVOS的恶意应用的检测更为有效.

表10 检测方法对比

两种函数调用图分析方法对比见表11.表11中,从整体上看,利用图相似度矩阵训练的模型效果要略优于利用核函数矩阵的模型,这是由于在生成函数调用图节点编码的过程中仅考虑了利用敏感API生成编码,因此可能会遗漏一些信息,使一部分恶意应用的行为刻画的不完全.但图相似度方法准确率的提升是用更多的时间损耗换取的.由于比较应用程序的函数调用图时,需要保证两个图的节点集一致,即取两个图节点的并集.而应用程序的函数调用图往往庞大而复杂,节点数目较多,两个图的节点的并集更使得节点数目成倍增长,生成维数巨大的矩阵,矩阵运算耗费了大量的时间.所以综合考虑基于核函数的分析方法更适用于大量的TVOS应用检测.

表11 两种函数调用图分析方法的结果比较

4 结论

1)TVOS系统与Android系统存在相似之处,且TVOS应用与Android移动终端应用也存在一定的联系,因此首先研究了TVOS与Android在系统结构方面不同;其次研究了TVOS应用与Android应用在权限和硬件方面的不同.通过初步分析发现,TVOS应用的功能相对简单,且TVOS应用中很多权限和硬件调用均不涉及,因此本文采用函数调用图作为特征来弥补权限、API调用等特征在TVOS应用上表征能力不足的缺点.

2)提出基于函数调用图分析的TVOS恶意应用检测方法,采用基于核函数计算和基于图相似度计算的函数调用图分析方法提取TVOS应用函数调用图中的结构信息,使用SVM、KNN和RF 3种机器学习算法进行训练、分类.

3)实验结果显示,基于核函数计算方法的恶意应用检测准确率最高可达95.48%;基于图相似度计算方法的恶意应用检测准确率最高可达98.38%.实验结果证明了本文提出的基于函数调用图分析的TVOS恶意应用检测方法的有效性.

下一步工作将深入挖掘TVOS应用特有的其他特征来实现更快速有效地TVOS恶意应用检测.

猜你喜欢
应用程序编码矩阵
生活中的编码
长链非编码RNA APTR、HEIH、FAS-ASA1、FAM83H-AS1、DICER1-AS1、PR-lncRNA在肺癌中的表达
删除Win10中自带的应用程序
Genome and healthcare
谷歌禁止加密货币应用程序
多项式理论在矩阵求逆中的应用
矩阵
矩阵
矩阵
论纪录片影像中的组合编码运用