Advertisements

Führen Sie mit diesem Open-Source-Tool Linux-Speicherforensik durch

Das Betriebssystem und die Anwendungen eines Computers verwenden den Primärspeicher (oder RAM), um verschiedene Aufgaben auszuführen. Dieser flüchtige Speicher, der eine Fülle von Informationen über laufende Anwendungen, Netzwerkverbindungen, Kernelmodule, geöffnete Dateien und so ziemlich alles andere enthält, wird bei jedem Neustart des Computers gelöscht.

Weitere Linux-Ressourcen

Memory Forensics ist eine Möglichkeit, diese wertvollen Informationen aus dem Gedächtnis zu finden und zu extrahieren. Volatilität ist ein Open-Source-Tool, das Plugins verwendet, um diese Art von Informationen zu verarbeiten. Es gibt jedoch ein Problem: Bevor Sie diese Informationen verarbeiten können, müssen Sie den physischen Speicher in eine Datei speichern, und Volatilität hat diese Fähigkeit nicht.

Daher besteht dieser Artikel aus zwei Teilen:

  • Der erste Teil befasst sich mit der Beschaffung des physischen Speichers und dem Ablegen in eine Datei.
  • Der zweite Teil verwendet Volatilität, um Informationen aus diesem Speicherauszug zu lesen und zu verarbeiten.

Ich habe das folgende Testsystem für dieses Tutorial verwendet, aber es funktioniert auf jeder Linux-Distribution:

$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.3 (Ootpa)
$
$ uname -r
4.18.0-240.el8.x86_64
$

Ein Hinweis zur Vorsicht: Teil 1 beinhaltet das Kompilieren und Laden eines Kernelmoduls. Mach dir keine Sorge; es ist nicht so schwierig, wie es sich anhört. Einige Richtlinien:

  • Folge den Schritten.
  • Versuchen Sie keinen dieser Schritte auf einem Produktionssystem oder Ihrem primären Computer.
  • Verwenden Sie immer eine virtuelle Testmaschine (VM), um Dinge auszuprobieren, bis Sie mit den Tools vertraut sind und verstehen, wie sie funktionieren.

Installieren Sie die erforderlichen Pakete

Installieren Sie die erforderlichen Tools, bevor Sie beginnen. Wenn Sie eine Debian-basierte Distribution verwenden, verwenden Sie das Äquivalent apt-get Befehle. Die meisten dieser Pakete enthalten die erforderlichen Kernel-Informationen und Tools zum Kompilieren des Codes:

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

Teil 1: Verwenden Sie LiME, um Speicher zu erwerben und in eine Datei zu speichern

Bevor Sie mit der Speicheranalyse beginnen können, benötigen Sie einen Speicherabzug. In einem tatsächlichen Forensik-Ereignis könnte dies von einem kompromittierten oder gehackten System ausgehen. Solche Informationen werden häufig gesammelt und gespeichert, um zu analysieren, wie der Einbruch geschah und welche Auswirkungen er hat. Da Ihnen wahrscheinlich kein Speicherabbild zur Verfügung steht, können Sie ein Speicherabbild Ihrer Test-VM erstellen und damit Speicherforensiken durchführen.

Linux Memory Extractor (LiME) ist ein beliebtes Tool zum Erfassen von Speicher auf einem Linux-System. Holen Sie sich LiME mit:

$ git clone https://github.com/504ensicsLabs/LiME.git
$
$ cd LiME/src/
$
$ ls
deflate.c  disk.c  hash.c  lime.h  main.c  Makefile  Makefile.sample  tcp.c
$

Erstellen Sie das LiME-Kernelmodul

Führen Sie die make Befehl innerhalb der src Mappe. Dadurch wird ein Kernelmodul mit der Erweiterung .ko erstellt. Idealerweise ist die lime.ko Datei wird mit dem Format umbenannt lime-<your-kernel-version>.ko am Ende von make:

