CN105740711B - 一种基于内核对象行为本体的恶意代码检测方法及系统 - Google Patents
一种基于内核对象行为本体的恶意代码检测方法及系统 Download PDFInfo
- Publication number
- CN105740711B CN105740711B CN201610069688.8A CN201610069688A CN105740711B CN 105740711 B CN105740711 B CN 105740711B CN 201610069688 A CN201610069688 A CN 201610069688A CN 105740711 B CN105740711 B CN 105740711B
- Authority
- CN
- China
- Prior art keywords
- behavior
- malicious code
- kernel objects
- public action
- ontology
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种基于内核对象行为本体的恶意代码检测方法及系统,属于计算机技术领域。本发明的方法包含以下步骤:恶意家族公共行为本体构建步骤;可疑样本个体行为本体构建步骤;将可疑样本的个体行为本体导入恶意家族公共行为本体后,组成恶意代码领域本体;对个体行为本体进行推理,判断是否为恶意代码。本发明的有益效果为:方法简单可靠,通过构建本体能够直接对可疑样本进行检测和分类,可以从内核对象行为图中直接看出两个对象之间的关系以及对这两个对象的操作情况,对恶意代码的检测和分类效果更好。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于内核对象行为本体的恶意代码检测方法及系统。
背景技术
现有技术中,恶意代码检测主要有以下几种方法:
(1)基于系统调用的方法:该方法使用的是系统调用API作为特征,对系统调用API进行各种处理来进行恶意代码检测。此种方法存在的问题及缺陷:大多数的恶意代码所造成的危害行为都是通过操纵内核对象来完成的,而且内核对象只有系统内核能进行使用,单纯的系统调用的攻击并不能影响到内核对象。考虑全部的系统调用,而这些系统调用大多数都是恶意代码用来混淆检测的,使得检测更加的不精准。而很多恶意代码编写者加入了大量的系统调用执行序列来隐藏恶意代码的攻击,增加噪声,影响恶意代码的检测。
(2)动态污点分析:是跟踪信息流的一种主要的技术。它可以有效地关联二进制文件。TaintCheck插件、buzzfuzz插件等。TaintCheck插件主要是使用一个Taint Structure的数据结构来记录污点的信息,可以将所有与污点相关的信息存储在这个数据结构中,这样对信息的处理和提取将会更加便利,但是这样需要占用了更多的时间和空间,该工具针对漏洞检测有很好的效果。Buzzfuzz插件将动态污点分析与漏洞检测技术fuzzing(是一种基于缺陷注入的自动软件测试技术)技术相结合的工具,主要也是针对漏洞检测的。已有技术问题及缺陷:Taintcheck的平均减速因子为24,性能不是很好。
(3)基于系统调用图或者传统的内核对象行为图:系统调用图反映出来的是系统调用API之间的调用关系,也就是函数操作之间的调用关系,传统的内核对象行为图是内核对象之间的调用关系,存在的问题及缺陷是:系统调用图,不能反映出是哪两个对象之间的操作情况,传统的内核对象行为图又不能反映出对象的操纵情况,使得对恶意代码检测不够准确。
发明内容
为解决现有技术中的问题,本发明提供一种基于内核对象行为本体的恶意代码检测方法,还提供了一种实现恶意代码检测方法的系统。
本发明基于内核对象行为本体的恶意代码检测方法包含以下步骤:
S1:恶意家族公共行为本体构建步骤;
S2:可疑样本个体行为本体构建步骤;
S3:将可疑样本的个体行为本体导入恶意家族公共行为本体后,组成恶意代码领域本体;
S4:对个体行为本体进行推理,判断是否为恶意代码,
其中,所述恶意家族公共行为本体构建步骤S1包括:
A1:由若干个恶意代码样本构建一个恶意家族样本集;
A2:对恶意代码家族样本集进行动态污点分析;
A3:获取结果文件;
A4:通过结果文件构建每一个恶意代码样本的内核对象行为图;
A5:通过图聚类方式,对每一个恶意代码样本的内核对象行为图进行处理;
A6:获取第一公共行为图和第二公共行为图;
A7:根据第一公共行为图和第二公共行为图构建恶意家族公共行为本体,
所述可疑样本个体行为本体构建步骤S2包括:
B1:对可疑样本进行动态污点分析,获取结果文件;
B2:通过结果文件构建可疑样本的内核对象行为图;
B3:通过可疑样本的内核对象行为图构建可疑样本的个体行为本体。
本发明作进一步改进,在步骤A2和步骤B1中,所述动态污点分析是通过TEMU插件来实现。
本发明作进一步改进,所述TEMU插件实现原理为:
(1)获取CR3值,通过CR3值判断是否为同一个进程,如果是,获取eip值,然后执行下一步,如果否,继续监控;
(2)判断eip值是否为KiFastCallEntry地址,如果是,通过部署钩子捕获内核对象信息并检查In型参数污点标记,然后执行下一步,如果否,判断eip值是否为KiFastSystemCall地址,如果是,获取系统调用返回地址,通过部署钩子捕获内核对象信息并将Out型参数进行新的污点标记,然后执行下一步;
(3)将相关信息存入结果文件并结束追踪;
(4)继续监控。
本发明作进一步改进,在步骤A4中,每一个恶意代码样本的内核对象行为图包括系统调用名称和内核对象调用关系。
本发明作进一步改进,每一个恶意家族样本内核对象行为图的节点用API名称加上内核对象名称属性来表示。
本发明作进一步改进,在步骤A5和步骤A6中,所述图聚类方式为两种,分别为最大公共行为超图的图聚类方式和加权最小公共超图的图聚类方式,其中,通过最大公共行为超图的图聚类方式获取第一公共行为图,通过加权最小公共超图的图聚类方式获取第二公共行为图。
本发明作进一步改进,第一公共行为图为所有恶意代码样本的内核对象行为图的集合,第一公共行为图包含了每一个恶意代码样本的内核对象行为图所有的边和节点,最大公共行为超图的运算公式为:G(g1,g2,g3,...,gn)=g1∪g2∪g3∪...∪gn,其中,g表示每一个恶意代码样本内核对象行为图,也就是子图,下标表示子图编号;G表示最大公共行为超图。
本发明作进一步改进,加权最小公共超图的图聚类方式的运算公式为:
WMinCS(g,h)=wmcs(g,h)∪(g-wmcs(g,h))∪(h-wmcs(g,h)),
g、h表示两个不同的恶意代码样本所形成的内核对象行为图;
WMinCS(g,h):表示由内核对象行为图g、h所形成的加权最小公共超图;
wmcs(g,h):表示内核对象行为图g、h所形成的加权最大公共子图;
g-wmcs(g,h)、h-wmcs(g,h):分别表示内核对象行为图g、h中除去由内核对象行为图g、h所形成的加权最大公共子图wmcs(g,h)的剩余部分。
本发明还提供了一种实现上述恶意代码检测方法的系统,包括:
第一构建模块:用于构建恶意家族公共行为本体;
第二构建模块:用于构建可疑样本个体行为本体;
导入模块:用于将可疑样本的个体行为本体导入恶意家族公共行为本体,组成恶意代码领域本体;
推理模块:用于对个体行为本体进行推理,判断是否为恶意代码,
其中,所述第一构建模块包括:
组合模块:用于将若干个恶意代码样本构建一个恶意家族样本集;
第一动态污点分析模块:用于对恶意代码家族样本集进行动态污点分析;
结果获取模块:用于获取结果文件;
第一内核对象行为图构建模块:通过结果文件构建每一个恶意代码样本的内核对象行为图;
公共行为图获取模块:用于获取第一公共行为图和第二公共行为图;
恶意家族公共行为本体构建模块:用于根据第一公共行为图和第二公共行为图构建恶意家族公共行为本体,
所述第二构建模块包括:
第二动态污点分析模块:用于对可疑样本进行动态污点分析,获取结果文件;
第二内核对象行为图构建模块:通过结果文件构建可疑样本的内核对象行为图;
可疑样本的个体行为本体构建模块:通过可疑样本的内核对象行为图构建可疑样本的个体行为本体。
本发明作进一步改进,所述第一动态污点分析模块和第二动态污点分析模块是通过TEMU插件来实现。
与现有技术相比,本发明的有益效果是:方法简单可靠,通过构建本体能够直接对可疑样本进行检测和分类;直接屏蔽了系统调用,只关注内核对象,提高对恶意代码的检测效果,同时,只考虑内核对象能够很好的抵抗恶意代码的混淆技术;TEMU能够为用户提供一个自定义的API接口功能,能够很方便的进行扩展,用户可以根据自己的需要编写不同的插件实现相应的功能,插件实现和扩展都很方便,而且性能好;构建的新的内核对象行为图结合了对象以及对该对象的操作两个方面,反映信息更多,使得可以从内核对象行为图中直接看出两个对象之间的关系以及对这两个对象的操作情况,对恶意代码的检测和分类效果更好;通过将内核对象行为图转换成本体知识,能够直接对恶意代码进行检测与分类,同时,本体对知识的分析能力使得所构建出的本体检测规则对恶意代码的检测支持多分类。
附图说明
图1为本发明方法示意图;
图2为TEMU插件实现流程图;
图3为现有内核对象行为图的实施例;
图4为本发明改进后的内核对象行为图实施例;
图5为对内核对象行为图进行优化处理示意图;
图6为本发明一实施例按照最大公共行为超图的图聚类方式处理的Agobot家族公共行为本体结构示意图;
图7为本发明一实施例按照加权最小公共超图的图聚类方式处理的Agbot家族公共行为本体结构示意图;
图8为恶意代码领域本体一实施例框架图;
图9为简单恶意代码样本行为三元组形式示意图;
图10为内核对象行为图转换成恶意代码领域本体结构示意图。
具体实施方式
下面结合附图和实施例对本发明做进一步详细说明。
如图1所示,本发明的基于内核对象行为本体的恶意代码检测方法包含以下步骤:
S1:恶意家族公共行为本体构建步骤;
S2:可疑样本个体行为本体构建步骤;
S3:将可疑样本的个体行为本体导入恶意家族公共行为本体后,组成恶意代码领域本体;
S4:对个体行为本体进行推理,判断是否为恶意代码,
其中,所述恶意家族公共行为本体构建步骤S1包括:
A1:由若干个恶意代码样本构建一个恶意家族样本集;
A2:对恶意代码家族样本集进行动态污点分析;
A3:获取结果文件;
A4:通过结果文件构建每一个恶意代码样本的内核对象行为图;
A5:通过图聚类方式,对每一个恶意代码样本的内核对象行为图进行处理;
A6:获取第一公共行为图和第二公共行为图;
A7:根据第一公共行为图和第二公共行为图构建恶意家族公共行为本体,
所述可疑样本个体行为本体构建步骤S2包括:
B1:对可疑样本进行动态污点分析,获取结果文件;
B2:通过结果文件构建可疑样本的内核对象行为图;
B3:通过可疑样本的内核对象行为图构建可疑样本的个体行为本体。
下面通过实例对上述方法的每一步骤进行详细说明:
1、动态污点分析
在步骤A2和步骤B1中,都用到动态污点分析。其中,所述动态污点分析(Dynamictaint analysis)是跟踪信息流的一种主要的技术。它可以有效地关联二进制文件。动态污点分析技术是通过将一些程序的输出分别进行标记,被标记的输出参数将作为污染源进行接下来的传播,同时分析一个程序的各种输入参数是否被标记,如果被标记了,就可以通过标记获得该参数的传播路径以及传播源。该技术通常应用到检测众所周知的漏洞,它可以通过将漏洞作为污染源进行标记,然后检查该污染源是否被传播到了不合适的输出中。
简单来说,就是对一个API(Application Program Interface,应用程序接口)的输出参数进行标记,然后一直查看这个参数的传播过程,如果传到另外一个API的输入里面,那就说明这两个API有调用关系。
本例的动态污点分析是通过TEMU插件来实现,TEMU是一个基于全系统仿真器QEMU开发的全系统的动态二进制分析平台。在这个仿真器上运行一个完整的系统(包括操作系统和应用程序),并对相关二进制代码的执行进行细粒度的观察。
如图2所示,所述TEMU插件实现原理为:
(1)获取CR3值,通过CR3值判断是否为同一个进程,如果是,获取eip值,然后执行下一步,如果否,继续监控;
(2)判断eip值是否为KiFastCallEntry地址,如果是,通过部署钩子捕获内核对象信息并检查In型参数污点标记,然后执行下一步,如果否,判断eip值是否为KiFastSystemCall地址,如果是,获取系统调用返回地址,通过部署钩子捕获内核对象信息并将Out型参数进行新的污点标记,然后执行下一步;
(3)将相关信息存入结果文件并结束追踪;
(4)继续监控。
具体来说,在系统调用执行前,需要捕获系统调用参数信息,并检查In型参数的污点信息:系统调用(以Nt开头的函数)均通过模块ntdll.dll中函数KiFastSystemCall进入内核,进入内核之后,将会运行一个名为KiFastCallEntry函数,该函数的功能为:对系统堆栈进行初始化,将用户态堆栈中的数据拷贝到内核态堆栈中,对使用的服务表是SSDT还是Shadow SSDT进行判断,然后确定服务进程的入口地址,接着转入服务进程。在转入服务例程前,可以捕获系统调用执行前的信息,在这里部署钩子检查操纵内核对象的系统调用,检查所有的In型参数是否存在污点标记,同时可以获取相关的内核对象信息。
在系统调用返回时,需要再次捕获系统调用参数信息,并标记Out型参数为新的污点:如前所述,系统调用均通过模块ntdll.dll中函数KiFastSystemCall进入内核,从该函数的参数栈中可以解析出系统调用返回地址。通过寄存器esp的值可以解析出系统调用的返回地址,在这个返回地址的位置部署钩子,并检查所有的Out型参数,将Out型参数用一个新的污点标记它。
当加载TEMU插件,且设定好要追踪的程序后,TEMU插件发挥作用的基本流程为:每遇到一个基本块,进入基本块回调函数my_block_begin(),获取当前cr3的值,如果属于目标进程,则判断当前指令地址(寄存器eip的值)是否为KiFastCallEntry的地址值,如果是则调用相应的钩子函数,如果当前指令地址为KiFastSystemCall的地址值,则调用另一个相应的钩子函数。
2、结果文件构建内核对象行为图
以1b02a9ac7458bc8ed8f7d51e8429c044.exe为恶意代码样本为例,内核对象调用信息如表1所示。第1个序列表示NtOpenSection输出了一个标记为T13的FileHandle,它的对象属性名称为kernel32.dll,第2个序列表示NtOpenFile输出了一个标记为T131的FileHandle,它的对象属性名称为\??\C:\WINDOWS\system32\LPK.DLL,第4个序列表示NtCreateKey输入了一个PUNICODE_STRING类型的参数值,检测到污点标记信息T13,输出一个标记为T1996的KeyHandle,它的对象属性名称为System\CurrentControlSet\Services\Tcpip\Parameters,第6个序列表示NtOpenSection输入了一个FileHandle类型的参数值,检测到污点标记信息T131,输出一个标记为T132的FileHandle,它的对象属性名称为kernel32.dll,这里,我们可以知道第4个序列是引用了第1个序列的参数,也可以认为是名为System\CurrentControlSet\Services\Tcpip\Parameters对象引用了名为kernel32.dll对象,第6个序列同理可知名为kernel32.dll对象引用了名为\??\C:\WINDOWS\system32\LPK.DLL对象。
表1
根据表1的信息构建的内核对象行为图如图3和图4所示,图3现有内核对象行为图中未能清晰的反映出对该内核对象操纵的一些信息,本发明在该内核对象行为图的基础上进行了一些改进,在图4中增加了系统调用名称的信息,这样可以清楚的在内核对象行为图中看到对该对象的操纵信息,使得内核对象行为图能够反映出更多的信息,有利于对恶意代码的检测,改进的内核对象行为图更适合对恶意代码特征进行描述。
本发明所用的就是改进的内核对象行为图。我们将每一个内核对象行为图的节点用一个数字表示,比如,用(3,1)表示内核对象节点1依赖于内核对象节点3。本发明使用API名称加上内核对象名称属性来唯一表示本文所构造的内核对象行为图的节点。
在步骤A4中,获得了每一个恶意代码样本的内核对象行为图之后,发现每一个恶意代码样本的内核对象行为图的规模都是巨大的。为了存储方便,必须该图做一些优化处理以便于对恶意代码进行检测。
下面举例说明优化处理方法:
TEMU插件运行后,通过让每一个恶意代码样本运行4分钟,在这4分钟当中,有的恶意代码样本运行周期短,可能重复运行了好几次,有的在不同的时间产生相同的行为,但是在系统调用发生时产生的任一输出参数,所分配的都是一个新的污点标记,继续以1b02a9ac7458bc8ed8f7d51e8429c044.exe的恶意代码样本程序为例,说明本文内核对象行为图的优化处理方法,该恶意代码程序的一个片段如表2所示。
表2
从表2可以看到,在时间为18s时产生的标号1、2的内核对象行为与时间为23s产生的标号为3、4的对象行为依赖关系中,他们的污点标记是不同的,18s时的T131,23s时的为T1311,但是他们的对象属性ObjectAttributes的值\??\C:\WINDOWS\system32\LPK.DLL、kernel32.dll与对对象的操纵NtOpenFile与NtCreateSection都是相同的,像这样除了时间不同之外,它们的内部参数的实际值与对对象的操纵都是相同的时,本发明优化处理方法就将其中一个时间上的内核对象依赖关系删除掉;如果存在多个同一样的内核对象依赖关系,也仅仅只保留一对关系,本例用小写字母a、b分别表示内核对象名称\??\C:\WINDOWS\system32\LPK.DLL、kernel32.dll,小写字母c,d表示其他的内核对象名称,具体的优化处理过程如图5所示。
图5中,数字代码为1、4节点它们的API名称相同,都是NtCreateFile,对象名称都是a,本文就将他们合并成同一个对象,同样的数字代码为2、5的也认为是同一个对象,这样,通过优化处理,将初始的6个对象关系的图合并成了4个对象关系的图,大大减少了数据的冗余,节约了存储空间。
3、图聚类方式
在步骤A5和步骤A6中,所述图聚类方式为两种,分别为最大公共行为超图的图聚类方式(简称:方式一)和加权最小公共超图的图聚类方式(简称:方式二),其中,通过最大公共行为超图的图聚类方式获取第一公共行为图,通过加权最小公共超图的图聚类方式获取第二公共行为图。
其中,第一公共行为图为所有恶意代码样本的内核对象行为图的集合,第一公共行为图包含了每一个恶意代码样本的内核对象行为图所有的边和节点,也就是说一个图所有结构都可以在它所形成的最大公共行为超图中找到,所述最大公共行为超图的运算公式为:
G(g1,g2,g3,...,gn)=g1∪g2∪g3∪...∪gn
其中,g表示每一个恶意代码样本内核对象行为图,也就是子图,下标表示子图编号;G表示最大公共行为超图。
我们默认所有的边和节点的权值都为1,形成最大公共行为超图的过程中不考虑边和节点的权值问题,具体的算法如下:
获取第二公共行为图用到的加权最小公共超图的图聚类方式的运算公式为:
WMinCS(g,h)=wmcs(g,h)∪(g-wmcs(g,h))∪(h-wmcs(g,h))
g、h表示两个不同的恶意代码样本所形成的内核对象行为图;
WMinCS(g,h):表示由内核对象行为图g、h所形成的加权最小公共超图;
wmcs(g,h):表示内核对象行为图g、h所形成的加权最大公共子图;
g-wmcs(g,h)、h-wmcs(g,h):分别表示内核对象行为图g、h中除去由内核对象行为图g、h所形成的加权最大公共子图wmcs(g,h)的剩余部分。
但是,计算一个图集合的WMinCS,计算的复杂程度是随着这个图集合中图的个数呈现指数级的,结合本发明所获得的各个恶意代码样本所形成的内核对象行为图来看,本发明仅考虑边的异同(即内核对象行为之间的依赖关系),对于图的同构、节点的权值等问题暂时不予考虑。具体算法如下:
上述算法中,本发明还设置了一个参数θ,它的意义在于当得到一个加权最小公共超图之后,需要对每一条边的权值归一化处理,来进行删除掉一些不具备代表性的行为,即边的权值小于参数θ,就将其删除。
4、通过第一公共行为图和第二公共行为图构建家族公共行为本体
以Agobot(是一个利用网络共享和微软MS03-026漏洞进行传播的后门)家族为例,方式一是由最大公共行为超图形成的。如图6所示,为Agobot家族的方式一的家族公共行为本体结构(简称Agobot家族本体)。
Agobot家族描述内核对象的依赖关系时用的是并列描述,表示的是该家族的公共行为等价于存在行为(529,3)或者等价于存在行为(2,983),任意一条行为在Agobot家族本体的描述中出现了都可以看成是这个家族的等价行为。这正是符合了方式一的检测知识的,即只要匹配到了一条行为,就看成是满足了方式一。
当构造出方式一的知识后,可以直接运行protégé自带的本体推理机,直接进行推理,该推理机可以自动的将恶意代码进行分类。Protégé工具可以直接将恶意代码分类到各自的家族当中。
下面通过表3对Agobot家族的规则举例说明:
表3
表3中Mal01~Mal04表示4个不同的恶意代码,它们各自的内核对象行为也已给出。通过Agobot的规则与表3的行为比对,Mal01匹配了(529,3),Mal02匹配了(529,3)与(527,3),Mal03匹配了(85,3),Mal04没有匹配行为,因此,将Mal01、Mal02、Mal03标记为满足Agobot家族的方式一,Mal04标记为不满足Agobot家族的方式一。
方式二是由加权最小公共超图形成的。考虑每一个恶意代码样本的内核对象行为图与方式二的匹配程度,本发明只需考虑边(也就是调用关系)的匹配率。本发明设定的一个阈值γ,匹配率δ大于等于γ,就认为是满足方式二,匹配率δ小于γ,就认为是不满足方式二。
比如,假设方式二中存在5条行为{(2,1),(3,1),(4,1),(5,1),(6,4)},设定γ=0.8,那么就可以认为当该恶意代码的匹配率δ大于等于0.8时,就认为它是成功匹配,也就是一旦匹配了4(5×0.8)条行为就算匹配成功,5条行为任一匹配4条行为的情况有5种,如图7所示Agobot方式二的本体结构示意图。
本例将一行中的每一个行为以关键字and来形容后描述进Agobot家族本体,不同行以并列的形式描述进Agobot家族本体,这样就完成的匹配程度的本体知识描述。
方式二的公式考虑到它的分母取值为G和g的最小值,因此,本例在将家族规则和恶意代码样本的内核对象图导入家族公共行为本体当中时,先比较|G|和|g|的大小,如果|g|较小,处理不变;如果|G|较小,就需要将恶意代码样本的内核对象图作为检测规则,家族规则二作为一个单独的个体导入本体知识库。
表4
表5
通过将表4给出的恶意代码样本的个体与图7所示的Agbot方式二进行匹配。Mal01与Mal04个体完全的匹配了一组(4个)行为,Mal02匹配了三个行为,Mal03未匹配行为。根据方式二的检测方式,本例将Mal01与Mal04标记为满足Agobot家族本体的方式二,Mal02与Mal03标记为不满足Agobot的方式二。将方式一与方式二协同作用的结果,得到如表5所示结果。最终只有同时满足Agobot家族本体方式一与方式二的Mal01个体被分类到Agobot家族。
5、恶意代码领域本体
将可疑样本的个体行为本体导入恶意家族公共行为本体后,组成恶意代码领域本体,本例通过对内核对象图以及本体的分析,构建的本体框架如图8所示。
图8中,Thing是作为整个本体知识库的名称,下面包括不同的恶意代码样本个体;Kernel_object_relation为内核对象依赖关系类,该类中存储着全部的内核对象行为关系;Malware类,6类恶意代码家族作为Malware类的子类,每类恶意代码家族中都存放着该类的公共行为特征。
要建立恶意代码领域本体,首先要将内核对象之间的关系转换成本体知识,本例通过对象的依赖关系,也就是内核对象图的边来进行检测。众所周知,边是由两个端点和一条连接两个端点的线所构成的,对应到内核对象图中,这两个端点就是两个内核对象,两个端点的连线就是代表这两个内核对象之间存在依赖关系。本体知识的构建是由一个简单一元逻辑关系主谓宾的关系来构建的,一个最简单的构建本体的方法就是将这两个端点分别看成主语和宾语,将它们之间的连线看成谓语,如图9所示,箭头所指向表示内核对象b是依赖于内核对象a的。
虽然内核对象行为图的结构非常复杂,但是可以将它分解成由一个个的如图9所示的两点一线的结构表示。当构建了本体知识后,内核对象的依赖关系就可以有两种表示,一种是把内核对象看成是一个单独的个体,同时它们之间的依赖表示他们之间的关系,也就是一个集合中包含三个量{内核对象a,内核对象b,边关系(b依赖于a)},需要用三个量{a,b,E(a,b)}表示这样的关系;另一种是把有关联的两个内核对象以及它们之间的关系看成是一个单独的个体,也就是这个集合中只存在一个量{内核对象b依赖于内核对象a},用(a,b)直接表示这样的关系。
本例采用第二种方法,整体结构更加简单,更加方便检测。这是因为,检测比较的是内核对象图之间的边的匹配率,将两个内核对象以及它们之间的依赖关系看成是一个整体,只需匹配一次就能知道另一个内核对象图是否存在该依赖关系,而把一条边看成两个单独个体和它们的关系,那么就需要匹配三次,才能确定另一个内核对象图是否存在这个依赖关系。此外,将两个不同的内核对象图导入构建的本体知识库中时,将它们看成一个整体时,不会导致本体知识库的紊乱。本例将内核对象行为图转换成本体的表示如图10所示。
6、本体推理
首先是构建家族公共行为本体,然后是将可疑样本的个体内核对象行为图构建成个体行为本体。
将可疑样本的个体行为本体导入家族公共行为本体中之后,就组成了恶意代码领域本体。因此,恶意代码领域本体包括个体、家族、它们的行为三个部分,也就是图8所示的结构中三个部分。
有了恶意代码领域本体之后,直接运行本体的推理机,本发明适用于任何推理机。因为本发明综合运用了检测规则和方式,构建可疑样本的个体行为本体及家族公共行为本体时。
运行推理机之后,可疑样本的个体行为本体就能够自动被检测和分类,如果是恶意代码,分类到相应的恶意家族类,如果不是恶意代码,就归为非恶意代码类。
以上所述之具体实施方式为本发明的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明所作的等效变化均在本发明的保护范围内。
Claims (10)
1.一种基于内核对象行为本体的恶意代码检测方法,其特征在于包含以下步骤:
S1:恶意家族公共行为本体构建步骤;
S2:可疑样本个体行为本体构建步骤;
S3:将可疑样本的个体行为本体导入恶意家族公共行为本体后,组成恶意代码领域本体;
S4:对个体行为本体进行推理,判断是否为恶意代码,
其中,所述恶意家族公共行为本体构建步骤S1包括:
A1:由若干个恶意代码样本构建一个恶意家族样本集;
A2:对恶意代码家族样本集进行动态污点分析;
A3:获取结果文件;
A4:通过结果文件构建每一个恶意代码样本的内核对象行为图;
A5:通过图聚类方式,对每一个恶意代码样本的内核对象行为图进行处理;
A6:获取第一公共行为图和第二公共行为图,其中,第一公共行为图为最大公共行为超图,第二公共行为图为加权最小公共超图;
A7:根据第一公共行为图和第二公共行为图构建恶意家族公共行为本体,
所述可疑样本个体行为本体构建步骤S2包括:
B1:对可疑样本进行动态污点分析,获取结果文件;
B2:通过结果文件构建可疑样本的内核对象行为图;
B3:通过可疑样本的内核对象行为图构建可疑样本的个体行为本体。
2.根据权利要求1所述的恶意代码检测方法,其特征在于:在步骤A2和步骤B1中,所述动态污点分析是通过TEMU插件来实现。
3.根据权利要求2所述的恶意代码检测方法,其特征在于:所述TEMU插件实现原理为:
(1)获取CR3值,通过CR3值判断与目标进程是否为同一个进程,如果是,获取eip值,然后执行下一步,如果否,继续监控;
(2)判断eip值是否为KiFastCallEntry地址,如果是,通过部署钩子捕获内核对象信息并检查In型参数污点标记,然后执行下一步,如果否,判断eip值是否为KiFastSystemCall地址,如果是,获取系统调用返回地址,通过部署钩子捕获内核对象信息并将Out型参数进行新的污点标记,然后执行下一步;
(3)将相关信息存入结果文件并结束追踪;
(4)继续监控。
4.根据权利要求1所述的恶意代码检测方法,其特征在于:在步骤A4中,每一个恶意代码样本的内核对象行为图包括系统调用名称和内核对象调用关系。
5.根据权利要求4所述的恶意代码检测方法,其特征在于:每一个恶意家族样本内核对象行为图的节点用API名称加上内核对象名称属性来表示。
6.根据权利要求1所述的恶意代码检测方法,其特征在于:在步骤A5和步骤A6中,所述图聚类方式为两种,分别为最大公共行为超图的图聚类方式和加权最小公共超图的图聚类方式,其中,通过最大公共行为超图的图聚类方式获取第一公共行为图,通过加权最小公共超图的图聚类方式获取第二公共行为图。
7.根据权利要求6所述的恶意代码检测方法,其特征在于:第一公共行为图为所有恶意代码样本的内核对象行为图的集合,第一公共行为图包含了每一个恶意代码样本的内核对象行为图所有的边和节点,最大公共行为超图的运算公式为:
G(g1,g2,g3,...,gn)=g1∪g2∪g3∪...∪gn,其中,g表示每一个恶意代码样本内核对象行为图,也就是子图,下标表示子图编号;G表示最大公共行为超图。
8.根据权利要求6所述的恶意代码检测方法,其特征在于:加权最小公共超图的图聚类方式的运算公式为:WMinCS(g,h)=wmcs(g,h)∪(g-wmcs(g,h))∪(h-wmcs(g,h)),
g、h表示两个不同的恶意代码样本所形成的内核对象行为图;
WMinCS(g,h):表示由内核对象行为图g、h所形成的加权最小公共超图;
wmcs(g,h):表示内核对象行为图g、h所形成的加权最大公共子图;
g-wmcs(g,h)、h-wmcs(g,h):分别表示内核对象行为图g、h中除去由内核对象行为图g、h所形成的加权最大公共子图wmcs(g,h)的剩余部分。
9.一种实现权利要求1-8任一项所述恶意代码检测方法的系统,其特征在于包括:
第一构建模块:用于构建恶意家族公共行为本体;
第二构建模块:用于构建可疑样本个体行为本体;
导入模块:用于将可疑样本的个体行为本体导入恶意家族公共行为本体,组成恶意代码领域本体;
推理模块:用于对个体行为本体进行推理,判断是否为恶意代码,
其中,所述第一构建模块包括:
组合模块:用于将若干个恶意代码样本构建一个恶意家族样本集;
第一动态污点分析模块:用于对恶意代码家族样本集进行动态污点分析;
结果获取模块:用于获取结果文件;
第一内核对象行为图构建模块:通过结果文件构建每一个恶意代码样本的内核对象行为图;
公共行为图获取模块:用于获取第一公共行为图和第二公共行为图;
恶意家族公共行为本体构建模块:用于根据第一公共行为图和第二公共行为图构建恶意家族公共行为本体,
所述第二构建模块包括:
第二动态污点分析模块:用于对可疑样本进行动态污点分析,获取结果文件;
第二内核对象行为图构建模块:通过结果文件构建可疑样本的内核对象行为图;
可疑样本的个体行为本体构建模块:通过可疑样本的内核对象行为图构建可疑样本的个体行为本体。
10.根据权利要求9所述的系统,其特征在于:所述第一动态污点分析模块和第二动态污点分析模块是通过TEMU插件来实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610069688.8A CN105740711B (zh) | 2016-01-29 | 2016-01-29 | 一种基于内核对象行为本体的恶意代码检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610069688.8A CN105740711B (zh) | 2016-01-29 | 2016-01-29 | 一种基于内核对象行为本体的恶意代码检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105740711A CN105740711A (zh) | 2016-07-06 |
CN105740711B true CN105740711B (zh) | 2018-08-31 |
Family
ID=56242053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610069688.8A Active CN105740711B (zh) | 2016-01-29 | 2016-01-29 | 一种基于内核对象行为本体的恶意代码检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105740711B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106384050B (zh) * | 2016-09-13 | 2019-01-15 | 哈尔滨工程大学 | 一种基于最大频繁子图挖掘的动态污点分析方法 |
CN107229867B (zh) * | 2017-06-12 | 2020-12-25 | 北京奇虎科技有限公司 | 内核漏洞挖掘方法、装置、计算设备及计算机存储介质 |
RU2724800C1 (ru) * | 2018-12-28 | 2020-06-25 | Акционерное общество "Лаборатория Касперского" | Система и способ обнаружения источника вредоносной активности на компьютерной системе |
CN113569246B (zh) * | 2020-04-28 | 2024-05-28 | 腾讯科技(深圳)有限公司 | 漏洞检测方法、装置、计算机设备和存储介质 |
CN111586051B (zh) * | 2020-05-08 | 2021-06-01 | 清华大学 | 一种基于超图结构质量优化的网络异常检测方法 |
CN112187716B (zh) * | 2020-08-26 | 2021-07-20 | 中国科学院信息工程研究所 | 一种网络攻击中恶意代码的知识图谱展示方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140611A (zh) * | 2007-09-18 | 2008-03-12 | 北京大学 | 一种恶意代码自动识别方法 |
CN101162485A (zh) * | 2006-10-11 | 2008-04-16 | 飞塔信息科技(北京)有限公司 | 一种计算机恶意代码处理方法和系统 |
US8607351B1 (en) * | 2010-11-02 | 2013-12-10 | The Boeing Company | Modeling cyberspace attacks |
CN103679034A (zh) * | 2013-12-26 | 2014-03-26 | 南开大学 | 一种基于本体的计算机病毒分析系统及其特征提取方法 |
US8782791B2 (en) * | 2010-12-01 | 2014-07-15 | Symantec Corporation | Computer virus detection systems and methods |
-
2016
- 2016-01-29 CN CN201610069688.8A patent/CN105740711B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101162485A (zh) * | 2006-10-11 | 2008-04-16 | 飞塔信息科技(北京)有限公司 | 一种计算机恶意代码处理方法和系统 |
CN101140611A (zh) * | 2007-09-18 | 2008-03-12 | 北京大学 | 一种恶意代码自动识别方法 |
US8607351B1 (en) * | 2010-11-02 | 2013-12-10 | The Boeing Company | Modeling cyberspace attacks |
US8782791B2 (en) * | 2010-12-01 | 2014-07-15 | Symantec Corporation | Computer virus detection systems and methods |
CN103679034A (zh) * | 2013-12-26 | 2014-03-26 | 南开大学 | 一种基于本体的计算机病毒分析系统及其特征提取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105740711A (zh) | 2016-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105740711B (zh) | 一种基于内核对象行为本体的恶意代码检测方法及系统 | |
Aslan et al. | A new malware classification framework based on deep learning algorithms | |
US20230359734A1 (en) | Behavioral threat detection engine | |
Raman | Selecting features to classify malware | |
De Lorenzo et al. | Visualizing the outcome of dynamic analysis of Android malware with VizMal | |
Cozzie et al. | Digging for Data Structures. | |
TWI553503B (zh) | 產生候選鈎點以偵測惡意程式之方法及其系統 | |
Wu et al. | A survey of android malware static detection technology based on machine learning | |
Zhang et al. | DAMBA: detecting android malware by ORGB analysis | |
Gu et al. | Leaps: Detecting camouflaged attacks with statistical learning guided by program analysis | |
CN107659570A (zh) | 基于机器学习与动静态分析的Webshell检测方法及系统 | |
US20230252141A1 (en) | Behavioral threat detection virtual machine | |
Habib et al. | Neural bug finding: A study of opportunities and challenges | |
Alazab et al. | Detecting malicious behaviour using supervised learning algorithms of the function calls | |
Yuste et al. | Optimization of code caves in malware binaries to evade machine learning detectors | |
Sadeghi et al. | Mining the categorized software repositories to improve the analysis of security vulnerabilities | |
Zuo | Defense of Computer Network Viruses Based on Data Mining Technology. | |
Jacob et al. | Malware behavioral detection by attribute-automata using abstraction from platform and language | |
Boot | Applying supervised learning on malware authorship attribution | |
Bai et al. | Approach for malware identification using dynamic behaviour and outcome triggering | |
Lin et al. | Three‐phase behavior‐based detection and classification of known and unknown malware | |
Lin et al. | Ransomware Detection by Distinguishing API Call Sequences through LSTM and BERT Models | |
Nugraha et al. | Malware detection using decision tree algorithm based on memory features engineering | |
Alrabaee et al. | Decoupling coding habits from functionality for effective binary authorship attribution | |
Gusti | PDFalse: Evasive Malicious PDF Machine Learning Classifier |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |