一种基于API关系图谱的恶意软件检测模型抗老化增强方法转让专利
申请号 : CN202011274562.7
文献号 : CN112417448B
文献日 : 2022-03-18
发明人 : 杨珉 , 张源 , 张晓寒 , 张谧
申请人 : 复旦大学
摘要 :
权利要求 :
1.一种基于API关系图谱的恶意软件检测模型抗老化增强方法,其特征在于,具体步骤为:
(一)基于知识图谱的API语义关系采集首先,给出API关系图谱的定义:API关系图谱G =
由于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关系图谱的恶意软件检测模型抗老化增强方法
技术领域
背景技术
自动化地进行检测,因此逐渐成为恶意软件检测的主流方法。通常应用需要大量使用系统
提供的应用程序编程接口(Application Programming Interface,API),来和系统以及用
户进行交互,实现自身功能。应用对API的使用情况能够真实地反映其行为意图,因此大多
数恶意软件检测模型都将应用对API的使用作为输入特征。这些方案的一般步骤是,通过静
态分析或动态分析方法,从应用中提取API的使用情况作为特征,并利用训练集中已经标记
好的数据进行训练。然后使用训练好的模型进行恶意软件检测。
其开发的一个基于机器学习的商用分类器,对恶意软件的检出率在3个月内从接近100%下
降到60%以下。老化后的模型无法有效地检测出恶意软件,使得用户暴露于恶意软件的安
全危害之中。因此,模型老化问题严重制约了基于机器学习的方法在实际中的使用。
新的样本加入训练集,对模型进行重新训练。使用这种方法,需要收集并且标记大量样本,
并且模型的训练、测试和部署都需要较高的时间和人力成本。更糟糕的是,这种方法仍然只
是从数据的角度出发,未能从根本上解决模型仍然会老化的本质,因此仍然会受到新样本
数据的影响和限制。
发明发现,恶意软件在演化的过程中,为了保持恶意行为的连贯性,其使用的API具有很强
的语义相似性,而这些语义相似性没有被现有的机器学习模型所利用。如果模型利用这些
API之间的语义相似性,则有可能捕捉到连贯性的恶意行为,从而使得模型具有抗老化能
力。
发明内容
获API语义关系,进而提升现有模型的抗老化能力。本发明提出的方法并非要取代重训练等
传统的基于数据的模型更新方法,而是尝试从另一个角度——即一开始就构建更为抗老化
的模型——解决模型老化问题。因此,本发明提出的方法可以和基于数据的模型更新方法
一起使用,以使模型能够可持续性地检测恶意软件。
API嵌入和API聚类;API语义关系敏感的机器学习模型抗老化的增强。
系。根据恶意软件检测任务的不同,可以构建不同的API关系图谱;比如,若检测安卓恶意软
件,则构建安卓API关系图谱;若检测Windows恶意软件,则需要构建Windows上的API关系图
谱。
是Java中的基本元素,最后一种实体类型描述API在执行过程中需要申请的权限。对
WindowsAPI而言,实体类型可以分为函数、变量、头文件和库。实体类型的选择需要根据具
体任务的不同,选择能够体现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的向量表示接近:
表示L2范数;[x]+表示max(0,x)运算;
每个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.)确定最佳的分组数量。
别采用不同的方法。具体而言,如果机器学习模型接受的是一维输入,如支持向量机等传统
的模型,则可以使用API聚类方法,对输入的API特征进行增强;如果机器学习接受的是多维
输入,如深度神经网络等深度学习模型,则可以使用API嵌入方法,将API向量作为输入以增
强现有模型。
式,使得模型可以捕捉到API之间的语义关系,能更好地检测到演化中的恶意软件,提高模
型的抗老化能力。本发明在对模型增强时,只是修改了模型接受的API输入特征格式,并没
有对包括算法在内的模型本身做其他修改,因此本发明具有较高的普适性,适用于使用API
作为输入特征的所有模型。
附图说明
具体实施方式
绍。
同的特征输入形式、不同的机器学习算法(包括随机森林、支持向量机、多层感知器等算
法),具有代表性。
样本所占比例与现实世界中的比例基本保持一致,并且在实验过程中,保证训练样本的出
现时间都早于测试样本的出现时间。
评估指标,即连续12个月的F1的持续性,以表示模型的抗老化能力。
个关系。图2展示了部分安卓API关系图谱,其包含了9个实体以及这些实体之间的不同关
系。其中的三个API,即java.net.URL.openConnection,javax.net.SocketFactory.creat
eSocket,javax.net.ssl.SSLSocketFactory.createSocket均需要互联网权限
(android.permission.INTERNET),且都抛出了IOExcepetion。这说明,这三个API之间具有
更相近的语义关系。
(算法代码见附录):
终最佳聚类数选取为2000,即API被聚类到2000个API分组中。
使用包之间的调用概率作为样本的特征向量。MaMaDroid测试了多种不同的机器学习算法,
包括随机森林算法(RandomForest)、K近邻算法(K‑Nearest Neighbor)和支持向量机
(SVM),其中随机森林算法的检测效果最好,因此本发明重点考虑对基于随机森林算法的
MaMaDroid进行增强。本发明将MaMaDroid中使用的包调用对替换为API分组调用对,然后使
用这些API分组调用对建立Markov链,得到包含API语义的特征向量。
对应位置设置为1,否则置为0。然后DroidEvolver建立包含5个线性在线学习模型的模型
池,并使用加权投票算法进行检测。当模型池中的某些模型老化时,它会根据其他未老化模
型的结果对老化的模型进行增量更新,以使得老化的模型能够继续检测出恶意软件。通过
多个模型进行投票的方式,DroidEvolver能够在一定程度上对单个模型进行纠错。但是由
于老化现象普遍存在,存在着多个模型同时老化的可能,因此DroidEvolver的最终效果仍
然会随着时间推移而下降。本发明认为,DroidEvolver使用的二进制向量将API独立看待,
没有捕捉到API之间的关系。因此本发明将API是否出现的二进制向量替换为API分组是否
出现的二进制向量,使得模型池里的模型可以利用到API之间的语义关系。
特征向量,输入到SVM算法进行模型训练。在API特征方面,Drebin考虑了一组受限和可疑的
API,这些API可以访问关键和敏感的数据或资源。和DroidEvolver一样,Drebin也没有考虑
到API之间的语义关系,因此和DroidEvolver一样,本发明通过将其使用的API是否出现的
二进制向量替换为API分组出现的二进制向量,来提高模型的抗老化能力。
入特征。该嵌入特征是由API关系图谱通过API嵌入方法生成的。