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

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

[[401668]]

利用 Volatility 找出应用程序、网络连接、内核模块、文件等方面的情况。

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

内存取证Memory forensics是一种从内存中找到和抽取这些有价值的信息的方式。Volatility 是一种使用插件来处理这类信息的开源工具。但是,存在一个问题:在你处理这些信息前,必须将物理内存转储到一个文件中,而 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 ExtractorLiME)是一个在 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  |****************|
  10. 00000040  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 20 00 20  |************* . |
  11. 00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
  12. *
  13. 00000080  00 00 00 00 00 00 00 00  00 00 00 00 70 78 65 6c  |............pxel|
  14. 00000090  69 6e 75 78 2e 30 00 00  00 00 00 00 00 00 00 00  |inux.0..........|
  15. 000000a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
  16. $

部分 2:获得 Volatility 并使用它来分析你的内存转储

现在你有了要分析的示例内存转储,使用下面的命令获取 Volatility 软件。Volatility 已经用 Python 3 重写了,但是本教程使用的是用 Python 2 写的原始的 Volatility 包。如果你想用 Volatility 3 进行实验,可以从合适的 Git 仓库下载它,并在以下命令中使用 Python 3 而不是 Python 2:

  1. $ git clone https://github.com/volatilityfoundation/volatility.git
  2. $
  3. $ cd volatility/
  4. $
  5. $ ls
  6. AUTHORS.txt    contrib      LEGAL.txt    Makefile     PKG-INFO     pyinstaller.spec  resources  tools       vol.py
  7. CHANGELOG.txt  CREDITS.txt  LICENSE.txt  MANIFEST.in  pyinstaller  README.txt        setup.py   volatility
  8. $

Volatility 使用两个 Python 库来实现某些功能,所以使用以下命令来安装它们。否则,在你运行 Volatility 工具时,你可能看到一些导入错误;你可以忽略它们,除非你正在运行的插件需要这些库;这种情况下,工具将会报错:

  1. $ pip2 install pycrypto
  2. $ pip2 install distorm3

列出 Volatility 的 Linux 配置文件

你将要运行的第一个 Volatility 命令列出了可用的 Linux 配置文件,运行 Volatility 命令的主要入口点是 vol.py 脚本。使用 Python 2 解释器调用它并提供 --info 选项。为了缩小输出,查找以 Linux 开头的字符串。正如你所看到的,并没有很多 Linux 配置文件被列出:

  1. $ python2 vol.py --info  | grep ^Linux
  2. Volatility Foundation Volatility Framework 2.6.1
  3. LinuxAMD64PagedMemory          - Linux-specific AMD 64-bit address space.
  4. $

构建你自己的 Linux 配置文件

Linux 发行版是多种多样的,并且是为不同架构而构建的。这就是为什么配置文件是必要的 —— Volatility 在提取信息前必须知道内存转储是从哪个系统和架构获得的。有一些 Volatility 命令可以找到这些信息;但是这个方法很费时。为了加快速度,可以使用以下命令构建一个自定义的 Linux 配置文件:

移动到 Volatility 仓库的 tools/linux目录下,运行 make 命令:

  1. $ cd tools/linux/
  2. $
  3. $ pwd
  4. /root/volatility/tools/linux
  5. $
  6. $ ls
  7. kcore  Makefile  Makefile.enterprise  module.c
  8. $
  9. $ make
  10. make -C //lib/modules/4.18.0-240.el8.x86_64/build CONFIG_DEBUG_INFO=y M="/root/volatility/tools/linux" modules
  11. make[1]: Entering directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
  12. << 删节 >>
  13. make[1]: Leaving directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
  14. $

你应该看到一个新的 module.dwarf 文件。你也需要 /boot 目录下的 System.map 文件,因为它包含了所有与当前运行的内核相关的符号:

  1. $ ls
  2. kcore  Makefile  Makefile.enterprise  module.c  module.dwarf
  3. $
  4. $ ls -l module.dwarf
  5. -rw-r--r--. 1 root root 3987904 Apr 17 15:17 module.dwarf
  6. $
  7. $ ls -l /boot/System.map-4.18.0-240.el8.x86_64
  8. -rw-------. 1 root root 4032815 Sep 23  2020 /boot/System.map-4.18.0-240.el8.x86_64
  9. $
  10. $

