CN114428957A - 一种高准确率的Linux共享内存恶意代码检测方法 - Google Patents
一种高准确率的Linux共享内存恶意代码检测方法 Download PDFInfo
- Publication number
- CN114428957A CN114428957A CN202111569096.XA CN202111569096A CN114428957A CN 114428957 A CN114428957 A CN 114428957A CN 202111569096 A CN202111569096 A CN 202111569096A CN 114428957 A CN114428957 A CN 114428957A
- Authority
- CN
- China
- Prior art keywords
- file
- shared memory
- collected
- malicious code
- linux
- 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.)
- Pending
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 claims abstract description 77
- 238000012216 screening Methods 0.000 claims abstract description 14
- 238000010835 comparative analysis Methods 0.000 claims abstract description 4
- 238000013507 mapping Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 5
- 239000000284 extract Substances 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000011842 forensic investigation Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
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/562—Static detection
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)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种高准确率的Linux共享内存恶意代码检测方法。主要包括以下5个步骤:(1)筛选tmpfs文件类型;(2)收集vm_file字段指向的文件对象;(3)枚举共享内存中的内容;(4)将已收集到的内容进行对比分析;(5)根据文件权限位标志和父进程相关信息进行筛选。本发明为所收集文件对象的权限标志位以及父进程相关信息进行筛选,解决了现存共享内存恶意代码检测方法的误报率高的问题,对SYSTEM V类型的共享内存进行信息提取,解决了基于Rekall的动态共享内存恶意代码检测方法中对共享内存检测不全面、漏报率高等问题,本发明提出的共享内存恶意代码检测方法可以适用于Rekall框架适用的所有Linux***版本。
Description
技术领域
本发明属于信息安全——内存取证领域,具体涉及一种高准确率的Linux共享内存恶意代码检测方法。
背景技术
现如今,仍有许多恶意软件可以隐匿或获得许可在合法程序中运行自己,恶意软件制作者们与安全防御者们相互竞争较量促进网络安全的发展,提高了攻击性和防御性方法的复杂程度。现代恶意软件主要驻留在易失性存储中并且只能在运行状态下被检测到,从而有可能妨碍取证过程,因此研究人员开始使用内存获取或现场取证分析来检测和分析潜在威胁。但是,最近的恶意软件开始采用反取证技术来阻止取证工具来获得有意义的结果。对于反取证技术现阶段的研究主要针对Windows***,所以Linux中的反取证技术仍有很大的研究空间。反取证就是删除或者隐藏证据使取证调查无效。目前反取证技术分为三类:数据加密、数据隐藏、数据删除。基于共享内存的反取证就是一种数据隐藏技术。
从进程的角度看,驻留在私有内存中的数据一旦未映射就会丢失,而共享内存仍然是可访问的,且只要至少有一个进程对其持有句柄,就可以保持可用。所以在进程注入时,共享内存是一个很好的注入位置,现在主流的取证工具(如volatility和Rekall)对共享内存的检测不够彻底,存在误报率、漏报率高的问题。
发明内容
为了解决现存Linux共享内存恶意代码检测中存在的误报率高、检测内容不全面等问题,本发明公开了一种高准确率的Linux共享内存恶意代码检测方法。
为此,本发明提供了如下技术方案:
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函数映射的共享内存类型(包括基于POSIX mmap文件映射实现的共享内存和通过memfd_created()和fd跨进程共享实现的共享内存),在进程文件中遍历file_ptr字段,收集相应的内容,枚举其中的文件对象,之后收集SYSTEM V类型的共享内存中的文件对象,在进程文件的sysvshm字段对象文件中遍历shmid_kernel_object结构收集相应内容。
5.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测方法,其特征在于:所述步骤(4)中,在步骤(2)中收集到的映射到VMA的文件列表中遍历找出并枚举与步骤(3)中收集到的文件内容不同的文件对象。
6.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测算法,其特征在于:所述步骤(5)中,判断步骤(4)中所收集的文件的权限标志,筛选出权限为可读可写可执行的文件,判断进程的父进程ID,筛选出父进程ID不为1的进程文件。最后列出所需文件的进程ID、文件对象地址、文件所在文件夹位置、权限位标志、共享内存类型以及父进程ID。
有益效果
1.本发明是一种高准确率的Linux共享内存恶意代码检测算法,为所收集文件对象的权限标志位以及父进程相关信息进行筛选,解决了现存共享内存恶意代码检测方法的误报率高的问题。
2.本发明在现存共享内存恶意代码检测算法的基础上,对SYSTEM V类型的共享内存进行信息提取,解决了基于Rekall的动态共享内存恶意代码检测方法中对共享内存检测不全面、漏报率高等问题。
3.本发明提出的共享内存恶意代码检测方法可以适用于Rekall框架适用的所有Linux***版本。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1是本发明实施方式中的一种高准确率的Linux共享内存恶意代码检测算法流程图。
图2是本发明对一常见共享内存恶意代码进行检测的结果图(没有进行筛选时)。
图3是本发明对一常见共享内存恶意代码进行完整5个步骤检测的结果图。
具体实施方式
为了使本发明的实施例中的技术方案能够清楚和完整地描述,以下结合实施例中的附图,对本发明进行进一步的详细说明。
假设有一个注入到SYSTEM V共享内存类型中的恶意代码,设进程名为hidden_share_mem,实验环境为4.9.0-9-amd64,SMP Debian 4.9.168-1。
本发明实例为一种高准确率的Linux共享内存恶意代码检测方法的流程,如图1所示,主要包括以下步骤:
步骤1筛选tmpfs文件类型的过程如下:
步骤1-1在上述Debian***中运行Rekall框架,选择在线模式可动态的自动检测当前***内存。定位内存中的file_struct结构;
步骤1-2判定该结构中的f_mapping->host->type是否为S_IFREG以及vfsmnt->mnt_sb->s_id是否为tmpfs,筛选出tmpfs类型且文件权限为S_IFREG的文件。
步骤2收集vm_file字段指向的文件对象的过程如下:
步骤2-1在内存中遍历得到所有进程;
步骤2-2在进程的映射文件中遍历相应的VMA块,如果存在vma->vm_file,则记录下该vm_file对应的f_mapping所指向的文件。
步骤3枚举共享内存中的内容的过程如下:
步骤3-1根据本例中的情况会检测到该进程中的文件类型为sysvshm,则判定恶意代码存在于SYSTEM V类型的共享内存中;
步骤3-2将进程在sysvshm->shm_clist->list_of_type条件下遍历shmid_kernel_object字段所对应的文件,并记录这些文件。
步骤4将已收集到的内容进行对比分析的过程如下:
在步骤2中所得的文件中遍历步骤3中所得的文件,并一一进行对比,筛掉相同内容的文件,挑选出不同的文件并记录。这一步中使用difference函数来进行对比筛选。
步骤5根据文件权限位标志和父进程相关信息进行筛选的过程如下:
步骤5-1对步骤4中得到的文件进一步进行筛查,根据所筛出的进程文件信息,判定它的权限标志位的信息是否为可读可写可执行,筛选出符合该执行权限的进程;
步骤5-2获得它的父进程的相关信息,查看它的父进程ID是否不为1,筛选出符合该条件的进程;
步骤5-3如果以上两条都满足则确定该进程是注入了恶意代码的进程,并将其记录下来;
步骤5-4最后列出所需文件的进程ID,文件对象地址,文件所在文件夹位置,权限位标志,共享内存类型以及父进程ID。如果不满足步骤5-4的条件时,检测结果如图2所示,误报率较高;当满足条件时,可准确找到被恶意代码注入的进程,检测结果如图3所示。
使用常见内存取证检测插件对hidden_share_mem进程进行检测,在其他未被注入的正在运行的进程相同的条件下,检测结果如表1所示(其中detect_shm为本发明中的算法):
表1
F:检测不到;T:可以检测到
其中yarascan(Rekall)可以检测到的前提必须要提供恶意代码所在程序的PID,而本发明针对的是不知道恶意代码在哪里的情况。所以该选项在此不具备参考价值。
在不同***版本下(本实验中使用了以下5个版本的Linux***)同时加载hidden_share_mem进程,在其他未被注入的正在运行的进程相同的条件下,分析本发明的准确率、误报率的问题。detect_hidden_shm与detect_shm两个算法(detect_shm为本发明中的算法)所实施时显示的条目对比如表2所示:
表2
本发明实施方式中的一种高准确率的Linux共享内存恶意代码检测方法,能够准确的检测出Linux上的共享内存中是否存在恶意代码,以及恶意代码所在进程的相关信息。
以上所述是结合附图对本发明的实施例进行的详细介绍,本文的具体实施方式只是用于帮助理解本发明的方法,对于本技术领域的普通技术人员,依据本发明的思想,在具体实施方式及应用范围内均可有所变更和修改,故本发明书不应理解为对本发明的限制。
Claims (6)
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函数映射的共享内存类型(包括基于POSIX mmap文件映射实现的共享内存和通过memfd_created()和fd跨进程共享实现的共享内存),在进程文件中遍历file_ptr字段,收集相应的内容,枚举其中的文件对象,之后收集SYSTEM V类型的共享内存中的文件对象,在进程文件的sysvshm字段对象文件中遍历shmid_kernel_object结构收集相应内容。
5.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测方法,其特征在于:所述步骤(4)中,在步骤(2)中收集到的映射到VMA的文件列表中遍历找出并枚举与步骤(3)中收集到的文件内容不同的文件对象。
6.根据权利要求1所述的一种高准确率的Linux共享内存恶意代码检测算法,其特征在于:所述步骤(5)中,判断步骤(4)中所收集的文件的权限标志,筛选出权限为可读可写可执行的文件,判断进程的父进程ID,筛选出父进程ID不为1的进程文件。最后列出所需文件的进程ID、文件对象地址、文件所在文件夹位置、权限位标志、共享内存类型以及父进程ID。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111569096.XA CN114428957A (zh) | 2021-12-21 | 2021-12-21 | 一种高准确率的Linux共享内存恶意代码检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111569096.XA CN114428957A (zh) | 2021-12-21 | 2021-12-21 | 一种高准确率的Linux共享内存恶意代码检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114428957A true CN114428957A (zh) | 2022-05-03 |
Family
ID=81311427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111569096.XA Pending CN114428957A (zh) | 2021-12-21 | 2021-12-21 | 一种高准确率的Linux共享内存恶意代码检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114428957A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090120717A (ko) * | 2008-05-20 | 2009-11-25 | 주식회사 웰비아닷컴 | 마이크로소프트 윈도우 운영체제를 사용하는 컴퓨터시스템에서의 악성코드 탐지 및 처리 시스템 및 방법 |
KR101421630B1 (ko) * | 2013-01-28 | 2014-07-22 | 주식회사 잉카인터넷 | 코드 인젝션된 악성코드 탐지 시스템 및 방법 |
US9411953B1 (en) * | 2013-05-24 | 2016-08-09 | Symantec Corporation | Tracking injected threads to remediate malware |
CN111966457A (zh) * | 2020-08-10 | 2020-11-20 | 华中科技大学 | 一种基于快照的恶意代码检测方法及*** |
CN113110944A (zh) * | 2021-03-31 | 2021-07-13 | 北京达佳互联信息技术有限公司 | 信息查找方法、装置、服务器、可读存储介质及程序产品 |
-
2021
- 2021-12-21 CN CN202111569096.XA patent/CN114428957A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090120717A (ko) * | 2008-05-20 | 2009-11-25 | 주식회사 웰비아닷컴 | 마이크로소프트 윈도우 운영체제를 사용하는 컴퓨터시스템에서의 악성코드 탐지 및 처리 시스템 및 방법 |
KR101421630B1 (ko) * | 2013-01-28 | 2014-07-22 | 주식회사 잉카인터넷 | 코드 인젝션된 악성코드 탐지 시스템 및 방법 |
US9411953B1 (en) * | 2013-05-24 | 2016-08-09 | Symantec Corporation | Tracking injected threads to remediate malware |
CN111966457A (zh) * | 2020-08-10 | 2020-11-20 | 华中科技大学 | 一种基于快照的恶意代码检测方法及*** |
CN113110944A (zh) * | 2021-03-31 | 2021-07-13 | 北京达佳互联信息技术有限公司 | 信息查找方法、装置、服务器、可读存储介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Trinius et al. | Visual analysis of malware behavior using treemaps and thread graphs | |
US11734427B2 (en) | Systems, methods and devices for memory analysis and visualization | |
CN112866023B (zh) | 网络检测、模型训练方法、装置、设备及存储介质 | |
CN109918907B (zh) | Linux平台进程内存恶意代码取证方法、控制器及介质 | |
CN111695119B (zh) | 一种基于细粒度静态污点分析与符号执行的web漏洞检测方法 | |
KR20160082644A (ko) | 코드 블록 구분을 통한 악성 코드 탐지 방법 및 장치 | |
Block et al. | Linux memory forensics: Dissecting the user space process heap | |
CN111460445A (zh) | 样本程序恶意程度自动识别方法及装置 | |
CN104881483B (zh) | 用于Hadoop平台数据泄露攻击的自动检测取证方法 | |
CN113132311A (zh) | 异常访问检测方法、装置和设备 | |
CN113595975B (zh) | 一种Java内存Webshell的检测方法及装置 | |
CN108566392B (zh) | 基于机器学习的防御cc攻击***与方法 | |
CN114760106A (zh) | 网络攻击的确定方法、***、电子设备及存储介质 | |
CN106911635B (zh) | 一种检测网站是否存在后门程序的方法及装置 | |
Zuo | Defense of Computer Network Viruses Based on Data Mining Technology. | |
CN105243328A (zh) | 一种基于行为特征的摆渡木马防御方法 | |
US7373519B1 (en) | Distinguishing legitimate modifications from malicious modifications during executable computer file modification analysis | |
CN114428957A (zh) | 一种高准确率的Linux共享内存恶意代码检测方法 | |
Srivastava et al. | Detecting code injection by cross-validating stack and VAD information in windows physical memory | |
CN106446687B (zh) | 恶意样本的检测方法及装置 | |
CN102194071B (zh) | 基于时域的数据取证及交叉分析方法 | |
CN111125701B (zh) | 文件检测方法、设备、存储介质及装置 | |
Gadgil et al. | Hunting advanced volatile threats using memory forensics | |
Peng et al. | Deduplication and Exploitability Determination of UAF Vulnerability Samples by Fast Clustering | |
Zhao et al. | A Kind of Static Software Birthmark Based on Control Flow |
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 |