CN109543410B - 一种基于语义映射关联的恶意代码检测方法 - Google Patents

一种基于语义映射关联的恶意代码检测方法 Download PDF

Info

Publication number
CN109543410B
CN109543410B CN201811385352.8A CN201811385352A CN109543410B CN 109543410 B CN109543410 B CN 109543410B CN 201811385352 A CN201811385352 A CN 201811385352A CN 109543410 B CN109543410 B CN 109543410B
Authority
CN
China
Prior art keywords
api
sequence
semantic
sample
dynamic
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.)
Active
Application number
CN201811385352.8A
Other languages
English (en)
Other versions
CN109543410A (zh
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.)
Beijing Institute of Technology BIT
Peoples Liberation Army Strategic Support Force Aerospace Engineering University
Original Assignee
Beijing Institute of Technology BIT
Peoples Liberation Army Strategic Support Force Aerospace Engineering University
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 Beijing Institute of Technology BIT, Peoples Liberation Army Strategic Support Force Aerospace Engineering University filed Critical Beijing Institute of Technology BIT
Priority to CN201811385352.8A priority Critical patent/CN109543410B/zh
Publication of CN109543410A publication Critical patent/CN109543410A/zh
Application granted granted Critical
Publication of CN109543410B publication Critical patent/CN109543410B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于语义映射关联融合的恶意代码检测方法,基于恶意代码的动态和静态API序列之间的语义映射关系,将恶意代码样本转化为基于API的特征向量样本,基于得到的恶意代码样本特征向量训练机器学习分类器,实现了恶意代码的检测。本发明通过定义代码行为类型,将代码的静态和动态API序列转换为由行为类型划分的语义块序列,通过语义块之间的映射实现静态和动态API序列的关联和融合,生成了更为丰富特征向量空间,实现了对恶意代码更为系统全面的描绘,有效提升了意代码检测准确率;通过将语义块之间的路径长度作为语义块的权重,可以准确地反映该语义路径的重要程度,从而提高特征向量空间的精确度。

Description