$ make
make -C /lib/modules/4.18.0-240.el8.x86_64/build M="/root/LiME/src" modules
make[1]: Entering directory '/usr/src/kernels/4.18.0-240.el8.x86_64'

<< snip >>

make[1]: Leaving directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
strip --strip-unneeded lime.ko
mv lime.ko lime-4.18.0-240.el8.x86_64.ko
$
$
$ ls -l lime-4.18.0-240.el8.x86_64.ko
-rw-r--r--. 1 root root 25696 Apr 17 14:45 lime-4.18.0-240.el8.x86_64.ko
$
$ file lime-4.18.0-240.el8.x86_64.ko
lime-4.18.0-240.el8.x86_64.ko: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), BuildID[sha1]=1d0b5cf932389000d960a7e6b57c428b8e46c9cf, not stripped
$

Laden Sie das LiME-Kernelmodul

Jetzt ist es an der Zeit, das Kernel-Modul zu laden, um den Systemspeicher zu erhalten. Die insmod Befehl hilft beim Laden des Kernelmoduls; nach dem Laden liest das Modul den primären Speicher (RAM) Ihres Systems und schreibt den Inhalt des Speichers in die Datei, die im path Verzeichnis auf der Kommandozeile. Ein weiterer wichtiger Parameter ist format; behalte das Format lime, Wie nachfolgend dargestellt. Überprüfen Sie nach dem Einfügen des Kernelmoduls, ob es geladen wurde, indem Sie das lsmod Befehl:

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

Sie sollten sehen, dass die Datei an die path Befehl erstellt wurde, und die Dateigröße ist (nicht überraschend) dieselbe wie die physische Speichergröße (RAM) auf Ihrem System. Sobald Sie den Speicherabzug haben, können Sie das Kernel-Modul mit dem entfernen rmmod Befehl:

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

Was steht im Speicherabzug?

Diese Dump-Datei besteht nur aus Rohdaten, wie Sie anhand der file Befehl unten. Sie können manuell nicht viel daraus machen; ja, irgendwo sind ASCII-Strings drin, aber Sie können die Datei nicht in einem Editor öffnen und auslesen. Die hexdump-Ausgabe zeigt, dass die ersten paar Bytes sind EmiL; Dies liegt daran, dass Ihr Anfrageformat im obigen Befehl “lime” war:

$ file ~/LiME/RHEL8.3_64bit.mem
/root/LiME/RHEL8.3_64bit.mem: data
$


$ hexdump -C ~/LiME/RHEL8.3_64bit.mem | head
00000000  45 4d 69 4c 01 00 00 00  00 10 00 00 00 00 00 00  |EMiL............|
00000010  ff fb 09 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  b8 fe 4c cd 21 44 00 32  20 00 00 2a 2a 2a 2a 2a  |..L.!D.2 ..*****|
00000030  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00000040  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 20 00 20  |************* . |
00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000080  00 00 00 00 00 00 00 00  00 00 00 00 70 78 65 6c  |............pxel|
00000090  69 6e 75 78 2e 30 00 00  00 00 00 00 00 00 00 00  |inux.0..........|
000000a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
$

Teil 2: Holen Sie sich Volatilität und analysieren Sie damit Ihren Speicherabzug

Nachdem Sie nun einen Beispielspeicherabzug zum Analysieren haben, rufen Sie die Volatility-Software mit dem folgenden Befehl ab. Volatility wurde in Python 3 neu geschrieben, aber dieses Tutorial verwendet das ursprüngliche Volatility-Paket, das Python 2 verwendet. Wenn Sie mit Volatility 3 experimentieren möchten, laden Sie es aus dem entsprechenden Git-Repository herunter und verwenden Sie Python 3 anstelle von Python 2 in den folgenden Befehlen :

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

Volatility verwendet für einige Funktionen zwei Python-Bibliotheken, also installieren Sie sie bitte mit den folgenden Befehlen. Andernfalls werden möglicherweise einige Importfehler angezeigt, wenn Sie das Volatilitätstool ausführen. Sie können sie ignorieren, es sei denn, Sie führen ein Plugin aus, das diese Bibliotheken benötigt; In diesem Fall gibt das Tool einen Fehler aus:

$ pip2 install pycrypto
$ pip2 install distorm3

Linux-Profile von Volatility auflisten

Der erste Volatility-Befehl, den Sie ausführen möchten, listet auf, welche Linux-Profile verfügbar sind. Der Haupteinstiegspunkt zum Ausführen von Volatilitätsbefehlen ist der vol.py Skript. Rufen Sie es mit dem Python 2-Interpreter auf und geben Sie die --info Möglichkeit. Um die Ausgabe einzugrenzen, suchen Sie nach Zeichenfolgen, die mit Linux beginnen. Wie Sie sehen, sind nicht viele Linux-Profile aufgeführt:

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

Erstellen Sie Ihr eigenes Linux-Profil

Linux-Distributionen sind vielfältig und für verschiedene Architekturen gebaut. Aus diesem Grund sind Profile unerlässlich – Volatilität muss das System und die Architektur kennen, von denen der Speicherabzug erfasst wurde, bevor Informationen extrahiert werden. Es gibt Volatilitätsbefehle, um diese Informationen zu finden; diese Methode ist jedoch zeitaufwendig. Um die Dinge zu beschleunigen, erstellen Sie mit den folgenden Befehlen ein benutzerdefiniertes Linux-Profil.

Wechseln Sie in die tools/linux Verzeichnis im Volatility Repo und führen Sie das make Befehl:

$ cd tools/linux/
$
$ pwd
/root/volatility/tools/linux
$
$ ls
kcore  Makefile  Makefile.enterprise  module.c
$
$ make
make -C //lib/modules/4.18.0-240.el8.x86_64/build CONFIG_DEBUG_INFO=y M="/root/volatility/tools/linux" modules
make[1]: Entering directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
<< snip >>
make[1]: Leaving directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
$

Du solltest ein neues sehen module.dwarf Datei. Du brauchst auch die System.map Datei aus dem /boot Verzeichnis, da es alle Symbole enthält, die sich auf den aktuell laufenden Kernel beziehen:

$ ls
kcore  Makefile  Makefile.enterprise  module.c  module.dwarf
$
$ ls -l module.dwarf
-rw-r--r--. 1 root root 3987904 Apr 17 15:17 module.dwarf
$
$ ls -l /boot/System.map-4.18.0-240.el8.x86_64
-rw-------. 1 root root 4032815 Sep 23  2020 /boot/System.map-4.18.0-240.el8.x86_64
$
$

Um ein benutzerdefiniertes Profil zu erstellen, gehen Sie zurück zum Volatility-Verzeichnis und führen Sie den folgenden Befehl aus. Das erste Argument stellt eine benutzerdefinierte ZIP-Datei mit einem Dateinamen Ihrer Wahl bereit. Ich habe die Betriebssystem- und Kernelversionen im Namen verwendet. Das nächste Argument ist das module.dwarf oben erstellte Datei, und das letzte Argument ist die System.map Datei aus dem /boot Verzeichnis:

$
$ cd volatility/
$
$ 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
  adding: tools/linux/module.dwarf (deflated 91%)
  adding: boot/System.map-4.18.0-240.el8.x86_64 (deflated 79%)
$

Ihr benutzerdefiniertes Profil ist jetzt fertig, überprüfen Sie also, ob die ZIP-Datei am oben angegebenen Speicherort erstellt wurde. Wenn Sie wissen möchten, ob Volatility dieses benutzerdefinierte Profil erkennt, führen Sie die --info Befehl wieder. Diesmal sollten Sie das unten aufgeführte neue Profil sehen:

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

Beginnen Sie mit Volatilität

Jetzt sind Sie bereit, einige eigentliche Speicherforensiken durchzuführen. Denken Sie daran, dass Volatilität aus benutzerdefinierten Plugins besteht, die Sie gegen einen Speicherabzug ausführen können, um Informationen zu erhalten. Das allgemeine Format des Befehls ist:

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

Bewaffnet mit diesen Informationen, führen Sie die linux_banner Plugin, um zu sehen, ob Sie die richtigen Distributionsinformationen aus dem Speicherabzug identifizieren können:

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

Linux-Plugins finden

Das hat gut funktioniert, also sind Sie jetzt wahrscheinlich neugierig, wie Sie alle Namen aller Linux-Plugins finden. Es gibt einen einfachen Trick: Führen Sie die --info Befehl und grep für die linux_ Schnur. Es gibt eine Vielzahl von Plugins für unterschiedliche Anwendungen. Hier ist eine unvollständige Liste:

$ python2 vol.py --info  | grep linux_
Volatility Foundation Volatility Framework 2.6.1
linux_apihooks             - Checks for userland apihooks
linux_arp                  - Print the ARP table
linux_aslr_shift           - Automatically detect the Linux ASLR shift

<< snip >>

linux_banner               - Prints the Linux banner information
linux_vma_cache            - Gather VMAs from the vm_area_struct cache
linux_volshell             - Shell in the memory image
linux_yarascan             - A shell in the Linux memory image
$

Überprüfen Sie, welche Prozesse auf dem System ausgeführt wurden, als Sie den Speicherabzug erstellt haben, indem Sie linux_psaux Plugin. Beachten Sie den letzten Befehl in der Liste: Es ist der insmod Befehl, den Sie vor dem Dump ausgeführt haben:

$ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_psaux --profile=LinuxRedhat8_3_4_18_0-240x64
Volatility Foundation Volatility Framework 2.6.1
Pid    Uid    Gid    Arguments                                                      
1      0      0      /usr/lib/systemd/systemd --switched-root --system --deserialize 18
2      0      0      [kthreadd]                                                      
3      0      0      [rcu_gp]                                                        
4      0      0      [rcu_par_gp]                                                    
861    0      0      /usr/libexec/platform-python -Es /usr/sbin/tuned -l -P          
869    0      0      /usr/bin/rhsmcertd                                              
875    0      0      /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files
878    0      0      /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files      

<<< snip >>>

11064  89     89     qmgr -l -t unix -u                                              
227148 0      0      [kworker/0:0]                                                  
227298 0      0      -bash                                                          
227374 0      0      [kworker/u2:1]                                                  
227375 0      0      [kworker/0:2]                                                  
227884 0      0      [kworker/0:3]                                                  
228573 0      0      insmod ./lime-4.18.0-240.el8.x86_64.ko path=../RHEL8.3_64bit.mem format=lime
228576 0      0                                                                      
$

Möchten Sie mehr über die Netzwerkstatistiken des Systems erfahren? Führen Sie die linux_netstat Plugin, um den Zustand der Netzwerkverbindungen während des Speicherabbilds zu ermitteln:

$ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_netstat --profile=LinuxRedhat8_3_4_18_0-240x64
Volatility Foundation Volatility Framework 2.6.1
UNIX 18113              systemd/1     /run/systemd/private
UNIX 11411              systemd/1     /run/systemd/notify
UNIX 11413              systemd/1     /run/systemd/cgroups-agent
UNIX 11415              systemd/1    
UNIX 11416              systemd/1    
<< snip>>
$

Verwenden Sie als Nächstes die linux_mount Plugin, um zu sehen, welche Dateisysteme während des Speicherabbilds gemountet wurden:

$ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_mount --profile=LinuxRedhat8_3_4_18_0-240x64
Volatility Foundation Volatility Framework 2.6.1
tmpfs                     /sys/fs/cgroup                      tmpfs        ro,nosuid,nodev,noexec                  
cgroup                    /sys/fs/cgroup/pids                 cgroup       rw,relatime,nosuid,nodev,noexec        
systemd-1                 /proc/sys/fs/binfmt_misc            autofs       rw,relatime                            
sunrpc                    /var/lib/nfs/rpc_pipefs             rpc_pipefs   rw,relatime                            
/dev/mapper/rhel_kvm--03--guest11-root /                                   xfs          rw,relatime                
tmpfs                     /dev/shm                            tmpfs        rw,nosuid,nodev                        
selinuxfs                 /sys/fs/selinux                     selinuxfs    rw,relatime                                                      
<< snip>>

