应用异常行为识别模型建立方法及装置、识别方法及装置与流程

文档序号:11545463阅读:232来源:国知局
应用异常行为识别模型建立方法及装置、识别方法及装置与流程

本发明涉及应用程序安全技术领域,具体涉及一种应用异常行为识别模型建立方法及装置、识别方法及装置。



背景技术:

近年来,随着移动互联网的不断发展,电力企业紧密贴合“互联网+”环境下业务发展和新技术的应用需求,提出了电力服务移动化、作业移动化和办公移动化的发展方向,为企业员工和电力用户提供更加开放和智能化的服务,有利于加强企业员工、合作伙伴和电力客户之间的联系,实现电力业务信息的实时流动和共享,极大的提高工作效率。然而,在现有传统互联网的信息安全防护方案情况下,作为支撑业务运行的企业移动应用,一方面存在自身的安卓安全漏洞,另一方面大部分的电力企业应用运行在个人移动设备中,运行环境安全情况未知,移动应用一旦遭到攻击,很容易获取企业业务数据,泄露公司机密。

因此,有必要建设面向电力企业的移动应用异常运行行为的监控方案,对移动应用在运行时可能因为使用者的过失行为,或者恶意使用行为进行监测、分析、判断和过滤,在真正产生危害前将其阻止,保障移动应用的运行安全。

目前国内外针对运行时的移动应用动态行为进行分析的检测技术,多以研究沙箱技术、hook技术以及移动应用框架层污点分析技术为主,获取应用程序的cpu使用率、网络数据流量、进程数量、api调用序列等监控指标,然后利用智能算法(如支持向量机、神经网络和贝叶斯分类算法等)分析程序的动态行为,从而判断是否为恶意行为或者软件。然而,现有大部分的移动应用动态行为检测平台(如开源的mobsf和droidbox等)都是在模拟机上安装移动应用,通过模拟机启动应用并记录应用运行信息来分析恶意软件或异常行为。这种检测方案无法有效覆盖实际使用情况下的真机环境和应用运行时的各类触发异常行为的因素,恶意软件利用模拟机识别技术或者延迟攻击时间即可躲避系统的检测。因此,有必要研究正常使用企业应用时的恶意行为检测技术。



技术实现要素:

因此,本发明要解决的技术问题在于现有的通过模拟机启动应用并记录应用运行信息来分析恶意软件或异常行为的方法,无法有效覆盖实际使用情况下的真机环境和应用运行时的各类触发异常行为的因素,恶意软件利用模拟机识别或者延迟攻击时间即可躲避系统的检测。

为此,本发明实施例提供了如下技术方案:

一种应用异常行为识别模型的建立方法,包括以下步骤:

分别获取多个正常应用样本的第一api调用日志样本、多个恶意应用样本的第二api调用日志样本;

根据第一api调用日志样本和第二api调用日志样本建立异常行为识别模型。

可选地,分别获取多个正常应用样本的第一api调用日志样本、多个恶意应用样本的第二api调用日志样本的步骤包括:

将jave层的api接口调用函数转换为native层api接口调用函数;

修改native层api接口调用函数的属性以转为调用native_hook函数;

通过native_hook函数回调java层中注入的日志监控函数以实时记录api接口的调用。

可选地,根据第一api调用日志样本和第二api调用日志样本建立异常行为识别模型的步骤包括分别对第一api调用日志样本和第二api调用日志样本进行预处理的步骤,包括:

分别对第一api调用日志样本和第二api调用日志样本中的特征向量元素进行数值化处理;

对数值化后的各特征向量元素进行线性变换以使各特征向量元素的数值处于0-1之间。

可选地,根据第一api调用日志样本和第二api调用日志样本建立异常行为识别模型的步骤包括:

构建隶属度函数;

将支持向量机(svm)训练函数的权重参数设置为隶属度函数得到模糊支持向量机(fsvm);

利用第一api调用日志样本和第二api调用日志样本训练模糊支持向量机(fsvm)得到异常行为识别模型。

可选地,隶属度函数为:

其中,s+i表示异常行为类样本的隶属度、s+i表示正常行为类样本的隶属度,m+,m-为非平衡特征因子,分别表示异常行为类样本和正常行为类样本获得的统一权重,表示异常行为类样本,表示正常行为类样本,为去噪模糊因子。

可选地,异常行为识别模型的判别函数为:

其中,x为待检测样本,xi为支持向量,n为支持向量数目,αi为拉格朗日乘子,k(xi,x)为核函数,ρ为超平面截距,f(x)为分类检测结果。

一种应用的异常行为识别方法,包括如下步骤:

获取应用运行时的api调用日志;

利用根据上述任一种方法建立的应用异常行为识别模型对api调用日志进行分类以识别异常行为。

可选地,获取应用运行时的api调用日志的步骤包括待监测api接口获取步骤,包括:

反编译应用的安装包文件获取应用的权限使用列表;

根据应用的权限使用列表获取应用的敏感api接口。

一种应用异常行为识别模型的建立装置,包括:

日志样本获取单元,用于分别获取多个正常应用样本的第一api调用日志样本、多个恶意应用样本的第二api调用日志样本;

模型建立单元,用于根据第一api调用日志样本和第二api调用日志样本建立异常行为识别模型。

可选地,日志样本获取单元包括:

转换子单元,用于将jave层的api接口调用函数转换为native层api接口调用函数;

属性修改子单元,用于修改native层api接口调用函数的属性以转为调用native_hook函数;

日志记录子单元,用于通过native_hook函数回调java层中注入的日志监控函数以实时记录api接口的调用。

可选地,模型建立单元包括:

数值化子单元,用于分别对第一api调用日志样本和第二api调用日志样本中的特征向量元素进行数值化处理;

归一化子单元,用于对数值化后的各特征向量元素进行线性变换以使各特征向量元素的数值处于0-1之间。

可选地,模型建立单元包括:

构建子单元,用于构建隶属度函数;

参数设置子单元,用于将支持向量机(svm)训练函数的权重参数设置为隶属度函数得到模糊支持向量机(fsvm);

训练子单元,用于利用第一api调用日志样本和第二api调用日志样本训练模糊支持向量机(fsvm)得到异常行为识别模型。

一种应用的异常行为识别装置,包括:

日志获取单元,用于获取应用运行时的api调用日志;

分类识别单元,用于利用上述任一种方法建立的应用异常行为识别模型对api调用日志进行分类以识别异常行为。

本发明技术方案,具有如下优点:

1.本发明实施例提供的应用异常行为识别模型建立方法及装置、识别方法及装置,可以实时地根据应用在真机上实际运行时采集到的api接口调用日志来识别应用的行为是否异常,从而可以对应用在实际使用时的行为进行实时检测。解决了现有的应用异常行为检测方法,只能在定制的模拟机上运行待检测应用来采集行为数据,无法有效覆盖应用在实际使用情况下的真机环境和应用运行时的各类触发异常行为的因素。另外,由于api接口调用涉及用户的隐私,所以通过该方法建立的模型主要适用于一些对保护用户隐私的要求低的一些基于安卓系统的移动应用,例如可以是面向电力企业的移动应用。

2.本发明实施例提供的应用异常行为识别模型建立方法及装置、识别方法及装置,利用反射机制对应用运行时的native层进行hook,无需获取系统root权限,可以在不影响移动应用正常运行的情况下,实现对应用敏感api调用的拦截和监控。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例1中一种应用异常行为识别模型的建立方法的流程图;

图2为本发明实施例1中一种api调用日志监控函数注入方法的流程图;

图3为本发明实施例1中一种api调用日志监控函数注入过程的示意图;

图4为本发明实施例1中一种获取应用异常行为识别分类器方法的流程图;

图5为本发明实施例3中一种应用的异常行为识别方法的流程图;

图6本发明实施例3中一种应用异常行为识别分类器建立和异常行为识别方法的整体流程示意图;

图7为本发明实施例4中一种应用异常行为识别模型的建立装置的原理框图;

图8为本发明实施例5中一种应用的异常行为识别装置的原理框图。

具体实施方式

下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。

实施例1

如图1所示,本实施例提供了一种应用异常行为识别模型的建立方法,包括以下步骤:

s11:分别获取多个正常应用样本的第一api(applicationprogramminginterface,应用程序编程接口)调用日志样本、多个恶意应用样本的第二api调用日志样本。该正常应用样本和恶意应用样本可以是待检测应用以外的其他应用。第一api调用日志样本和第二api调用日志样本所对应的api接口与实际检测时使用的api调用日志所对应的api接口是一致的。

s12:根据第一api调用日志样本和第二api调用日志样本建立异常行为识别模型。

