一种高准确率的Linux共享内存恶意代码检测方法技术

技术编号:33304254 阅读:11 留言:0更新日期:2022-05-06 12:13
本发明专利技术涉及一种高准确率的Linux共享内存恶意代码检测方法。主要包括以下5个步骤:(1)筛选tmpfs文件类型;(2)收集vm_file字段指向的文件对象;(3)枚举共享内存中的内容;(4)将已收集到的内容进行对比分析;(5)根据文件权限位标志和父进程相关信息进行筛选。本发明专利技术为所收集文件对象的权限标志位以及父进程相关信息进行筛选,解决了现存共享内存恶意代码检测方法的误报率高的问题,对SYSTEM V类型的共享内存进行信息提取,解决了基于Rekall的动态共享内存恶意代码检测方法中对共享内存检测不全面、漏报率高等问题,本发明专利技术提出的共享内存恶意代码检测方法可以适用于Rekall框架适用的所有Linux系统版本。用的所有Linux系统版本。

【技术实现步骤摘要】
一种高准确率的Linux共享内存恶意代码检测方法


[0001]本专利技术属于信息安全——内存取证领域,具体涉及一种高准确率的Linux共享内存恶意代码检测方法。

技术介绍

[0002]现如今,仍有许多恶意软件可以隐匿或获得许可在合法程序中运行自己,恶意软件制作者们与安全防御者们相互竞争较量促进网络安全的发展,提高了攻击性和防御性方法的复杂程度。现代恶意软件主要驻留在易失性存储中并且只能在运行状态下被检测到,从而有可能妨碍取证过程,因此研究人员开始使用内存获取或现场取证分析来检测和分析潜在威胁。但是,最近的恶意软件开始采用反取证技术来阻止取证工具来获得有意义的结果。对于反取证技术现阶段的研究主要针对Windows系统,所以Linux中的反取证技术仍有很大的研究空间。反取证就是删除或者隐藏证据使取证调查无效。目前反取证技术分为三类:数据加密、数据隐藏、数据删除。基于共享内存的反取证就是一种数据隐藏技术。
[0003]从进程的角度看,驻留在私有内存中的数据一旦未映射就会丢失,而共享内存仍然是可访问的,且只要至少有一个进程对其持有句柄,就可以保持可用。所以在进程注入时,共享内存是一个很好的注入位置,现在主流的取证工具(如volatility和Rekall)对共享内存的检测不够彻底,存在误报率、漏报率高的问题。

技术实现思路

[0004]为了解决现存Linux共享内存恶意代码检测中存在的误报率高、检测内容不全面等问题,本专利技术公开了一种高准确率的Linux共享内存恶意代码检测方法。
[0005]为此,本专利技术提供了如下技术方案:
[0006]1.一种高准确率的Linux共享内存恶意代码检测方法,主要包括以下步骤:
[0007](1)筛选tmpfs文件类型;
[0008](2)收集vm_file字段指向的文件对象;
[0009](3)枚举共享内存中的内容;
[0010](4)将已收集到的内容进行对比分析;
[0011](5)根据文件权限位标志和父进程相关信息进行筛选。
[0012]2.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测方法,其特征在于:所述步骤(1)中,先找到文件的file_struct结构,筛选该结构下的f_mapping字段对应的文件权限值为S_IFREG的映射文件,筛选该结构下vfsmnt字段对应的类型为tmpfs的文件系统。
[0013]3.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测方法,其特征在于:所述步骤(2)中,查找每个进程的VMA块(虚拟内存空间),筛选vm_file字段指向的文件,收集所有映射到VMA的文件,并将它们存放到一个列表中。
[0014]4.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测方法,其特
征在于:所述步骤(3)中,首先收集通过调用memfd函数创建并调用mmap函数映射的共享内存类型(包括基于POSIX mmap文件映射实现的共享内存和通过memfd_created()和fd跨进程共享实现的共享内存),在进程文件中遍历file_ptr字段,收集相应的内容,枚举其中的文件对象,之后收集SYSTEM V类型的共享内存中的文件对象,在进程文件的sysvshm字段对象文件中遍历shmid_kernel_object结构收集相应内容。
[0015]5.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测方法,其特征在于:所述步骤(4)中,在步骤(2)中收集到的映射到VMA的文件列表中遍历找出并枚举与步骤(3)中收集到的文件内容不同的文件对象。
[0016]6.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测算法,其特征在于:所述步骤(5)中,判断步骤(4)中所收集的文件的权限标志,筛选出权限为可读可写可执行的文件,判断进程的父进程ID,筛选出父进程ID不为1的进程文件。最后列出所需文件的进程ID、文件对象地址、文件所在文件夹位置、权限位标志、共享内存类型以及父进程ID。
[0017]有益效果
[0018]1.本专利技术是一种高准确率的Linux共享内存恶意代码检测算法,为所收集文件对象的权限标志位以及父进程相关信息进行筛选,解决了现存共享内存恶意代码检测方法的误报率高的问题。
[0019]2.本专利技术在现存共享内存恶意代码检测算法的基础上,对SYSTEM V类型的共享内存进行信息提取,解决了基于Rekall的动态共享内存恶意代码检测方法中对共享内存检测不全面、漏报率高等问题。
[0020]3.本专利技术提出的共享内存恶意代码检测方法可以适用于Rekall框架适用的所有Linux系统版本。
附图说明
[0021]下面结合附图和具体实施方式对本专利技术作进一步详细的说明。
[0022]图1是本专利技术实施方式中的一种高准确率的Linux共享内存恶意代码检测算法流程图。
[0023]图2是本专利技术对一常见共享内存恶意代码进行检测的结果图(没有进行筛选时)。
[0024]图3是本专利技术对一常见共享内存恶意代码进行完整5个步骤检测的结果图。
具体实施方式
[0025]为了使本专利技术的实施例中的技术方案能够清楚和完整地描述,以下结合实施例中的附图,对本专利技术进行进一步的详细说明。
[0026]假设有一个注入到SYSTEM V共享内存类型中的恶意代码,设进程名为hidden_share_mem,实验环境为4.9.0
‑9‑
amd64,SMP Debian 4.9.168

1。
[0027]本专利技术实例为一种高准确率的Linux共享内存恶意代码检测方法的流程,如图1所示,主要包括以下步骤:
[0028]步骤1筛选tmpfs文件类型的过程如下:
[0029]步骤1

1在上述Debian系统中运行Rekall框架,选择在线模式可动态的自动检测
当前系统内存。定位内存中的file_struct结构;
[0030]步骤1

2判定该结构中的f_mapping

>host

>type是否为S_IFREG以及vfsmnt

>mnt_sb

>s_id是否为tmpfs,筛选出tmpfs类型且文件权限为S_IFREG的文件。
[0031]步骤2收集vm_file字段指向的文件对象的过程如下:
[0032]步骤2

1在内存中遍历得到所有进程;
[0033]步骤2

2在进程的映射文件中遍历相应的VMA块,如果存在vma

>vm_file,则记录下该vm_file对应的f_mapping所指向的文件。
[0034]步骤3枚举共享内存中的内容本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高准确率的Linux共享内存恶意代码检测方法,主要包括以下步骤:(1)筛选tmpfs文件类型;(2)收集vm_file字段指向的文件对象;(3)枚举共享内存中的内容;(4)将已收集到的内容进行对比分析;(5)根据文件权限位标志和父进程相关信息进行筛选。2.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测方法,其特征在于:所述步骤(1)中,先找到文件的file_struct结构,筛选该结构下的f_mapping字段对应的文件权限值为S_IFREG的映射文件,筛选该结构下vfsmnt字段对应的类型为tmpfs的文件系统。3.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测方法,其特征在于:所述步骤(2)中,查找每个进程的VMA块(虚拟内存空间),筛选vm_file字段指向的文件,收集所有映射到VMA的文件,并将它们存放到一个列表中。4.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测方法,其特征在于:所述步骤(3)中,首先收集通过调用memfd函数创建并调用mmap...

【专利技术属性】
技术研发人员:赵洛平韩旭白忆鸽
申请(专利权)人:哈尔滨理工大学
类型:发明
国别省市:

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

1