一种基于API关系图谱的恶意软件检测模型抗老化增强方法转让专利

申请号 : CN202011274562.7

文献号 : CN112417448B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨珉张源张晓寒张谧

申请人 : 复旦大学

摘要 :

本发明属于网络空间安全技术领域,具体为一种基于API关系图谱的恶意软件检测模型抗老化增强方法。本发明方法包括:基于知识图谱的API语义关系采集;API语义关系表征,包括API嵌入和API聚类;API语义关系敏感的机器学习模型抗老化的增强。本发明利用API构成的知识图谱,将API之间的语义关系反应到机器学习模型之中,使得模型可以捕获API语义关系,进而提升现有模型的抗老化能力。本发明方法可以和基于数据的模型更新方法一起使用,使模型能够可持续性地检测恶意软件。

权利要求 :

1.一种基于API关系图谱的恶意软件检测模型抗老化增强方法,其特征在于,具体步骤为:

(一)基于知识图谱的API语义关系采集首先,给出API关系图谱的定义:API关系图谱G =是一个有向图,其中,E是图上所有结点的集合,R是两个结点间边构成的集合,结点和边又可称为实体和关系;

由于API关系图谱是异构的,即实体和关系都有不同的类型;对于安卓API关系图谱,其API关系图中,实体类型分为方法、类、包和权限;前三种实体类型是Java中的基本元素,最后一种实体类型描述API在执行过程中需要申请的权限;对WindowsAPI,实体类型分为函数、变量、头文件和库;实体类型的选择根据具体任务的不同,选择能够体现API之间的关系的实体;

API关系图谱中,不同的实体之间存在各种关系,这些关系分为5大类,具体包括:能够体现实体在代码组织上的关系的结构类型关系,能够反映实体之间依赖关系的原型类关系,能够描述API使用规范和具体用法的用法类关系,能够描述实体之间参照关系的引用类关系,以及能够反映实体所需要权限的权限类关系;

为了采集API关系图谱,需要找出所有涉及的实体,并提取出实体之间的关系;具体通过API文档分析、代码依赖分析、领域知识提取、人工分析等方式,得到实体之间的关系;将所有实体作为结点,将有关系的实体用边连接并标明具体的关系类型,即构成API关系图谱;

(二)API语义关系表征

API语义关系表征方式有两种:API嵌入和API聚类,分别对每个API进行向量化表示或者分组表示;

API嵌入,是将关系图中的结点API进行向量化表示,并保持API之间的语义关系;

API聚类,是将具有高度相似语义关系的API聚类到同一个分组,从而简化API特征的维度;具体而言,首先利用API嵌入方法将每个API进行向量化表示,之后使用聚类算法,将API聚类到不同的分组当中;

(三)API语义关系敏感的机器学习模型抗老化增强基于上述步骤的API嵌入和API聚类,对现有机器学习模型进行抗老化增强也分为两种方式:API嵌入增强和API聚类增强;主要根据机器学习模型使用的输入格式不同,分别采用不同的方法;具体而言,如果机器学习模型接受的是一维输入,如支持向量机等传统的模型,则使用API聚类方法,对输入的API特征进行增强;如果机器学习接受的是多维输入,如深度神经网络等深度学习模型,则使用API嵌入方法,将API向量作为输入以增强现有模型。

2.根据权利要求1所述的基于API关系图谱的恶意软件检测模型抗老化增强方法,其特征在于,所述API嵌入,具体借鉴TransE图嵌入算法,在API关系图上进行图嵌入,将API进行向量化表示;TransE算法能够捕获API之间的关系,如果用三元组(h,n,t)表示一对关系,其中 和 为两个实体,n为二者间的关系,TransE中使用以下公式(1)来优化两个实体间的关系,使得h+n和t的向量表示接近:       (1)