本实施例提供的应用异常行为识别模型的建立方法,具体利用样本应用的api接口调用日志来预先建立识别模型,根据该方法可以建立应用异常行为识别模型,该识别模型可以实时地根据应用在真机上实际运行时采集到的api接口调用日志来识别应用的行为是否异常,从而可以对应用在实际使用时的行为进行实时检测。解决了现有的应用异常行为检测方法,只能在定制的模拟机上运行待检测应用来采集行为数据,无法有效覆盖应用在实际使用情况下的真机环境和应用运行时的各类触发异常行为的因素。另外,由于api接口调用涉及用户的隐私,所以通过该方法建立的模型主要适用于一些对保护用户隐私的要求低的一些基于安卓系统的移动应用,例如可以是面向电力企业的移动应用。

作为可选的具体实施方式,如图2和3所示,上述步骤s11,也即分别获取多个正常应用样本的第一api调用日志样本、多个恶意应用样本的第二api调用日志样本的步骤包括:

s111:将jave层的api接口调用函数转换为native层api接口调用函数(native_api),具体是通过set_method_flag方法将函数设置为native。

s112:修改native层api接口调用函数的属性以转为调用native_hook函数。由于在native函数体数据结构中包含nativefunc属性,指向该native函数的入口,通过修改nativefunc属性可以达到控制函数流程的目的。因此,可以通过修改native层api接口调用函数的nativefunc属性指向自己实现的native函数native_hook(),从而实现了对源java函数的调用转为调用native函数native_hook()。

s113:通过native_hook函数回调java层中注入的日志监控函数以实时记录api接口的调用,记录正常应用样本的api接口调用即得到第一api调用日志样本,记录恶意应用样本的api接口调用即得到第二api调用日志样本。

本实施例提供的应用异常行为识别模型的建立方法,利用反射机制对应用运行时的native层进行hook,无需获取系统root权限,可以在不影响移动应用正常运行的情况下,实现对应用敏感api调用的拦截和监控。

本实施例中,上述步骤s11,也即分别获取多个正常应用样本的第一api调用日志样本、多个恶意应用样本的第二api调用日志样本的步骤还包括:

分别在正常应用样本、恶意应用样本中通过hook注入日志监控函数后,将其批量运行于安卓模拟器上,采集得到正常应用样本、恶意应用样本在运行时的api函数调用日志。该安卓模拟器可以在pc机上创建。

本实施例中,由于原始第一api调用日志样本和原始第二api调用日志样本记录的是各类api函数调用字符串,不能作为svm(支持向量机svm(supportvectormachine))训练和识别用的输入数据,因此需要进行预处理。上述步骤s12还包括分别对第一api调用日志样本和第二api调用日志样本进行预处理的步骤,具体包括:

首先,分别对第一api调用日志样本和第二api调用日志样本中的特征向量元素进行数值化处理。原始第一api调用日志样本和原始第二api调用日志样本记录的各类api函数调用字符串,可以构成7维的特征向量,特征向量元素是固定的,通过对特征向量中每个元素用数值进行一一映射,从而得到数值化的特征向量,可表示为x={x1,x2,···,xi}i∈[1,7]i∈z。xi为数值化后的特征向量元素。

然后,对数值化后的各特征向量元素进行线性变换以使各特征向量元素的数值处于0-1之间。将特征向量元素映射到区间[0,1],可以减少量纲影响。转换函数为:

其中,xmax为训练样本数据的最大值,xmin为训练样本数据的最小值。

针对有些应用,例如电力企业应用的恶意行为难以采集,样本极少,与正常行为样本数量不平衡,因此选用适用于分类不平衡样本的模糊支持向量机(fsvm)作为智能检测算法。具体地,如图4所示,上述步骤s12,即根据第一api调用日志样本和第二api调用日志样本建立异常行为识别模型的步骤包括:

s121:构建隶属度函数。隶属度函数的设计是fsvm训练和检测实现的关键。假设现有包含l个样本的训练样本集(xi,yi),xi∈rn,yi∈{-1,+1},i=1,2,......,l,隶属度函数为:

其中,s+i表示异常行为类(也叫正类)样本的隶属度、s+i表示正常行为类(也叫负类)样本的隶属度;m+,m-为非平衡特征因子,分别表示异常行为类样本和正常行为类样本获得的统一权重,其值由正负类样本数量和分散程度决定,反映的是类间样本不平衡特征,目的是用于减小样本不平衡对svm分类面偏移的影响;表示异常行为类样本,表示正常行为类样本;为去噪模糊因子,表示样本xi在自己类内的重要性,目的是用于抑制噪声与孤立点样本对svm分类的干扰。该隶属度函数的设计即考虑到了噪声与孤立点的干扰又考虑到了类间样本不平衡对分类面的影响。

