当前位置:首页 >娱乐 >使用开源工具进行 Linux 内存取证 使用而 Volatility 没有这种能力

使用开源工具进行 Linux 内存取证 使用而 Volatility 没有这种能力

2024-06-25 20:35:47 [百科] 来源:避面尹邢网

使用开源工具进行 Linux 内存取证

作者:Gaurav Kamathe 开源 内存取证是使用一种从内存中找到和抽取这些有价值的信息的方式。Volatility 是开源一种使用插件来处理这类信息的开源工具。但是工具,存在一个问题:在你处理这些信息前,进行必须将物理内存转储到一个文件中,使用而 Volatility 没有这种能力。开源

[[401668]]

利用 Volatility 找出应用程序、工具网络连接、进行内核模块、使用文件等方面的开源情况。

使用开源工具进行 Linux 内存取证 使用而 Volatility 没有这种能力

计算机的工具操作系统和应用使用主内存(RAM)来执行不同的任务。这种易失性内存包含大量关于运行应用、进行网络连接、使用内核模块、开源打开的工具文件以及几乎所有其他的内容信息,但这些信息每次计算机重启的时候都会被清除。

使用开源工具进行 Linux 内存取证 使用而 Volatility 没有这种能力

内存取证Memory forensics是一种从内存中找到和抽取这些有价值的信息的方式。Volatility 是一种使用插件来处理这类信息的开源工具。但是,存在一个问题:在你处理这些信息前,必须将物理内存转储到一个文件中,而 Volatility 没有这种能力。

使用开源工具进行 Linux 内存取证 使用而 Volatility 没有这种能力

因此,这篇文章分为两部分:

  • 第一部分是处理获取物理内存并将其转储到一个文件中。
  • 第二部分使用 Volatility 从这个内存转储中读取并处理这些信息。

我在本教程中使用了以下测试系统,不过它可以在任何 Linux 发行版上工作:

  1. $ cat /etc/redhat-release
  2. Red Hat Enterprise Linux release 8.3 (Ootpa)
  3. $
  4. $ uname -r
  5. 4.18.0-240.el8.x86_64
  6. $

注意事项: 部分 1 涉及到编译和加载一个内核模块。不要担心:它并不像听起来那么困难。

一些指南:

  • 按照以下的步骤。
  • 不要在生产系统或你的主要计算机上尝试任何这些步骤。
  • 始终使用测试的虚拟机(VM)来尝试,直到你熟悉使用这些工具并理解它们的工作原理为止。

安装需要的包

在开始之前安装必要的工具。如果你经常使用基于 Debian 的发行版,可以使用 apt-get 命令。这些包大多数提供了需要的内核信息和工具来编译代码:

  1. $ yum install kernel-headers kernel-devel gcc elfutils-libelf-devel make git libdwarf-tools python2-devel.x86_64-y

部分 1:使用 LiME 获取内存并将其转储到一个文件中

在开始分析内存之前,你需要一个内存转储供你使用。在实际的取证活动中,这可能来自一个被破坏或者被入侵的系统。这些信息通常会被收集和存储来分析入侵是如何发生的及其影响。由于你可能没有可用的内存转储,你可以获取你的测试 VM 的内存转储,并使用它来执行内存取证。

Linux 内存提取器Linux Memory Extractor(LiME)是一个在 Linux 系统上获取内存很常用的工具。使用以下命令获得 LiME:

  1. $ git clone https://github.com/504ensicsLabs/LiME.git
  2. $
  3. $ cd LiME/src/
  4. $
  5. $ ls
  6. deflate.c  disk.c  hash.c  lime.h  main.c  Makefile  Makefile.sample  tcp.c
  7. $

构建 LiME 内核模块

在 src 文件夹下运行 make 命令。这会创建一个以 .ko 为扩展名的内核模块。理想情况下,在 make 结束时,lime.ko 文件会使用格式 lime-<your-kernel-version>.ko 被重命名。

  1. $ make
  2. make -C /lib/modules/4.18.0-240.el8.x86_64/build M="/root/LiME/src" modules
  3. make[1]: Entering directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
  4.  
  5. << 删节 >>
  6.  
  7. make[1]: Leaving directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
  8. strip --strip-unneeded lime.ko
  9. mv lime.ko lime-4.18.0-240.el8.x86_64.ko
  10. $
  11. $
  12. $ ls -l lime-4.18.0-240.el8.x86_64.ko
  13. -rw-r--r--. 1 root root 25696 Apr 17 14:45 lime-4.18.0-240.el8.x86_64.ko
  14. $
  15. $ file lime-4.18.0-240.el8.x86_64.ko
  16. lime-4.18.0-240.el8.x86_64.ko: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), BuildID[sha1]=1d0b5cf932389000d960a7e6b57c428b8e46c9cf, not stripped
  17. $

加载LiME 内核模块

现在是时候加载内核模块来获取系统内存了。insmod 命令会帮助加载内核模块;模块一旦被加载,会在你的系统上读取主内存(RAM)并且将内存的内容转储到命令行所提供的 path 目录下的文件中。另一个重要的参数是 format;保持 lime 的格式,如下所示。在插入内核模块之后,使用 lsmod 命令验证它是否真的被加载。

  1. $ lsmod  | grep lime
  2. $
  3. $ insmod ./lime-4.18.0-240.el8.x86_64.ko "path=../RHEL8.3_64bit.mem format=lime"
  4. $
  5. $ lsmod  | grep lime
  6. lime                   16384  0
  7. $

你应该看到给 path 命令的文件已经创建好了,而且文件大小与你系统的物理内存(RAM)大小相同(并不奇怪)。一旦你有了内存转储,你就可以使用 rmmod 命令删除该内核模块:

  1. $
  2. $ ls -l ~/LiME/RHEL8.3_64bit.mem
  3. -r--r--r--. 1 root root 4294544480 Apr 17 14:47 /root/LiME/RHEL8.3_64bit.mem
  4. $
  5. $ du -sh ~/LiME/RHEL8.3_64bit.mem
  6. 4.0G    /root/LiME/RHEL8.3_64bit.mem
  7. $
  8. $ free -m
  9.               total        used        free      shared  buff/cache   available
  10. Mem:           3736         220         366           8        3149        3259
  11. Swap:          4059           8        4051
  12. $
  13. $ rmmod lime
  14. $
  15. $ lsmod  | grep lime
  16. $

内存转储中是什么?

这个内存转储文件只是原始数据,就像使用 file 命令可以看到的一样。你不可能通过手动去理解它;是的,在这里边有一些 ASCII 字符,但是你无法用编辑器打开这个文件并把它读出来。hexdump 的输出显示,最初的几个字节是 EmiL;这是因为你的请求格式在上面的命令行中是 lime

  1. $ file ~/LiME/RHEL8.3_64bit.mem
  2. /root/LiME/RHEL8.3_64bit.mem: data
  3. $
  4.  
  5. $ hexdump -C ~/LiME/RHEL8.3_64bit.mem | head
  6. 00000000  45 4d 69 4c 01 00 00 00  00 10 00 00 00 00 00 00  |EMiL............|
  7. 00000010  ff fb 09 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
  8. 00000020  b8 fe 4c cd 21 44 00 32  20 00 00 2a 2a 2a 2a 2a  |..L.!D.2 ..*****|
  9. 00000030  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |

    (责任编辑:时尚)

    推荐文章
    热点阅读