其中, 表示损失函数;h和t表示头实体和尾实体,n表示关系;S表示正样本的关系三元组集合,表示负样本的关系三元组集合;γ表示正负样本之间的距离,是一个常数;d表示L2范数;[x]+表示max(0,x)运算。

3.根据权利要求2所述的基于API关系图谱的恶意软件检测模型抗老化增强方法,其特征在于,所述API聚类中,根据不同任务,使用肘部法则确定最佳的分组数量。

说明书 :

一种基于API关系图谱的恶意软件检测模型抗老化增强方法

技术领域

[0001] 本发明属于网络空间安全技术领域,具体涉及基于机器学习的恶意软件检测模型抗老化方法。

背景技术

[0002] 当前机器学习被广泛应用于恶意软件检测。相较于传统的基于特征和基于规则的恶意软件检测方法,机器学习分类器无需维护特征签名库和人工制定检测规则,可以更加
自动化地进行检测,因此逐渐成为恶意软件检测的主流方法。通常应用需要大量使用系统
提供的应用程序编程接口(Application Programming Interface,API),来和系统以及用
户进行交互,实现自身功能。应用对API的使用情况能够真实地反映其行为意图,因此大多
数恶意软件检测模型都将应用对API的使用作为输入特征。这些方案的一般步骤是,通过静
态分析或动态分析方法,从应用中提取API的使用情况作为特征,并利用训练集中已经标记
好的数据进行训练。然后使用训练好的模型进行恶意软件检测。
[0003] 模型老化是机器学习模型的一个主要难题。随着恶意软件的不断演化和新样本的出现,机器学习分类器的检测效果随着时间显著下降。卡巴斯基2019年的一份白皮书显示,
其开发的一个基于机器学习的商用分类器,对恶意软件的检出率在3个月内从接近100%下
降到60%以下。老化后的模型无法有效地检测出恶意软件,使得用户暴露于恶意软件的安
全危害之中。因此,模型老化问题严重制约了基于机器学习的方法在实际中的使用。
[0004] 模型重训练成本较高,且未解决本质问题。目前对于模型老化的主要解决方法聚焦于使用新的数据来更新老化的模型。一般而言,当检测到模型老化之后,模型开发者会将
新的样本加入训练集,对模型进行重新训练。使用这种方法,需要收集并且标记大量样本,
并且模型的训练、测试和部署都需要较高的时间和人力成本。更糟糕的是,这种方法仍然只
是从数据的角度出发,未能从根本上解决模型仍然会老化的本质,因此仍然会受到新样本
数据的影响和限制。
[0005] 亟需增强机器学习分类器的抗老化能力。考虑到恶意软件会在短时间内快速演化的特点,如果无法及时地检测出最新的恶意软件,将使得用户的安全无法得到有效保证。本
发明发现,恶意软件在演化的过程中,为了保持恶意行为的连贯性,其使用的API具有很强
的语义相似性,而这些语义相似性没有被现有的机器学习模型所利用。如果模型利用这些
API之间的语义相似性,则有可能捕捉到连贯性的恶意行为,从而使得模型具有抗老化能
力。

发明内容