要创建一个自定义配置文件,移动回到 Volatility 目录并且运行下面的命令。第一个参数提供了一个自定义 .zip 文件,文件名是你自己命名的。我经常使用操作系统和内核版本来命名。下一个参数是前边创建的 module.dwarf 文件,最后一个参数是 /boot 目录下的 System.map 文件:

  1. $
  2. $ cd volatility/
  3. $
  4. $ zip volatility/plugins/overlays/linux/Redhat8.3_4.18.0-240.zip tools/linux/module.dwarf /boot/System.map-4.18.0-240.el8.x86_64
  5.   adding: tools/linux/module.dwarf (deflated 91%)
  6.   adding: boot/System.map-4.18.0-240.el8.x86_64 (deflated 79%)
  7. $

现在自定义配置文件就准备好了,所以在前边给出的位置检查一下 .zip 文件是否被创建好。如果你想知道 Volatility 是否检测到这个自定义配置文件,再一次运行 --info 命令。现在,你应该可以在下边的列出的内容中看到新的配置文件:

  1. $
  2. $ ls -l volatility/plugins/overlays/linux/Redhat8.3_4.18.0-240.zip
  3. -rw-r--r--. 1 root root 1190360 Apr 17 15:20 volatility/plugins/overlays/linux/Redhat8.3_4.18.0-240.zip
  4. $
  5. $
  6. $ python2 vol.py --info  | grep Redhat
  7. Volatility Foundation Volatility Framework 2.6.1
  8. LinuxRedhat8_3_4_18_0-240x64 - A Profile for Linux Redhat8.3_4.18.0-240 x64
  9. $
  10. $

开始使用 Volatility

现在你已经准备好去做一些真正的内存取证了。记住,Volatility 是由自定义的插件组成的,你可以针对内存转储来获得信息。命令的通用格式是:

  1. python2 vol.py -f <memory-dump-file-taken-by-Lime> <plugin-name> --profile=<name-of-our-custom-profile>

有了这些信息,运行 linux_banner 插件来看看你是否可从内存转储中识别正确的发行版信息:

  1. $ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_banner --profile=LinuxRedhat8_3_4_18_0-240x64
  2. Volatility Foundation Volatility Framework 2.6.1
  3. Linux version 4.18.0-240.el8.x86_64 ([mockbuild@vm09.test.com][4]) (gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)) #1 SMP Wed Sep 23 05:13:10 EDT 2020
  4. $

找到 Linux 插件

到现在都很顺利,所以现在你可能对如何找到所有 Linux 插件的名字比较好奇。有一个简单的技巧:运行 --info 命令并抓取 linux_ 字符串。有各种各样的插件可用于不同的用途。这里列出一部分:

  1. $ python2 vol.py --info  | grep linux_
  2. Volatility Foundation Volatility Framework 2.6.1
  3. linux_apihooks             - Checks for userland apihooks
  4. linux_arp                  - Print the ARP table
  5. linux_aslr_shift           - Automatically detect the Linux ASLR shift
  6.  
  7. << 删节 >>
  8.  
  9. linux_banner               - Prints the Linux banner information
  10. linux_vma_cache            - Gather VMAs from the vm_area_struct cache
  11. linux_volshell             - Shell in the memory image
  12. linux_yarascan             - A shell in the Linux memory image
  13. $