一种基于语义映射关联的恶意代码检测方法
技术领域
本发明涉及恶意代码检测领域,具体涉及一种基于语义映射关联融合的恶意代码检测方法。
背景技术
在网络空间环境下,恶意代码带来的安全威胁与日俱增,针对恶意代码的检测与防护是安全研究的一个重点。基于行为特征检测代码是否具有恶意性是一种常用的恶意代码检测方法。在此方面,API调用信息可以准确反映程序的行为特征,并且可有效抵抗恶意代码混淆等反分析手段,所以通过提取和分析API 调用序列来检测恶意代码的方法已得到广泛应用。
总结已公布的研究成果,可以发现当前基于API调用序列的分析检测方法存在以下不足:(1)研究人员通常仅提取代码的静态或动态API序列,即仅分析和利用代码的静态或动态特征开展检测,而未将两者有效结合起来使用,导致生成的特征向量空间不足,检测过程易受恶意代码混淆手段的影响,最终影响检测准确率;(2)研究人员单独分析代码的静态或动态特征开展检测,缺乏将静态特征和动态特征有效融合的方法,致使研究人员无法有效评估静态特征和动态特征对分析代码恶意性的影响,最终也会影响研究人员对代码恶意性的判断。
发明内容
有鉴于此,本发明提供了一种基于语义映射关联融合的恶意代码检测方法,基于恶意代码的动态和静态API序列之间的语义映射关系,将恶意代码样本转化为基于API的特征向量样本,基于得到的恶意代码样本特征向量训练机器学习分类器,实现恶意代码的检测。
本发明提供了一种基于语义映射关联的恶意代码检测方法,具体包括如下步骤:
步骤1.1、针对恶意代码样本空间中的每个样本代码,分别提取其静态和动态API序列,形成初始API序列;
步骤1.2、对步骤1.1中得到的动态和静态API序列进行净化处理,去除其中隐藏的API噪声;
步骤1.3、基于动态和静态API语义类型的相关性,对步骤1.2得到的动态和静态API序列进行关联融合,生成混合带有权值的API序列,计算每个API 的贡献度,再按照贡献度的数值由大到小的顺序对所有API进行排序;
步骤1.4、在步骤1.3中得到的API排序中,选择排名靠前的N个API作为特征向量,并以各个API在每个样本中出现的次数作为特征值,为每个样本生成特征向量;
步骤1.5、使用步骤1.4生成的恶意代码样本的特征向量作为机器学习方法的输入,对样本进行自动化的分类与检测。
进一步地,所述关联融合包括以下步骤:
步骤2.1、从步骤1.2得到的同一样本的动态和静态API中,分别选取相同类型的API各自组成一个语义块;
步骤2.2、比较步骤2.1生成的同一样本的动态和静态语义块序列,从较短的序列中选取两个连续的语义块节点作为一个长度为2的语义块节点对,在较长的序列中寻找与语义块节点对中第一个语义节点类型相同的节点作为起始点,再在较长的序列中寻找与语义块节点对中另一个语义节点类型相同的节点作为终点,形成包含起始点、终点及中间所有语义块的语义块序列子串,所包含语义块的个数为该子串的长度;
步骤2.3、按照式(1)将这两个子串进行合并,形成一个新的混合序列:
Figure GDA0002969154340000031
其中,
Figure GDA0002969154340000032
表示第1个序列中下标i1至j1的语义块子串,
Figure GDA0002969154340000033
表示第2个序列中下标i2至j2的语义块子串,
Figure GDA0002969154340000034
表示将两个序列中的语义串融合之后得到的新语义串,ω1表示语义串
Figure GDA0002969154340000035
的长度,ω2表示语义串
Figure GDA0002969154340000036
的长度,α表示长度为ω1的子串的权重,
Figure GDA0002969154340000037
另一子串的权重为1-α,所述语义块子串内的API的权值与语义块子串的权值相同。
进一步地,所述基于API的特征向量的生成包括如下步骤:
步骤3.1、基于所述混合API序列及每个API的权重,以加权统计的方式,分别统计所有样本中每个API出现的次数、每一类样本中每个API出现的次数及每一个样本中每个API出现的次数;
步骤3.2、基于步骤3.1得到的结果信息,计算所有样本API的贡献度并进行排序;
步骤3.3、选取贡献度排序Top-N的API组成特征向量;
步骤3.4、基于Top-N API对每一个样本进行匹配,以该API在每个样本的动静态API序列中出现的次数作为其在该样本中的特征值;
步骤3.5、为每一个样本生成API序列特征向量;
步骤3.6、生成所有样本的基于API序列的特征向量矩阵。
进一步地,所述净化处理包括冗余净化和噪声净化两个阶段,包括如下步骤:
步骤4.1、针对所述初始API序列,从初始位置读取API作为基准API,并新建一个命名为冗余净化的空序列,将基准API添加到冗余净化空序列中;
步骤4.2、从确定的基准API位置之后遍历初始API序列,直到发现下一个与基准API不同的API,并将该API设为新的基准API,且将新的基准API添加到冗余净化空序列中;
步骤4.3、判断当前遍历位置是否已到初始API序列的结尾,如果未结束,则返回步骤4.2,直到到达该API序列的结尾为止;
步骤4.4、读入步骤4.3获得的冗余净化空序列中存放的冗余净化后的API 序列,统计该序列中每一个API在序列中出现的位置,并将每一个API在序列中的位置序号保存在一个与之对应的数组中;
步骤4.5、读取第一个API位置序号数组,判断该数组中是否存在等差数列部分,即一个数组中存在N个数值满足等差现象;
步骤4.6、如果一个数组中存在等差数列部分,则读取这些序号之间的API 子串,并判断这些子串是否相同,如相同,则认定该API序列中存在噪声序列,以该位置序号数组为依据,清除重复子串只保留一个子串;
步骤4.7、判断当前API位置序号数组是否为最后一个,如果未结束,则返回步骤4.5,直到完成所有冗余净化后的API序列的噪声净化。
进一步地,采用TF-IDF方法计算所有样本API的贡献度并进行排序。
进一步地,所述静态API序列从样本程序的PE结构中提取,所述动态API 序列从样本的动态分析报告中提取。
有益效果:
在实际分析过程中,我们发现虽然代码的动静态API序列存在明显差异,但从行为类型的角度分析代码的语义特征,其动静态API序列之间又存在着内在的相似性,即存在“语法差异、语义相似”的现象。因此,在分析同一个程序的静态特征和动态行为特征之间的关联时,已不能采用传统的基因变异的研究思路,而需要提出新的方法。本发明正式基于这一现象提出了新的方法。
1、通过定义代码行为类型,可以将代码的静态和动态API序列转换为由行为类型划分的语义块序列,并通过语义块之间的映射实现静态和动态API序列的关联和融合,生成了更为丰富特征向量空间,实现了对恶意代码更为系统全面的描绘,可有效提升恶意代码检测准确率;
2、在映射过程中,以语义块之间的路径长度作为语义块的权重,可以准确地反映该语义路径的重要程度,由此可以更准确地反映该语义块所对应API在检测恶意代码方面的贡献度,从而提高特征向量空间的精确度。
附图说明
图1为本发明提供的基于语义映射关联融合的恶意代码检测方法总体架构图。
图2为样本API序列中存在的噪声和冗余API的示意图。
图3为基于语义映射的动静态API序列融合模型示意图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了一种基于语义映射关联融合的恶意代码检测方法,其基本思想是:首先,提取恶意代码样本的动态和静态API序列;其次,基于恶意代码动静态API的语义类型,通过语义关联映射对恶意代码样本的动静态API序列进行加权融合形成混合API序列,并计算混合API序列中每个API的贡献度;然后,选取贡献度大的API构成恶意代码样本的特征向量;最后,基于得到的恶意代码样本特征向量训练机器学习分类器,从而实现恶意代码的检测。
本发明提供的基于语义映射关联融合的恶意代码检测方法,如图1所示,主要包括以下步骤:
步骤一:数据采集过程,针对恶意代码样本空间中的每个样本代码,分别提取其静态和动态API序列,其中,静态API序列可以从样本程序的PE结构中提取,动态API序列可以从样本的动态分析报告中提取。
步骤二:数据净化过程,对步骤一中得到的动态和静态API序列进行净化处理,去除其中隐藏的API冗余和噪声,即去除相同的API及API子串。
步骤三:数据融合过程,基于动态和静态API语义类型的相关性,对净化后的动态和静态API序列进行关联融合,生成混合API序列,并计算混合API 序列中每个API的贡献度,然后按照贡献度的数值由大到小的顺序对所有API 进行排序。
步骤四:特征生成过程,在步骤三中计算出来的基于贡献度的API排序中,选择排名靠前的N个API(即,Top-N)作为特征向量,并以各个API在样本中出现的次数作为特征值,生成恶意代码样本的特征向量。
步骤五:检测与分类,采用机器学习技术,使用步骤四生成的恶意代码样本的特征向量作为机器学习方法的输入,对样本进行自动化的分类与检测。
实施例一:
1、数据采集过程:
我们从程序的PE结构中提取其静态API序列,从在Cuckoo沙箱环境中生成的动态分析报告中提取其动态API序列。
2、动静态API序列采集与净化
为了隐藏恶意意图,恶意代码的作者通常也会在其正常的API调用序列中,蓄意地插入大量的冗余API,依此来掩盖其行为意图,增加分析难度。如图2 所示,右侧为样本Backdoor.IRC.Agent.f的动态API序列中存在的冗余API。
此外,恶意代码通常也会在其行为序列中蓄意地加入一些看似正常的事件噪声API(即,API子串)进行伪装,以掩盖其真实的恶意行为,增加研究人员的分析难度。如图2所示,左侧为样本Backdoor.IRC.Darkirc.40.a的动态序列,其中{FindResourceExM,LoadResource}即为噪声API,该API子串表现的行为看似正常,实则是为了干扰研究人员分析程序的真实目的。
为此,需要对初始采集得到API序列进行净化处理,得到能够真正反映程序行为特征的API调用序列,程序API序列净化过程包括冗余净化和噪声净化两个阶段。冗余净化过程如下:
步骤2.1、读入采集得到的初始API序列,从初始位置读取API作为基准 API,并新建一个命名为冗余净化的空序列,将基准API添加到冗余净化空序列中;
步骤2.2、从确定的基准API位置之后遍历初始API序列,直到发现下一个与基准API不同的API,并将该API设为新的基准API,且将新的基准API添加到冗余净化空序列中;
步骤2.3、判断当前遍历位置是否已到初始API序列的结尾,如果未结束,则返回步骤2.2,直到到达该API序列的结尾为止。
针对冗余净化后的序列,再进行噪声净化处理,过程如下:
步骤2.4、读入步骤2.3获得的冗余净化空序列中存放的冗余净化后的API 序列,统计该序列中每一个API在序列中出现的位置,并将每一个API在序列中的位置序号保存在一个与之对应的数组中;
步骤2.5、读取第一个API位置序号数组,判断该数组中是否存在等差数列部分,即一个数组中存在N个数值满足等差现象(如在序列Array中,Arrayi+N- Arrayi+N-1=Arrayi+N-1-Arrayi+N-2=Arrayi+N-2-Arrayi+N-3……=Arrayi+1-Arrayi);
步骤2.6、如果一个数组中存在等差数列部分,则读取这些序号之间的API 子串,并判断这些子串是否相同,如相同,则认定该API序列中存在噪声序列,以该位置序号数组为依据,清除重复子串只保留一个子串;
步骤2.7、判断当前API位置序号数组是否为最后一个,如果未结束,则返回步骤2.5,直到完成所有冗余净化后的API序列的噪声净化。
3、动静态API序列融合
首先根据API的属性定义不同的行为类型,然后将一个连续的且同属一个行为类型的API序列串划分为一个语义块,由此将样本的动静态API序列转化为语义块序列,最后基于语义块映射实现对动静态API序列的融合。
3.1恶意行为类型定义
程序的恶意性通常是通过一些不同类型的恶意行为表现出来。实际上,每类恶意代码都会执行一定集合的违规行为,所以我们可以针对常见恶意行为定义一些恶意行为类型,通过对不同层次的具体特征进行关联分析来解释这些恶意行为。为此,本发明定义以下常见的恶意行为类型:
(1)恶意文件操作
文件创建、拷贝、移动、删除、写入等API。
(2)恶意系统操作
系统运行、终止、延迟、异常处理等,及系统信息查询、修改、调试等API。
(3)恶意进程&线程行为
进程/线程创建、进程/线程执行、进程/线程终止等API。
(4)恶意注册表操作
注册表项的创建、修改、查询、删除等API。
(5)恶意存储访问
地址分配、地址保护、地址访问等关键API。
(6)恶意网络访问
创建网络连接、访问网络地址、域名解析服务、关闭网络连接等API。
(7)恶意内核操作
内核对象和资源的创建、使用和清除等API。
(8)恶意窗口操作
窗口的创建、大小化、弹出和关闭等API。
(9)恶意设备操作
对场景设备的各项操作行为API。
(10)恶意文本消息操作
大量的文本、字符串和提示信息的操作行为API。
(11)其它恶意操作
未包括在以上类型的其它恶意操作行为API。
3.2代码动静态行为类型的具体定义
因为API集合包括系统级API(代码实际运行过程中调用的API)及非操作系统级的自定义API(各种开发软件所定义的API函数)。程序的动态和静态 API序列中会包含不同类型的API,基于3.1的恶意行为类型定义,我们分别对动态和静态API进行行为类型的具体定义。(注:定义中所用的“*”符号表示通配符,用于进行模糊匹配。)
3.2.1动态行为类型定义
代码动态执行过程中所调用的API均为系统级API。本发明将代码的动态行为类型定义如下:
Figure GDA0002969154340000091
Figure GDA0002969154340000092
Figure GDA0002969154340000101
SetEernel={*Ldr*,*Section*,*DuplicateObject*,*Make*Object*,*Resource*,*UdiCreate*}
SetMemory={*Memory*,*Volumne*,*Space*,*Buffer*}
Figure GDA0002969154340000102
Figure GDA0002969154340000103
Figure GDA0002969154340000104
SetDevtce={*DeviceIoControl*,*StdHandle*}
SetText={*String*,*Text*}
3.2.2静态行为类型定义
因为代码的静态API序列中既包括系统级API,又包括各种开发软件所自定义的API,所以定义代码的静态行为类型更为复杂,本发明将代码的静态行为类型定义如下:
Figure GDA0002969154340000105
Figure GDA0002969154340000106
Figure GDA0002969154340000107
SetKernel={*Ldr*,*Resouce*,*Func*,*Load*,*mull*,*Uuid*,*Hwnd*,*Section*,*Module*,*Dll*,*Libm*}
Figure GDA0002969154340000108
Figure GDA0002969154340000109
Figure GDA00029691543400001010
Figure GDA0002969154340000111
Figure GDA0002969154340000112
Figure GDA0002969154340000113
3.3基于语义映射的动静态API序列融合模型
基于语义映射的动静态API序列融合模型主要包括两个步骤,如图3所示,首先,基于行为类型的定义,将一个API序列中连续的同属于一个类型的API 序列串定义为一个语义块,由此可将一个API序列转换为由语义块组成的语义块序列;然后,对转换后的同一样本的动静态语义序列进行关联映射,并根据当前关联映射的两个语义块的长度将两组语义块进行加权融合;最终,将该样本的动静态API序列融合形成一个混合的API序列。
3.4基于语义映射的动静态API序列融合实现过程
基于3.3节设计的动静态API序列融合模型,本发明基于语义映射实现动静态API序列融合的过程如下:
步骤3.1、基于本发明定义的动态、静态行为类型定义,相同类型的API组成一个语义块,这样,将同一样本的动静态API序列转换为语义块序列,每一个语义块为新序列中的一个节点。这样就将原始的动静态API序列转换为由语义块组成的动静态语义序列,v(1),v(2)分别表示两个语义序列,v(3)表示融合后的语义序列;
步骤3.2、对同一样本的动静态语义块序列进行比较,从当前较短的序列中选取两个连续的语义块节点作为一个语义块节点对,然后将该节点对映射到较长语义序列中,即,首先在较长的序列中寻找与语义块节点对中第一个语义节点类型相同的节点作为起始点,然后,再在较长的序列中寻找与语义块节点对中另一个语义节点类型相同的节点作为终点。这里,包含起始点、终点以及位于起始点和终点之间的所有语义块一起构成了语义块序列子串,该子串包含的语义块的个数为该子串的长度。
由此,可以得到动态、静态两个语义块序列子串,其一为较短序列上的,包含两个节点的语义块序列子串,其长度为2;其二为较长序列上的与之相应的语义块序列子串。
步骤3.3、按照式(1)将这两个子串进行合并,形成一个新的混合序列:
Figure GDA0002969154340000121
其中,
Figure GDA0002969154340000122
表示第1个序列中下标i1至j1的语义块子串,
Figure GDA0002969154340000123
表示第2个序列中下标i2至j2的语义块子串,
Figure GDA0002969154340000124
表示将两个序列中的语义串融合之后得到的新语义串,ω1表示语义串
Figure GDA0002969154340000125
的长度,ω2表示语义串
Figure GDA0002969154340000126
的长度,α表示长度为ω1的子串的权重,
Figure GDA0002969154340000127
另一子串的权重为1-α。所述语义块子串内的API的权值与语义块子串的权值相同。
步骤3.4、比较此次融合之后两个序列的剩余长度,当两个序列的剩余长度都不为零时,返回步骤3.2;当有一个序列的剩余长度为零时,结束该处理过程。
4、基于贡献度生成特征向量
在融合动静态API序列生成混合序列的基础上,本发明基于所生成的混合 API序列计算序列中所有API的贡献度来生成特征向量,具体步骤如下:
步骤4.1、基于所生成的混合API序列,以及序列中每一个API的权重(如,步骤3.3中得到的权值α),以加权统计的方式,分别统计所有样本中每个API 出现的次数、每一类恶意代码(恶意代码包括不同的类型,比如Constructor、 Backdoor、Email-worm、Hoax、Rootkit这5类)样本中每个API出现的次数及每一个样本中每个API出现的次数;
步骤4.2、基于步骤4.1得到的结果信息,采用TF-IDF方法计算所有样本 API的贡献度并进行排序。API的贡献度计算公式如下:
Probapi=TF-IDF(α*NumOfAll[api],α*NumOfFamily[api],α*NumOfOne[api]) (2)
其中,α表示由公式(1)所计算得到的权重。
步骤4.3、选取贡献度排序Top-N的API组成特征向量;
步骤4.4、基于Top-N API对每一个样本进行匹配,以该API在每个样本的动静态API序列中出现的次数作为其在该样本中的特征值;
步骤4.5、为每一个样本生成API序列特征向量;
步骤4.6、生成所有样本的基于API序列的特征向量矩阵。
5、基于机器学习分类器的自动化检测
基于上述过程生成的特征向量,应用机器学习分类器实现对恶意代码的自动化检测与分类。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种基于语义映射关联的恶意代码检测方法,其特征在于,具体包括如下步骤:
步骤1.1、针对恶意代码样本空间中的每个样本代码,分别提取其静态和动态API序列,形成初始API序列;
步骤1.2、对步骤1.1中得到的动态和静态API序列进行净化处理,去除其中隐藏的API噪声;
步骤1.3、基于动态和静态API语义类型的相关性,对步骤1.2得到的动态和静态API序列进行关联融合,生成混合带有权值的API序列,计算每个API的贡献度,再按照贡献度的数值由大到小的顺序对所有API进行排序;
步骤1.4、在步骤1.3中得到的API排序中,选择排名靠前的N个API作为特征向量,并以各个API在每个样本中出现的次数作为特征值,为每个样本生成特征向量;
步骤1.5、使用步骤1.4生成的恶意代码样本的特征向量作为机器学习方法的输入,对样本进行自动化的分类与检测;
所述步骤1.3中所述关联融合包括以下步骤:
步骤2.1、从步骤1.2得到的同一样本的动态和静态API中,分别选取相同类型的API各自组成一个语义块;
步骤2.2、比较步骤2.1生成的同一样本的动态和静态语义块序列,从较短的序列中选取两个连续的语义块节点作为一个长度为2的语义块节点对,在较长的序列中寻找与语义块节点对中第一个语义节点类型相同的节点作为起始点,再在较长的序列中寻找与语义块节点对中另一个语义节点类型相同的节点作为终点,形成包含起始点、终点及中间所有语义块的语义块序列子串,所包含语义块的个数为该子串的长度;
步骤2.3、按照式(1)将这两个子串进行合并,形成一个新的混合序列:
Figure FDA0002969154330000011
其中,
Figure FDA0002969154330000021
表示第1个序列中下标i1至j1的语义块子串,
Figure FDA0002969154330000022
表示第2个序列中下标i2至j2的语义块子串,
Figure FDA0002969154330000023
表示将两个序列中的语义串融合之后得到的新语义串,ω1表示语义串
Figure FDA0002969154330000024
的长度,ω2表示语义串
Figure FDA0002969154330000025
的长度,α表示长度为ω1的子串的权重,
Figure FDA0002969154330000026
另一子串的权重为1-α,所述语义块子串内的API的权值与语义块子串的权值相同;
步骤2.4、比较此次融合之后两个序列的剩余长度,当两个序列的剩余长度都不为零时,返回步骤2.2;当有一个序列的剩余长度为零时,结束该处理过程。
2.基于权利要求1所述的方法,其特征在于,所述基于API的特征向量的生成包括如下步骤:
步骤3.1、基于混合API序列及每个API的权重,以加权统计的方式,分别统计所有样本中每个API出现的次数、每一类样本中每个API出现的次数及每一个样本中每个API出现的次数;
步骤3.2、基于步骤3.1得到的结果信息,计算所有样本API的贡献度并进行排序;
步骤3.3、选取贡献度排序Top-N的API组成特征向量;
步骤3.4、基于Top-N API对每一个样本进行匹配,以该API在每个样本的动静态API序列中出现的次数作为其在该样本中的特征值;
步骤3.5、为每一个样本生成API序列特征向量;
步骤3.6、生成所有样本的基于API序列的特征向量矩阵。
3.基于权利要求1或2所述的方法,其特征在于,所述净化处理包括冗余净化和噪声净化两个阶段,包括如下步骤:
步骤4.1、针对所述初始API序列,从初始位置读取API作为基准API,并新建一个命名为冗余净化的空序列,将基准API添加到冗余净化空序列中;
步骤4.2、从确定的基准API位置之后遍历初始API序列,直到发现下一个与基准API不同的API,并将该API设为新的基准API,且将新的基准API添加到冗余净化空序列中;
步骤4.3、判断当前遍历位置是否已到初始API序列的结尾,如果未结束,则返回步骤4.2,直到到达该API序列的结尾为止;
步骤4.4、读入步骤4.3获得的冗余净化空序列中存放的冗余净化后的API序列,统计该序列中每一个API在序列中出现的位置,并将每一个API在序列中的位置序号保存在一个与之对应的数组中;
步骤4.5、读取第一个API位置序号数组,判断该数组中是否存在等差数列部分,即一个数组中存在N个数值满足等差现象;
步骤4.6、如果一个数组中存在等差数列部分,则读取这些序号之间的API子串,并判断这些子串是否相同,如相同,则认定该API序列中存在噪声序列,以该位置序号数组为依据,清除重复子串只保留一个子串;
步骤4.7、判断当前API位置序号数组是否为最后一个,如果未结束,则返回步骤4.5,直到完成所有冗余净化后的API序列的噪声净化。
4.基于权利要求3所述的方法,其特征在于,采用TF-IDF方法计算所有样本API的贡献度并进行排序。
5.基于权利要求4所述的方法,其特征在于,所述静态API序列从样本程序的PE结构中提取,所述动态API序列从样本的动态分析报告中提取。
CN201811385352.8A 2018-11-20 2018-11-20 一种基于语义映射关联的恶意代码检测方法 Active CN109543410B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811385352.8A CN109543410B (zh) 2018-11-20 2018-11-20 一种基于语义映射关联的恶意代码检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811385352.8A CN109543410B (zh) 2018-11-20 2018-11-20 一种基于语义映射关联的恶意代码检测方法