[0006] 本发明的目的在于提供一种普适性好、抗老化能力强的基于API关系图谱的恶意软件检测模型抗老化方法。
[0007] 本发明提供的基于API关系图谱的恶意软件检测模型抗老化增强方法,是通过利用API构成的知识图谱,将API之间的语义关系反应到机器学习模型之中,使得模型可以捕
获API语义关系,进而提升现有模型的抗老化能力。本发明提出的方法并非要取代重训练等
传统的基于数据的模型更新方法,而是尝试从另一个角度——即一开始就构建更为抗老化
的模型——解决模型老化问题。因此,本发明提出的方法可以和基于数据的模型更新方法
一起使用,以使模型能够可持续性地检测恶意软件。
[0008] 本发明提供的基于API关系图谱的恶意软件检测模型抗老化增强方法,其整体架构如图1所示,具体步骤包括:基于知识图谱的API语义关系采集;API语义关系表征,包括
API嵌入和API聚类;API语义关系敏感的机器学习模型抗老化的增强。
[0009] (一)基于知识图谱的API语义关系采集
[0010] 首先,本发明给出API关系图谱的定义:API关系图谱G=是一个有向图,其中,E是图上所有结点的集合,R是两个结点间边构成的集合,结点和边又可称为实体和关
系。根据恶意软件检测任务的不同,可以构建不同的API关系图谱;比如,若检测安卓恶意软
件,则构建安卓API关系图谱;若检测Windows恶意软件,则需要构建Windows上的API关系图
谱。
[0011] 由于API关系图谱是异构的,即实体和关系都有不同的类型。以安卓API关系图谱为例,其API关系图中,一共有4种类型的实体,分别是方法、类、包和权限。前三种实体类型
是Java中的基本元素,最后一种实体类型描述API在执行过程中需要申请的权限。对
WindowsAPI而言,实体类型可以分为函数、变量、头文件和库。实体类型的选择需要根据具
体任务的不同,选择能够体现API之间的关系的实体。
[0012] API关系图谱中,不同的实体之间存在各种关系,这些关系可以分为5大类,具体包括:能够体现实体在代码组织上的关系的结构类型关系,能够反映实体之间依赖关系的原
型类关系,能够描述API使用规范和具体用法的用法类关系,能够描述实体之间参照关系的
引用类关系,以及能够反映实体所需要权限的权限类关系。
[0013] 为了采集API关系图谱,需要找出所有涉及的实体,并提取出实体之间的关系。一般而言,可以通过API文档分析、代码依赖分析、领域知识提取、人工分析等方式,得到实体
之间的关系。将所有实体作为结点,将有关系的实体用边连接并标明具体的关系类型,则构
成了API关系图谱。
[0014] (二)API语义关系表征
[0015] 为了利用API关系图谱,本发明提出API嵌入和API聚类两种API语义关系表征方式,可以分别对每个API进行向量化表示或者分组表示。
[0016] API嵌入,是将关系图中的结点API进行向量化表示,并保持API之间的语义关系。两个API之间的向量差反映了语义关系,向量差小代表语义关系接近,功能相似,反之代表
语义关系远,功能差异大。具体来说,本发明借鉴TransE图嵌入算法(Bordes,Antoine,et 
al."Translating embeddings for modeling multi‑relational data."Advances in 
neural information processing systems.2013.),在API关系图上进行图嵌入,将API进
行向量化表示。TransE算法能够捕获API之间的关系,如果用三元组(h,l,t)表示一对关系,
其中h和t为两个实体,l为二者间的关系,TransE中使用以下公式(1)来优化两个实体间的
关系,使得h+l和t的向量表示接近:
[0017]
[0018] 其中,表示损失函数;h和t表示头实体和尾实体,l表示关系;S表示正样本的关系三元组集合,S′表示负样本的关系三元组集合;γ表示正负样本之间的距离,是一个常数;d
表示L2范数;[x]+表示max(0,x)运算;
[0019] API聚类,是将具有高度相似语义关系的API聚类到同一个分组,从而简化API特征的维度,使得模型对API特征的变化具有更高的鲁棒性。具体而言,首先利用API嵌入方法将
每个API进行向量化表示,之后使用k‑means(MacQueen,James."Some methods for 
classification and analysis of multivariate observations."Proceedings of the 
fifth  Berkeley  symposium  on  mathematical  statistics  and 
probability.Vol.1.No.14.1967.)等聚类算法,将API聚类到不同的分组当中。根据不同任
务,可以使用肘部法则(Syakur,M.A.,et al."Integration k‑means clustering method 
and elbow method for identification of the best customer profile cluster."IOP 
Conference Series:Materials Science and Engineering.Vol.336.No.1.IOP 
Publishing,2018.)确定最佳的分组数量。
[0020] (三)API语义关系敏感的机器学习模型抗老化增强
[0021] 基于上述步骤的API嵌入和API聚类,对现有机器学习模型进行抗老化增强也有两种方式:API嵌入增强和API聚类增强;主要根据机器学习模型使用的输入格式不同,可以分
别采用不同的方法。具体而言,如果机器学习模型接受的是一维输入,如支持向量机等传统
的模型,则可以使用API聚类方法,对输入的API特征进行增强;如果机器学习接受的是多维
输入,如深度神经网络等深度学习模型,则可以使用API嵌入方法,将API向量作为输入以增
强现有模型。
[0022] 本发明中,增强现有模型的核心思想是将原来模型中被独立看待的API特征,替换为API关系图谱生成的能体现API之间语义关系的特征,即API嵌入或API聚类。通过这种方
式,使得模型可以捕捉到API之间的语义关系,能更好地检测到演化中的恶意软件,提高模
型的抗老化能力。本发明在对模型增强时,只是修改了模型接受的API输入特征格式,并没
有对包括算法在内的模型本身做其他修改,因此本发明具有较高的普适性,适用于使用API
作为输入特征的所有模型。

附图说明

[0023] 图1为本发明方法整体架构图示。
[0024] 图2为部分安卓API关系图谱。
[0025] 图3为最佳聚类数的选取‑肘部法则。

具体实施方式

[0026] 本发明设计了一种基于API语义关系的模型抗老化方法,通过使机器学习模型捕捉到API之间的语义关系,提升模型的抗老化能力。下面对实现细节和效果进行详细的介
绍。
[0027] 测试环境。本发明以目前最新的安卓系统10.0为例,构建API关系图谱。为了验证提出方法的有效性,本发明选取4个经典的安卓恶意软件检测模型。这些模型分别包含了不
同的特征输入形式、不同的机器学习算法(包括随机森林、支持向量机、多层感知器等算
法),具有代表性。
[0028] 数据集。本发明使用从恶意软件样本库和应用市场收集的包含2012到2018年期间的322,594个样本进行测试。为了保证实验结果的客观性,本发明确保每个时间段恶意软件
样本所占比例与现实世界中的比例基本保持一致,并且在实验过程中,保证训练样本的出
现时间都早于测试样本的出现时间。
[0029] 评估指标。本发明使用AUT(Area Under Time)作为衡量模型抗老化能力的指标,其定义为模型性能指标随时间变化去线下的面积。其计算公式为:
[0030]
[0031] 其中,f为性能指标(如F1、精确度、召回率等),N为测试周期的数量,f(k)为k时的性能指标。AUT指标越接近1,意味着模型的抗老化能力越好。本发明采用AUT(F1,12m)作为
评估指标,即连续12个月的F1的持续性,以表示模型的抗老化能力。
[0032] (一)API关系图谱构建
[0033] 本发明以目前最新的安卓系统10.0为例,通过对该版本的API文档进行分析,采集所需要的实体和关系。本发明共采集了67209个实体,以及这些实体之间的10种,共121345
个关系。图2展示了部分安卓API关系图谱,其包含了9个实体以及这些实体之间的不同关
系。其中的三个API,即java.net.URL.openConnection,javax.net.SocketFactory.creat
eSocket,javax.net.ssl.SSLSocketFactory.createSocket均需要互联网权限
(android.permission.INTERNET),且都抛出了IOExcepetion。这说明,这三个API之间具有
更相近的语义关系。
[0034] (二)API嵌入和API聚类
[0035] API嵌入算法。使用TransE算法对API关系图中的API进行向量化表示。
[0036] 首先对每个实体和关系进行随机初始化,然后根据实体之间的具体关系,迭代式的去改进每个实体和关系的向量,最终使得所有实体和关系的损失值收敛。具体算法如下
(算法代码见附录):
[0037] 1.训练集初始化。初始化关系集合S为空集,对于API关系图谱中的每一对关系(h,l,t),将其添加到初始关系集合S;
[0038] 2.API嵌入向量初始化。对于API关系图谱中的每一个实体e和关系r,初始化为随机值le和lr;
[0039] 3.API嵌入向量训练。循环使用关系集合S的每一对关系(h,l,t),根据公式(1)定义的损失函数进行训练,使用梯度下降方法更新le和lr,直至API嵌入向量不变。
[0040] API聚类算法。使用k‑means算法对API进行聚类,并利用肘部法则选择最佳分组大小。
[0041] 为了确定最佳的分组数量,本发明采用肘部法则计算聚类数从2000到4000时各样本到聚类中心的距离之和,得到图3的结果。手肘法则认为,最佳的聚类数是拐点处的值,最
终最佳聚类数选取为2000,即API被聚类到2000个API分组中。
[0042] (三)利用API语义关系增强现有抗老化模型
[0043] 对于四个经典的安卓恶意软件检测模型,根据其接受输入格式的不同,分别使用API嵌入和API聚类方法进行增强,如表1所示。其中:
[0044] 分类器MaMaDroid,通过静态分析提取API调用对(即调用者和被调用者),然后将它们抽象为包调用对。之后MaMaDroid对不同包之间的调用关系使用Markov链进行建模,并
使用包之间的调用概率作为样本的特征向量。MaMaDroid测试了多种不同的机器学习算法,
包括随机森林算法(RandomForest)、K近邻算法(K‑Nearest Neighbor)和支持向量机
(SVM),其中随机森林算法的检测效果最好,因此本发明重点考虑对基于随机森林算法的
MaMaDroid进行增强。本发明将MaMaDroid中使用的包调用对替换为API分组调用对,然后使
用这些API分组调用对建立Markov链,得到包含API语义的特征向量。
[0045] 分类器DroidEvolver,通过静态分析得到样本使用的所有API,并使用API是否出现的二进制向量作为该样本的特征向量。在该特征向量中,若API被应用使用过,则向量中
对应位置设置为1,否则置为0。然后DroidEvolver建立包含5个线性在线学习模型的模型
池,并使用加权投票算法进行检测。当模型池中的某些模型老化时,它会根据其他未老化模
型的结果对老化的模型进行增量更新,以使得老化的模型能够继续检测出恶意软件。通过
多个模型进行投票的方式,DroidEvolver能够在一定程度上对单个模型进行纠错。但是由
于老化现象普遍存在,存在着多个模型同时老化的可能,因此DroidEvolver的最终效果仍
然会随着时间推移而下降。本发明认为,DroidEvolver使用的二进制向量将API独立看待,
没有捕捉到API之间的关系。因此本发明将API是否出现的二进制向量替换为API分组是否
出现的二进制向量,使得模型池里的模型可以利用到API之间的语义关系。
[0046] 分类器Drebin,通过静态分析从安卓清单文件和字节码中收集样本的多种特征,包括使用的硬件、权限、网络地址和API调用情况,将这些特征是否出现的二进制向量作为
特征向量,输入到SVM算法进行模型训练。在API特征方面,Drebin考虑了一组受限和可疑的
API,这些API可以访问关键和敏感的数据或资源。和DroidEvolver一样,Drebin也没有考虑
到API之间的语义关系,因此和DroidEvolver一样,本发明通过将其使用的API是否出现的
二进制向量替换为API分组出现的二进制向量,来提高模型的抗老化能力。
[0047] 分类器Drebin‑DL,使用与Drebin相同的特征集,但采用深度神经网络(DNN)作为分类算法。为了将API之间的语义关系输入给模型,本发明将输入的API特征替换为API的嵌
入特征。该嵌入特征是由API关系图谱通过API嵌入方法生成的。
[0048] 表1,四个增强的安卓恶意软件检测模型
[0049]
[0050] 附录:
[0051]