使用 linux_psaux 插件检查内存转储时系统上正在运行哪些进程。注意列表中的最后一个命令:它是你在转储之前运行的 insmod 命令。

  1. $ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_psaux --profile=LinuxRedhat8_3_4_18_0-240x64
  2. Volatility Foundation Volatility Framework 2.6.1
  3. Pid    Uid    Gid    Arguments                                                      
  4. 1      0      0      /usr/lib/systemd/systemd --switched-root --system --deserialize 18
  5. 2      0      0      [kthreadd]                                                      
  6. 3      0      0      [rcu_gp]                                                        
  7. 4      0      0      [rcu_par_gp]                                                    
  8. 861    0      0      /usr/libexec/platform-python -Es /usr/sbin/tuned -l -P          
  9. 869    0      0      /usr/bin/rhsmcertd                                              
  10. 875    0      0      /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files
  11. 878    0      0      /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files      
  12.  
  13. << 删节 >>
  14.  
  15. 11064  89     89     qmgr -l -t unix -u                                              
  16. 227148 0      0      [kworker/0:0]                                                  
  17. 227298 0      0      -bash                                                          
  18. 227374 0      0      [kworker/u2:1]                                                  
  19. 227375 0      0      [kworker/0:2]                                                  
  20. 227884 0      0      [kworker/0:3]                                                  
  21. 228573 0      0      insmod ./lime-4.18.0-240.el8.x86_64.ko path=../RHEL8.3_64bit.mem format=lime
  22. 228576 0      0                                                                      
  23. $

想要知道系统的网络状态吗?运行 linux_netstat 插件来找到在内存转储期间网络连接的状态:

  1. $ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_netstat --profile=LinuxRedhat8_3_4_18_0-240x64
  2. Volatility Foundation Volatility Framework 2.6.1
  3. UNIX 18113              systemd/1     /run/systemd/private
  4. UNIX 11411              systemd/1     /run/systemd/notify
  5. UNIX 11413              systemd/1     /run/systemd/cgroups-agent
  6. UNIX 11415              systemd/1    
  7. UNIX 11416              systemd/1    
  8.  
  9. << 删节 >>
  10. $

接下来,使用 linux_mount 插件来看在内存转储期间哪些文件系统被挂载:

  1. $ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_mount --profile=LinuxRedhat8_3_4_18_0-240x64
  2. Volatility Foundation Volatility Framework 2.6.1
  3. tmpfs                     /sys/fs/cgroup                      tmpfs        ro,nosuid,nodev,noexec                  
  4. cgroup                    /sys/fs/cgroup/pids                 cgroup       rw,relatime,nosuid,nodev,noexec        
  5. systemd-1                 /proc/sys/fs/binfmt_misc            autofs       rw,relatime                            
  6. sunrpc                    /var/lib/nfs/rpc_pipefs             rpc_pipefs   rw,relatime                            
  7. /dev/mapper/rhel_kvm--03--guest11-root /                                   xfs          rw,relatime                
  8. tmpfs                     /dev/shm                            tmpfs        rw,nosuid,nodev                        
  9. selinuxfs                 /sys/fs/selinux                     selinuxfs    rw,relatime
  10.                                                      
  11. << 删节 >>
  12.  
  13. cgroup                    /sys/fs/cgroup/net_cls,net_prio     cgroup       rw,relatime,nosuid,nodev,noexec        
  14. cgroup                    /sys/fs/cgroup/cpu,cpuacct          cgroup       rw,relatime,nosuid,nodev,noexec        
  15. bpf                       /sys/fs/bpf                         bpf          rw,relatime,nosuid,nodev,noexec        
  16. cgroup                    /sys/fs/cgroup/memory               cgroup       ro,relatime,nosuid,nodev,noexec        
  17. cgroup                    /sys/fs/cgroup/cpuset               cgroup       rw,relatime,nosuid,nodev,noexec        
  18. mqueue                    /dev/mqueue                         mqueue       rw,relatime                            
  19. $

好奇哪些内核模块被加载了吗?Volatility 也为这个提供了一个插件 linux_lsmod

  1. $ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_lsmod --profile=LinuxRedhat8_3_4_18_0-240x64
  2. Volatility Foundation Volatility Framework 2.6.1
  3. ffffffffc0535040 lime 20480
  4. ffffffffc0530540 binfmt_misc 20480
  5. ffffffffc05e8040 sunrpc 479232
  6. << 删节 >>
  7. ffffffffc04f9540 nfit 65536
  8. ffffffffc0266280 dm_mirror 28672
  9. ffffffffc025e040 dm_region_hash 20480
  10. ffffffffc0258180 dm_log 20480
  11. ffffffffc024bbc0 dm_mod 151552
  12. $

想知道哪些文件被哪些进程打开了吗?使用 linux_bash 插件可以列出这些信息:

  1. $ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_bash --profile=LinuxRedhat8_3_4_18_0-240x64 -v
  2. Volatility Foundation Volatility Framework 2.6.1
  3. Pid      Name                 Command Time                   Command
  4. -------- -------------------- ------------------------------ -------
  5.   227221 bash                 2021-04-17 18:38:24 UTC+0000   lsmod
  6.   227221 bash                 2021-04-17 18:38:24 UTC+0000   rm -f .log
  7.   227221 bash                 2021-04-17 18:38:24 UTC+0000   ls -l /etc/zzz
  8.   227221 bash                 2021-04-17 18:38:24 UTC+0000   cat ~/.vimrc
  9.   227221 bash                 2021-04-17 18:38:24 UTC+0000   ls
  10.   227221 bash                 2021-04-17 18:38:24 UTC+0000   cat /proc/817/cwd
  11.   227221 bash                 2021-04-17 18:38:24 UTC+0000   ls -l /proc/817/cwd
  12.   227221 bash                 2021-04-17 18:38:24 UTC+0000   ls /proc/817/
  13. << 删节 >>
  14.   227298 bash                 2021-04-17 18:40:30 UTC+0000   gcc prt.c
  15.   227298 bash                 2021-04-17 18:40:30 UTC+0000   ls
  16.   227298 bash                 2021-04-17 18:40:30 UTC+0000   ./a.out
  17.   227298 bash                 2021-04-17 18:40:30 UTC+0000   vim prt.c
  18.   227298 bash                 2021-04-17 18:40:30 UTC+0000   gcc prt.c
  19.   227298 bash                 2021-04-17 18:40:30 UTC+0000   ./a.out
  20.   227298 bash                 2021-04-17 18:40:30 UTC+0000   ls
  21. $

想知道哪些文件被哪些进程打开了吗?使用 linux_lsof 插件可以列出这些信息:

  1. $ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_lsof --profile=LinuxRedhat8_3_4_18_0-240x64
  2. Volatility Foundation Volatility Framework 2.6.1
  3. Offset             Name                           Pid      FD       Path
  4. ------------------ ------------------------------ -------- -------- ----
  5. 0xffff9c83fb1e9f40 rsyslogd                          71194        0 /dev/null
  6. 0xffff9c83fb1e9f40 rsyslogd                          71194        1 /dev/null
  7. 0xffff9c83fb1e9f40 rsyslogd                          71194        2 /dev/null
  8. 0xffff9c83fb1e9f40 rsyslogd                          71194        3 /dev/urandom
  9. 0xffff9c83fb1e9f40 rsyslogd                          71194        4 socket:[83565]
  10. 0xffff9c83fb1e9f40 rsyslogd                          71194        5 /var/log/messages
  11. 0xffff9c83fb1e9f40 rsyslogd                          71194        6 anon_inode:[9063]
  12. 0xffff9c83fb1e9f40 rsyslogd                          71194        7 /var/log/secure
  13.  
  14. << 删节 >>
  15.  
  16. 0xffff9c8365761f40 insmod                           228573        0 /dev/pts/0
  17. 0xffff9c8365761f40 insmod                           228573        1 /dev/pts/0
  18. 0xffff9c8365761f40 insmod                           228573        2 /dev/pts/0
  19. 0xffff9c8365761f40 insmod                           228573        3 /root/LiME/src/lime-4.18.0-240.el8.x86_64.ko
  20. $

访问 Linux 插件脚本位置