Publications (2)

Publication Number Publication Date
CN109543410A CN109543410A (zh) 2019-03-29
CN109543410B true CN109543410B (zh) 2021-05-07

Family

ID=65848687

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811385352.8A Active CN109543410B (zh) 2018-11-20 2018-11-20 一种基于语义映射关联的恶意代码检测方法

Country Status (1)

Country Link
CN (1) CN109543410B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110263538B (zh) * 2019-05-13 2021-07-09 重庆大学 一种基于系统行为序列的恶意代码检测方法
CN111259388B (zh) * 2020-01-09 2023-01-17 中山大学 一种基于图卷积的恶意软件api调用序列检测方法
CN111552970B (zh) * 2020-04-30 2022-07-01 北京理工大学 基于三位一体综合画像的恶意代码检测及恶意性定位方法
CN113971285A (zh) * 2020-07-24 2022-01-25 深信服科技股份有限公司 一种终端恶意进程识别方法、装置、设备及可读存储介质
CN112115465B (zh) * 2020-08-17 2022-11-04 北京理工大学 恶意代码典型攻击行为检测方法及系统
CN112699371B (zh) * 2020-12-31 2024-07-09 上海戎磐网络科技有限公司 一种动态行为特征与软件基因匹配系统和方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107169355A (zh) * 2017-04-28 2017-09-15 北京理工大学 一种蠕虫同源性分析方法和装置
CN107180191A (zh) * 2017-05-03 2017-09-19 北京理工大学 一种基于半监督学习的恶意代码分析方法和系统
CN107180192A (zh) * 2017-05-09 2017-09-19 北京理工大学 基于多特征融合的安卓恶意应用程序检测方法和系统
CN107832611A (zh) * 2017-10-21 2018-03-23 北京理工大学 一种动静态特征结合的僵尸程序检测与分类方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150254163A1 (en) * 2014-03-05 2015-09-10 Concurix Corporation Origin Trace Behavior Model for Application Behavior

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107169355A (zh) * 2017-04-28 2017-09-15 北京理工大学 一种蠕虫同源性分析方法和装置
CN107180191A (zh) * 2017-05-03 2017-09-19 北京理工大学 一种基于半监督学习的恶意代码分析方法和系统
CN107180192A (zh) * 2017-05-09 2017-09-19 北京理工大学 基于多特征融合的安卓恶意应用程序检测方法和系统
CN107832611A (zh) * 2017-10-21 2018-03-23 北京理工大学 一种动静态特征结合的僵尸程序检测与分类方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HADM: Hybrid Analysis for Detection of Malware;Lifan Xu 等;《SAI Intelligent Systems Conference 2016》;20160922;全文 *
基于多特征融合的安卓恶意应用程序检测方法;王勇 等;《信息安全学报》;20180731;第3卷(第4期);全文 *

Also Published As

Publication number Publication date
CN109543410A (zh) 2019-03-29

Similar Documents

Publication Publication Date Title
CN109543410B (zh) 一种基于语义映射关联的恶意代码检测方法
CN109697162B (zh) 一种基于开源代码库的软件缺陷自动检测方法
Jiang et al. DLGraph: Malware detection using deep learning and graph embedding
CN111382439A (zh) 基于多模态深度学习的恶意软件检测方法
CN113961922A (zh) 一种基于深度学习的恶意软件行为检测与分类系统
CN106384050B (zh) 一种基于最大频繁子图挖掘的动态污点分析方法
CN109614795B (zh) 一种事件感知的安卓恶意软件检测方法
Kozachok et al. Construction and evaluation of the new heuristic malware detection mechanism based on executable files static analysis
CN114861194A (zh) 一种基于bgru与cnn融合模型的多类型漏洞检测方法
CN103679034A (zh) 一种基于本体的计算机病毒分析系统及其特征提取方法
Liu et al. Functions-based CFG embedding for malware homology analysis
US9600644B2 (en) Method, a computer program and apparatus for analyzing symbols in a computer
CN111737694B (zh) 一种基于行为树的恶意软件同源性分析方法
CN111400713A (zh) 基于操作码邻接图特征的恶意软件族群分类方法
CN108959922B (zh) 一种基于贝叶斯网的恶意文档检测方法及装置
CN114398069A (zh) 一种基于交叉指纹分析的公共组件库精确版本识别方法及系统
CN117354067A (zh) 一种恶意代码检测方法及系统
CN113468524A (zh) 基于rasp的机器学习模型安全检测方法
CN113971283A (zh) 一种基于特征的恶意应用程序检测方法及设备
CN109784048B (zh) 一种基于程序图的栈缓冲区溢出脆弱性检测方法
Naeem et al. Identifying vulnerable IoT applications using deep learning
CN114817925B (zh) 基于多模态图特征的安卓恶意软件检测方法及系统
CN112988216B (zh) 一种基于功能结构的软件体系结构恢复方法
KR20200068483A (ko) 정상 또는 악성 앱이 선호하는 특징기능을 멀웨어 탐지 및 분류에 이용하는 멀웨어 탐지 분류 방법 및 시스템
CN113971282A (zh) 一种基于ai模型的恶意应用程序检测方法及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant