智能手机应用程序的动态分析方法及系统与流程

文档序号:11831223阅读:468来源:国知局
智能手机应用程序的动态分析方法及系统与流程

本发明涉及智能手机信息安全领域,具体而言,本发明提供一种智能手机应用程序的动态分析方法及相关系统。



背景技术:

随着现代通信手段的进步,我国智能手机的用户越来越多,而随着手机终端的不断普及、网民规模高速增长以及移动互联快发展,各类手机应用如雨后春笋般出现,包括电子商务、手机支付、LBS、联系人云备份、手机预订票和酒店等在内的商务应用也不断成熟,极大地满足了用户的多方需求。

但随着智能手机市场的进一步扩展,水货、山寨手机及其应用的泛滥使得手机的安全风险日益扩大,感染手机病毒的用户量急剧增长。包括病毒、恶意扣费、骚扰电话、手机系统垃圾、私自联网消耗流量、手机支付安全隐患、隐私泄露在内的各类问题困扰着用户。与此同时,病毒投放渠道、攻击技术利益联盟等黑色产业链也逐步完善,更多的手机用户因此开始受到病毒的大规模侵袭。

目前越来越多的案件和电子数据勘查取证涉及到手机程序功能的分析,分析的难度和工作量也越来越大,包括对各类恶意扣费软件、窃取用户个人隐私信息等手机程序的取证分析和检验鉴定。因此,对主流的智能手机的应用程序的功能分析和取证必须有相应的技术、工具和系统予以支撑,以解决上述问题。

目前对智能手机应用程序的动态分析只限于对网络交互的数据进行抓取分析,无法得到其它相关的进程和后台的行为动作,且动态分析结果不准确,获取的信息有限。



技术实现要素:

本发明的目的旨在解决上述至少一个问题,提供一种智能手机应用程序的动态分析方法,包括以下步骤:

接收上传的应用程序样本;

创建与应用程序样本运行环境相应的虚拟机环境;

监控运行在所述虚拟机上的应用程序样本的动态行为及网络交互信息;

根据监控结果判定所述应用程序样本的安全等级。

具体的,所述创建的虚拟机环境具体包括创建支持应用程序样本运行的进程、环境变量、网络接口、shell命令接口、与应用程序样本相同类型的文件系统。

具体的,所述监控应用程序样本的动态行为及网络交互信息具体指:

由动态行为监控单元监控应用程序样本的动态行为;

由网络数据包监控单元监控应用程序样本的网络交互信息。

具体的,所述动态行为监控单元具体采用hook函数监控应用程序样本的动态行为。

具体的,所述判定安全等级步骤具体是利用应用程序样本的动态行为中动态行为策略库中对应的权值判定该应用程序样本的安全等级。

一种智能手机应用程序的动态分析系统,包括:

接收模块:接收上传的应用程序样本;

创建虚拟机模块:创建与应用程序样本运行环境相应的虚拟机环境;

监控模块:监控运行在所述虚拟机上的应用程序样本的动态行为及网络交互信息;

判定模块:根据监测结果判定所述应用程序样本的安全等级。

具体的,所述创建的虚拟机环境具体包括创建支持应用程序样本运行的进程、环境变量、网络接口、shell命令接口、与应用程序样本相同类型的文件系统。

具体的,所述监控模块包括一个动态行为监控单元和一个网络数据包监控单元,其中,

动态行为监控单元用于监控所述应用程序样本的动态行为;

网络数据包监控单元用于监控所述应用程序样本的网络交互信息。

具体的,所述动态行为监控单元具体采用hook函数监控应用程序样本的动态行为。

具体的,所述判定模块具体是利用应用程序样本的动态行为中动态行为策略库中对应的权值判定该应用程序样本的安全等级。

相比现有技术,本发明的方案具有以下优点:

1、本发明接收上传的应用程序样本,自动对所述应用程序样本进行动态分析,由动态行为监控模块监控其动态行为,由网络数据包监控模块监控其网络交互情况,根据分析的结果综合确定其安全等级,实现自动化动态分析应用程序样本,大大提高恶意程序的检测效率。同时,由于采用同时监控应用程序动态行为和其网络交互行为的策略,提高了对恶意程序的检测准确率。

2、本发明所述智能手机应用程序的动态分析方法,创建与应用程序运行于用户终端相一致的虚拟机环境,使得应用程序的运行状态和效果与运行于用户终端的状态和效果一致。在虚拟机环境下采用动态行为监控模块对应用程序调用的动态行为API进行监控,可以实现多种动态行为的监控,根据动态行为策略库确定所调用的动态API的权值,由所有权值的加权和确定应用程序的安全等级,量化了应用程序的安全等级,可以更精确评估应用程序的安全等级。

3、本发明提供的智能手机应用程序的动态分析系统即可用于检测Android系统的恶意程序,也可以检测IOS系统的恶意程序,实现对现今流行的两大操作系统的智能手机的应用程序进行安全等级确定。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为智能手机应用程序的动态分析方法流程示意图;

图2为智能手机应用程序的网络数据包监控模块流程示意图;

图3为智能手机应用程序的动态分析系统流程框图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信 设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。

本技术领域技术人员可以理解,这里所使用的远端网络设备,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云。在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。本发明的实施例中,远端网络设备、终端设备与WNS服务器之间可通过任何通信方式实现通信,包括但不限于,基于3GPP、LTE、WIMAX的移动通信、基于TCP/IP、UDP协议的计算机网络通信以及基于蓝牙、红外传输标准的近距无线传输方式。

本发明支持Android、IOS智能手机操作系统,参阅图1所示,以Android系统的智能手机为实施例说明本发明的智能手机应用程序的静态分析方法,包括以下步骤:

步骤S11、接收上传的应用程序样本

用户可以使用客户端,访问服务端的网页或其它形式的内容,借助网页提供的上传工具或其它上传工具向服务端上传应用程序的文件,服务端 接收客户端上传的应用程序样本。

诚然,也可以由相应的抓取模块从互联网中自动抓取并接收相关应用程序样本,或者从预设的网络位置中定时获取新的应用程序样本等。本领域技术人员应当知晓获取应用程序样本的多种方式。

步骤S12、创建与应用程序样本运行环境相应的虚拟机环境

创建一个虚拟机,可以是Android应用程序运行的Android系统,例如Android在其系统SDK包中即提供了相应的虚拟机环境的相关文件,也可以是IOS应用程序运行的IOS系统,所述虚拟机为一个适应于应用程序样本运行的完整系统环境,模拟硬件系统功能,其相对于所寄生的操作系统是完全隔离的。

创建与运行在虚拟机上的应用程序相应的虚拟机环境,以使应用程序样本运行的环境与其在手机操作系统中的运行环境一致,以Android系统的应用程序为例,具体包括:

在虚拟机中创建与应用程序相一致的文件系统,如Android应用程序样本使用的文件系统为devpts文件系统,则虚拟机中的文件系统也应为devpts文件系统;创建用于支持应用程序样本运行的进程,如Android系统的应用程序需要创建ServiceManager进程;创建用于支持应用程序样本运行的环境变量,如Android应用程序创建的path变量;创建用于支持应用程序样本运行的网络接口,如建立TCP连接、获取网络信息、设置网络信息接口等;创建用于支持应用程序运行时调用使用的shell命令接口;此外,还包括创建用于支持应用程序样本运行在虚拟机上所需要的其他功能。

同理,关于IOS系统的虚拟环境的创建,现有技术中也不乏可以直接引用的公知手段。

本领域技术人员根据上述揭示的说明,可以轻易地知晓如何通过现有技术创建应用程序的虚拟环境这一技术手段,恕不赘述。

步骤S13、监控运行在所述虚拟机上的应用程序样本的动态行为及网络交互信息

将接收的上传应用程序样本导入上述创建的虚拟机中,并运行所述应 用程序样本,由本步骤实现的动态行为监控单元对其进行监控,具体采用hook(钩子)函数对系统的指定函数进行监控。

