Visualisierung der Prozesshierarchie

Die Analyse des Arbeitsspeichers bringt Spuren längst beendeter Prozesse ans Tageslicht. Nur wie stellt man diese Informationen übersichtlich dar? Für die Prozesshierarchie erweist sich GraphViz als überaus brauchbar. Das Beispiel zeigt eine Kompromittierung mitsamt installiertem Rootkit und Backdoor.

Als Beispiel dient ein Speicherabbild aus der Memory Analysis Challenge des Digital Forensic Research Workshop 2005.

Mit einem einfachen Perlskript wurde es auf Signaturen der _EPROCESS-Struktur von Windows 2000 durchsucht. Die erhaltenen Daten liefern die Process IDs (PID) des Prozesses und des Eltern-Prozesses (PPID), Zeitstempel für Start und Ende der Ausführung und den Returncode.

Die Hierarchie der Prozesse wird mit GraphViz visualisiert. Das Skript wird hierzu so modifiziert, dass es die Daten direkt als Steuerdatei für GraphViz exportiert.

GraphViz erstellt hieraus den gewünschten Graphen: Hierarchie der Prozesse (verkleinerte Ansicht)

Jeder Kasten symbolisiert einen Prozess. Von oben nach unten sind dargestellt:

  • Process ID (PID)
  • Name der Datei, gegebenenfalls auf 16 Zeichen verkürzt (Das ist natürlich keine Beschränkung von GraphViz, sondern der Datenstruktur im Windows-Kernel.)
  • Zeitpunkt der Prozesserstellung
  • Zeitpunkt der Prozessbeendigung und Returncode
Beendete Prozesse sind zusätzlich grau markiert. Die roten Markierungen habe ich von Hand hinzugefügt, um einige verdächtige Prozesse zu markieren.

Was lässt sich aus diesem Diagramm herauslesen? Sofort fällt ins Auge, dass das Local Security Authority SubSystem (LSASS) zwei Kindsprozesse gestartet hat. Normalerweis eist dies nicht zu beobachten. Dass die Kinder aus einer Datei namens metasploit.exe erzeugt wurden, trägt nicht gerade zur Beruhigung bei. Es lässt sich vermuten, dass hier ein Exploit aus dem Metasploit-Framework gegen LSASS eingesetzt wurde. Beim ersten Versuch, um 00:38 Uhr, gelang es dem Angreifer aber offenbar nicht, mit dem Exploit eine Shell zu öffnen beziehungsweise etwas in ihr auszuführen.

Der zweite Versuch war erfolgreicher. Es gelang dem Angreifer, eine Datei namens UMGR32.EXE auszuführen. Diese wiederum erzeugte einen Prozess aus der Datei dfrws2005.exe, der aber sofort wieder terminierte. Dieses Verhalten mag beabsichtigt sein, jedenfalls ist der Returncode 0, was gewöhnlich einen Erfolg anzeigt.

Nach etwas Sucherei liegt dann auch das Ergebnis auf der Hand. Die Instanz der dfrws2005.exe (PID 784) terminiert um 01:00:53 Uhr. Zu dieser Zeit entsteht mit gleichem Namen ein Kindsprozess (PID 592) von services.exe, der noch aktiv ist. Dies lässt sich interpretieren, dass dfrws2005.exe sich als Dienst installiert hat.

Praktisch im gleichen Moment wurde eine Instanz aus der Datei nc.exe erzeugt. Hierbei könnte es sich um das bekannte NetCat handeln. Möglicherweise besteht jetzt eine Backdoor auf dem System. Bei dfrws2005.exe könnte es sich um ein Rootkit handeln, das diese Backdoor tarnt.

Ebenfalls deutlich erkennbar sind auch die Aktionen des Forensikers. Offenbar wurde die Helix CD benutzt, um das System zu untersuchen. Eine erste Datensicherung mit dd dauerte gut vier Minuten. Bei der Ersellung des Arbeitsspeicherabbilds hat sich dd dann selbst verewigt.

Das Arbeitsspeicherabbild ist in weniger als 10 Minuten erstellt und graphisch aufbereitet. Aus der Darstellung ergeben sich Hinweise für eine genauere Untersuchung des Dateisystems, einzelner Dateien (dfrws2005.exe und UMGR32.EXE) und gegebenenfalls des Netzes (Backdoor auf anderen Systemen?).

Archiv

Impressum

Dieses Blog ist ein Projekt von:
Andreas Schuster
Im Äuelchen 45
D-53177 Bonn
impressum@forensikblog.de

Copyright © 2005-2012 by
Andreas Schuster
Alle Rechte vorbehalten.
Powered by Movable Type 5.12