Spezialisierte Live-CDs wie Helix [1] oder FCCU [2] haben eine große Auswahl an nützlichen Forensik-Werkzeugen an Bord. Aber auch die herkömmlichen Debian- oder Ubuntu-Distributionen helfen den Ermittlern der Kriminalbehörden dabei, mit freien Forensik-Tools und einer kleinen Portion Shell-Know-how wichtige Informationen aus dem Dateisystem eines Windows-Systems zu sammeln und wiederherzustellen.
Image erstellen
Bevor es jedoch an die forensische Analyse geht, erstellt der Fahnder zunächst eine Kopie des sichergestellten Datenträgers, entweder in Form einer 1:1-Kopie oder indem er ein oder mehrere Images erstellt. Dafür stehen ihm unter Linux gleich zwei geeignete Verfahren zur Verfügung, und zwar
- Raw-Images mit »dd« oder
- Abbilder im Expert-Witness-Format.
EWF ist ein proprietäres, von Guidance Software (Encase, [3]) entwickeltes Format, das auch die kommerzielle Forensic-Software von X-Ways [4] beherrscht. Es ist komprimiert und erzeugt damit deutlich kleinere Images als Raw. Für die Erzeugung von EWF-Images gibt es unter Linux Tools wie Linux Encase (Linen) oder Ewfacquire [5].
Linen ist in der Helix-CD als kostenlose Dreingabe von Guidance Software enthalten, aber das in jeder Distribution mitgelieferte DD reicht unter Linux fast immer aus. Mit dem Unix-Urgestein erstellte Images haben noch den Vorteil, dass sich ein so kopiertes Windows-System problemlos in einer Virtualisierung wie VMware starten lässt, was bei EWF schon wegen der Kompression nicht ohne proprietäre Zusatzsoftware funktioniert.
Ein passendes DD-Image erzeugt beispielsweise der Befehl »dd if=/dev/sda of=win_hd.dd bs=4096 conv=noerror, sync«. An der Stelle von »/dev/sda« trägt der Admin die richtige Festplatte ein. Die Blocksize »bs=4096« beschleunigt den Kopiervorgang, da das Speichern eines ganzen Clusters effizienter ist als das eines einzelnen Sektors. Die »conv«-Parameter stellen unter anderem sicher, dass der Kopiervorgang nicht aufgrund von defekten Sektoren abbricht.
Ein derartiges Raw-Image lässt sich wie eine normale Festplatte mit dem Befehl »fdisk -lu« analysieren. Dazu muss der Admin lediglich zusätzlich den Namen des Image angeben:
# fdisk -lu win_hd.dd
Disk win_hd.dd: 0 MB, 0 bytes
120 heads, 63 sectors/track, 0 cylinders, total 0 sectorsUnits = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x840b840b
Device Boot Start End Blocks Id System
win_hd.dd1 * 63 6327719163828+ 7 HPFS/NTFS
In diesem Beispiel enthält das Image also eine Partition, das verwendete Dateisystem ist NTFS. Weitere Informationen liefert das Programm »disktype« aus den Standard-Debian-Repositories:
# disktype win_hd.dd
--- win_hd.dd
Regular file, size 3.021 GiB (3243663360 bytes)
DOS/MBR partition map
Partition 1: 3.017 GiB (3239760384 bytes, 6327657 sectors from 63, bootable)
Type 0x07 (HPFS/NTFS)
Windows NTLDR boot loader
NTFS file system
Volume size 3.017 GiB (3239759872 bytes, 6327656 sectors)
Auf der Partition ist offensichtlich der Windows-Bootloader installiert. Um jetzt Zugriff auf dieses Dateisystem zu erhalten, muss der Admin es zunächst mounten. Die Partition beginnt, wie bei Festplatten üblich, bei Sektor 63. Eine Ausnahme ist Microsofts jüngster Spross Windows Vista, hier liegt er erst bei Sektor 2047. Der Mountbefehl erfolgt somit über den passenden Offset:
# losetup -o $((63*512)) /dev/loop0 U win_hd.dd
# mount -o ro,noatime,noexec /dev/loop0 /mnt
Jetzt liefert ein Blick nach »/mnt« die Startdateien und das Dateisystem des Windows-Laufwerks. Ein kurzer Blick in die Datei »boot.ini« offenbart einen Windows 2000 Server (Listing 1).
01 # ls -l /mnt
02 insgesamt 787024
03 -r-------- 1 root root 150528 2003-06-19 13:05 arcldr.exe
04 -r-------- 1 root root 163840 2003-06-19 13:05 arcsetup.exe
05 -r-------- 1 root root 0 2007-12-02 11:59 AUTOEXEC.BAT
06 -r-------- 1 root root 186 2007-12-02 11:43 boot.ini
07 -r-------- 1 root root 0 2007-12-02 11:59 CONFIG.SYS
08 dr-x------ 1 root root 4096 2007-12-02 14:14 Dokumente und Einstellungen
09 dr-x------ 1 root root 24576 2007-12-02 14:14 WINNT
10 (...)
11 # cat /mnt/boot.ini
12 [boot loader]
13 timeout=30
14 default=multi(0)disk(0)rdisk(0)partition(1) WINNT
15 [operating systems]
16 multi(0)disk(0)rdisk(0)partition(1)WINNT="Microsoft Windows 2000 Server" /fastdetect
17 (...)
|
Forensikers Liebling: Find
Die typische Arbeit eines Strafverfolgers ist die Suche nach Dateien mit illegalen oder beweiskräftigen Inhalten auf sichergestellten PCs. In den meisten Fällen rufen die Forensiker dabei ihre Werkzeuge über »--exec«- oder »xarg«-Konstrukte des Linux-Befehls Find auf, ein Workaround, der den rekursiven Einsatz praktisch jedes Befehls ermöglicht.
Nach dem Image-Erstellen und -Einbinden könnte »find /mnt -type f« eine detaillierte Liste aller Files erstellen. Aber weil dieser Ansatz Dateinamen mit Leerzeichen oder Sonderzeichen nicht berücksichtigt, ist für den Forensiker der Aufruf »find /mnt -type f -print0 | xargs -0 ls -al« besser geeignet.
Hashwerte leisten gute Dienste, um identische Files zu identifizieren und verfängliche Dateien auf Systemen zu finden. Automatisch erzeugen lassen sie sich zum Beispiel mit »find /mnt -type f -print0 | xargs -0 md5sum«, die Hashes können dabei schon on the Fly mit vorhandenem Referenzmaterial verglichen werden. Sinnvoller ist es allerdings, eine Datei zu erstellen, die die Hashwerte aller Dateien beinhaltet (Abbildung 1).
Abbildung 1: Md5sum hat eindeutige Hashwerte der Dateien eines Windows-Dateisystems erstellt. Die Werte in der ersten Spalte ziehen Ermittler zum Abgleich mit bekannten Daten heran.