发明内容
为了解决上述技术问题,本发明实施例提供了一种安卓应用恶意行为的检测方法和装置,可以通过在应用运行时进行恶意行为检测,能够提高恶意行为检测准确率。
为了达到本发明目的,一方面,本发明实施例提供了一种安卓应用恶意行为的检测方法,包括:
在内核中监听广播接收者BroadcastReceiver事件,监控安卓应用对系统应用程序编程接口API的调用;
在响应事件中获取消息的意图Intent信息和上下文Context信息,依据所述信息构建API调用的特征向量;
对所述特征向量进行检测,将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为。
可选地,所述在响应事件中获取消息的意图Intent信息和上下文Context信息,依据所述信息构建API调用的特征向量包括:
获取所述Intent信息中的action、data、category、type、component、extra、referer信息,以及所述Context信息中的contextView、packageName、label信息,并将这些信息组成所述API调用的特征向量,以传递给检测模块进行检测。
可选地,所述对所述特征向量进行检测,将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为包括:
通过所述检测模块中的静态恶意调用检测模块查看所述特征向量是否与预设匹配规则匹配。
可选地,所述对所述特征向量进行检测,将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为还包括:
如果所述静态恶意调用检测模块检测结果为正常,则调用所述检测模块中的动态恶意调用检测模块的概率图模型,将所述特征向量输入所述概率图模型,根据模型输出值,判断所述API调用是否为恶意行为。
可选地,所述方法还包括:
当判定所述API调用为恶意行为,则通过用户接口模块对用户进行提醒。
可选地,所述方法还包括:
所述静态恶意调用检测模块中的预设匹配规则,由线下收集到的恶意API调用特征向量构建。
另一方面,本发明实施例还提供了一种安卓应用恶意行为的检测装置,包括:
监控模块,用于在内核中监听广播接收者BroadcastReceiver事件,监控安卓应用对系统应用程序编程接口API的调用;
构建模块,用于在响应事件中获取消息的意图Intent信息和上下文Context信息,依据所述信息构建API调用的特征向量;
检测模块,用于对所述特征向量进行检测,将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为。
可选地,所述构建模块还用于:
获取所述Intent信息中的action、data、category、type、component、extra、referer信息,以及所述Context信息中的contextView、packageName、label信息,并将这些信息组成所述API调用的特征向量,以传递给检测模块进行检测。
可选地,所述检测模块还用于:
通过所检测模块中的静态恶意调用检测模块查看所述特征向量是否与预设匹配规则匹配。
可选地,所述检测模块还用于:
如果所述静态恶意调用检测模块检测结果为正常,则调用所述检测模块中的动态恶意调用检测模块的概率图模型,将所述特征向量输入所述概率图模型,根据模型输出值,判断所述API调用是否为恶意行为。
本发明实施例通过在内核中监听广播接收者BroadcastReceiver事件,监控安卓应用对系统应用程序编程接口API的调用;在响应事件中获取消息的意图Intent信息和上下文Context信息,依据所述信息构建API调用的特征向量;对所述特征向量进行检测,将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为。本发明实施例可以通过在应用运行时进行恶意行为检测,提高了恶意行为的检出率和检测的准确率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。本申请中的实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
根据当前安卓应用恶意行为的检测的研究现状,本发明实施例提出一种安卓应用恶意行为的检测方法,该方法主要关注用户使用安卓应用时所触发的API调用情况,以此来对恶意行为进行判断,进而对用户进行提醒。本发明实施例在内核中监控安卓应用对系统应用程序编程接口(Application Programming Interface, API)的调用,调用之前就进行行为检测,从而在尽可能早的阶段对恶意行为进行检测,并对用户进行提醒。
本发明实施例是针对当前安卓应用恶意行为的检测方法中的不足,提供一种在应用运行时进行恶意行为检测的方法。所述方法包括:
步骤1:在内核中监听广播接收者BroadcastReceiver事件,监控安卓应用对系统应用程序编程接口API的调用;
步骤2:在响应事件中获取消息的意图Intent信息和上下文Context信息,依据所述信息构建API调用的特征向量;
步骤3:对所述特征向量进行检测,将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为。
具体地,本发明实施例包含线下静态恶意调用检测模块检测规则预设阶段、线下动态恶意调用检测模块概率图模型构造及训练阶段、在线恶意行为检测阶段。本发明实施例采用Android Malware Genome Project项目中的2000个正常应用样本以及500个恶意应用样本。通过沙箱模型在每个正常应用样本中提取20次随机操作所涉及到的API调用序列;在每个恶意应用样本中提取10次恶意操作所涉及到的API调用序列。对其中每次API调用,都通过监听BroadcastReceiver事件,都取出Intent信息中的action、data、category、type、component、extra、referer信息,以及Context信息中的contextView、packageName、label信息,组成一次API调用的特征向量。
图1为本发明实施例安卓应用恶意行为的检测方法中的线下静态恶意调用检测模块检测规则预设阶段流程示意图,如图1所示,线下静态恶意调用检测模块检测规则预设阶段的具体步骤如下:
步骤101、 对每个恶意应用样本的每次恶意操作,提取所涉及到的API调用序列,每次API调用对应一个特征向量;
步骤102、一次恶意操作所涉及到的API调用序列组成一个恶意操作API调用矩阵;
步骤103、将所有恶意操作的API调用矩阵存入线下静态恶意调用检测模块,作为预设规则,并将这些预设规则矩阵按行和列进行编号,比如矩阵1第7行。
图2为本发明实施例安卓应用恶意行为的检测方法中的线下动态恶意调用检测模块概率图模型构造及训练阶段流程示意图,如图2所示,线下动态恶意调用检测模块概率图模型构造及训练阶段的具体步骤如下:
步骤201、对训练应用样本,包括正常应用及恶意应用的每次操作,如正常应用随机采样操作,恶意应用采样恶意操作所涉及到的API调用序列,每个API调用对应一个特征向量;
步骤202、将每个特征向量作为概率图模型中的一个节点,最后一个节点代表此次API调用所涉及操作是否恶意操作,如果是恶意操作,则节点赋值为1,否则赋值为0;
步骤203、用有向边表示API调用的前后关系,有向边的权值为1,每个API调用序列就可以表示成一系列节点及有向边的组合;
步骤204、遍历训练样本中的每次操作所涉及的API调用序列,构建概率图模型的基本结构,其中,若有向边重合,则将有向边权值相加作为该有向边的新权值;
步骤205、基于步骤204中的概率图模型基本结构,计算其中有相邻关系的每对节点的条件概率,得到概率图模型对应的条件概率分布,从而完成概率图模型构造及训练。
图3为本发明实施例安卓应用恶意行为的检测方法中的在线恶意行为检测阶段流程示意图,如图3所示,在线恶意行为检测阶段的具体步骤如下:
步骤301、针对一次API调用,提取此次调用的特征向量,转步骤302;
步骤302、将该特征向量与线下静态恶意调用检测模块中的预设规则API调用矩阵进行对比,若与第i个矩阵中的第j行匹配,则将特征指示位标记为(i, j+1),转步骤303,否则转步骤304;
步骤303、若j+1行是第i个矩阵中的最后一行,则输出检测结果为“恶意行为”,否则转步骤304;
步骤304、将特征指示位标记为(0, 0),将特征向量作为概率图模型的输入,通过概率图模型结构及条件概率分布,计算2个输出节点的概率值,转步骤305;
步骤305、若输出节点“1”的概率值大于输出节点“0”的概率值,则输出检测结果为“恶意行为”,否则输出检测结果为“正常行为”,转步骤301继续下一次API调用检测。
本发明实施例方法工作原理为:API调用监控模块监听BroadcastReceiver事件,并在响应函数中获取该事件触发者的Intent和Context信息,取出Intent信息中的action、data、category、type、component、extra、referer信息,以及Context信息中的contextView、packageName、label信息,并将这些信息组成此次API调用的特征向量,传递给恶意行为检测模块。恶意行为检测模块首先调用静态恶意调用检测模块,查看其中的预设检测规则是否和该特征向量匹配,从而判断此次API调用是否存在风险;如果静态恶意调用检测模块检测结果为正常,则调用动态恶意调用检测模块的概率图模型,将特征向量输入该模型,根据模型输出值,判断此次API调用是否存在风险。若恶意行为检测模块检测到风险,则调用用户接口模块,在安卓设备通知栏弹出通知,提醒用户存在风险。
可选地,所述在响应事件中获取消息的意图Intent信息和上下文Context信息,依据所述信息构建API调用的特征向量包括:
获取所述Intent信息中的action、data、category、type、component、extra、referer信息,以及所述Context信息中的contextView、packageName、label信息,并将这些信息组成所述API调用的特征向量,以传递给检测模块进行检测。
可选地,所述对所述特征向量进行检测,将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为包括:
通过所述检测模块中的静态恶意调用检测模块查看所述特征向量是否与预设匹配规则匹配。即将API调用特征向量与静态恶意调用检测模块中的预设检测规则进行匹配,判定此次调用是否为恶意行为。
可选地,所述对所述特征向量进行检测,将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为还包括:
如果所述静态恶意调用检测模块检测结果为正常,则调用所述检测模块中的动态恶意调用检测模块的概率图模型,将所述特征向量输入所述概率图模型,根据模型输出值,判断所述API调用是否为恶意行为。
可选地,所述方法还包括:
当判定所述API调用为恶意行为,则通过用户接口模块对用户进行提醒。
可选地,所述方法还包括:
所述静态恶意调用检测模块中的预设匹配规则,由线下收集到的恶意API调用特征向量构建。
其中动态恶意调用检测模块种的概率图模型,是根据线下收集到的正常API调用数据及恶意API调用数据,通过迭代训练,得到的分类模型。
本发明实施例是基于目前缺乏一种在运行时对安卓应用恶意行为进行检测的有效方法,本发明实施例在安卓应用运行时基于应用对内核API的调用,进行恶意行为检测
通过静态规则库及实时基于概率图模型判别的方式,判定每次安卓应用API调用是否属于恶意行为,通过与通用算法对比,本发明实施例的方法的恶意行为检出率比通用算法有所提高。
本发明实施例另一方面还提供了一种安卓应用恶意行为的检测装置,包括:
监控模块,用于在内核中监听广播接收者BroadcastReceiver事件,监控安卓应用对系统应用程序编程接口API的调用;
构建模块,用于在响应事件中获取消息的意图Intent信息和上下文Context信息,依据所述信息构建API调用的特征向量;
检测模块,用于对所述特征向量进行检测,将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为。
具体地,图4为本发明实施例安卓应用恶意行为的检测装置结构示意图,如图4所示,本发明实施例一种安卓应用恶意行为的检测装置,包括API调用监控模块401、恶意行为检测模块402和用户接口模块403,其中:
API调用监控模块401:由于安卓应用的执行依赖于对系统底层API的调用,因此,本发明实施例基于应用层安全监控技术,利用广播接收者BroadcastReceiver监听安卓应用发送的广播消息,在响应事件中获取消息的意图Intent信息和上下文Context信息,从而判断该接口调用是否涉及用户敏感信息或者进行非法操作。
恶意行为检测模块402:该模块包括静态恶意调用检测模块以及动态恶意调用检测模块。其中,静态恶意调用检测模块包含系统预设的检测规则,一旦发现符合预设规则的API调用行为,则通过用户接口模块向用户提示可能存在风险。动态恶意调用检测模块利用历史应用API调用行为数据,通过概率图模型,训练得到对用户有风险的API调用规则,将当前应用API调用上下文输入到训练得到的概率图模型中,对当前调用操作的风险概率进行评估,当恶意行为的概率值超过正常行为的概率值,则通过用户接口模块向用户提示可能存在风险。
用户接口模块403:该模块在恶意行为检测模块检测到有高风险的API调用行为时触发,通过通知栏消息的方式,提示用户当前应用正在进行风险操作。
可选地,所述构建模块还用于:
获取所述Intent信息中的action、data、category、type、component、extra、referer信息,以及所述Context信息中的contextView、packageName、label信息,并将这些信息组成所述API调用的特征向量,以传递给恶意行为检测模块进行检测。
可选地,所述恶意行为检测模块402还用于:
通过所述恶意行为检测模块中的静态恶意调用检测模块查看所述特征向量是否与预设匹配规则匹配。
可选地,所述恶意行为检测模块402还用于:
如果所述静态恶意调用检测模块检测结果为正常,则调用所述恶意行为检测模块中的动态恶意调用检测模块的概率图模型,将所述特征向量输入所述概率图模型,根据模型输出值,判断所述API调用是否为恶意行为。
本发明实施例通过在内核中监听广播接收者BroadcastReceiver事件,监控安卓应用对系统应用程序编程接口API的调用;在响应事件中获取消息的意图Intent信息和上下文Context信息,依据所述信息构建API调用的特征向量;对所述特征向量进行检测,将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为。本发明实施例可以通过在应用运行时进行恶意行为检测,提高了恶意行为的检出率和检测的准确率。
最后应说明,此处所描述的实施例仅用于解释本发明,本发明并不限定具体API调用特征抽取方法及静态规则库组织形式,对以上内容所做的变换也落在本发明的保护范围之内。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。