Linux-Magazin_-_Januar_2019

(singke) #1

auf dem USB-Stick mitbringen, vor der
Installation eine weitere Speicherände-
rung in Kauf nehmen und den Pfad so
ändern, dass die Programme vom Stick
zum Einsatz kommen. Erste Hinweise, ob
eine solche Maßnahme nötig ist, erhalten
Admins von einem Host-based Intrusion
Detection System [10]. Besonders sichere
Lösungen wie etwa die in [11] vorge-
schlagene gibt es für Linux derzeit nicht.
Das ist bei forensischen Untersuchungen
ärgerlich, dafür im Alltag durchaus ein
Sicherheitsgewinn, denn auch Angreifer
könnten solche Hintertüren ausnutzen.


Spurensicherung


Der Admin, der nun im Besitz eines
Speicher-Images seines möglicherweise
kompromittierten Rechners ist, darf
sich jetzt der eigentlichen Analyse zu-
wenden. Wer Volatility aus den Quellen
installieren möchte, benötigt zahlreiche
Python-Module. Alternativ gibt es auf
der Projektseite [1] fertige Binarys für
gängige Betriebssysteme. Anwender ent-
packen lediglich die Zip-Datei, und das
Tool ist einsatzbereit. Wer den langen
Namen unhandlich findet, erstellt flugs
einen Symlink:


ln ‑s volatility_2.6_lin64_standalone vol


Außerdem bietet es sich an, ein Unter-
verzeichnis namens »profiles« anzulegen.
Hier ist Platz für Profile der zu analysie-
renden Systeme. Um ein Speicherabbild
auswerten zu können, benötigt Volatility
Informationen zum Layout des Speichers.
Ein Profil muss also immer exakt zur Ker-
nelversion passen. Das Wiki [12] verlinkt
fertige Linux-Profile und zeigt, wie Be-
nutzer mittels »dwarfdump« die nötigen
Informationen über Kerneldatenstruktu-
ren und Debugsymbole generieren, um
eigene Profile zu erzeugen.


Gut eingerichtet


Für alle Tests in diesem Artikel kommt
ein fertiges Speicherabbild von [13] zum
Einsatz. Nach dem Download und Aus-
packen der Zip-Datei finden Anwender
ein Unterverzeichnis namens »linux«.
Das dort enthaltene Archiv »book.zip«
sollte in den zuvor angelegten Ordner
»profiles« wandern – ob per »mv«, »cp«
oder als Hardlink ist Geschmacksache;


lediglich ein Symlink funktionierte auf
dem Testrechner nicht. Der Befehl
./vol ‑‑plugin=profiles/ ‑‑info | grep ‑i U
book

sollte die folgende Ausgabe liefern:
Volatility Foundation Volatility U
Framework 2.6
Linuxbookx64 ‑ A Profile for Linux book x64

Findet Volatility das Profil nicht, ist wo-
möglich das »plugin«-Verzeichnis falsch
angegeben. Wer mehrere Ordner durch-
suchen möchte, trennt diese mit einem
Doppelpunkt voneinander ab.

Tippfaule Anwender legen außerdem
eine Konfigurationsdatei für Volatility
an, was ihnen die Eingabe langer Para-
meter erspart und es ermöglicht, die Ein-
stellungen später zu rekonstruieren. Das
Tool erwartet seine Einrichtung entwe-
der in »~/.volatilityrc« oder im aktuellen
Verzeichnis in der Datei »volatilityrc«.
Listing 1 zeigt ein Beispiel, welches das
Pluginverzeichnis, ein Profil sowie ein
Abbild definiert. Alternativ geben Benut-
zer das Image beim Aufruf hinter »-f« an.
./vol ‑‑plugin=profiles/ ‑‑profile=U
Linuxbookx64 ‑f AMF_MemorySamples/linux/U
linux‑sample‑1.bin

Plugin Funktion
Prozesse
linux_apihooks Checkt auf Userland-API-Hooks
linux_bash Extrahiert aus dem Prozess-Speicher die Bash-History
linux_check_creds Schaut, ob sich Prozesse Credential Structures teilen
linux_dump_map Schreibt ausgewählte Memory Mappings auf eine Disk
linux_dynamic_env Holt dynamische Umgebungsvariablen eines Prozesses wieder
linux_getcwd Zeigt pro Prozess dessen aktuelles Verzeichnis
linux_kernel_opened_files Vom Kernel geöffnete Files
linux_library_list Bibliotheken, die ein Prozess geladen hat
linux_librarydump Kopiert die Shared Libraries eines Prozesses auf Disk
linux_list_raw Listet Prozesse mit verdächtigen Sockets
linux_malfind Schaut nach verdächtigen Process Mappings
linux_memmap Zeigt die Memory Map von Linux-Tasks
linux_plthook Scannt PLT von ELF-Binaries auf unnötige Hooks
linux_proc_maps Memory Maps eines Prozesses
linux_procdump Schreibt das Executable eines Prozesses auf Disk
linux_process_hollow Prüft auf Anzeichen für Process Hollowing
linux_psaux Prozesse mit Startzeit und ganzer Kommanozeile
linux_psenv Prozesse mit ihren statischen Umgebungsvariablen
linux_psscan Scannt den RAM von Prozessen
Kernel und Scheduling
linux_check_idt Schaut, ob sich die IDT geändert hat
linux_check_inline_kernel Sucht nach Inline-Kernelhooks
linux_check_modules Vergleicht die Module-Liste mit Sys-FS-Angaben
linux_check_syscall Check, ob sich die Systemcall-Tabelle geändert hat
linux_check_tty Sucht nach Hooks auf TTY-Devices
linux_hidden_modules Durchforstet den RAM nach versteckten Kernelmodulen
linux_info_regs Wie »info registers« in GDB
linux_lsmod Geladene Kernelmodule
linux_moddump Extrahiert geladene Kernelmodule
linux_pslist Aktive Tasks aus der »task_struct->task«-Liste
linux_pslist_cache Wie »linux_pslist«>, aber aus »kmem_cache«
linux_pstree Zeigt Eltern-Kind-Beziehung zwischen Prozessen
linux_psxview Sucht versteckte Prozesse
linux_threads Zeigt die Threads eines Prozesses
imagecopy Kopiert einen physischen Addressbereich in ein Image

Tabelle 1: Volatility-Erweiterungen

37

http://www.linux-magazin.de

Titelthema

Volatility
Free download pdf