通过读取内存转储和处理这些信息,你可以获得更多的信息。如果你会 Python,并且好奇这些信息是如何被处理的,可以到存储所有插件的目录,选择一个你感兴趣的,并看看 Volatility 是如何获得这些信息的:

  1. $ ls volatility/plugins/linux/
  2. apihooks.py              common.py            kernel_opened_files.py   malfind.py          psaux.py
  3. apihooks.pyc             common.pyc           kernel_opened_files.pyc  malfind.pyc         psaux.pyc
  4. arp.py                   cpuinfo.py           keyboard_notifiers.py    mount_cache.py      psenv.py
  5. arp.pyc                  cpuinfo.pyc          keyboard_notifiers.pyc   mount_cache.pyc     psenv.pyc
  6. aslr_shift.py            dentry_cache.py      ld_env.py                mount.py            pslist_cache.py
  7. aslr_shift.pyc           dentry_cache.pyc     ld_env.pyc               mount.pyc           pslist_cache.pyc
  8. << 删节 >>
  9. check_syscall_arm.py     __init__.py          lsmod.py                 proc_maps.py        tty_check.py
  10. check_syscall_arm.pyc    __init__.pyc         lsmod.pyc                proc_maps.pyc       tty_check.pyc
  11. check_syscall.py         iomem.py             lsof.py                  proc_maps_rb.py     vma_cache.py
  12. check_syscall.pyc        iomem.pyc            lsof.pyc                 proc_maps_rb.pyc    vma_cache.pyc
  13. $
  14. $

我喜欢 Volatility 的理由是他提供了许多安全插件。这些信息很难手动获取:

  1. linux_hidden_modules       - Carves memory to find hidden kernel modules
  2. linux_malfind              - Looks for suspicious process mappings
  3. linux_truecrypt_passphrase - Recovers cached Truecrypt passphrases

Volatility 也允许你在内存转储中打开一个 shell,所以你可以运行 shell 命令来代替上面所有命令,并获得相同的信息:

  1. $ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_volshell --profile=LinuxRedhat8_3_4_18_0-240x64 -v
  2. Volatility Foundation Volatility Framework 2.6.1
  3. Current context: process systemd, pid=1 DTB=0x1042dc000
  4. Welcome to volshell! Current memory image is:
  5. file:///root/LiME/RHEL8.3_64bit.mem
  6. To get help, type 'hh()'
  7. >>>
  8. >>> sc()
  9. Current context: process systemd, pid=1 DTB=0x1042dc000
  10. >>>

接下来的步骤

内存转储是了解 Linux 内部情况的好方法。试一试 Volatility 的所有插件,并详细研究它们的输出。然后思考这些信息如何能够帮助你识别入侵或安全问题。深入了解这些插件的工作原理,甚至尝试改进它们。如果你没有找到你想做的事情的插件,那就写一个并提交给 Volatility,这样其他人也可以使用它。 

 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2019-01-29 10:10:09

Linux内存进程堆

2015-12-08 16:24:08

网络取证网络取证工具Xplico

2021-08-05 11:30:49

Linux渗透测试

2021-06-07 14:57:46

开源开源工具Linux

2021-06-11 13:02:05

开源工具LinuxLinux PC

2020-07-23 08:00:09

安全 恶意软件技术

2013-10-10 13:36:03

Powershell恢复

2022-02-11 07:45:10

Linuxsmem系统

2021-01-26 09:30:32

加密虚拟机攻击

2014-07-03 09:39:34

Java内存分析mat工具

2020-09-20 10:12:54

nccm

2023-04-10 13:08:46

开源思维导图

2023-07-30 09:55:02

2023-08-20 16:51:28

Kubernetes开源工具

2022-06-06 14:20:25

个人财务开源预算

2023-10-17 00:01:34

Linux操作系统

2010-06-02 11:06:15

Linux 内存监控

2022-05-04 11:10:58

Linuxdnf 命令

2022-05-07 11:08:50

Linuxapt 命令

2011-03-24 09:03:13

Android SDKAndroid
点赞
收藏

51CTO技术栈公众号