s122:可以利用libsvm工具包开发fsvm训练和检测算法,将支持向量机(svm)训练函数的权重参数设置为隶属度函数得到模糊支持向量机(fsvm)。fsvm核函数采用径向基核函数exp(-g*||u-v||2),核参数g和fsvm惩罚系数v利用网格搜索法参数寻优。

s123:利用第一api调用日志样本和第二api调用日志样本训练模糊支持向量机(fsvm)得到作为应用异常行为识别模型的最优分类器。具体地,以采集得到的第一api调用日志样本和第二api调用日志样本作为fsvm输入,正常行为样本标签设置为1,异常行为标签设置为-1。最优分类器的判别函数为:

其中,x为待检测样本,xi为支持向量,n为支持向量数目,αi为拉格朗日乘子,k(xi,x)为核函数,ρ为超平面截距,f(x)为分类检测结果。

本实施例提供的应用异常行为识别模型的建立方法,针对一些应用的异常行为样本难以获取,与正常行为样本存在样本不平衡的情况,引入不平衡分类算法fsvm来建立实现异常行为智能检测的识别模型。

实施例2

本实施例提供了一种应用异常行为识别模型的建立方法,包括以下步骤:

第一步:分别获取多个正常应用样本和多个恶意应用样本。

第二步:分别对正常应用样本和恶意应用样本重打包注入敏感api接口的nativehook函数和监控日志函数。

第三步:将注入了监控日志函数的正常应用样本和恶意应用样本批量运行于安卓模拟器上,分别采集得到正常应用样本的第一api调用日志样本、恶意应用样本的第二api调用日志样本。

第四步:构建隶属度函数、选用核函数。

第五步:以正常应用样本的第一api调用日志样本、恶意应用样本的第二api调用日志样本作为fsvm输入,正常行为样本标签设置为1,异常行为样本标签设置为-1,训练得到最优fsvm分类器,作为应用异常行为识别模型。

实施例3

本实施例提供了一种应用的异常行为识别方法,如图5和6所示,可以适用于电力企业移动应用,包括如下步骤:

s31:获取应用运行时的api调用日志,该api调用日志是应用在真机上实际运行时的敏感api调用日志。该应用可以是电力企业移动应用。

s32:利用根据上述实施例1或2提供的方法建立的应用异常行为识别模型对api调用日志进行分类以识别异常行为。

本实施例提供的应用的异常行为识别方法,可以实时地根据应用在真机上实际运行时采集到的api接口调用日志来识别应用的行为是否异常,从而可以对应用在实际使用时的行为进行实时检测。解决了现有的应用异常行为检测方法,只能在定制的模拟机上运行待检测应用来采集行为数据,无法有效覆盖应用在实际使用情况下的真机环境和应用运行时的各类触发异常行为的因素。另外,由于api接口调用涉及用户的隐私,所以通过该方法建立的模型主要适用于一些对保护用户隐私的要求低的一些基于安卓系统的移动应用,例如可以是面向电力企业的移动应用。

本实施例中并不需要获取应用的所有api接口调用日志,只需要比较敏感的api接口调用日志来判断应用是否存在异常行为。因此,上述步骤s31,即获取应用运行时的api调用日志的步骤包括提取敏感api接口的步骤,具体如下:

首先,反编译应用的安装包文件获取应用的权限使用列表,具体可以使用apktool工具来反编译应用的安装包文件得到应用的androidmanifest.xml文件,通过遍历该文件来获取应用的权限使用列表;

然后,根据应用的权限使用列表获取应用的敏感api接口。具体是通过查询开源工具pscout的权限-api映射表来获取应用的敏感api调用列表。权限-敏感api接口-敏感行为对应关系如下表1。

表1权限-敏感api接口-敏感行为

从上表可以看出,可以用于判断应用的行为是否异常的敏感api接口对应的敏感行为包括发送短信、读取短信、打开wifi、打开移动网络、获取地址位置信息、拨打电话和连接网络。

具体地,上述步骤s32,即根据api调用日志来识别应用的异常行为的具体过程为:

首先,对获取的敏感api调用日志进行预处理,包括数值化和归一化两步,具体处理过程可参照上述实施例1。

然后,利用应用异常行为识别模型对预处理后的敏感api调用日志进行分类,判断应用的行为是否异常。应用异常行为识别模型,也即fsvm分类器,其判别函数为:

其中,x为待检测样本,xi为支持向量,n为支持向量数目,αi为拉格朗日乘子,k(xi,x)为核函数,ρ为超平面截距,f(x)为分类检测结果。根据训练阶段标签设置情况,如果f(x)=1,则对应的应用行为是正常的,如果f(x)=-1,则对应的应用行为是异常的。即,当f(x)=-1时,就进行实时报警或提醒。

上述步骤s32根据api调用日志来识别应用的异常行为的步骤,可由服务器来执行。当由服务器来执行上述步骤s32的具体步骤时,上述步骤s31获取的敏感api调用日志就需要上传至服务器。

实施例4

如图7所示,本实施例提供了一种应用异常行为识别模型的建立装置,包括:

日志样本获取单元u41,用于分别获取多个正常应用样本的第一api调用日志样本、多个恶意应用样本的第二api调用日志样本;

模型建立单元u42,用于根据第一api调用日志样本和第二api调用日志样本建立异常行为识别模型。

本实施例提供的应用异常行为识别模型的建立装置,具体利用样本应用的api接口调用日志来预先建立识别模型,利用该装置建立的识别模型可以实时地根据应用在真机上实际运行时采集到的api接口调用日志来识别应用的行为是否异常,从而可以对应用在实际使用时的行为进行实时检测。解决了现有的应用异常行为检测方法,只能在定制的模拟机上运行待检测应用来采集行为数据,无法有效覆盖应用在实际使用情况下的真机环境和应用运行时的各类触发异常行为的因素。另外,由于api接口调用涉及用户的隐私,所以通过该装置建立的模型主要适用于一些对保护用户隐私的要求低的一些基于安卓系统的移动应用,例如可以是面向电力企业的移动应用。

作为优选的具体实施方式,日志样本获取单元u41包括:

转换子单元,用于将jave层的api接口调用函数转换为native层api接口调用函数;

属性修改子单元,用于修改native层api接口调用函数的属性以转为调用native_hook函数;

日志记录子单元,用于通过native_hook函数回调java层中注入的日志监控函数以实时记录api接口的调用。

本实施例提供的应用异常行为识别模型的建立装置,利用反射机制对应用运行时的native层进行hook,无需获取系统root权限,可以在不影响移动应用正常运行的情况下,实现对应用敏感api调用的拦截和监控。

作为可选的具体实施方式,模型建立单元u42包括:

数值化子单元,用于分别对第一api调用日志样本和第二api调用日志样本中的特征向量元素进行数值化处理;

归一化子单元,用于对数值化后的各特征向量元素进行线性变换以使各特征向量元素的数值处于0-1之间。

作为另一可选的具体实施方式,模型建立单元u42包括:

构建子单元,用于构建隶属度函数;

参数设置子单元,用于将支持向量机(svm)训练函数的权重参数设置为隶属度函数得到模糊支持向量机(fsvm);

训练子单元,用于利用第一api调用日志样本和第二api调用日志样本训练模糊支持向量机(fsvm)得到最优分类器。

本实施例提供的应用异常行为识别模型的建立装置,针对一些应用的异常行为样本难以获取,与正常行为样本存在样本不平衡的情况,引入不平衡分类算法fsvm来建立实现异常行为智能检测的识别模型。

实施例5

如图8所示,本实施例提供了一种应用的异常行为识别装置,包括:

日志获取单元u51,用于获取应用运行时的api调用日志;

分类识别单元u52,用于利用上述实施例1或2提供的方法建立的应用异常行为识别模型对api调用日志进行分类以识别异常行为。

本实施例提供的应用的异常行为识别装置,可以实时地根据应用在真机上实际运行时采集到的api接口调用日志来识别应用的行为是否异常,从而可以对应用在实际使用时的行为进行实时检测。解决了现有的应用异常行为检测方法,只能在定制的模拟机上运行待检测应用来采集行为数据,无法有效覆盖应用在实际使用情况下的真机环境和应用运行时的各类触发异常行为的因素。另外,由于api接口调用涉及用户的隐私,所以通过该装置建立的模型主要适用于一些对保护用户隐私的要求低的一些基于安卓系统的移动应用,例如可以是面向电力企业的移动应用。

作为可选的具体实施方式,日志获取单元u51包括:

权限使用列表获取子单元,用于反编译应用的安装包获取应用的权限使用列表;

敏感api接口获取子单元,用于根据应用的权限使用列表获取应用的敏感api接口。

显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

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