刘海丽
(安徽新华学院计算机科学与技术系,安徽合肥230088)
智能手机成为人们生活的必需品,所以手机安全问题[1-2]就非常重要,已经成为现阶段研究的热点与焦点[3],学者已提出一些手机安全检测技术[4-5]。本文在此基础上,以基于Android平台的智能手机为研究对象,结合手机运行过程中存在的安全隐患,设计一种基于隐马尔可夫模型(HMM)的行为模式识别的手机安全检测系统。
作为典型的层次结构系统,Android手机操作系统至上而下可以分为4层。第1层是基于Linux 2.6的内核开发的底层,其主要作用是管理和抽象硬件,包含各类驱动,如内存驱动、显示驱动、键盘驱动和音频驱动等。第2层是虚拟机和运行时核心的库文件,主要的核心库包括显示系统管理、媒体框架、SQLite数据库、SSL和C库等。手机的大部分多媒体活动都是靠这一层的技术来实现的。第3层是应用框架层,该层是连接应用程序和底层技术的API接口,具备资源管理器、电话管理器、定位管理器、消息管理器等开源的应用接口,以便程序开发者调用。第4层是顶层的应用层,该层提供直接的人机交互应用程序。智能移动终端上的各类应用,如电话和短信功能、浏览器、音视频等应用程序都属于该层。除了系统自带的应用程序,用户还可以从在线应用商城中添加其他应用。
当前Android智能手机平台上常见的不安全软件可分为流氓软件类、恶意扣费类、隐私窃取类、资费消耗类、后门软件类等[6]。Android平台上病毒的恶意行为大多是通过在应用APK包中植入恶意代码来实现。故对Android手机安全检测研究的重点应聚焦于对Android平台的应用程序包结构进行分析[7]。从Android病毒的运行机理来看,病毒中植入的恶意代码通常在手机后台运行,具备一般的用户权限。因此,对Android手机进行安全检测,其实就是对Android平台病毒进行检测与监控。
手机中存有用户使用的各类隐私敏感数据,如电话簿、通话记录、短息等。对于用户来说,这类敏感数据的泄露可能会带来严重后果,如电信诈骗。现有的Android平台绝大多数文件是基于Linux系统框架开发的,不法分子就利用这些开源框架将恶意程序代码隐藏在一些应用中,如植入到短信或网络中,当用户使用移动互联网或者接入无线局域网时,将触发恶意代码的攻击,对用户的信息进行攻击、泄漏、篡改。本文选择较容易受到攻击的短信作为样例,研究Android手机安全检测技术。
目前,对Android手机安全检测的方法有很多,常见的有基于支持向量机(SVM)的检测方法[8]、基于神经网络(ANN)的检测方法[9以及基于机器学习算法的检测方法等[10]。本文则提出基于HMM行为模式识别的Android手机安全检测方法。
HMM是统计学中较为经典的一种模型,本质是发掘事物的转换规律。一般来说,事物的状态主要分为显状态和隐状态两种。显状态是可以通过直接观测得到的状态值;隐状态则无法通过直接观测获得,是隐含在事物变化过程中的一种状态。在观察事物状态变化时,会产生观测向量序列,这个序列中的概率密度函数呈现出相同的模式,这种模式就是著名的隐马尔可夫模型。
针对研究中欲识别的状态,可设计一套模块,以HMM状态的安全检测模块为基础,并称之为DBPM(dynamic behavior perceive Model),DBPM引用HMM来构建上述定义的复合状态转换模式,并可以获得与之相应的对复合行为进行识别的能力。
DBPM与以往的检测不相同,该模型从两个不同的方面对安全行为进行检测,从而完成对两种行为(已知与未知)的识别。DBPM将上面介绍的行为进行不断学习,不仅可以识别该应用程序再使用过程中的行为模式,还可以对用户和应用程序之间的使用进行学习。从一定意义上说,DBPM描述的模型,在涵盖了应用程序之间的行为模式的同时,也将用户与应用程序之间的行为包含在其中。因此,DBPM可以作为区分正常应用行为与不安全行为应用的最佳经验模型。
系统架构如图1所示,检测系统主要包含5个模块:检测模块(负责行为检测)、行为学习模块(对行为进行学习)、数据中心(用于数据的存储)、系统监控模块和交互控制模块(人与应用程序之间交互)。
图1 基于HMM行为模式识别模块系统架构
监控模块的流程如图2所示。根据用户自定义的信息,确定是否需要监听。在确定需要监听的情况下,获取该监听信息的状态信息,然后对信息进行处理,最终生成观测序列并同步到数据中心;在不需要监听的状态下,则直接生成观测序列,以便研发者对序列进行分析。
图2 基于HMM应用行为识别监控子模块流程图
行为检测模块流程如图3所示。从图中可以看出,用户先启动组建,然后设置检测策略,进而读取序列,判断是否是一次完整的评估。如果是非完整的,则输出检测的结果;如果是完整的评估,读取模型,进而评估待测序列。因此,要利用一切代表恶意行为的HMM进行多次迭代评估,综合多次评估结果,输出最终的检测结果。
图3 基于HMM应用行为识别检测子模块流程图
序列评估依据如下:
式中:v={v1,…,vT}是指待评估的可观测序列;P(v)表示由各个隐状态序列产生的所有可见序列v的概率的和;vi为显状态也就是可观状态,ui为隐状态,T和L是指序列的长度,本研究在此处设隐状态集U个数为M,显状态集V个数为N;P(u(t)/u(t-1))是指与显状态相对应的转换概率aij;P(v(t)/u(t))表示显状态相对隐状态的生成概率bij。
由(1)式得到的评估复杂度为O(mTT),很显然是不能取的,因此,这里利用前向法的原理对之分解,分解后的下递归形式如下:
式中,∂j(t)为t时刻位于隐状态uj且己经正确产生了序列v的前t个可见状态的概率。其中init表示初始状态,other表示隐状态为非初始状态。此时对于(1)式中的P(v),可以得到:
学习子模块的流程如图4所示。该模块是一个不断学习的过程。在启动学习之后,读取学习型参数,之后进入完整学习的流程。在一次完整学习过程中,先读取待测序列,不断学习和修改模型,对学习的结果进行评估判别。如果学习的结果满足设定的阈值,则接受此次学习结果;反之则继续循环下一次的学习过程,直至获得满意的学习结果。最终将获取的模型与结果同步保存到数据中心作为知识库。
图4 基于HMM应用行为识别学习子模块流程图
本文利用较为经典的Baum-Welch算法对模型进行学习和修改。Baum-Welch算法是最大似然估计思想的产物,通过递归的方式对模型λ=(A,B,π)的参数进行修改。定义产生序列v的条件下,从隐状态ui(t-1)到uj(t)的概率为γij(t)。
式中,θ表示aij、bjk、P(u(i))合用参数矢量。
类似于 (2)式中的∂i(t),定义βj(t)表示t时刻位于隐状态uj从t+1到T时刻都己经正确生成了可见序列v的概率,则在整个T时间的过程中隐状态ui(t-1)到uj(t)的转移概率为从而从ui到任意其他状态的总概率为由此从ui→uj的转移概率的估计为类似,可以得到生成概率的估计为
利用本算法在完成一次完整的学习之后,记录学习所得的模型,然后利用(5)式、(6)式对平均值进行计算,根据计算的结果,修正模型。从最终学习到的模型中,随机地抽取序列,并对序列进行评估与计算,对评估后的值求平均,从而得到训练结束后的模型对样本序列的认知度。根据认知度的值,设定上限阈值,当相邻两次认知度的差值小于该阈值时,认为结果收敛;否则认为结果发散,仍然需要对模型进行学习。
本文实验采用google提供的仿真环境,以短信的应用程序为例,进行结果测试。将下载和自己编写的4个正常与恶意应用作为本实验的测试对象,利用virus SMS对本文提出的安全检测系统进行测试,测试结果如图5所示。由分析测试结果可知,sys SMS、go SMS都能够正常被识别,即当系统中被植入了恶意的行为sys时,SMS变成virus SMS,出现异常的行为序列,该序列在后台进程中表现出恶意的行为。经过多次实验,该检测系统都表现出较强的安全检测能力。通过行为模式识别技术可以检测各模块存在的安全隐患,并且,通过不断学习修正模型,训练出检测模型,达到好的检测效果。
图5 对virus SMS监控与评估
本文通过对Android平台以及Android平台病毒进行分析,提出了一种基于HMM行为模式识别的Android手机安全检测系统。在该系统上进行病毒检测的测试,实验结果表明:该系统能够很好地检测出异常代码,并标记出威胁类型。该系统具备自适应的学习机制,能够根据每一次检测结果,修正模型并提升检测效果。因此,本文所提出的方法有一定的实际意义与研究价值,为我国移动终端安全检测奠定了一定的理论基础。