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

文档序号:34216706发布日期:2023-05-18 00:39阅读:102来源:国知局
基于深度学习的Linux系统DKOM攻击检测方法

本发明涉及信息处理,更进一步涉及网络安全中的一种基于深度学习的linux系统直接内核对象操纵dkom(direct kernel object manipulation)攻击检测方法。本发明可用于对linux系统内存镜像进行分析,检测出系统是否受到dkom攻击,从而保障linux系统的安全运行。


背景技术:

1、dkom技术常被一些恶意软件(如内核级rootkit)利用作为攻击linux系统的手段,比如对进程对象修改可以实现隐藏进程,对内核模块对象进行修改可以实现隐藏模块,故将这种攻击称为dkom攻击。这种攻击能够深入操作系统的内核层,对操作系统安全产生了极大的威胁,并且dkom攻击的隐蔽性极强,一般的检测方法难以对其进行检测。目前,针对linux系统dkom的攻击检测主要分为两类:动态检测和静态检测。动态方法主要是通过在待测linux系统上安装检测软件,然后通过分析系统中的软件是否存在dkom攻击行为来进行检测;静态检测方法主要是通过分析linux内存镜像文件的内容,判断其中是否存在dkom攻击的痕迹来进行检测。

2、湖南大学在其申请的专利文献“一种基于内核不变量保护的rootkit入侵检测和系统恢复方法”(申请号cn201110124261.0,申请公布号cn 102147843 a)中提出了一种通过保护linux系统内核不变量来检测内核级rootkit的方法。这种内核不变量是操作系统在运行中始终不变的数据结构或数据结构间不变的逻辑关系。针对具体的内核rootkit攻击行为,可以生成具体的对应内核数据结构不变量,当检测到这些不变量发生变化时,则表明检测到了内核级rootkit。该方法存在的不足之处是检测的dkom攻击种类有限,因为这些内核不变量并不是每一种内核对象都具有的,若内核级rootkit利用dkom技术攻击某些不存在常量数据结构或不变逻辑关系的内核数据结构,那么此方法就无法对此类攻击进行检测。

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


技术实现思路

1、本发明的目的是针对上述现有技术的不足,提出一种基于深度学习的linux系统dkom攻击检测方法,能够识别linux内存中的各种内核对象,解决了目前方法对linux系统dkom攻击检测种类不全,实现复杂,以及受linux内核版本限制的问题。

2、实现本发明目的的具体思路是:本发明提出的方法包括模型训练阶段和攻击检测阶段,在模型训练阶段,对所有已知内核对象分布的linux内存镜像样本通过深度学习进行训练,得到一个对象检测模型;在攻击检测阶段,使用训练阶段得到的模型对待测linux系统内存镜像进行检测,得到目标对象地址集合,再通过对比该集合与linux系统内核链表中的对象是否一致,判断内存中是否存在隐藏内核对象,进而判定linux系统是否受到dkom攻击。

3、实现本发明目的的具体步骤如下:

4、步骤1,构建扩展内存图:

5、步骤1.1,使用内存分析框架分析linux系统内存镜像,找到内核对象内部的所有常量的地址;

6、步骤1.2,遍历linux系统内存镜像的内容,找到其中所有指针的地址;

7、步骤1.3,按照从小到大,将所有常量地址和所有指针地址进行排序,根据排序后的地址,将每两个相邻地址之间的linux系统内存镜像字节序列作为一个图节点,记录所有节点组成节点集合,字节序列的起始地址就是节点的地址,节点的大小就是字节序列的长度,字节序列的内容就是节点的初始向量;

8、步骤1.4,对集合中的节点按照其地址从小到大排序,对所有相邻的两个左右节点,生成左节点指向右节点的边作为左邻接边,生成右节点指向左节点的的边作为右邻接边;对所有相邻的两个节点之间的字段进行判断,若判断为指针,则找到该指针所指向的节点,记为dest节点,从dest节点生成一条指向左节点的边作为右指针边,从dest节点生成一条指向右节点的边作为左指针边;若为常量,则从左节点生成一条指向自身的边作为右指针边,从右节点生成一条指向自身的边作为左指针边;

9、步骤1.5,生成linux系统内存镜像对应的扩展内存图g=(n,eln,ern,elp,erp),其中,n表示节点集合,eln表示由所有左邻接边组成的集合,ern表示由所有右邻接边组成的集合,elp表示由所有左指针边组成的集合,erp表示由所有右指针边组成的集合;

10、步骤2,生成扩展内存图的节点标签:

11、步骤2.1,通过内存分析框架对linux内存镜像进行分析,获取所有内核对象的地址以及大小;遍历内存镜像所生成的扩展内存图节点,生成每个节点的标签,节点标签的内容包括节点所在的内核对象类型,节点地址在内核对象中的偏移量,节点的大小;

12、步骤2.2,计算每种内核对象中每个节点标签权值;

13、步骤2.3,将每种类型对象的所有节点标签权值最高的前20个节点标签组成该种类型对象关键节点标签集合;

14、步骤3,构建包括嵌入网络和分类器的图神经网络:

15、步骤3.1,搭建一个嵌入网络,其结构依次为:第一卷积层,第二卷积层,第三卷积层;将第一、第二、第三卷积层的大小均设置为64*64,卷积层的激活函数采用relu函数实现;

16、步骤3.2,搭建一个分类器,使用全连接网络实现分类器网络共有3层全连接层,其结构依次为:64*64,64*64,64*21,激活函数使用softmax函数;

17、步骤4,生成数据集:

18、步骤4.1,对linux系统采集500个内存镜像,利用步骤1的方式为每个内存镜像构造其对应的扩展内存图,可以得到500个扩展内存图;利用步骤2为每个扩展内存图的节点生成节点标签,可以为每个扩展内存图生成节点标签文件;

19、步骤5,训练图神经网络:

20、将训练集的所有扩展内存图及其对应的节点标签输入到图神经网络中进行训练,计算每次迭代时网络输出的预测节点标签与标注标签之间的交叉熵损失值,并在最小化误差的过程中更新图神经网络的权重参数,直至损失值收敛为止,得到训练好的图神经网络;

21、步骤6,推测内核对象:

22、将图神经网络输出的节点预测标签视为投票支持对象存在和对象类型的投票者,根据验证数据集和检测数据集使用内核对象推测算法,将训练好的图神经网络输出的各个节点的预测标签转化为对应内核对象的起始地址,记录这些地址得到内核对象地址集合;

23、步骤7,对待测linux系统检测dkom攻击:

24、步骤7.1,对待测linux系统提取内存镜像,利用步骤1为内存镜像构建扩展内存图;

25、步骤7.2,使用训练好的图神经网络对待测linux系统的内存镜像的扩展内存图进行节点标签预测,根据内核对象推测算法得到目标内核对象地址集合s1;

26、步骤7.3,使用内存分析框架对待测linux系统的内存镜像进行分析,得到目标内核对象地址集合s2;

27、步骤7.4,比较s1和s2是否相同,若是,则判定待测linux系统未受到dkom攻击,否则,判定待测linux系统受到dkom攻击。

28、本发明与现有技术相比具有如下优点:

29、第一,本发明的内核对象检测方法结合了基于指针映射和基于值不变签名的方法,能够对大多数的内核对象进行检测,进而能够实现对各类对象进行隐藏的dkom攻击的检测,克服了现有技术对于dkom攻击检测的种类比较有限的缺点,使得本发明具有鲁棒性高的优点。

30、第二,本发明设计的内核对象检测模型利用深度学习的方法自动地学习linux内存镜像中学习内核对象的结构知识,不需要依赖操作系统的领域知识,克服了现有技术需要依赖操作系统的领域知识,技术成本高的缺点,使得本发明具有技术成本低,实现简单的优点。

31、第三,本发明实现的检测方法能够对linux各种内核版本进行检测,克服了现有技术对linux内核版本严格限制的缺点,使得本发明具有适用于各种linux内核版本的优点。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1