基于深度学习的Linux系统DKOM攻击检测方法技术方案

技术编号:37628225 阅读:6 留言:0更新日期:2023-05-18 12:19
本发明专利技术公开了一种基于深度学习的Linux系统DKOM攻击检测方法,用于解决现有的Linux系统DKOM攻击检测方法检测的DKOM攻击种类较少以及适用的Linux内核版本有限的问题。本发明专利技术的步骤为:(1)构建扩展内存图;(2)生成扩展内存图的节点标签;(3)构建图神经网络;(4)生成数据集;(5)训练图神经网络;(6)推测内核对象;(7)对待测Linux系统检测DKOM攻击。本发明专利技术对Linux内存镜像设计出了一种扩展内存图的图结构,采用图神经网络对扩展内存图的拓扑结构进行监督学习,实现识别Linux内存镜像中的各种内核对象,再分析其中是否存在被DKOM攻击隐藏的对象来检测DKOM攻击,使得本发明专利技术能够检测各种恶意隐藏内核对象的DKOM攻击并且具有很高的检测精度。的检测精度。的检测精度。

【技术实现步骤摘要】
基于深度学习的Linux系统DKOM攻击检测方法


[0001]本专利技术涉及信息处理
,更进一步涉及网络安全
中的一种基于深度学习的Linux系统直接内核对象操纵DKOM(Direct Kernel Object Manipulation)攻击检测方法。本专利技术可用于对Linux系统内存镜像进行分析,检测出系统是否受到DKOM攻击,从而保障Linux系统的安全运行。

技术介绍

[0002]DKOM技术常被一些恶意软件(如内核级rootkit)利用作为攻击Linux系统的手段,比如对进程对象修改可以实现隐藏进程,对内核模块对象进行修改可以实现隐藏模块,故将这种攻击称为DKOM攻击。这种攻击能够深入操作系统的内核层,对操作系统安全产生了极大的威胁,并且DKOM攻击的隐蔽性极强,一般的检测方法难以对其进行检测。目前,针对Linux系统DKOM的攻击检测主要分为两类:动态检测和静态检测。动态方法主要是通过在待测Linux系统上安装检测软件,然后通过分析系统中的软件是否存在DKOM攻击行为来进行检测;静态检测方法主要是通过分析Linux内存镜像文件的内容,判断其中是否存在DKOM攻击的痕迹来进行检测。
[0003]湖南大学在其申请的专利文献“一种基于内核不变量保护的rootkit入侵检测和系统恢复方法”(申请号CN201110124261.0,申请公布号CN 102147843 A)中提出了一种通过保护Linux系统内核不变量来检测内核级rootkit的方法。这种内核不变量是操作系统在运行中始终不变的数据结构或数据结构间不变的逻辑关系。针对具体的内核rootkit攻击行为,可以生成具体的对应内核数据结构不变量,当检测到这些不变量发生变化时,则表明检测到了内核级rootkit。该方法存在的不足之处是检测的DKOM攻击种类有限,因为这些内核不变量并不是每一种内核对象都具有的,若内核级rootkit利用DKOM技术攻击某些不存在常量数据结构或不变逻辑关系的内核数据结构,那么此方法就无法对此类攻击进行检测。
[0004]林志强在其发表的论文“SigGraph:Brute Force Scanning of Kernel Data Structure Instances Using Graph

based Signatures”(普渡大学,网络与分布式系统安全研讨会论文集,2013年)中提出了一种Linux系统DKOM检测方法,该方法根据各种内核数据结构之间的指向关系,为Linux内核数据结构生成了基于图的结构不变签名,然后利用签名扫描的方式遍历内存镜像识别目标内核对象,再判定这些内核对象中是否有被恶意隐藏的来检测DKOM攻击。该方法有效的利用了内核数据结构间的点对点关系,相比于基于值不变的签名的对象检测方法,该方法能更加准确的识别具有指针字段的内核数据结构。但是,该方法仍然存在的不足之处是,需要对每一种内核数据结构都生成一个基于图的结构不变签名,需要依赖操作系统的领域知识,技术成本很高,实现复杂;另外,该方法仅适用于Linux2.6的内核版本,对于其他的内核版本的Linux系统则无法进行检测。

技术实现思路

[0005]本专利技术的目的是针对上述现有技术的不足,提出一种基于深度学习的Linux系统DKOM攻击检测方法,能够识别Linux内存中的各种内核对象,解决了目前方法对Linux系统DKOM攻击检测种类不全,实现复杂,以及受Linux内核版本限制的问题。
[0006]实现本专利技术目的的具体思路是:本专利技术提出的方法包括模型训练阶段和攻击检测阶段,在模型训练阶段,对所有已知内核对象分布的Linux内存镜像样本通过深度学习进行训练,得到一个对象检测模型;在攻击检测阶段,使用训练阶段得到的模型对待测Linux系统内存镜像进行检测,得到目标对象地址集合,再通过对比该集合与Linux系统内核链表中的对象是否一致,判断内存中是否存在隐藏内核对象,进而判定Linux系统是否受到DKOM攻击。
[0007]实现本专利技术目的的具体步骤如下:
[0008]步骤1,构建扩展内存图:
[0009]步骤1.1,使用内存分析框架分析Linux系统内存镜像,找到内核对象内部的所有常量的地址;
[0010]步骤1.2,遍历Linux系统内存镜像的内容,找到其中所有指针的地址;
[0011]步骤1.3,按照从小到大,将所有常量地址和所有指针地址进行排序,根据排序后的地址,将每两个相邻地址之间的Linux系统内存镜像字节序列作为一个图节点,记录所有节点组成节点集合,字节序列的起始地址就是节点的地址,节点的大小就是字节序列的长度,字节序列的内容就是节点的初始向量;
[0012]步骤1.4,对集合中的节点按照其地址从小到大排序,对所有相邻的两个左右节点,生成左节点指向右节点的边作为左邻接边,生成右节点指向左节点的的边作为右邻接边;对所有相邻的两个节点之间的字段进行判断,若判断为指针,则找到该指针所指向的节点,记为dest节点,从dest节点生成一条指向左节点的边作为右指针边,从dest节点生成一条指向右节点的边作为左指针边;若为常量,则从左节点生成一条指向自身的边作为右指针边,从右节点生成一条指向自身的边作为左指针边;
[0013]步骤1.5,生成Linux系统内存镜像对应的扩展内存图G=(N,E
ln
,E
rn
,E
lp
,E
rp
),其中,N表示节点集合,E
ln
表示由所有左邻接边组成的集合,E
rn
表示由所有右邻接边组成的集合,E
lp
表示由所有左指针边组成的集合,E
rp
表示由所有右指针边组成的集合;
[0014]步骤2,生成扩展内存图的节点标签:
[0015]步骤2.1,通过内存分析框架对Linux内存镜像进行分析,获取所有内核对象的地址以及大小;遍历内存镜像所生成的扩展内存图节点,生成每个节点的标签,节点标签的内容包括节点所在的内核对象类型,节点地址在内核对象中的偏移量,节点的大小;
[0016]步骤2.2,计算每种内核对象中每个节点标签权值;
[0017]步骤2.3,将每种类型对象的所有节点标签权值最高的前20个节点标签组成该种类型对象关键节点标签集合;
[0018]步骤3,构建包括嵌入网络和分类器的图神经网络:
[0019]步骤3.1,搭建一个嵌入网络,其结构依次为:第一卷积层,第二卷积层,第三卷积层;将第一、第二、第三卷积层的大小均设置为64*64,卷积层的激活函数采用ReLU函数实现;
[0020]步骤3.2,搭建一个分类器,使用全连接网络实现分类器网络共有3层全连接层,其结构依次为:64*64,64*64,64*21,激活函数使用Softmax函数;
[0021]步骤4,生成数据集:
[0022]步骤4.1,对Linux系统采集500个内存镜像,利用步骤1的方本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于深度学习的Linux系统DKOM攻击检测方法,其特征在于,利用节点标签出现的频率生成内核对象的所有节点标签权值,利用监督学习训练图神经网络对扩展内存图的节点进行表示学习,利用基于投票机制的对象推测算法对节点分类的结果推测内核对象地址;该方法的具体步骤包括:步骤1,构建扩展内存图:步骤1.1,使用内存分析框架分析Linux系统内存镜像,找到内核对象内部的所有常量的地址;步骤1.2,遍历Linux系统内存镜像的内容,找到其中所有指针的地址;步骤1.3,按照从小到大,将所有常量地址和所有指针地址进行排序,根据排序后的地址,将每两个相邻地址之间的Linux系统内存镜像字节序列作为一个图节点,记录所有节点组成节点集合,字节序列的起始地址就是节点的地址,节点的大小就是字节序列的长度,字节序列的内容就是节点的初始向量;步骤1.4,对集合中的节点按照其地址从小到大排序,对所有相邻的两个左右节点,生成左节点指向右节点的边作为左邻接边,生成右节点指向左节点的的边作为右邻接边;对所有相邻的两个节点之间的字段进行判断,若判断为指针,则找到该指针所指向的节点,记为dest节点,从dest节点生成一条指向左节点的边作为右指针边,从dest节点生成一条指向右节点的边作为左指针边;若为常量,则从左节点生成一条指向自身的边作为右指针边,从右节点生成一条指向自身的边作为左指针边;步骤1.5,生成Linux系统内存镜像对应的扩展内存图G=(N,E
ln
,E
rn
,E
lp
,E
rp
),其中,N表示节点集合,E
ln
表示由所有左邻接边组成的集合,E
rn
表示由所有右邻接边组成的集合,E
lp
表示由所有左指针边组成的集合,E
rp
表示由所有右指针边组成的集合;步骤2,生成扩展内存图的节点标签:步骤2.1,通过内存分析框架对Linux内存镜像进行分析,获取所有内核对象的地址以及大小;遍历内存镜像所生成的扩展内存图节点,生成每个节点的标签,节点标签的内容包括节点所在的内核对象类型,节点地址在内核对象中的偏移量,节点的大小;步骤2.2,计算每种内核对象中每个节点标签权值;步骤2.3,将每种类型对象的所有节点标签权值最高的前20个节点标签组成该种类型对象关键节点标签集合;步骤3,构建包括嵌入网络和分类器的图神经网络:步骤3.1,搭建一个嵌入网络,其结构依次为:第一卷积层,第二卷积层,第三卷积层;将第一、第二、第三卷积层的大小均设置为64*64,卷积层的激活函数采用ReLU函数实现;步骤3.2,搭建一个分类器,使用全连接网络实现分类器网络共有3层全连接层,其结构依次为:64*64,64*64,64*21,激活函数使用Softmax函数;步骤4,生成数据集:步骤4.1,对Linux系统采集500个内存镜像,利用步骤1的方式为每个内存镜像构造其对应的扩展内存图,可以得到500个扩展内存图;利用步骤2为每个扩展内存图的节点生成节点标签,可以为每个扩展内存图生成节点标签文件;步骤5,训练图神经网络:将训练集的所有扩展内存图及其对应的节点标签输入到图神经网络中进行训练,计算
每次迭代时网络输出的预测节点标签与标注标签之间的交叉熵损失值,并在最小化误差的过程中更新图神经网络的权重参数,直至损失值收敛为止,得到训练好的图神经网络;步骤6,推测内核对象:将图神经网络输出的节点预测标签视为投票...

【专利技术属性】
技术研发人员:孙聪陈亮马建峰
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1