Frage von zalto, 40

Über welche Schnittstelle lesen IT-Forensiker Daten aus einem Computer aus, ohne ihn zu verändern?

Also wie würde man z.B. den Inhalt eines Prozessor-Caches von außen auslesen?

Man braucht doch zu einem gewissen Maß die Kooperation des auszulesenden Computers, überhaupt seine Daten preiszugeben. Aber sobald er aktiv etwas anliefert, ist er in einem anderen Zustand als zuvor.

Selbst wenn man "nur" den normalen Hauptspeicher von außen auslesen will, braucht man doch irgendeinen "Service", den man dafür auf dem zu untersuchenden System aufruft.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Wepster, 4

Was ich dazu, oder verwandt dazu, weiß ist, dass Forensiker normal eine 1zu1  Kopie der Festplatte (Image + MD5 Checksum, vermutlich) anlegen und können auch die Überreste aus dem Cache oder dem RAM auslesen, bzw. nichtflüchtige Speicher, ich glaube auch dafür kann man eine Image anlegen (Siehe Tools unten). Falls die Files flüchtig sind und nur bei Spannung Daten beinhalten, kann man es nur im laufenden Prozess abgreifen sonst wohl eher nicht, "aus" ist gleich "keine Daten". Wobei ich einen Bericht gesehen habe wo man flüchtigen Speicher (RAM) durch einfrieren länger halten kann, da dann die Abläufe sich verlangsamen.

Da ich nicht weiß ob diese Daten flüchtig sind, weil ich nicht weiß ob "an" oder "aus" oder nur veränderlich auszulesen sind, könnte man versuchen es im Off auszulesen, allerdings ist mir die Schnittstelle nicht bekannt, da weiß TeeTier sicher mehr, bzw wurde schon was genannt.

Was ich dazu an Links gefunden habe dürfte interessant sein:

http://www.itwissen.info/definition/lexikon/Fluechtiger-Speicher-volatile-memory...

http://www.forensicswiki.org/wiki/Tools:Memory_Imaging (Auch Querverweise checken)

Kommentar von Wepster ,
Antwort
von TeeTier, 11

Den CPU-Cache muss man nicht unbedingt lesen können, aber es ist möglich (unabhängig vom OS).

ARM bietet dafür sogar eine spezielle Schnittstelle an, und die L1, L2 o. L3 Caches der x86 CPUs kann man "auslesen", indem man den Speicher ab der Adresse liest, der gerade "gecached" wird.

Das Auslesen vom Arbeitsspeicher (und damit dem CPU-Cache!) geht sowohl unter Linux als auch unter Windows oder auch Mac OS X trivial einfach.

Beispiel Linux:

cat /proc/$pid/maps
gdb --pid $pid
(gdb) dump memory outfile start end

Dabei steht die PID des anvisierten Prozesses in der Variablen $pid, und einen Speicherbereich, der aus der Zeile mit "maps" ausgewählt wird, kann man dann von Startadresse "start" bis Endadresse "end" in die Datei "outfile" schreiben.

Unter Windows funktioniert das mit WinDBG ähnlich.

Speicherst du alle Speicherbereiche, ist darin ach der CPU-Cache enthalten. Der Debugger sagt dir sogar, worauf die ganzen Pointer gerade zeigen. :)

Allerdings ist der CPU-Cache meist völlig irrelevant. Mit dem, was sich im Debugger abspielt, kannst du i. d. R. deutlich mehr anfangen.

Naja, viel Spaß! :)

PS: Der "gdb" ist nicht nur ein olles Kommando, sondern vermutlich das mit gaaaanz weitem Abstand mächtigste Werkzeug, um in anderen Prozessen rumpfuschen zu können! Falls du obiges Beispiel automatisieren willst, benutze das MI (Machine Interface) vom GDB!

Damit kannst du dir dann binnen Bruchteilen einer Sekunde den gesamten Speicher einer ganzen Prozesshierarachie rauslutschen.

Kommentar von Zyrober ,

Ich davon ausgegangen, dass wir über einen Fall reden, bei dem man zwar Zugriff auf die bloße Hardware eines laufenden Systems hat, aber nichts am System selbst verändern darf... so nach dem Motto "Verfälschen von Beweisen". Ob das so strikt gehandhabt wird, weiß ich nicht, ich hatte noch nie mit dem Thema zu tun. In deinem Beispiel hast du ja schon Zugriff aufs Betriebssystem (wahrscheinlich ist das auch näher an der Realität). Wenn es natürlich nicht wichtig ist, dass der PC danach noch normal weiterläuft, bietet sich bei vielen Betriebssystemen natürlich ein kompletter Dump an. (Hab aber eher mit Storage-Systemen und Speichernetzen (OS basiert da meist auf Linux) zu tun, wo sowas möglich ist und uns sehr beim troubleshooten und debuggen hilft.)

Antwort
von Zyrober, 22

Prozessor-Cache und Hauptspeicher wäre ja am laufenden System. Ich denke nicht, dass das geht.

Wenn das System schon virtualisiert ist, könnte ich mir einen Weg vorstellen... aber inwieweit das praktikabel ist, weiß ich nicht. Im Nachhinein ein Rootkit dazwischenziehen, verändert das System natürlich schon.


Kommentar von TeeTier ,

Im laufenden Betrieb kann man tatsächlich (fast nahezu) jede Art von Speicher auslesen! (Die Ausnahme bilden Speicherbereiche, die das BIOS vor dem Systemstart bestimmten Hardwarekomponenten zuteilt ... darauf hat dann nicht mal mehr das OS selbst Zugriff!)

Und deine Vermutung mit der Virtualisierung ist auch richtig, und es wird i. d. R. tatsächlich auch so gemacht! :)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten