Linux-Magazin_-_Januar_2019

(singke) #1
Liste à la »ps«. Analog
dazu kennt das Tool
»linux_psaux«, »linux_
psenv« und »linux_
pstree« (Abbildung 1).
Die Listen kommen
aus einer (in »sched.h«
de finierten) Daten-
struktur, in welcher
der Kernel Prozesse
verwaltet.
Kernelprozesse lassen
sich leicht daran er-
kennen, dass sie kei-
nen Adressüberset-
zungs-Eintrag in der
Directory Table Base
(DTB) haben. Doch ist
diese Ausgabe vertrau-
enswürdig? Könnte ein Angreifer sie ma-
nipulieren? Ein einfacher Ansatz zum
Tarnen findet sich in Sourcen älterer Ker-
nelversionen in der Datei »base.c«:
res = access_process_vm(task, U
mm‑>arg_start, buffer, len, 0);

Für einen Eintrag in der Prozessliste liest
der Kernel also die Umgebungsvariablen
der Shell aus. Ein Prozess, der sein Envi-
ronment manipuliert, könnte also unter
anderem Namen auftauchen.

Da Forensiker immer davon ausgehen
müssen, dass Angreifer die Ziele min-
destens so gut kennen wie sie selbst,
gilt es also, die ermittelte Prozessliste
zu verifizieren. Dazu bietet Volatility das
Kommando »linux_psscan«, das nicht die
Kerneldatenstrukturen nach Prozessen
durchsucht, sondern den ganzen Spei-
cher, wo sich ein Angreifer schlechter
verstecken kann. Der manuelle Abgleich
von »linux_pslist« und »linux_psscan« ist
aber nicht erforderlich, denn »linux_psx-
view« liefert eine übersichtliche Tabelle,
wo Prozesse aufgetaucht sind.
Wer die Kommandos auf das Beispiel-
image loslässt, stellt fest, dass »linux_
psscan« zahlreiche Prozesse anzeigt, die
»linux_pslist« nicht findet. Das können
Threads sein, die das Volatility-Plugin
»linux_threads« identifizieren kann. Doch
nicht immer gibt es sofort eine plausible
Erklärung. Der Prozess »swapper« bei-
spielsweise fehlt in beiden Listen, was als
Teil des Schedulers – er verwaltet »idle«


  • sicher zulässig ist.


Rootkits aufspüren


Manchmal ist es hilfreich, sich zunächst
einen Überblick zu verschaffen. Admins,
die sich fragen, ob der Rechner mit einem
Rootkit infiziert ist [14], können eben-
falls zu Volatility greifen. Die Toolsamm-
lung hat gleich mehrere Plugins, die dazu
Auskunft geben können. Der Befehl
./vol ‑‑plugin=profiles/ linux_check_idt
etwa liefert die Interrupt-Descriptor-
Tabelle (Abbildung 2). Wenn hier ein
Eintrag umgeleitet (Hooked) ist, spricht
einiges für ein manipuliertes System.
Gleiches gilt für die Exception-Handler
und die Systemcalls. Genau wie »lsof«
schaut »linux_lsof« nach offenen Dateien
eines Prozesses. »linux_chk_tty« und
»linux_keyboard_notifier« hingegen prü-
fen, ob ein Angreifer auf typische Weise

Die Reihenfolge der Parameter ist wich-
tig: Steht »--profile« vor »--plugin«, findet
das Tool das Profil nicht. Wer in der Kon-
figurationsdatei einen Pfad zu den Profi-
len angibt, sollte das Profil auch benen-
nen, denn die Kommandozeilenoptionen
haben Vorrang vor der Einrichtungsdatei.

Vertrauensfrage


Ein erster Blick ins Speicherabbild mit
dem Befehl »./vol linux_pslist« liefert die

Files und Dateisysteme
linux_check_fop Findet von Rootkits modifizierte File Operation Structures
linux_dentry_cache Sammelt Files aus dem Dentrycache
linux_enumerate_files Liste mit File-Referenzen aus den Dateisystem-Cache
linux_elfs Findet ELF-Binaries in Process Mappings
linux_find_file Listet Dateien und stellt sie aus dem RAM wieder her
linux_lsof Listet Filedeskriptoren
linux_mount Gemountete Dateisysteme bzw. Devices
linux_mount_cache Wie »linux_mount«, aber aus dem »kmem_cache«
linux_recover_filesystem Stellt RAM-gecachtes Dateisystem wieder her
linux_tmpfs Stellt Tmp-FS wieder her
linux_truecrypt_passphrase Stellt gecachte Truecrypt-Passphrases wieder her
mbrparser Scannt nach Master Boot Records
Netzwerk
linux_arp Zeigt die ARP-Tabelle
linux_check_afinfo Prüft Operation Function Pointers der Netzwerkprotokolle
linux_ifconfig Aktive Interfaces
linux_netfilter Listet Netfilter-Hooks
linux_netscan Untersucht Netzwerk-Structures
linux_netstat Listet offene Sockets
linux_route_cache Stellt Routing-Cache wieder her
linux_sk_buff_cache Stellt Pakete aus »sk_buff kmem_cache« wieder her

Tabelle 1: Volatility-Erweiterungen (Fortsetzung)

Abbildung 1: Die von Volatility mit dem Kommando »linux_pstree« erzeugte
Ausgabe ist ähnlich der von »pstree«.

Der Autor
Tobias Eggendorfer ist Professor für IT-Sicher-
heit und freiberuflicher IT-Berater ([http:// http://www.
eggendorfer. info]). Wenn er IT-Forensik lehrt,
stöhnen seine Studenten ab und zu, weil längst
vergessenes Wissen aus Grundlagenvorlesungen
plötzlich wieder wichtig ist. Genau das macht
aber die IT-Forensik und -Sicherheit so spannend.

Titelthema

38


http://www.linux-magazin.de

Volatility
Free download pdf