此处的术语“钩子”涵盖了用于通过拦截在应用软件组件之间传递的函数调用、消息、或事件来改变或增加操作系统、应用程序、或其他软件组件的行为的技术。而处理这种被拦截的函数调用、事件或消息的代码就被称为hook(钩子)函数。钩子通常用于各种目标,包括对功能进行调试和对功能进行扩展。其示例可以包括在键盘或鼠标事件传递到应用程序之前拦截它们,或者拦截系统调用(system call)、或者系统函数行为、函数执行结果等,以实现监视或修改应用程序或其他组件的功能等目的。

当应用程序样本开始运行时,会调用系统中的相应函数,采用hook函数对应用程序样本启动时系统调用的指定函数进行挂钩,当指定函数被应用程序的样本调用时,则返回相应的消息,通过该消息确定应用程序的动态行为。如创建/删除快捷方式、弹出通知栏、取消通知栏、读取通话记录、插入通话记录、更新通话记录、删除通话记录、发送短消息等行为。以下就常见的几种事件行为进行示例性说明:

(1)终端、联网行为:

获取运营商信息:目标应用程序样本例如通过getSimOperatorName()函数可以获得移动终端的IMSI,由此可进一步判断运营商的名称,进一步可以向运营商发送约定指令,实现扣费之类的非法目的。通过挂钩并监控与此相关的消息,依据返回的相应消息便可以捕获事件行为。

切换APN操作:同理,应用程序样本通过与APN切换有关的函数实现ANP切换控制的操作,也可通过调用相应的挂钩插件实现监控。

类似的操作,还包括获取手机识别码IME的操作,也与上述同理。

(2)弹出通知栏广告行为:通知栏广告是最易被恶意程序利用的手段,通过调用相应的挂钩插件对notify函数产生的事件消息进行监控,利用反馈的消息进行判断,也可对其实施监控以实现事件行为的分析确定。

(3)通信行为:

如电话拔打操作,通过StartActivity()函数可以监控拔打电话的事件行为,利用相应的挂钩插件可以对拔打电话操作建立事件行为监控。

短信操作,对应于SendTextMessage()之类的函数,同理,可以借助挂钩插件对这类函数建立事件行为监控。

联系人相关操作:一般对应于Query()、Insert()函数,利用挂钩插件挂钩此类函数可以实现对此类事件行为的监控捕获。

(4)命令操作:

如SU提权操作或执行命令操作,均需用到Execve()函数,通过监控此函数的返回消息,便可实现该类事件行为的监控。

(5)界面及访问操作:

如创建快捷方式的事件行为,则对应于SentBroacast()函数。同理,对于隐藏程序图标的操作,也可对应特定函数监控之,以此确定事件行为。

如HTTP网络访问操作,则对应于Sentto()、Write()等函数。

(6)程序操作:

如应用加载操作,指当前应用程序样本运行后加载相关应用的操作,通过对dexclassloader()、loadlibrary()等函数进行挂钩监控,可以实现对此类事件行为的捕获。

又如安装子包,则对应于StartActivity()函数。

(7)其它危险操作:

例如,子进程侵入操作、衍生物操作等。

其中,子进程是指应用程序建立的子进程,在应用程序创建子进程时,通过本步骤实现的监控模块收到相应的消息,判定其创建子进程的事件行为。由此,该监控模块进一步向该子进程以内联钩子的方式在该子进程中注入本步骤实现的动态行为监控单元,后续便可继续对该子进程的事件行为进行监控。因而,无论是应用程序样本的自身进程,还是由其创建的子进程,它们直接或间接所触发的事件行为,均能被本步骤实现的动态行为监控单元所监控。

而所述衍生物,是指应用程序自行创建的文件,或者远程下载的文件,通常是指敏感的衍生物,例如安装包。通过挂钩fclose()函数可以捕获该事件。

上述的事件行为仅为摘录之用,不能理解为对本发明监控的事件行为 的限制。通过以上的揭示可知,利用Hook技术,可以实现对应用程序样本的事件行为做详尽的监视,有助于后续步骤的处理。

除了应用程序样本的事件行为之外,应用程序样本与外网进行信息交换的行为也是确定应用程序样本的安全等级的重要依据,因此,有必要对应用程序样本运行时的网络交互信息进行抓包监控。

具体而言,本步骤实现的网络数据包监控单元通过抓包实时监控虚拟机模拟的网卡的网络交互情况,参考图2所示,监控实施步骤为:

步骤1、抓包获取应用程序样本进行网络交互时产生的数据包

采用诸如tcpdump、wireshark之类的抓包工具抓取应用程序的网络交互数据包,一旦抓包成功,则确定应用程序样本有网络交互行为,其中,所述网络交互数据包可以包括以下一种或几种的组合:

DNS通信数据包、HTTP通信数据包、SMTP通信数据包、FTP通信数据包。

步骤2、解析获取的数据包,获取预先指定的信息

对抓取的网络数据包进行解析,以便获取预先指定的信息。以下结合前述列举的不同类型的数据包做示例性说明。

DNS是一个域名系统,记录域名和IP地址之间映射的一个分布式数据库,DNS通信数据包包括DNS请求包和DNS应答包,其中,DNS请求包用于向DNS服务器发送域名解析请求,对其进行解析获取查询URL的名称、源ip和端口、目标ip和端口;DNS应答包用于DNS服务器对请求域名解析的响应,对其进行解析获取查询URL的名称、查询到的URL对应的ip值。

HTTP是超文本传输协议,通过该协议定位网络资源。HTTP通信数据包包括HTTP请求包和HTTP应答包,其中,HTTP请求包用于向服务器发送建立连接的请求,对其进行解析获取URL名称、包的内容长度、包的内容等信息;HTTP应答包用于响应建立的连接,对其进行解析获取URL名称、包的内容长度、包的内容等信息。

SMTP即简单邮件传输协议,定义用于由源地址到目的地址传送邮件的规则。解析其数据包,可以获取URL名称、包的内容长度、包的内容 等信息。

FTP即文件传输协议,用于Internet上的控制文件的双向传输。解析其数据包,可以获取URL名称、包的内容长度、包的内容等信息。

步骤3、将从数据包中获取的指定信息记录于特征码数据库

提取监测到的有网络交互行为的应用程序样本的特征码,将所述特征码与解析到的数据包指定信息一一对应记录到特征码数据库,其中,包括数据包类型名称,如DNS通信数据包、HTTP通信数据包、SMTP通信数据包、FTP通信数据包,以及各数据包对应的信息,如URL名称、包的内容长度、包的内容、源ip和端口、目标ip和端口等信息。

可以看出,通过步骤S13,既可获的应用程序样本的事件行为,还可获的应用程序样本进行网络通信时产生的网络交互信息,利用该步骤获取的信息,即可用于后续的安全等级的判定。

步骤S14、根据监控结果判定所述应用程序样本的安全等级

将安全等级分为四级,分别为高危险、中危险、低危险、安全。根据监控结果采用以下方式判定应用程序样本的安全等级:

通过步骤S13(可以实现为动态行为监控模块)确定应用程序样本的动态事件行为,将所述动态行为API与动态行为策略库中记录的数据一一对比,即可确定应用程序样本调用的各动态API的安全等级权值。其中,所述动态行为策略库用于记录应用程序样本的动态行为API与其安全等级权值之间的映射关系,这里API即事件行为本身所涉及的函数,而安全等级是利用公知技术提前人为或自动赋值的。该动态行为策略库已预先生成并存储于服务器。动态行为策略库中的每个API对应的权值根据其行为对用户隐私的危险性对应不同的权值,如发送短信行为的危险性大于创建快捷方式的危险性,则发送短信行为对应的API的安全等级权值为3,创建快捷方式行为对应的API的安全等级权值为1。同理,应用程序产生的网络交互信息在这里也可被视为一种与事件行为等同的事件行为,而被存储到所述的动态行为策略库或类似的文件中,并且在本步骤中进行类似的判定。当然,作为另一实施例,也可直接将发生网络交互消息这一结果本身即视为一种对应的安全等级,从而仅经查询即可确定其安全等级。

通过查询所述的动态事件行为策略库,便可获得应用程序样本所对应的各个事件行为的相应的安全等级权值。计算应用程序样本调用的至少一个策略库中的动态行为API对应的安全等级权值之和,将该些权值之和与预设的用于划分不同安全等级的阈值进行对比,便可将该应用程序样本判定为高危险、中危险、低危险、安全四个等级中的一种。例如权值之和大于10判断为高危险,权值之和介于5和10判断为中危险,权值之和介于2和5判断为低危险,权值之和为0则判断为安全。当然,这样的一种阈值和等级划分是灵活的,也可以仅设置3个等级,或设置5个等级,相应的阈值也可做出灵活的调整。

如前所述的另一实例中,一旦所述网络数据包监控单元监控应用程序样本中运行过程中的网络交互行为,与所述动态行为监控单元同步进行,一旦抓包工具获取到网络数据包,则直接判断该应用程序样本为高危险等级。如果未抓取到网络数据包,则根据上述动态行为API的权值之和判断应用程序样本的安全等级。

通过上述的揭示,可以看出,本发明提供的智能手机应用程序的动态分析方法,利用为应用程序样本提供的虚拟机环境,借助相应的应用程序监控技术,便可实现对应用程序样本的事件行为的分析,包括对其网络交互信息进行监控等,在此基础上,可以利用预设的数据库来确定应用程序本样的安全等级,从而为手机安全监控提供重要的技术准备。

请参阅图3所示,本发明还提供一种智能手机应用程序的动态分析系统,包括接收模块11、创建虚拟机模块12、监控模块13、判断模块14,其中,

接收模块11用于接收上传的应用程序样本。用户可以使用客户端,访问服务端的网页或其它形式的内容,借助网页提供的上传工具或其它上传工具向服务端上传应用程序的文件,服务端接收客户端上传的应用程序样本。

诚然,也可以由相应的抓取模块从互联网中自动抓取并接收相关应用程序样本,或者从预设的网络位置中定时获取新的应用程序样本等。本领 域技术人员应当知晓获取应用程序样本的多种方式。

创建虚拟机模块12用于创建与应用程序样本运行环境相应的虚拟机环境。创建一个虚拟机,可以是Android应用程序运行的Android系统,例如Android在其系统SDK包中即提供了相应的虚拟机环境的相关文件,也可以是IOS应用程序运行的IOS系统,所述虚拟机为一个适应与应用程序样本运行的完整系统环境,模拟硬件系统功能,其相对于所寄生的操作系统是完全隔离的。

创建与运行在虚拟机上的应用程序相应的虚拟机环境,以使应用程序样本运行的环境与其在手机操作系统中的运行环境一致,具体包括:

在虚拟机中创建与应用程序相一致的文件系统,如Android应用程序样本使用的文件系统为devpts文件系统,则虚拟机中的文件系统也应为devpts文件系统;创建用于支持应用程序样本运行的进程,如Android系统的应用程序需要创建ServiceManager进程;创建用于支持应用程序样本运行的环境变量,如Android应用程序创建的path变量;创建用于支持应用程序样本运行的网络接口,如建立TCP连接、获取网络信息、设置网络信息接口等;创建用于支持应用程序运行时调用使用的shell命令接口;此外,还包括创建用于支持应用程序样本运行在虚拟机上所需要的其他功能。

同理,关于IOS系统的虚拟环境的创建,现有技术中也不乏可以直接引用的公知手段。本领域技术人员根据上述揭示的说明,可以轻易地知晓如何通过现有技术创建应用程序的虚拟环境这一技术手段,恕不赘述。

监控模块13用于监控运行在所述虚拟机上的应用程序样本的动态行为及网络交互信息。包括一个动态行为监控单元和一个网络数据包监控单元,其中,动态行为监控单元用于监控所述应用程序样本的动态行为;网络数据包监控单元用于监控所述应用程序样本的网络交互信息。

将接收的上传应用程序样本导入上述由创建虚拟机模块12创建的虚拟机中,并运行所述应用程序样本,由所述监控模块13中的动态行为监控单元对其进行监控,具体采用hook函数对系统的指定函数进行监控。

当应用程序样本开始运行时,会调用系统中的相应函数,所述监控模 块13中的动态行为监控单元采用hook函数对应用程序样本启动时系统调用的指定函数进行挂钩,当指定函数被应用程序的样本调用时,则返回相应的信号,通过该信号获取应用程序的动态行为。如创建/删除快捷方式、弹出通知栏、取消通知栏、读取通话记录、插入通话记录、更新通话记录、删除通话记录、发送短消息等行为。

以下就常见的几种事件行为进行示例性说明:

(1)终端、联网行为:

获取运营商信息:目标应用程序样本例如通过getSimOperatorName()函数可以获得移动终端的IMSI,由此可进一步判断运营商的名称,进一步可以向运营商发送约定指令,实现扣费之类的非法目的。通过挂钩并监控与此相关的消息,依据返回的相应消息便可以捕获事件行为。

切换APN操作:同理,应用程序样本通过与APN切换有关的函数实现ANP切换控制的操作,也可通过调用相应的挂钩插件实现监控。

类似的操作,还包括获取手机识别码IME的操作,也与上述同理。

(2)弹出通知栏广告行为:通知栏广告是最易被恶意程序利用的手段,动态行为监控单元通过调用相应的挂钩插件对notify函数产生的事件消息进行监控,利用反馈的消息进行判断,也可对其实施监控以实现事件行为的分析确定。

(3)通信行为:

如电话拔打操作,通过StartActivity()函数可以监控拔打电话的事件行为,利用相应的挂钩插件可以对拔打电话操作建立事件行为监控。

短信操作,对应于SendTextMessage()之类的函数,同理,可以借助挂钩插件对这类函数建立事件行为监控。

联系人相关操作:一般对应于Query()、Insert()函数,通过动态行为监控模块挂钩此类函数可以实现对此类事件行为的监控捕获。

(4)命令操作:

如SU提权操作或执行命令操作,均需用到Execve()函数,通过监控此函数的返回消息,便可实现该类事件行为的监控。

(5)界面及访问操作:

如创建快捷方式的事件行为,则对应于SentBroacast()函数。同理,对于隐藏程序图标的操作,也可对应特定函数监控之,以此确定事件行为。

如HTTP网络访问操作,则对应于Sentto()、Write()等函数。

(6)程序操作:

如应用加载操作,指当前应用程序样本运行后加载相关应用的操作,通过对dexclassloader()、loadlibrary()等函数进行挂钩监控,可以实现对此类事件行为的捕获。

又如安装子包,则对应于StartActivity()函数。

(7)其它危险操作:

例如,子进程侵入操作、衍生物操作等。

其中,子进程是指应用程序建立的子进程,在应用程序创建子进程时,通过所述监控模块13收到相应的消息,判定其创建子进程的事件行为。由此,该监控模块13进一步向该子进程以内联钩子的方式在该子进程中注入动态行为监控单元,后续便可继续对该子进程的事件行为进行监控。因而,无论是应用程序样本的自身进程,还是由其创建的子进程,它们直接或间接所触发的事件行为,均能被所述监控模块13所监控。

而所述衍生物,是指应用程序自行创建的文件,或者远程下载的文件,通常是指敏感的衍生物,例如安装包。通过挂钩fclose()函数可以捕获该事件。

上述的事件行为仅为摘录之用,不能理解为对本发明监控的事件行为的限制。通过以上的揭示可知,利用Hook技术,监控模块13中的动态行为监控单元可以实现对应用程序样本的事件行为做详尽的监视,有助于后续模块的处理。

同时,监控模块13中的网络数据包监控单元通过抓包实时监控虚拟机模拟的网卡的网络交互情况,具体实施过程为:

1、抓包获取应用程序样本进行网络交互的数据包

采用诸如tcpdump、wireshark之类的抓包工具抓取应用程序的网络交互数据包,一旦抓包成功,则确定应用程序样本有网络交互行为,其中,所述网络交互数据包可以包括以下一种或几种的组合:

DNS通信数据包、HTTP通信数据包、SMTP通信数据包、FTP通信数据包。

2、解析获取的数据包,获取预先指定的信息

对抓取的网络数据包进行解析,以便获取预先指定的信息。以下结合前述列举的不同类型的数据包做示例性说明。

DNS是一个域名系统,记录域名和IP地址之间映射的一个分布式数据库,DNS通信数据包包括DNS请求包和DNS应答包,其中,DNS请求包用于向DNS服务器发送域名解析请求,对其进行解析获取查询URL的名称、源ip和端口、目标ip和端口;DNS应答包用于DNS服务器对请求域名解析的响应,对其进行解析获取查询URL的名称、查询到的URL对应的ip值。

HTTP是超文本传输协议,通过该协议定位网络资源。HTTP通信数据包包括HTTP请求包和HTTP应答包,其中,HTTP请求包用于向服务器发送建立连接的请求,对其进行解析获取URL名称、包的内容长度、包的内容等信息;HTTP应答包用于响应建立的连接,对其进行解析获取URL名称、包的内容长度、包的内容等信息。

SMTP即简单邮件传输协议,定义用于由源地址到目的地址传送邮件的规则。解析其数据包,可以获取URL名称、包的内容长度、包的内容等信息。

FTP即文件传输协议,用于Internet上的控制文件的双向传输。解析其数据包,可以获取URL名称、包的内容长度、包的内容等信息。

3、将数据包中的指定内容记录于特征码数据库

提取监测到的有网络交互行为的应用程序样本的特征码,将所述特征码与解析到的数据包指定信息一一对应记录到特征码数据库,其中,包括数据包类型名称,如DNS通信数据包、HTTP通信数据包、SMTP通信数据包、FTP通信数据包,以及各数据包对应的信息,如URL名称、包的内容长度、包的内容、源ip和端口、目标ip和端口等信息。

判定模块14用于根据监测结果判定所述应用程序样本的安全等级。将安全等级分为四级,分别为高危险、中危险、低危险、安全。根据监控 结果采用以下方式判定应用程序样本的安全等级:

由监控模块13中的动态行为监控单元确定应用程序样本动态行为,将所述动态行为API与动态行为策略库中记录的数据一一对比,确定应用程序样本调用的各动态API的安全等级权值。其中,所述动态行为策略库用于记录应用程序样本的动态行为API与其安全等级权值之间的映射关系,此处所述API即事件行为本身所涉及的函数,而安全等级是利用公知技术提取手动或自动赋值的,该动态行为策略库已预先生成并存储于服务器。动态行为策略库中的每个API对应的权值根据其行为对用户隐私的危险性对应不同的权值,如发送短信行为的危险性大于创建快捷方式的危险性,则发送短信行为对应的API的安全等级权值为3,创建快捷方式行为对应的API的安全等级权值为1。

同理,应用程序产生的网络交互信息在这里也可被视为一种与事件行为等同的事件行为,而被存储到所述的动态行为策略库或类似的文件中,并且由判断模块14进行类似的判定。当然,作为另一实施例,也可直接将发生网络交互消息这一结果本身视为一种对应的安全等级,从而仅经查询即可确定其安全等级。

通过查询所述的动态事件行为策略库,便可获得应用程序样本所对应的各个事件行为的相应的安全等级权值。计算应用程序样本调用的至少一个策略库中的动态行为API对应的安全等级权值之和,将该权值之和与预设的用于划分不同安全等级的阈值进行对比,便可以将所述应用程序样本判断为高危险、中危险、低危险、安全四个等级中的一种。例如权值之和大于10判断为高危险,权值之和介于5和10判断为中危险,权值之和介于2和5判断为低危险,权值之和为0则判断为安全。当然,这样的一种阈值和等级划分是灵活的,也以仅设置3个等级,或设置5个等级,相应的阈值也可做出灵活的调整。当然,这样的一种阈值和等级划分是灵活的,也以仅设置3个等级,或设置5个等级,相应的阈值也可做出灵活的调整。

此外,监控模块13的网络数据包监控单元监控应用程序样本中运行过程中的网络交互行为,与监控模块13的动态行为监控单元同步进行,一旦抓包工具获取到网络数据包,则直接判断该应用程序样本为高危险等 级。如果未抓取到网络数据包,则根据上述动态行为API的权值之和判断应用程序样本的安全等级。

通过上述的揭示可以看出,本发明提供的智能手机应用程序的动态分析系统,利用创建虚拟机模块12为应用程序样本提供虚拟机环境,借助监控模块13实现对应用程序样本的事件行为的分析,包括对其网络交互信息进行监控等,通过判断模块14确定应用程序本样的安全等级,从而实现手机应用程序的安全等级判定。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1