一种使用CPN的恶意软件行为可视化自动生成方法
2019-08-13曹宏盛刘其源1北京信息科技大学网络文化与数字传播北京市重点实验室北京100101
曹宏盛,焦 健,陈 昕,刘其源1(北京信息科技大学网络文化与数字传播北京市重点实验室,北京100101)
2(北京信息科技大学计算机学院,北京100101)
E-mail:jiaojian@bistu.edu.cn
1 引言
传统的恶意软件分析往往依赖于分析人员的经验.面对如今样本数量巨大的恶意软件,传统的人工分析很难满足现实的需求;传统的恶意软件检测工具一般以特征或行为模式作为检测的依据,其存在以下问题:
1)无法反映恶意软件的状态变化;
2)无法了解恶意软件达到某状态的执行逻辑.
因此,传统的恶意软件分析在方法上依旧面临着严峻的挑战,一定程度上这些问题已经成为了Android安全的发展瓶颈.
随着这些年的发展,研究者在恶意软件行为这方面加大了研究力度.王兆国、李城等人[1]通过将函数调用看作行为,构造隐私窃取的行为链,分析恶意软件中存在的隐私窃取路径,它将隐私窃取行为分为三个过程:隐私数据窃取、隐私数据传递、隐私数据泄露,通过WxShall算法分析出可达的所有可疑路径,进而确定存在的隐私泄露路径.AppContext[2]将应用中的敏感API调用视为安全敏感行为,根据API的上下文环境判断移动应用的行为是良性的还是恶意的,文章认为安全敏感行为的触发可以根据上下文环境判断,例如导致敏感行为发生的触发事件或外界环境条件.Cheng S等人[3]利用商业化的反汇编工具IDA pro实现反汇编信息的搜集,构建污点分析引擎与常量分析引擎实现隐私泄露类行为以及常量使用类恶意行为的检测.DroidADDMiner[4]通过构造敏感API的数据依赖路径图,结合常量使用和上下文环境信息,最终给出机器学习所需的特征向量构造方法,对恶意软件的特定行为进行特征化的检测,该行为与特定敏感API调用相对应.
综上所述,目前针对恶意软件行为的研究集中在识别上,通过软件行为特征匹配对比,上下文分析,敏感数据依赖等方法,达到识别的目的.但是缺乏对恶意软件的行为以及相关行为所引起的状态变化的描述以及可视化展示.颜色Petri网(CPN)能够很好地描述这种行为模型.它本身具有适合于描述异步的、并发的计算机模型的特点,而且其“库所、变迁”等符号非常适合描述软件的执行行为及其过程,能够对这些行为做仿真和动态演示.本文在目前已有的Android恶意软件行为研究基础上给出行为及其状态变化模型,在颜色Petri网理论基础上以该行为模型作为输入,给出行为可视化自动生成的方法.该方法首先给出软件行为模型,然后给出petri网的成分抽取步骤,将抽取的petri网成分映射到该工具的.cpn文件元素中,自动生成.cpn文件,最后利用CPN Tool工具进行动态仿真.通过使用现有的恶意软件进行实验,验证该可视化自动生成方法的可行性.
本文结构如下:第2节,介绍恶意软件的行为建模;第3节给出了基于有色petri网的形式化建模方法;第4节为实验分析;最后是本文的结论.
2 相关工作
2.1 恶意软件行为建模
恶意软件作者制作并传播恶意软件必然是为了获取某些利益.在行为理论中,Bratman[5]认为意图是基于未来导向的行为序列.为了获取利益,恶意软件制作者将会按照一定的设计逻辑,赋予软件达到获利目的执行逻辑.而获利目的的达成往往表现为恶意软件中某些设备资源的最终状态,而达到这一状态的执行逻辑则表现为一系列的敏感函数调用或代码段的执行,即软件行为.在前期的工作中[13],我们给出了意图、行为序列、状态等概念的建模.以下是相关概念的阐述:
软件程序的构成可以看作是数据结构与算法的组合,因此在程序中我们可以将某一函数调用看作是一种操作,多个含有特定关系的操作序列将会完成一定的功能.因此,行为序列可以看成是一系列具有内在关联的函数调用,在本文研究可看成是android的API调用.
函数可以抽象为一种映射关系,表示如下:
操作的对象是某一组输入数据(包括android系统的消息、用户/系统操作、用户隐私数据以及程序初始化常量值等);当某一触发条件满足后,恶意软件开始操作的进程,这组数据经过一系列的函数操作后最终达到某一最终状态.状态则可以认为是某一时刻,所关注的对象的特征的取值.数据的三元组如下:
因此,如果这些数据的某些特征的取值,达到相应的条件时,可以认为存在此目的.本文给出意图的组成如下:
通过安全厂商赛门铁克[6]给出的恶意软件的动机分析、2016互联网安全威胁报告[7]以及移动互联网恶意代码描述规范[8],本文总结归纳得到恶意软件的六种主要意图,分别是窃取用户隐私、消耗用户资费、恶意扣除用户费用、传播恶意软件、恶意信息展示以及勒索用户,即,意图集合={窃取用户隐私,消耗用户资费,恶意扣除用户费用,传播恶意软件,恶意信息展示,勒索用户}
2.2 恶意软件的行为抽取
本文的主要工作是行为可视化自动生成方法.介绍行为抽取,主要是为了说明可视化生成算法的输入BM_File(Behavior Model File)可以通过分析抽取恶意软件的行为而得到,如文献[13].恶意软件行为抽取围绕安全敏感行为的分析,安全敏感行为往往由Android特定的敏感API接口所实现,故针对敏感API的分析是恶意软件行为分析的重点.围绕获取的底层敏感API进行安全分析,一方面减少了待分析的API数量,提升了分析的效率;另一方面降低了安全无关结果的干扰,提升了分析的准确率.在描述敏感API的语义级行为时,需要分析以下四个安全要素:
1)敏感API调用与依赖关系:敏感API调用能够直接反映app安全相关的行为,此外,特定API间的依赖关系也能表明app的某种特殊行为.
2)触发条件:特定API调用的触发条件隐藏着潜在的安全风险.某个API调用的恶意性判定有时需要依赖于特定前置条件的存在,例如:如果缺失了用户同意的条件判定,则可能导致非法操作.
3)入口点:一系列API调用的入口点是一个重要安全因素,API调用的入口点直接或者间接地触发该调用发生.可以依据入口点信息推断用户是否知晓该API的调用.
4)常量参数:常量分析通过揭示特定参数的值能够传递语义信息,并且给出细粒度的API语义.例如:Runtime.exec()可能会执行各种shell命令,比如ps或chmod,根据输入的常量参数而有所不同.
图1 隐私泄露类app的环境依赖图样例Fig.1 Example of environmental dependency graph for privacy leak app
为抽取恶意软件中存在的行为事实,需要对安全要素进行组织,采用图结构表示该安全要素.构造敏感API数据依赖图模型需要有三个功能模块:
1)敏感API的查找(接口输入是反编译的程序源码或反编译后的中间图表示和敏感API特征库,输出是敏感API的信息,包括函数名、函数位置、参数个数、触发条件、入口点函数);
2)敏感API的参数分析(接口输入是敏感API与程序表示,输出是参数个数,参数名,参数值);
3)任意两敏感API间的依赖关系分析(该接口的输入是任意两敏感API和程序表示,输出是两者之间的依赖关系,具有指向性).
某个隐私泄露类app的环境依赖图模型可以描述如图1所示,其中,每一个节点均是以某一敏感API为中心的,节点间的有向边表示敏感API间的数据或控制依赖关系,加黑处为函数原型,针对每一个函数原型,分别对应有其入口点信息(BroadcastReceiver.onReceiver),常量参数(Setconst)信息,条件因素(Setcond)信息等.
敏感API环境依赖图模型构造的目的是为了提取Andriod应用中的行为事实,重点针对敏感API的语义进行行为抽象.由行为(函数)定义知:行为识别分为三个阶段:
1)敏感API到行为名的映射,得到程序中敏感API对应的行为集 Set={Act1,Act2,…,Actn};
2)行为输入客体识别(依据常量参数、API函数定义、变量参数),客体识别包括三个部分:客体名识别,客体属性确定,属性值确定;
3)行为输出客体的确定.
语义映射依赖于敏感API与行为名、客体、客体特征的映射关系,自动化地提取需要构造敏感API特征库TAB:
1)敏感API的搜集,主要依赖敏感权限组中包含的API;
2)依据API官方文档的定义对特定API的定义进行描述,主要获取行为描述语言,行为客体的确定和描述方式;
3)确定不同行为对应的客体属性,并划定客体属性值的取值范围.
文献[13]中给出了基于行为事实的行为意图推理方法,它的输出也是本文Petri网建模的输入之一,即行为模型文件BM_File.BM_File中给出了意图元素的描述:行为集合、行为间关系集合.根据该模型文件,可以获取恶意软件中存在的行为、行为之间的关系以及这些行为的执行对行为客体(设备资源)产生的影响(客体特征).行为间的关系通过客体被联系起来,基本的关系有顺序关系、并发关系,它们分别用has-CompoundWith和hasCombinationWith表示,下面将针对意图描述文件BM_File的自动可视化做进一步的阐述.
3 基于颜色petri网的形式化建模
Petri网是1962年由Carl Adam Petri[9]提出的一种模型,用于描述分布式系统,适用于对具有同步、并发和冲突的离散事件系统进行建模和分析.接下来介绍如何从第二章提到的恶意软件行为模型自动生成CP-net,并给出算法步骤.
3.1 颜色petri网成分抽取算法
为了将BM_File文件中涉及的概念都能在可视化中体现,我们使用颜色petri网建模.
根据文献[10],颜色petri网的主要元素分别是:库所、颜色集、标识、变迁、弧以及变量.首先抽取出颜色petri网的主要成分.因为库所(PLACE)表示CP-net的状态,因此抽取data的“数据客体,特征”组成库所;函数作为CP-net的变迁(TRANS);
颜色集(COLOR),表示库所的类型,也就是将库所分类.本文通过特征值来确定颜色集的数据类型,所以将颜色集的组成确定到特征级别,因此与库所一样通过抽取data的“数据客体,特征”组成颜色集,作为库所的类型;
标识(token),表示CP-net的一个状态,也就是token,抽取初始行为的输入数据相应的特征值,作为对应该库所的初始标识.
变量(VAR),用于保存和传递数据值,抽取特征作为相应库所的变量.
弧(ARC),则通过库所与变迁之间的关系进行抽取.库所指向变迁的弧称为PtoT,将对应的变量传递给变迁;变迁指向库所的弧称为TtoP,根据行为的输入数据的特征值,生成判定条件,根据行为的输出数据的特征值,生成条件的执行部分.
该算法从BM_File文件中抽取CPN文件(可视化文件)的各个元素,算法伪代码如下:迁的关系矩阵.当字符串中含有"hasCompoundWith"时,该函数通过抽取该字符串的行为名称,并与actionSetNum匹配,得到编号.根据编号,为矩阵相应元素赋值,生成矩阵.add-ActSeq(),该函数的功能是生成行为序列,用于变迁的布局.矩阵和行为序列如图2所示,左边为变迁的关系矩阵,当rij=1时,表示第i个变迁和第j个变迁存在顺序关系.
图2 矩阵和行为序列实例Fig.2 Example of matrix and behavior sequence
generateArc(trans,var),利用变迁和库所中的元素,生成弧.对于PtoT弧,我们以var作为其值;TtoP弧,我们使用trans的输入库所的mark生成判定条件,trans的输出库所的mark生成其执行内容.
3.2 自动生成.cpn文件
CPN Tools作为颜色Petri网的建模和分析工具,其文件格式是基于XML的.cpn文件.加载的文件以及保存的文件都是基于XML的.cpn文件.
.cpn文件的XML格式使用DTD进行描述.该XML表示中,主要包括五部分的内容描述,分别是:颜色集、变量、库所、变迁以及连接库所和变迁的弧,具体格式由文献[11]给出.根据文献[11]给出的具体的格式,将已经抽取的元素信息生成该格式的内容.库所在.cpn文件中的格式如图3所示.
图3 库所在.cpn文件中的格式Fig.3 Format of the place in the.cpn file
.cpn文件生成算法Generate_cpn()主要由三部分组成:
1)从.cpn模板文件中抽取petri网主要元素的xml文件格式模板;2)通过3.1得到的各个元素和xml文件格式模板,生成各元素的xml文件内容;3)将各元素的xml文件内容插入到.cpn模板文件中,生成新的.cpn文件.该算法的伪代码如下:VAR,分别表示.cpn模板文件、变迁集合、库所集合、弧集合、颜色集集合、变量集合.
其中extractTemplate()表示抽取各个成分的xml文件格式模板,分别保存到 T_color,T_var,T_trans,T_place,T_arc 这些字符串数组中.
xml_trans=addXmlTrans(T_trans,trans),该函数将 trans这个变迁中的数值,添加到T_trans模板中,形成该变迁具体的xml文件内容,并追加到xml_trans中.同理,xml_place、xml_color分别保存了库所、颜色集这些元素的xml文件内容.
通过遍历T_CPN字符串数组,将对应元素(库所、变迁等)的XML文件内容添加到新的.cpn模板文件中,形成新的模板文件文件.当遍历到主要成分的位置时,通过Insert()函数,将对应的xml文件内容插入到要生成的.cpn文件.isInsertColor标识T_CPN中颜色集的模板内容是否已经添加.
4 评价
4.1 实验
4.1.1 BM_File 文件实例
本文对 GoldDream,GGTracker,HippoSMS,Zitmo 等恶意软件进行了实验,这些恶意软件具有不同的恶意意图,如窃取用户隐私,消耗用户资费等.这里使用GoldDream作为实例,介绍本文的实验步骤.GoldDream[12]能够执行注册高优先接收器,监视电话、短信,后台程序搜集信息并发送到远程服务器等行为.此外,它也能够根据远程服务器的指令执行一些操作.根据2.1给出的行为模型,GoldDream的行为模型文件(BM_File)如图4所示.
图4 GoldDream的行为模型文件实例Fig.4 Behavior model file instance of GoldDream
ACTSEQ表示行为集合.hasCompoundwith表示复合关系(前者的输出是后者的输入),可知各个行为之间的关系,从而得到行为序列.
行为ACT_transmit2,它的一个输出数据为(PhoneCall,position,remoteServer),其中 PhoneCall是数据客体,表示来电信息;position是特征,表示信息位置;remoteServer是特征值,表示远程服务器地址.这三元组表示了数据当前的状态.在行为ACT_transmit2之后没有后续的处理,因此,数据客体Phone-Call的最终状态为(PhoneCall,position,remoteServer),表示来电信息被发送到远程服务器,存在隐私信息被泄漏的可能.
4.1.2 颜色petri网成分抽取实例
根据图4给出的GoldDream隐私信息窃取行为的输入文件,给出具体的建模过程.首先抽取元素,用于.cpn文件生成.通过抽取客体名和特征得到颜色集,抽取特征得到变量,如表1所示.
表1 颜色集和变量说明Table 1 Color set and variable description
库所作为表示系统状态的元素.抽取客体、特征,组合得到库所.如表2所示.
表2 库所说明Table 2 Place description
通过抽取行为名构成petri网模型的变迁,如表3所示.
表3 变迁说明Table 3 Trans description
在成分抽取之后,通过3.2的.cpn生成方法得到Gold-Dream恶意样本的隐私窃取的.cpn文件..cpn文件在建模工具CPN Tools中仿真的结果如图5和图6所示.其中图5表示初始状态,图6表示最终状态.
图5 GoldDream隐私窃取行为模型初始状态Fig.5 Initial state of privacy theft behavior model of GoldDream
如图5和图6所示,椭圆表示库所,矩形表示变迁.图5为初始状态,如椭圆框所示,电话信息(phoneCall)和短信信息(SmsMessage)还保存在设备中(inDevice,分别如标识③、④旁的椭圆框所示,即token所示);广播(Broadcast_)也未被监听(false,如标识①、②所示);远程服务器敏感地址(Address)也未被使用(false).如标识⑥所示,弧上方的椭圆框中的position是变量,用于保存和传递电话信息的位置,变量的抽取如表1所示.如标识⑦弧下方椭圆框中是弧的判定条件,如3.1对弧的介绍.图6为最终状态,广播(Broadcast_)已经处于被监听的状态(true,如标识①、②所示);敏感地址(Address)被使用,如标识⑤所示,此时token的值为true;电话信息(phoneCall)和短信信息(SmsMessage)信息被发送到远程服务器(标识③、④所示为remoteServer).现实中信息泄漏也必须包含信息被发送到外部地址,才能达到泄漏的目的.因此该模型的仿真过程及其最终状态符合实际情况.
4.2 结果比较
图7 GoldDream在线检测结果对比Fig.7 Online test results comparison of GoldDream
表4中给出了三个在线检测平台的检测结果比较,腾讯手机管家的检测结果给出了GoldDream的行为和行为关系的文字描述,但没有直观的动态展示.梆梆安全给出了Gold-Dream涉及的行为,但没有给出行为之间的顺序关系,并且一些行为在正常的软件中,也是存在的,比如开机启动、获得网络连接等.爱加密通过分析,只给出了软件需要获取的权限,但没有给出软件行为,并且一些权限在正常的应用中也同样存在.
表4 检测结果对比Table 4 Comparison of detection results
腾讯手机管家、梆梆安全与本方法的性能比较,如表5所示.
表5 检测结果性能对比Table 5 Comparison of detection result performance
可以看出本方法获取的行为和关系数量都大于或等于其他系统的数量.其中梆梆安全的8个行为中,包括了“开机启动”和“获取网络链接”这两个正常的软件中也会有的行为.
同时,通过分析腾讯手机管家、梆梆安全和爱加密的检测结果三者的结果,也可以佐证本文检测结果的正确性.例如腾讯手机管家提到的“私自发送短信,记录用户隐私信息并上传到远端服务器”;梆梆安全提到的“发送短信”以及爱加密中的“允许接收和处理短信,允许处理更改外拨电话”都与图6中的“access1 SMS,access2 phonecall and transmit1 SMS,transmit phonecall”对应.
爱加密中的“允许访问网络,允许查看网络状态”、梆梆安全中的“获取通话状态,获取网络连接”都与图6中的“monitor1 broadcast”相对应.
通过本方法给出的实验结果与腾讯手机管家、梆梆安全和爱加密的检测结果对比,本文提供了一个更为直观容易理解的动态演示的方式,使用户能更清楚地明白该软件在自身的运行过程中做了哪些行为,以及这一系列行为最终达到的状态,为用户对该软件的判断评估提供了参考依据.
5 结论
本文给对恶意软件的行为进行了形式化的描述,给出了行为及其相关状态变化的模型,并以此行为模型作为输入,根据颜色petri网理论,结合CPN tools工具的.cpn文件的XML格式,提出了恶意软件行为的可视化自动生成算法.针对恶意软件进行了实例建模,生成恶意软件行为对应的.cpn文件,并利用CPN tools对该软件进行了仿真.最后在实验部分,通过把本方法的实验结果与腾讯手机管家、梆梆安全和爱加密三个平台的在线检测结果进行比较验证,证明了本文提出的可视化自动生成方法的可行性和正确性,并且该方法的结果更为直观容易理解,使用户能更清楚地明白该软件在自身的运行过程中做了哪些行为,以及这一系列行为最终达到的状态,为用户对该软件的判断评估提供了参考依据.