Memory Forensics – Windows Arbeitsspeicher auswerten mit Volatility
Memory-Image erstellen
Um von einem Windows-Rechner ein Memory Image zu erstellen, stehen einem eine grosse Auswahl an Werkzeugen zur Verfügung. Profitools können sogar über Netzwerkschnittstellen RAM dumpen. Zum experimentieren reichen allerdings Tools wie WinPMEM oder RamCapturer. Die Downloadlinks finden sich am Ende dieses Beitrags.
Als einfachste Methode ruft man das Programm WinPMEM wie folgt aus der Kommandozeile (mit Administrationsberechtigung) auf:
winpmem_1.6.0.exe memory.raw
Auswertung mithilfe von Volatility
Das zuvor erstellte Image kann nun (auch auf einem anderen Rechner, bspw. unter Kali-Linux) mit Volatility ausgewertet werden.
Volatility starten und Infos zum Image ausgeben
Unter Kali-Linux lässt sich das Memory-Analysetool normalerweise per Befehl vol direkt im Terminal aufrufen.
Sollte dies nicht klappen, kann das Python Script per sudo find / -name vol.py ausfindig gemacht und per python vol.py gestartet werden.
vol -f /pfad/zu/memory.raw imageinfo
Ein standalone Executable für Windows kann im Google Repository von Volatility heruntergeladen und wie folgt aufgerufen werden:
C:\vol>volatility-2.3.1.standalone.exe -f C:\pfad\zu\memory.raw imageinfo
Das Plugin imageinfo liefert allgemeine Infos zum System, unter welchem das Image erstellt wurde. Diese Infos brauchen wir zwingend für die nächsten Schritte. Bsp.:
Einige Beispiele
Gibt man Volatility das richtige Systemprofil mit, lassen sich automatisiert sehr detaillierte Infos auslesen. Das richtige Systemprofil entnehmen wir aus der oben genannten Abfrage bzw. aus der mit vol –info generierten Liste.
Nun kann man das Image mit den entsprechenden Plugins auf die gewünschten Informationen filtern. Eine Auflistung aller Plugins kann mit vol –help ausgegeben werden. Eine Befehlsreferenz mit guten Beispielen findet sich auch im Wiki von Volatility.
Beispiel 1: Prozesse ausgeben
vol -f /home/kali/memory.raw --profile=Win7SP1x86 pslist
Beispiel 2: Netzwerkverbindungen ausgeben
vol -f /home/kali/memory.raw --profile=Win7SP1x86 netscan
In der ungekürzten Ausgabe konnte ich auch sehen, dass ich zum Zeitpunkt des Images mit meinem Raspberry Pi zu Hause verbunden und bei meinem Google-Mailkonto angemeldet war 😉
Beispiel 3: Windows Passwörter auslesen
Das Hashdump-Plugin benötigt die Startadressen der Registryeinträge \REGISTRY\MACHINE\SYSTEM und \SystemRoot\System32\Config\SAM. Diese können mit dem Hivelist-Plugin ausgegeben werden:
vol -f /home/kali/memory.raw --profile=Win7SP1x86 hivelist
Nun kann das Hashdump-Plugin mit den entsprechenden Startadressen gestartet werden (-y = \SYSTEM, -s = \SAM):
vol -f /home/kali/memory.raw --profile=Win7SP1x86 hashdump -y 0x8d81b5a0 -s 0x8e1f89c8
Weiterführende Links und Downloads
Download WinPMEM: http://www.rekall-forensic.com/downloads.html
Download RamCapturer (64bit): http://forensic.belkasoft.com/download/ram/RamCapturer64.zip
Download RamCapturer (32bit): http://forensic.belkasoft.com/download/ram/RamCapturer.zip
Download DumpIt: http://www.moonsols.com/…monitor/download.php?id=7
Download Volatility für Windows: https://code.google.com/…me=volatility-2.3.1.standalone.exe
Infos + Video zu DumpIt: http://www.moonsols.com/2011/07/18/moonsols-dumpit-goes-mainstream/
Referenz zu Volatility: https://code.google.com/p/volatility/wiki/CommandReference