Rekonstruktion des Prozess-Speichers

Für manche Untersuchungen mag es hilfreich sein, nur den Speicher eines einzelnen Prozesses vorliegen zu haben. Bei einem mit "dd" erzeugten Abbild des physischen Speichers ist die Rekonstruktion mit wenig Aufwand möglich.

Das Vorgehen ist im Prinzip sehr einfach. Man benötigt lediglich die Page Directory Base Address des gewünschten Prozesses. Sie lässt sich zum Beispiel mit PTfinder leicht ermitteln.

Nun durchläuft man der Reihe nach alle Page Directory Entries. Bezeichnet der Eintrag eine große Speicherseite (4MB), so wird diese sofort ausgegeben. Andernfalls verweist der Eintrag auf eine Page Table. Dann werden alle Page Table Entries durchlaufen und die jeweilige Seite (4kB) ausgegeben. Auf diese Weise wird der gesammte virtuelle Adressraum (4GB) des Prozesses durchlaufen.

Bei jedem Zugriff ist natürlich zu prüfen, ob das Present Flag gesetzt ist, d.h. ob die Speicherseite überhaupt im physischen Speicher vorhanden ist.

Microsoft Windows verwendet große Speicherseiten nur für den Kernel. Wenn Sie also nicht in jedem Speicherauszug den kompletten Kernel vorfinden möchten, dann sollten Sie diesen Seitentyp übergehen. Aus ähnlichen Gründen kann es auch nützlich sein, Seiten mit dem Flag Global zu übergehen.

Ich habe hierzu vor einiger Zeit ein einfaches Programmbeispiel namens memdump.pl erstellt.

Starten Sie es als memdump.pl memory.dd 0x30000, um den Speicher des Systemprozesses unter Windows 2000 zu extrahieren. Das Skript erstellt zwei Dateien:

  • 0x30000.mem enthält den eigentlichen Speicherinhalt
  • 0x30000.map enthält die Zuordnung von virtuellen Adresen zu Offsets in die mem-Datei

Die Page Directory Base Address muss zwingend in hexadezimaler Notation angegeben werden.

Bitte beachten Sie, dass dies ein reines Demonstrationsprogramm ist. Für die weitere Dokumentation verweise ich deshalb auch auf den Programmcode.

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