cgroup                    /sys/fs/cgroup/net_cls,net_prio     cgroup       rw,relatime,nosuid,nodev,noexec        
cgroup                    /sys/fs/cgroup/cpu,cpuacct          cgroup       rw,relatime,nosuid,nodev,noexec        
bpf                       /sys/fs/bpf                         bpf          rw,relatime,nosuid,nodev,noexec        
cgroup                    /sys/fs/cgroup/memory               cgroup       ro,relatime,nosuid,nodev,noexec        
cgroup                    /sys/fs/cgroup/cpuset               cgroup       rw,relatime,nosuid,nodev,noexec        
mqueue                    /dev/mqueue                         mqueue       rw,relatime                            
$

Neugierig, welche Kernelmodule geladen wurden? Volatilität hat auch dafür ein Plugin mit dem treffenden Namen linux_lsmod:

$ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_lsmod --profile=LinuxRedhat8_3_4_18_0-240x64
Volatility Foundation Volatility Framework 2.6.1
ffffffffc0535040 lime 20480
ffffffffc0530540 binfmt_misc 20480
ffffffffc05e8040 sunrpc 479232
<< snip >>
ffffffffc04f9540 nfit 65536
ffffffffc0266280 dm_mirror 28672
ffffffffc025e040 dm_region_hash 20480
ffffffffc0258180 dm_log 20480
ffffffffc024bbc0 dm_mod 151552
$

Möchten Sie alle Befehle finden, die der Benutzer ausgeführt hat und die im Bash-Verlauf gespeichert wurden? Führen Sie die linux_bash Plugin:

$ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_bash --profile=LinuxRedhat8_3_4_18_0-240x64 -v
Volatility Foundation Volatility Framework 2.6.1
Pid      Name                 Command Time                   Command
-------- -------------------- ------------------------------ -------
  227221 bash                 2021-04-17 18:38:24 UTC+0000   lsmod
  227221 bash                 2021-04-17 18:38:24 UTC+0000   rm -f .log
  227221 bash                 2021-04-17 18:38:24 UTC+0000   ls -l /etc/zzz
  227221 bash                 2021-04-17 18:38:24 UTC+0000   cat ~/.vimrc
  227221 bash                 2021-04-17 18:38:24 UTC+0000   ls
  227221 bash                 2021-04-17 18:38:24 UTC+0000   cat /proc/817/cwd
  227221 bash                 2021-04-17 18:38:24 UTC+0000   ls -l /proc/817/cwd
  227221 bash                 2021-04-17 18:38:24 UTC+0000   ls /proc/817/
<< snip >>
  227298 bash                 2021-04-17 18:40:30 UTC+0000   gcc prt.c
  227298 bash                 2021-04-17 18:40:30 UTC+0000   ls
  227298 bash                 2021-04-17 18:40:30 UTC+0000   ./a.out
  227298 bash                 2021-04-17 18:40:30 UTC+0000   vim prt.c
  227298 bash                 2021-04-17 18:40:30 UTC+0000   gcc prt.c
  227298 bash                 2021-04-17 18:40:30 UTC+0000   ./a.out
  227298 bash                 2021-04-17 18:40:30 UTC+0000   ls
$

Möchten Sie wissen, welche Dateien von welchen Prozessen geöffnet wurden? Verwenden Sie die linux_lsof Plugin, um diese Informationen aufzulisten:

$ python2 vol.py -f ~/LiME/RHEL8.3_64bit.mem linux_lsof --profile=LinuxRedhat8_3_4_18_0-240x64
Volatility Foundation Volatility Framework 2.6.1
Offset             Name                           Pid      FD       Path
------------------ ------------------------------ -------- -------- ----
0xffff9c83fb1e9f40 rsyslogd                          71194        0 /dev/null
0xffff9c83fb1e9f40 rsyslogd                          71194        1 /dev/null
0xffff9c83fb1e9f40 rsyslogd                          71194        2 /dev/null
0xffff9c83fb1e9f40 rsyslogd                          71194        3 /dev/urandom
0xffff9c83fb1e9f40 rsyslogd                          71194        4 socket:[83565]
0xffff9c83fb1e9f40 rsyslogd                          71194        5 /var/log/messages
0xffff9c83fb1e9f40 rsyslogd                          71194        6 anon_inode:[9063]
0xffff9c83fb1e9f40 rsyslogd                          71194        7 /var/log/secure

<< snip >>

0xffff9c8365761f40 insmod                           228573        0 /dev/pts/0
0xffff9c8365761f40 insmod                           228573        1 /dev/pts/0
0xffff9c8365761f40 insmod                           228573        2 /dev/pts/0
0xffff9c8365761f40 insmod                           228573        3 /root/LiME/src/lime-4.18.0-240.el8.x86_64.ko
$

Greifen Sie auf den Speicherort der Linux-Plugins-Skripte zu

Sie können viel mehr Informationen erhalten, indem Sie den Speicherabzug lesen und die Informationen verarbeiten. Wenn Sie Python kennen und neugierig sind, wie diese Informationen verarbeitet wurden, gehen Sie in das Verzeichnis, in dem alle Plugins gespeichert sind, wählen Sie eines aus, das Sie interessiert, und sehen Sie, wie Volatility diese Informationen erhält:

$ ls volatility/plugins/linux/
apihooks.py              common.py            kernel_opened_files.py   malfind.py          psaux.py
apihooks.pyc             common.pyc           kernel_opened_files.pyc  malfind.pyc         psaux.pyc
arp.py                   cpuinfo.py           keyboard_notifiers.py    mount_cache.py      psenv.py
arp.pyc                  cpuinfo.pyc          keyboard_notifiers.pyc   mount_cache.pyc     psenv.pyc
aslr_shift.py            dentry_cache.py      ld_env.py                mount.py            pslist_cache.py
aslr_shift.pyc           dentry_cache.pyc     ld_env.pyc               mount.pyc           pslist_cache.pyc
<< snip >>
check_syscall_arm.py     __init__.py          lsmod.py                 proc_maps.py        tty_check.py
check_syscall_arm.pyc    __init__.pyc         lsmod.pyc                proc_maps.pyc       tty_check.pyc
check_syscall.py         iomem.py             lsof.py                  proc_maps_rb.py     vma_cache.py
check_syscall.pyc        iomem.pyc            lsof.pyc                 proc_maps_rb.pyc    vma_cache.pyc
$
$

Ein Grund, warum ich Volatility mag, ist, dass es viele Sicherheits-Plugins bietet. Diese Informationen wären manuell schwer zu beschaffen:

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

Die Volatilität ermöglicht es Ihnen auch, eine Shell innerhalb des Speicherabbilds zu öffnen. Anstatt alle oben genannten Befehle auszuführen, können Sie stattdessen Shell-Befehle ausführen und die gleichen Informationen erhalten:

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

Nächste Schritte

Die Speicherforensik ist eine gute Möglichkeit, mehr über die Interna von Linux zu erfahren. Probieren Sie alle Plugins von Volatility aus und studieren Sie ihre Ausgabe im Detail. Denken Sie dann darüber nach, wie diese Informationen Ihnen helfen können, einen Einbruch oder ein Sicherheitsproblem zu identifizieren. Tauchen Sie ein in die Funktionsweise der Plugins und versuchen Sie vielleicht sogar, sie zu verbessern. Und wenn Sie kein Plugin für das gefunden haben, was Sie tun möchten, schreiben Sie eines und senden Sie es an Volatility, damit andere es auch verwenden können.

Führen Sie mit diesem Open-Source-Tool Linux-Speicherforensik durch

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top