怎样使用命令行对无文件恶意软件进行取证

在最近的几年,Linux面临的一个日益严重的威胁—-基于无文件落地型的恶意软件。无文件恶意软件是指将自身注入到正在运行的Linux系统中,并且不会在磁盘上留下任何痕迹。现在已经有多种手法可以实现无文件攻击:

1.执行二进制文件后从磁盘删除自身。

2.在不写入磁盘的情况下直接将代码注入正在运行的服务器(例如,在PHP服务器通过易受攻击的输入来运行PHP代码)。

3.使用诸如ptrace()之类的系统调用附加到正在运行的进程,并将代码插入内存空间执行。

4.使用诸如memfd_create()之类的方法在RAM中创建一个可以运行的匿名文件。

在本篇文章中,我们将讨论如何检测最后一个攻击向量。

memfd_create()无文件攻击

首先,向大家介绍一个linux系统的底层调用函数memfd_create()。该函数允许您在RAM中创建驻留文件,将文件保存到RAM而不是文件系统本身。调用成功后,您就可以引用这个内存驻留文件,就像您操作磁盘目录中的文件一样。 在man中的描述:

memfd_create()创建一个匿名文件并返回引一个文件描述符。该文件的行为类似于常规文件,并可以进行修改,截断,内存映射等。但是,与常规文件不同,它位于RAM中并且具有易失性。

您可以将其理解为并不是在Linux主机上直接调用/bin/ls,而是将ls加载到RAM中,可以将其称为/ls。就如许多系统调用一样,出于性能等原因,它可以被合法使用,但这也给攻击者带来了可乘之机。更重要的是,如果系统重新启动或被关闭,恶意软件会立即被清除,这对于隐藏入侵者行为来说是很有价值的。

发动进攻

关于memfd_create()的利用方式有很多种,它们都有相似的检测模式,所以使用哪种并不重要,在本文我们使用的是:In Only Memory ELF Execution。

我们可以直接通过SSH传输二进制文件,这样就没有任何内容写入磁盘,也没有产生任何交互式shell,这样做可以大大降低攻击被检测的可能。

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章