CN105787365A - 一种恶意应用程序的检测方法及装置 - Google Patents

一种恶意应用程序的检测方法及装置 Download PDF

Info

Publication number
CN105787365A
CN105787365A CN201410818470.9A CN201410818470A CN105787365A CN 105787365 A CN105787365 A CN 105787365A CN 201410818470 A CN201410818470 A CN 201410818470A CN 105787365 A CN105787365 A CN 105787365A
Authority
CN
China
Prior art keywords
sequence
state transition
application
application program
behavior
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410818470.9A
Other languages
English (en)
Inventor
孙向作
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TCL Corp
Original Assignee
TCL Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TCL Corp filed Critical TCL Corp
Priority to CN201410818470.9A priority Critical patent/CN105787365A/zh
Publication of CN105787365A publication Critical patent/CN105787365A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明适用于软件检测技术领域,提供了一种恶意应用程序的检测方法,包括:获取待检测的应用程序的应用行为序列;计算所述待检测的应用程序的应用行为序列的Markov模型参数;根据计算得到的所述Markov模型参数,计算最佳状态转移序列;将计算得到的所述最佳状态转移序列和预设的正常应用行为库中的每个正常行为的状态转移序列进行匹配;如果在所述正常应用行为库中查找到与所述最佳状态转移序列完全相同的状态转移序列,判定所述待检测的应用程序为正常应用程序;如果在所述正常应用行为库中未查找到与所述最佳状态转移序列完全相同的状态转移序列,判定所述待检测的应用程序为恶意应用程序。本发明能够有效检测出恶意程序。

Description

一种恶意应用程序的检测方法及装置
技术领域
本发明属于软件检测技术领域,尤其涉及一种恶意应用程序的检测方法及装置。
背景技术
随着软件及移动通信技术的发展,在移动终端(例如手机)中植入软件已成为智能手机的主要特征。伴随着越来越多的软件植入到手机中,部分恶意软件也被植入。其中,恶意软件是指执行恶意行为的软件。这些恶意行为包括窃取用户的隐私信息、窃听用户通话内容、消耗用户资源、删除用户个人信息等。
因此,迫切需要有效的检测恶意软件的方法,当前恶意软件常见的检测方法包括:以病毒查杀的方式进行检测;动态实时监控软件的运行及其与外部环境的交互,以确定该软件是否为恶意软件。
然而,上述采用病毒查杀的方式来检测恶意软件的方法,依赖于病毒特征码,对于新发布的软件需要人工分析出病毒特征码,因此检测结果存在一定的滞后期;而动态实时检测的方法依赖于特定的触发条件,若软件中隐藏的恶意行为触发条件复杂,则可能长时间无法检测出该软件是否为恶意软件。
发明内容
本发明的目的在于提供一种恶意应用程序的检测方法及装置,旨在解决现有技术中存在的采用病毒查杀的方式来检测恶意软件的方法,依赖于病毒特征码,对于新发布的软件需要人工分析出病毒特征码,因此检测结果存在一定的滞后期;而动态实时检测的方法依赖于特定的触发条件,若软件中隐藏的恶意行为触发条件复杂,则可能长时间无法检测出该软件是否为恶意软件的问题。
第一方面,本发明提供了一种恶意应用程序的检测方法,所述检测方法包括以下步骤:
获取待检测的应用程序的应用行为序列;
计算所述待检测的应用程序的应用行为序列的Markov模型参数;
根据计算得到的所述Markov模型参数,计算最佳状态转移序列;
将计算得到的所述最佳状态转移序列和预设的正常应用行为库中的每个正常行为的状态转移序列进行匹配;
如果在所述正常应用行为库中查找到与所述最佳状态转移序列完全相同的状态转移序列,判定所述待检测的应用程序为正常应用程序;
如果在所述正常应用行为库中未查找到与所述最佳状态转移序列完全相同的状态转移序列,判定所述待检测的应用程序为恶意应用程序。
第二方面,本发明提供了一种恶意应用程序的检测装置,所述检测装置包括:
应用行为序列获取模块,用于获取待检测的应用程序的应用行为序列;
参数计算模块,用于计算所述待检测的应用程序的应用行为序列的Markov模型参数;
状态转移序列计算模块,用于根据计算得到的所述Markov模型参数,计算最佳状态转移序列;
匹配模块,用于将计算得到的所述最佳状态转移序列和预设的正常应用行为库中的每个正常行为的状态转移序列进行匹配;
判定模块,用于如果在所述正常应用行为库中查找到与所述最佳状态转移序列完全相同的状态转移序列,判定所述待检测的应用程序为正常应用程序;如果在所述正常应用行为库中未查找到与所述最佳状态转移序列完全相同的状态转移序列,判定所述待检测的应用程序为恶意应用程序。
在本发明中,通过在安全环境下使用正常应用程序运行时产生的应用行为序列训练马尔科夫模型,并通过该模型计算出正常应用行为序列最佳状态转移序列,该序列可以作为应用行为的正常轮廓;然后在检测模式下,利用马尔科夫模型计算出待检测应用行为的最佳状态转移序列;最后通过对这两个序列进行模式匹配来判断待检测的应用程序是否异常。本发明能够有效的检测出待检测的应用程序是否为恶意应用程序。
附图说明
图1是本发明实施例一提供的恶意应用程序的检测方法的实现流程示意图;
图2是本发明实施例提供的建立正常应用行为库的实现流程示意图;
图3是本发明另一实施例提供的建立正常应用行为库的实现流程示意图;
图4是本发明实施例二提供的恶意应用程序的检测方法的实现流程示意图;
图5是本发明实施例提供的恶意应用程序的检测装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,首先,在安全环境下使用正常应用程序运行时产生的应用行为序列训练马尔科夫模型,通过该模型计算出正常应用行为序列最佳状态转移序列,该序列可以作为应用行为的正常轮廓;然后在检测模式下,利用马尔科夫模型计算出待检测应用行为的最佳状态转移序列;最后通过对这两个序列进行模式匹配来判断待检测的应用程序是否异常。从而解决了现有技术中存在的采用病毒查杀的方式来检测恶意软件的方法,依赖于病毒特征码,对于新发布的软件需要人工分析出病毒特征码,因此检测结果存在一定的滞后期;而动态实时检测的方法依赖于特定的触发条件,若软件中隐藏的恶意行为触发条件复杂,则可能长时间无法检测出该软件是否为恶意软件的问题。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
请参阅图1,为本发明实施例一提供的恶意应用程序的检测方法的实现流程示意图,所述恶意应用程序的检测方法主要包括以下步骤:
在步骤S101中,获取待检测的应用程序的应用行为序列。
在本发明实施例中,主要获取待检测的应用程序的API调用行为序列和所述应用程序对应的进程的系统调用行为序列。
在步骤S102中,计算所述待检测的应用程序的应用行为序列的Markov模型参数。
在步骤S103中,根据计算得到的所述Markov模型参数,计算最佳状态转移序列。
在步骤S104中,将计算得到的所述最佳状态转移序列和预设的正常应用行为库中的每个正常行为的状态转移序列进行匹配。
在步骤S105中,如果在所述正常应用行为库中能查找到与所述最佳状态转移序列完全相同的状态转移序列,那么判定所述待检测的应用程序为正常应用程序。
在步骤S106中,如果在所述正常应用行为库中没有查找到与所述最佳状态转移序列完全相同的状态转移序列,那么判定所述待检测的应用程序为恶意应用程序。
在本发明实施例中,将计算得到的所述最佳状态转移序列中的每个状态转移短序列和预设的正常应用行为库中的每个正常行为的状态转移短序列进行匹配;如果在所述正常应用行为库中能查找到与所述最佳状态转移序列中的每个状态转移短序列相对应的状态转移短序列,那么判定所述待检测的应用程序为正常应用程序;如果在所述正常应用行为库中没有查找到与所述最佳状态转移序列中的每个状态转移短序列相对应的状态转移短序列,那么判定所述待检测的应用程序为恶意应用程序。
下面详细说明本发明实施例的恶意应用程序的检测方法的各步骤的具体流程。
步骤S101中提到的应用行为序列,其定义为:将Android应用程序API调用行为序列和Android应用程序对应的进程的系统调用行为序列融合,并统称为应用行为序列。
在本发明实施例中,所述Android应用程序API调用行为序列的详细描述如下:
Android应用程序是由四大组件组成,包括Activity、Service、BroadCastReceiver、以及ContentProvider。一个Android应用程序可以由上述这四个组件组合而成,或者是由上述这四个组件中的其中一部分组件组合而成,无论采用哪种组件组成的Android应用程序,都是调用其组件的API(ApplicationProgrammingInterface,应用程序编程接口),从而实现一定的功能。
因此,Android应用程序的最小颗粒度即API(应用程序编程接口)调用,可将Android应用程序抽象为一个API调用行为序列组合,其中一个API调用包括:该API的具体功能、该API调用的涉及的相关Android权限和该API调用时间等。
Android应用程序就是一系列上述提到的API调用组成的,将这样一系列的具有相关性的API调用的集合(对应其Android应用程序)称为一个行为模式。即每一个Android应用程序本质上都对应着一个行为模式。
综上所述,应用行为就是一系列根据API调用时所涉及到的相对时间前后组合起来的API调用行为序列。
在本发明实施例中,所述Android应用程序对应的进程的系统调用行为序列的详细描述如下:
Android应用程序最终会编译为一个对应的.apk文件。每个.apk文件由其包名称作为唯一标识,该名称在它的描述文件中指定。Android使用包名称作为运行该包名中各个组件的进程名称。Android还为此包进程分配一个唯一的用以运行的用户ID。所分配的这个用户ID在本质上是用于底层Linux操作系统的ID。
从应用层来看,在Android系统中,Dalvik虚拟机允许Android操作系统为每一个应用程序分配一个进程,这样意味着,任何应用程序都不依赖于另一个。更确切的说Android中每一个应用程序都运行在一个单独的Dalvik虚拟机中,每一个单独的Dalvik虚拟机都拥有单独的LinuxUserID,并运行在单独的进程中。如果一个应用程序崩溃,它将不会影响到设备上运行的其他应用程序。
由上可知,每一个Android应用程序在系统中运行都有与其唯一对应的进程。
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动;它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。也就是说,进程是具有某种功能的程序的一次执行实例。
系统调用是操作系统提供给用户的应用编程接口,其用于用户空间的程序向操作系统内核请求需要更高权限运行的服务。系统调用提供了用户程序与操作系统之间的接口。Android操作系统的进程空间被分为用户空间和内核空间,访问它们需要不同的执行权限,其中系统调用运行在内核空间中。而Android应用程序一般运行在用户空间,并且其使用的函数绝大部分是普通的库函数。普通的库函数调用由函数库或者用户自己提供,运行于用户态。这些库函数在底层实现上还是通过调用对应功能的系统调用。
进程中涉及的系统调用序列直接和进程的行为相关,能够很好的描述进程的行为轮廓;因此能够准确反映进程之间的行为差异,并且有利于区分进程的正常行为和异常行为。其次,对于进程来说,系统调用是已知的数据源中粒度最细的,因此能够最准确的描述进程的行为。第三,一个应用程序的系统调用集合是非常稳定的,很容易形成关于该进程的正常行为的特征库。第四,系统调用的获取实时性非常好,一旦进程请求系统调用,就能够第一时间提取系统调用相关的数据。
基于以上原因,可将Android应用程序对应的进程的系统调用序列作为Android应用程序对应的进程行为分析的数据源。
进程行为序列就是一系列根据系统调用时所涉及到的相对时间前后组合起来的系统调用序列。
综上所述,将Android应用程序API调用行为序列和Android应用程序对应的进程的系统调用行为序列融合,并统称为应用行为序列。
在本发明实施例中,步骤S102中提到的计算所述待检测的应用程序的应用行为序列的Markov模型参数的算法设计如下:
Markov链是状态和时间都离散的Markov随机过程,其定义如下:
定义一:如果{Xn,n=0,1,2,...}是离散的随机过程,其状态集为Ω={θ12,...,θN},并且对任何k≥1,n0<n1<...<nk-1<m<n,有随机序列在n时刻所处的状态为sn的概率只与它在m时刻所处的状态sm有关,而与m时刻之前它所处的状态无关。
P { X n = s n | X n 0 = s 0 , . . . , X k - 1 = s k - 1 , X m = s m } = P { X n = s n | X m = s m }
其中,s1,s2,...,sm,sn∈Ω={θ12,...,θN},则称{Xn,n=0,1,2,...}是马尔科夫链。
定义二:对于N个状态的Markov链{Xn,n=0,1,2,...,N},称Pij(n,n+k)=P(Xn+k=θj|Xn=θi),1≤i,j≤N为Markov链的k步转移概率;如果Pij(n,n+k)与n无关,则称该Markov链为齐次Markov链,此时Pij(n,n+k)=Pij(k)。特别的,当k=1时,Pij(1)称为一步转移概率,简称转移概率,记为aij,0≤aij≤1,并称A=(aij)N×N为状态转移概率矩阵,即状态转移序列。可以理解的是,步骤S103中提到的计算最佳状态转移序列,则采用该算法得到的。
定义三:对于N个状态的Markov链{Xn,n=0,1,2,...,N},记πi=P(Xi=θi)并称矢量π=(π12,...,πN)为初始状态概率矢量。
上述序列分析算法一般分析应用行为序列的时间信息和顺序等,从而获取应用行为序列之间的规律,然后通过这些规律建立应用行为序列的正常应用行为库。根据待检测Android应用程序的应用行为序列的特征与正常应用行为库进行匹配的结果来判断Android应用程序的应用行为是否异常。
在本发明实施例中,检测应用程序是否为恶意应用程序,首先需要建立应用程序的正常应用行为特征轮廓,然后将待检测的应用程序的实际应用行为和这些正常应用行为特征轮廓相比较,并标识正常的偏离。也就是说,检测应用程序是否为恶意应用程序是根据应用程序的非正常行为来检测恶意应用程序。如上所述,应用程序的行为模式中包含了该应用程序运行的行为信息,并且从理论上来说正常应用程序和恶意应用程序从行为上是可区分的。因此基于行为模式的异常检测需要首先建立正常应用程序的行为轮廓,然后将待检测的应用程序的实际的应用行为与正常应用程序的行为进行比较,从而来判定是否为恶意行为。
本发明实施例提出的通过Markov链进行检测应用程序是否为恶意应用程序的基本思路是:首先,在安全环境下使用正常应用程序运行时产生的应用行为序列来训练马尔科夫模型,通过该马尔科夫模型计算出正常应用行为序列最佳状态转移序列,该状态转移序列可以作为应用行为的正常轮廓;然后在检测模式下,利用马尔科夫模型计算出待检测应用行为的最佳状态转移序列;最后通过对这两个序列进行模式匹配来判断是否异常,从而得出待检测应用程序是否为恶意应用程序。
在此,请参阅图2,本发明实施例详细描述如何建立正常应用行为库,其实现方案如下:
在步骤S10中,获取所有应用程序数据集的模型参数;
在步骤S11中,计算所述数据集上Markov链初始状态概率矢量;
在本发明实施例中,采用Markov链的初始状态概率矢量π=(π12,...,πN)描述应用程序正常运行时各个原子操作在初始时刻出现的概率,所述初始状态概率矢量π=(π12,...,πN)的计算方式如下:
统计Markov链状态集合中每个状态(即每个原子操作)在正常应用训练集R={R1,R2,R3,...,RM}中出现的次数以及它们之间互相转移的次数。设原子操作在正常应用训练集R中出现的次数为Ci,则
&pi; i = C i r , 1 &le; i &le; W
在步骤S12中,计算所述数据集上Markov链状态转移矩阵;
在本发明实施例中,所述状态转移矩阵A=(aij)N×N描述各个原子操作之间的时序相关性。所述状态转移矩阵A=(aij)N×N的计算方式如下:
设在正常应用训练集R中,原子操作转移的次数为Zij,即序列在正常应用训练集中出现的次数,并设在正常应用训练集中原子操作向各个原子操作转移的总次数为Yi,则
a ij = Z ij Y i
在步骤S13中,计算所述应用程序的行为模式序列流;
在本发明实施例中,获取实际应用程序在被监测时间内所产生的行为模式序列。设该序列为该序列的长度为为按照时间相对顺序排列的第i个原子操作
由实际应用行为模式序列生成实际应用行为模式序列流 S &OverBar; = ( S &OverBar; eq 1 , S &OverBar; eq 2 , . . . , S &OverBar; eq r &OverBar; - l + 1 ) , 其中, S &OverBar; eq i = ( s &OverBar; i , s &OverBar; i + 1 , . . . , s &OverBar; i + l - 1 ) , 1 &le; i &le; r &OverBar; - l + 1 , 是按照时间序列排列的第i个应用行为模式序列。是实际应用行为模式序列中所有连续长度为l的真子集的集合,其中每个行为模式序列长度都是l。
在步骤S14中,计算所述行为模式序列流中每一个序列出现的概率,得到概率序列;
在本发明实施例中,根据初始状态概率矢量π和状态转移矩阵A=(aij)N×N,计算实际应用行为模式序列流中每个序列的出现概率。假设该应用的当前行为是正常行为的情况下, S &OverBar; eq i = ( s &OverBar; i , s &OverBar; i + 1 , . . . , s &OverBar; i + l - 1 ) , 1 &le; i &le; r &OverBar; - l + 1 序列的出现概率为其计算方式如下:
P ( S &OverBar; eq i ) = P ( s &OverBar; i ) &times; P ( s &OverBar; i + 1 | s &OverBar; i ) &times; P ( s &OverBar; i + 2 | s &OverBar; i + 1 ) &times; . . . &times; P ( s &OverBar; i + l - 1 | s &OverBar; i + l - 2 ) = P ( s &OverBar; ) &Pi; i = 1 i + l - 2 P ( s &OverBar; i + 1 | s &OverBar; ) 上式中,表示在实际应用程序的当前行为是正常行为的情况下的出现概率;假设对应状态集合 &Omega; ij = { s 1 * , s 2 * , . . . , s W * } 中的 s &OverBar; i = s j * . 那么
P ( s &OverBar; i ) = &pi; j
其中,π=(π12,...,πN)为Markov链的初始状态概率矢量。
表示在实际应用程序的当前行为是正常行为的情况下,从单元操作的转移概率。假设对应状态集合中的 s &OverBar; i + 1 = s k * . 那么
P ( s &OverBar; i + 1 | s &OverBar; i ) = a jk
其中,A=(aij)N×N为状态转移矩阵。
利用以上方式依次计算中每个序列出现的概率,得到概率序列 P = ( P ( S &OverBar; eq 1 ) , P ( S &OverBar; eq 2 ) , . . . , P ( S &OverBar; eq r &OverBar; - l + 1 ) ) .
在步骤S15中,判断是否遍历完所有应用程序数据集;
在步骤S16中,如果遍历完所有应用程序数据集,则将计算得到的所述概率序列加入正常应用行为库中。
在步骤S17中,如果没有遍历完所有应用程序数据集,则返回至步骤S11中执行所述计算所述数据集上Markov链初始状态概率矢量的步骤。
请参阅图3,作为本发明另一实施例,建立正常应用行为库,其实现方案如下:
在步骤S20中,获取所有应用程序数据集的模型参数;
在步骤S21中,确定训练数据集。
在本发明实施例中,将一次API调用与其对应的系统调用统称为一次原子操作。采用一阶齐次Markov链描述一个正常应用原子操作序列的轮廓,该Markov链的状态与正常应用训练数据集中互不相同的应用行为模式相对应,每个Markov链的元素都是上述定义的异常检测对象集Ω中的对象。所述确定训练数据集的步骤,具体包括以下步骤:
在步骤S211中,获取正常应用程序的行为模式的训练数据;
设正常应用程序的训练集包含M个训练数据。训练这些正常应用程序产生的M个行为模式,分别记为R1,R2,R3,...RM,其中第i个行为模式记为Ri是该训练样本正常运行时产生的原子操作序列,并且在Ri中的表示按照时间相对顺序排列的第j(1≤j≤r(i))个原子操作。
在步骤S212中,获取Markov链的状态集合。
将正常应用训练集中互不相同的原子操作提取出来,并根据这些原子操作确定Markov链的状态集合。这个集合是异常检测对象集的真子集。设正常应用训练数据R1,R2,R3,...RM中原子操作共有W个,分别记为这里W≤r,并且W≤M,对应的状态集合为
在步骤S22中,计算所述数据集上Markov链初始状态概率矢量;
在步骤S23中,计算所述数据集上Markov链状态转移矩阵;
在步骤S24中,计算所述应用程序的行为模式序列流;
在步骤S25中,计算所述行为模式序列流中每一个序列出现的概率,得到概率序列;
在步骤S26中,判断是否遍历完所有应用程序数据集;
在步骤S27中,如果遍历完所有应用程序数据集,则将计算得到的所述概率序列加入正常应用行为库中。
在步骤S28中,如果没有遍历完所有应用程序数据集,则返回至步骤S21中执行所述确定训练数据集的步骤。
实施例二:
请参阅图4,为本发明实施例二提供的恶意应用程序的检测方法的实现流程示意图,所述恶意应用程序的检测方法主要包括以下步骤:
在步骤S201中,获取待检测的应用程序的应用行为序列。
在步骤S202中,计算所述待检测的应用程序的应用行为序列的Markov模型参数。
在步骤S203中,根据计算得到的所述Markov模型参数,计算最佳状态转移序列。
在步骤S204中,将计算得到的所述最佳状态转移序列中的每个状态转移短序列和预设的正常应用行为库中的每个正常行为的状态转移短序列进行匹配;
在步骤S205中,如果在所述正常应用行为库中能查找到与所述最佳状态转移序列中的每个状态转移短序列相对应的状态转移短序列,那么判定所述待检测的应用程序为正常应用程序;
在步骤S206中,如果在所述正常应用行为库中没有查找到与所述最佳状态转移序列中的部分状态转移短序列相对应的状态转移短序列,则记录不匹配的状态转移短序列;
在步骤S207中,计算所述不匹配的状态转移短序列数目占总的状态转移短序列数目的百分比;
在步骤S208中,判断所述不匹配的状态转移短序列数目占总的状态转移短序列数目的百分比是否高于预设安全阈值;
在步骤S209中,如果判断出所述百分比高于预设安全阈值,判定所述待检测的应用程序为正常应用程序。
在步骤S210中,如果判断出所述百分比不高于预设安全阈值,判定所述待检测的应用程序为恶意应用程序。
请参阅图5,为本发明实施例提供的恶意应用程序的检测装置的结构示意图。为了便于说明,仅示出了与本发明实施例相关的部分。所述恶意应用程序的检测装置可以是软件单元、硬件单元或者是软硬件结合的单元。
所述恶意应用程序的检测装置包括:应用行为序列获取模块101、参数计算模块102、状态转移序列计算模块103、匹配模块104、以及判定模块105。
应用行为序列获取模块101,用于获取待检测的应用程序的应用行为序列。
在本发明实施例中,应用行为序列获取模块101,具体用于获取待检测的应用程序的API调用行为序列和所述应用程序对应的进程的系统调用行为序列。
参数计算模块102,用于计算所述待检测的应用程序的应用行为序列的Markov模型参数。
状态转移序列计算模块103,用于根据计算得到的所述Markov模型参数,计算最佳状态转移序列。
匹配模块104,用于将计算得到的所述最佳状态转移序列和预设的正常应用行为库中的每个正常行为的状态转移序列进行匹配。
判定模块105,用于如果在所述正常应用行为库中能查找到与所述最佳状态转移序列完全相同的状态转移序列,那么判定所述待检测的应用程序为正常应用程序;如果在所述正常应用行为库中没有查找到与所述最佳状态转移序列完全相同的状态转移序列,那么判定所述待检测的应用程序为恶意应用程序。
在本发明实施例中,匹配模块104,具体用于将计算得到的所述最佳状态转移序列中的每个状态转移短序列和预设的正常应用行为库中的每个正常行为的状态转移短序列进行匹配;判定模块105,具体用于如果在所述正常应用行为库中能查找到与所述最佳状态转移序列中的每个状态转移短序列相对应的状态转移短序列,那么判定所述待检测的应用程序为正常应用程序;如果在所述正常应用行为库中没有查找到与所述最佳状态转移序列中的每个状态转移短序列相对应的状态转移短序列,那么判定所述待检测的应用程序为恶意应用程序。
作为本发明另一实施例,所述恶意应用程序的检测装置还包括:记录模块、百分比计算模块、以及判断模块。
记录模块,用于如果在所述正常应用行为库中没有查找到与所述最佳状态转移序列中的部分状态转移短序列相对应的状态转移短序列,则记录不匹配的状态转移短序列。
百分比计算模块,用于计算所述不匹配的状态转移短序列数目占总的状态转移短序列数目的百分比。
判断模块,用于判断所述不匹配的状态转移短序列数目占总的状态转移短序列数目的百分比是否高于预设安全阈值。
判定模块105,还用于如果判断出所述百分比高于预设安全阈值,判定所述待检测的应用程序为正常应用程序;如果判断出所述百分比不高于预设安全阈值,判定所述待检测的应用程序为恶意应用程序。
作为本发明另一实施例,所述恶意应用程序的检测装置还包括:建立模块。
建立模块,用于建立正常应用行为库。
在本发明实施例中,所述建立模块具体包括:模型参数获取模块、状态概率矢量计算模块、状态转移矩阵计算模块、序列流计算模块、概率序列计算模块、数据集判断模块、加入模块、以及返回控制模块。
模型参数获取模块,用于获取所有应用程序数据集的模型参数;
状态概率矢量计算模块,用于计算所述数据集上Markov链初始状态概率矢量;
状态转移矩阵计算模块,用于计算所述数据集上Markov链状态转移矩阵;
序列流计算模块,用于计算所述应用程序的行为模式序列流;
概率序列计算模块,用于计算所述行为模式序列流中每一个序列出现的概率,得到概率序列;
数据集判断模块,用于判断是否遍历完所有应用程序数据集;
加入模块,用于如果遍历完所有应用程序数据集,则将计算得到的所述概率序列加入正常应用行为库中。
返回控制模块,用于如果没有遍历完所有应用程序数据集,则返回至所述状态概率矢量计算模块中以执行所述计算所述数据集上Markov链初始状态概率矢量。
作为本发明另一实施例,所述建立模块还包括:确定模块。
所述确定模块,用于确定训练数据集。此时,所述返回控制模块,用于如果没有遍历完所有应用程序数据集,则返回至所述确定模块中以执行所述确定训练数据集。
在本发明实施例中,所述确定模块具体包括:训练数据获取模块、以及状态集合获取模块。
所述训练数据获取模块,用于获取正常应用程序的行为模式的训练数据;
所述状态集合获取模块,用于获取Markov链的状态集合。
综上所述,本发明实施例通过在安全环境下使用正常应用程序运行时产生的应用行为序列训练马尔科夫模型,并通过该模型计算出正常应用行为序列最佳状态转移序列,该序列可以作为应用行为的正常轮廓;然后在检测模式下,利用马尔科夫模型计算出待检测应用行为的最佳状态转移序列;最后通过对这两个序列进行模式匹配来判断待检测的应用程序是否异常。本发明实施例能够有效的检测出待检测的应用程序是否为恶意应用程序。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种恶意应用程序的检测方法,其特征在于,所述检测方法包括以下步骤:
获取待检测的应用程序的应用行为序列;
计算所述待检测的应用程序的应用行为序列的Markov模型参数;
根据计算得到的所述Markov模型参数,计算最佳状态转移序列;
将计算得到的所述最佳状态转移序列和预设的正常应用行为库中的每个正常行为的状态转移序列进行匹配;
如果在所述正常应用行为库中查找到与所述最佳状态转移序列完全相同的状态转移序列,判定所述待检测的应用程序为正常应用程序;
如果在所述正常应用行为库中未查找到与所述最佳状态转移序列完全相同的状态转移序列,判定所述待检测的应用程序为恶意应用程序。
2.如权利要求1所述的检测方法,其特征在于,所述检测方法还包括:
如果在所述正常应用行为库中未查找到与所述最佳状态转移序列中的部分状态转移短序列相对应的状态转移短序列,则记录不匹配的状态转移短序列;
计算所述不匹配的状态转移短序列数目占总的状态转移短序列数目的百分比;
判断所述不匹配的状态转移短序列数目占总的状态转移短序列数目的百分比是否高于预设安全阈值;
如果判断出所述百分比高于预设安全阈值,判定所述待检测的应用程序为正常应用程序;
如果判断出所述百分比不高于预设安全阈值,判定所述待检测的应用程序为恶意应用程序。
3.如权利要求1所述的检测方法,其特征在于,所述检测方法还包括:
预先建立正常应用行为库。
4.如权利要求3所述的检测方法,其特征在于,所述建立正常应用行为库的步骤,具体包括:
获取所有应用程序数据集的模型参数;
计算所述数据集上Markov链初始状态概率矢量;
计算所述数据集上Markov链状态转移矩阵;
计算所述应用程序的行为模式序列流;
计算所述行为模式序列流中每一个序列出现的概率,得到概率序列;
判断是否遍历完所有应用程序数据集;
如果遍历完所有应用程序数据集,则将计算得到的所述概率序列加入正常应用行为库中;
如果没有遍历完所有应用程序数据集,则返回至所述计算所述数据集上Markov链初始状态概率矢量的步骤。
5.如权利要求4所述的检测方法,其特征在于,在所述获取所有应用程序数据集的模型参数的步骤之后,还包括:
确定训练数据集;
所述如果没有遍历完所有应用程序数据集,则返回至所述计算所述数据集上Markov链初始状态概率矢量的步骤,具体为:
所述如果没有遍历完所有应用程序数据集,则返回至所述确定训练数据集的步骤。
6.一种恶意应用程序的检测装置,其特征在于,所述检测装置包括:
应用行为序列获取模块,用于获取待检测的应用程序的应用行为序列;
参数计算模块,用于计算所述待检测的应用程序的应用行为序列的Markov模型参数;
状态转移序列计算模块,用于根据计算得到的所述Markov模型参数,计算最佳状态转移序列;
匹配模块,用于将计算得到的所述最佳状态转移序列和预设的正常应用行为库中的每个正常行为的状态转移序列进行匹配;
判定模块,用于如果在所述正常应用行为库中查找到与所述最佳状态转移序列完全相同的状态转移序列,判定所述待检测的应用程序为正常应用程序;如果在所述正常应用行为库中未查找到与所述最佳状态转移序列完全相同的状态转移序列,判定所述待检测的应用程序为恶意应用程序。
7.如权利要求6所述的检测装置,其特征在于,所述检测装置还包括:
记录模块,用于如果在所述正常应用行为库中未查找到与所述最佳状态转移序列中的部分状态转移短序列相对应的状态转移短序列,则记录不匹配的状态转移短序列;
百分比计算模块,用于计算所述不匹配的状态转移短序列数目占总的状态转移短序列数目的百分比;
判断模块,用于判断所述不匹配的状态转移短序列数目占总的状态转移短序列数目的百分比是否高于预设安全阈值;
所述判定模块,还用于如果判断出所述百分比高于预设安全阈值,判定所述待检测的应用程序为正常应用程序;如果判断出所述百分比不高于预设安全阈值,判定所述待检测的应用程序为恶意应用程序。
8.如权利要求6所述的检测装置,其特征在于,所述检测装置还包括:
建立模块,用于建立正常应用行为库。
9.如权利要求8所述的检测装置,其特征在于,所述建立模块具体包括:
模型参数获取模块,用于获取所有应用程序数据集的模型参数;
状态概率矢量计算模块,用于计算所述数据集上Markov链初始状态概率矢量;
状态转移矩阵计算模块,用于计算所述数据集上Markov链状态转移矩阵;
序列流计算模块,用于计算所述应用程序的行为模式序列流;
概率序列计算模块,用于计算所述行为模式序列流中每一个序列出现的概率,得到概率序列;
数据集判断模块,用于判断是否遍历完所有应用程序数据集;
加入模块,用于如果遍历完所有应用程序数据集,则将计算得到的所述概率序列加入正常应用行为库中。
返回控制模块,用于如果没有遍历完所有应用程序数据集,则返回至所述状态概率矢量计算模块中以执行所述计算所述数据集上Markov链初始状态概率矢量。
10.如权利要求9所述的检测装置,其特征在于,所述建立模块还包括:
确定模块,用于确定训练数据集;
所述返回控制模块,还用于如果没有遍历完所有应用程序数据集,则返回至所述确定模块中以执行所述确定训练数据集。
CN201410818470.9A 2014-12-24 2014-12-24 一种恶意应用程序的检测方法及装置 Pending CN105787365A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410818470.9A CN105787365A (zh) 2014-12-24 2014-12-24 一种恶意应用程序的检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410818470.9A CN105787365A (zh) 2014-12-24 2014-12-24 一种恶意应用程序的检测方法及装置

Publications (1)

Publication Number Publication Date
CN105787365A true CN105787365A (zh) 2016-07-20

Family

ID=56377599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410818470.9A Pending CN105787365A (zh) 2014-12-24 2014-12-24 一种恶意应用程序的检测方法及装置

Country Status (1)

Country Link
CN (1) CN105787365A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649122A (zh) * 2016-12-28 2017-05-10 Tcl集团股份有限公司 一种终端应用的模型构建方法及装置
CN106777981A (zh) * 2016-12-16 2017-05-31 Tcl集团股份有限公司 一种行为数据的校验方法及装置
CN108021802A (zh) * 2017-10-24 2018-05-11 努比亚技术有限公司 一种系统资源访问控制方法、终端及计算机可读存储介质
CN108536776A (zh) * 2018-03-28 2018-09-14 广州厚云信息科技有限公司 一种社交网络中的统一用户恶意行为检测方法和系统
CN109657468A (zh) * 2018-11-29 2019-04-19 北京奇虎科技有限公司 病毒行为检测方法、装置及计算机可读存储介质
CN109753801A (zh) * 2019-01-29 2019-05-14 重庆邮电大学 基于系统调用的智能终端恶意软件动态检测方法
CN114969738A (zh) * 2022-05-27 2022-08-30 天翼爱音乐文化科技有限公司 一种接口异常行为监测方法、系统、装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101615186A (zh) * 2009-07-28 2009-12-30 东北大学 一种基于隐马尔科夫理论的bbs用户异常行为审计方法
CN101872418A (zh) * 2010-05-28 2010-10-27 电子科技大学 基于群体环境异常行为的检测方法
CN103500307A (zh) * 2013-09-26 2014-01-08 北京邮电大学 一种基于行为模型的移动互联网恶意应用软件检测方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101615186A (zh) * 2009-07-28 2009-12-30 东北大学 一种基于隐马尔科夫理论的bbs用户异常行为审计方法
CN101872418A (zh) * 2010-05-28 2010-10-27 电子科技大学 基于群体环境异常行为的检测方法
CN103500307A (zh) * 2013-09-26 2014-01-08 北京邮电大学 一种基于行为模型的移动互联网恶意应用软件检测方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
STEPHANIE FORREST等: "A sense of self for Unix processes", 《SECURITY AND PRIVACY, 1996. PROCEEDINGS., 1996 IEEE SYMPOSIUM ON》 *
刘伟: "基于行为模式的Android平台入侵检测系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
闫巧等: "基于HMM的系统调用异常检测", 《电子学报》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106777981A (zh) * 2016-12-16 2017-05-31 Tcl集团股份有限公司 一种行为数据的校验方法及装置
CN106777981B (zh) * 2016-12-16 2020-07-14 Tcl科技集团股份有限公司 一种行为数据的校验方法及装置
CN106649122A (zh) * 2016-12-28 2017-05-10 Tcl集团股份有限公司 一种终端应用的模型构建方法及装置
CN108021802A (zh) * 2017-10-24 2018-05-11 努比亚技术有限公司 一种系统资源访问控制方法、终端及计算机可读存储介质
CN108536776A (zh) * 2018-03-28 2018-09-14 广州厚云信息科技有限公司 一种社交网络中的统一用户恶意行为检测方法和系统
CN109657468A (zh) * 2018-11-29 2019-04-19 北京奇虎科技有限公司 病毒行为检测方法、装置及计算机可读存储介质
CN109657468B (zh) * 2018-11-29 2024-06-18 北京奇虎科技有限公司 病毒行为检测方法、装置及计算机可读存储介质
CN109753801A (zh) * 2019-01-29 2019-05-14 重庆邮电大学 基于系统调用的智能终端恶意软件动态检测方法
CN109753801B (zh) * 2019-01-29 2022-04-22 重庆邮电大学 基于系统调用的智能终端恶意软件动态检测方法
CN114969738A (zh) * 2022-05-27 2022-08-30 天翼爱音乐文化科技有限公司 一种接口异常行为监测方法、系统、装置及存储介质

Similar Documents

Publication Publication Date Title
CN105787365A (zh) 一种恶意应用程序的检测方法及装置
CN107392619B (zh) 智能合约处理方法及装置
KR101904911B1 (ko) 하이브리드 퍼징 기반 보안 취약점 자동 탐색 방법 및 그 장치
US10997291B2 (en) Extending dynamic detection of malware using static and dynamic malware analyses
Yang et al. Leakminer: Detect information leakage on android with static taint analysis
KR101981028B1 (ko) 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램
Zhang et al. Program logic based software plagiarism detection
KR102456579B1 (ko) 암호화 관련 취약점 공격에 강인한 전자 장치 및 그 방법
Feng et al. Mobidroid: A performance-sensitive malware detection system on mobile platform
EP3244334B1 (en) Log files graphs path decomposition for network anomaly detection
EP3270319B1 (en) Method and apparatus for generating dynamic security module
CN108268371B (zh) 面向Android应用的智能模糊测试方法
US8671397B2 (en) Selective data flow analysis of bounded regions of computer software applications
KR20090065277A (ko) 특정 이벤트/조건에서 동작하는 윈도우용 악성 코드탐지를 위한 프로그램 자동 분석 장치 및 방법
KR101972825B1 (ko) 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램
CN108256325A (zh) 一种恶意代码变种的检测的方法和装置
Boxler et al. Static taint analysis tools to detect information flows
US11620129B1 (en) Agent-based detection of fuzzing activity associated with a target program
CN113010892A (zh) 小程序恶意行为检测方法和装置
KR101324691B1 (ko) 모바일 악성 행위 어플리케이션 탐지 시스템 및 방법
CN109145589B (zh) 应用程序获取方法及装置
Yuan et al. Android applications categorization using bayesian classification
CN109840417B (zh) 一种恶意软件检测方法及装置
CN108197475B (zh) 一种恶意so模块检测方法及相关装置
CN110069926B (zh) Android重打包应用的恶意代码定位方法、存储介质和终端

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160720

RJ01 Rejection of invention patent application after publication