Wer wie Forensiker mit Images von ganzen Platten auf seinem Rechner hantiert, schätzt Formate, die die Datenmenge reduzieren, und Werkzeuge, die die Verarbeitung beschleunigen.
Raw Images sind der Standard in der forensischen Analyse, universell und von allen Tools unterstützt. In Zeiten von Terabyte-Festplatten erweist sich ihr Platzhunger jedoch als großer Nachteil. Da sorgen komprimierende Imageformate für Abhilfe, und für die zeitaufwändige Verarbeitung der großen Abbilder gibt es kleine Linux-Tools, die die Arbeit erleichtern.
Oft ist es dabei mit einem Image nicht getan: Forensiker brauchen pro sichergestelltem Rechner mindestens zwei für die Auswertung. Sie müssen die Systeme sowohl innerhalb einer virtuellen Maschine als auch in Spezialsoftware wie X-Ways Forensics (Abbildung 1) oder Encase unter die Lupe nehmen [1].

Abbildung 1: Proprietäres Standardtool für Forensiker: X-Ways Forensics gibt’s nur für Windows. Open-Source-Tools steht es im Funktionsumfang nicht nach, aber Forensiker schätzen die größeren Möglichkeiten von Linux.
Diese Auswertungsprogramme nutzen typischerweise das EWF-Format, das sich mit Werkzeugen aus dem Libewf-Paket [2] wie »ewfacquirestream« erstellen und bearbeiten lässt. Für den Einsatz in einer Virtualisierung dagegen bietet sich KVM (Qemu) an, das mit Qcow2 ein Imageformat mit Kompression und vielen anderen interessanten Features mitbringt [3].
Dcfldd und Mdcp
Ausgangspunkt dafür sind Raw Images, wie sie »dd« erstellt. Besser ist es aber, »dcfldd« ([4], [5]) zu verwenden, weil es vor allem gegenüber DD einige sehr interessante Zusatzfunktionen beherrscht, zum Beispiel das parallele Berechnen einer Hashsumme, detaillierte Statusausgaben (inklusive der Menge der bereits eingelesenen Daten) oder das Aufteilen des Image in mehrere Dateien.
Wer zwei oder mehr Images braucht, muss normalerweise doppelten Zeitaufwand einkalkulieren. Ungeduldige greifen daher auf das kleine Tool Mdcp (Multi Device Copy, [6]) zurück. Das Programm liest Daten einmal aus einer Quelle ein und reicht sie sofort an mehrere Ziele weiter. Vor allem zusammen mit Linux-Fifos ergeben sich so angenehme Möglichkeiten, Zeit und Platz zu sparen. Seine Syntax lautet:
mdcp Blockgröße Anzahl_der_zu_kopierenden_Blöcke Quelle Ziel_1 Ziel_n
Blockgröße 0 bedeutet, dass Mdcp den Standardwert von 32768 verwendet, der Wert 0 für die Anzahl der zu kopierenden Blöcke sorgt dafür, dass es die Quelle bis zum Datei-Ende einliest.
Benannte Röhren
Über Named Pipes übergibt der Admin die Imagedaten direkt an Dcfldd und Ewfacquirestream. Für das Beispiel sind zwei Fifos erforderlich, die »mkfifo ewffifo« und »mkfifo rawfifo« anlegen. Das Erzeugen der Images erledigt der Admin an drei Konsolen. Auf der ersten erstellt folgender Befehl das EWF-Image:
ewfacquirestream -c fast -t EWF_Image < ewffifo
So entsteht ein komprimiertes Image in der Datei »EWF_Image«. Über weitere Parameter lassen sich zusätzliche Einstellungen vornehmen, etwa Größe der einzelnen Segmente, Name des Ermittlers, Notizen zur Sicherung. Analog dazu landet auf der zweiten Konsole der Befehl zum Erzeugen eines Raw Image:
dcfldd if=rawfifo of=Festplatte.raw
Die dritte Konsole dient Mdcp, das eine existierende – zum Beispiel sichergestellte – Festplatte ausliest und an beide Pipes übergibt:
mdcp 0 0 /dev/sdb ewffifo rawfifo
Wichtig an diesen drei Schritten ist, dass der Admin die Befehle auf Konsole 1 und 2 vor dem Mdcp-Befehl (auf Konsole 3)abgesetzt hat. Nach getaner Arbeit zeigt Mdcp eine Ausgabe wie die folgende an:
Done.
Bytes readed : 1024966656
Bytes written : 1024966656 @ ewffifo
1024966656 @ rawfifo
2049933312 TOTAL
Time elapsed : 89.8659secs
Equivalent transfer rate : 22811034b/s
Innerhalb von knapp 90 Sekunden hat Mdcp den 1-GByte-Stick ausgelesen und an die beiden Pipes übergeben, woraus »ewfacquirestream« und »dcfldd« Abbilder gebaut haben. Jetzt kann Qemu-img das Raw Image »Festplatte.raw« mit dem folgenden Befehl in ein Qcow2-Abbild umwandeln:
qemu-img convert Festplatte.raw -O qcow2 UFestplatte.img
Ein großer Vorteil von Raw Images ist das vergleichsweise einfache Mounten als virtuelle Festplatten im System. Das ist auch mit den komprimierten Qemu-Images möglich, aber über den Umweg der Linux Network Block Devices [7].
Virtuelle Disk dank NBD
Mit Kvm-nbd aus dem KVM-Paket ist es möglich, über das NBD-Protokoll direkt auf den Inhalt von Qemu-Images jeder Couleur zuzugreifen. Damit das Linux-System aber dieses Protokoll nutzen kann, ist zuerst das entsprechende Kernelmodul zu laden. Der Parameter »max_part« ist hier notwendig, um auch Partitionen innerhalb der Devices oder Images zu unterstützen:
modprobe nbd max_part=8
Die Verbindung zu dem Image stellt jetzt das folgende Kommando her:
kvm-nbd --connect=/dev/nbd0 Festplatte.img
Das Image ist nun unter »/dev/nbd0« wie eine Festplatte ansprechbar. So zeigt beispielsweise Fdisk die Partitionsstruktur an und mit Mount bindet der Admin diese einfach in das System ein:
mount /dev/nbd0p1 /media/suspect/ -o ro
Der Parameter »-o ro« sorgt dafür, dass Mount das Image schreibgeschützt einbindet. Jetzt lässt sich der Inhalt mit den üblichen Mitteln untersuchen, bevor
kvm-nbd -d /dev/nbd0
die Verbindung wieder löst, wenn der Admin »umount« nicht vergessen hat.
NBD zu Qcow
Da sich NBDs wie lokale Festplatten verhalten, liegt es manchmal nahe, diesen Weg zu nutzen, um ein Qemu-Image zu erstellen. Im ersten Schritt ermittelt der Admin mit »fdisk -l Festplatte« die Größe der zu untersuchenden Disk. Dann braucht er eine Qemu-Imagedatei in der entsprechenden Größe, auch dabei hilft Qemu-img. Als Parameter erwartet das Programm das Imageformat, einen Dateinamen sowie die Größe in Kilobytes. Da Fdisk die Größe in Bytes ausgibt, überlässt es der Admin der Shell, den richtigen Wert noch auszurechnen:
forensic@TuxBox: qemu-img create -f qcow2 newImage.img $[1024966656 / 1024] Formatting 'NewImage.img', fmt=qcow2, size=1000944 kB
Jetzt soll KVM die NBD-Verbindung zum soeben erzeugten Image aufnehmen:
kvm-nbd connect=/dev/nbd0 newImage.img
Und schon lassen sich die Daten bequem mit »dcfldd if=/dev/sda of=/dev/nbd0« von der zu untersuchenden Festplatte in das Image kopieren.
Simple Tools
Nicht nur Forensiker dürften ihren Spaß an der Kombination von Dcfldd, Mdcp, den Werkzeugen aus dem KVM- (Qemu-) Paket und Standard-Linux-Tools wie dem Network Block Device oder Named Pipes haben. Auch Admins, die gleichzeitig mehrere Platten mit dem gleichen Betriebssystem ausstatten möchten, können so viel Zeit sparen. (mfe)
|
Infos |
|---|
|
[1] Hans-Peter Merkel, Markus Feilner, “Sichergestellt”: Linux Magazin 03/09, S. 44 [2] Libewf: [http://sourceforge.net/projects/libewf] [3] Details zu Qemu-img und den unterstützten Formaten: [http://qemu-buch.de/d/Anhang/_qemu-img] [4] Dcfldd: [http://dcfldd.sourceforge.net] [5] Forensics Wiki: [http://www.forensicswiki.org/wiki/Dcfldd] [6] Multi Device Copy: [http://mdcp.sourceforge.net] [7] Linux Network Block Device:[http://nbd.sourceforge.net] |
|
Der Autor |
|---|
|
Dennis Schreiber ist Computerforensiker in der Thüringer Finanzverwaltung. Bei seiner Tätigkeit verwendet er zur Datensicherung und -auswertung vorzugsweise Linux. Wenn er nicht gerade am Computer sitzt, verbringt er seine Zeit am liebsten mit der Familie und Freunden und auf dem Motorrad. |





