Wenn nach der Durchsuchung Beamte eine Festplatte mitnehmen, landet sie bei einem professionellen Forensiker in einer Behörde. Auf den folgenden Seiten erklärt ein Ausbilder, wie Beamte mit Hilfe von Linux-Bordmitteln interessante Details aus sichergestellten Windows-Festplatten extrahieren.
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).
|
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.
Hashes ermitteln Duplikate
In den meisten Fällen liegen dem Ermittler ohnehin bereits Hashes von Dateien vor, die er in einem Pool von anderen Hashwerten suchen soll. Eine typische Anwendung dieses Szenarios ist ein Fall, bei dem es eine Datenbank mit bekannten Files gibt, etwa die Suche nach strafbarem pornographischem Material. Auch in Strafverfahren, wenn zum Beispiel eine belastende Excel-Datei auf verschiedenen Rechnern gesucht wird, leistet dieses Vorgehen gute Dienste. Nicht zuletzt lassen sich damit von vornherein auch die auf jedem System vorhandenen Microsoft-DLLs aussortieren.
Ob es Übereinstimmungen zwischen dem gesuchten und dem vorhandenen Material gibt, ermittelt später ein simpler »grep«-Befehl. Eine Liste der Hashes vorhandener Files speichert der folgende Befehl – um den jeweiligen Dateinamen gekürzt – in die Datei »gross.txt«:
# find /mnt -type f -print0 | xargs -0 md5sum | awk '{print $1}' | sort -g | uniq > gross.txt
Der »awk«-Befehl übernimmt dabei nur die Hashwerte der ersten Spalte, »sort -g« sortiert sie und »uniq« entfernt doppelte Einträge. Ein Ermittler, der die zu suchenden Hashes in der Datei »klein.txt« gespeichert hat, findet dann mit dem Befehl »grep -f klein.txt gross.txt« die Duplikate und damit auch die entsprechenden Dateien.
Suche nach Keywords
Forensiker suchen auf den gesicherten Systemen auch nach bestimmten Begriffen. Zunächst ist dafür eine Textdatei mit den gewünschten Suchbegriffen zu erstellen, zum Beispiel »keywords.txt« mit den Begriffen Password beziehungsweise Passwort. Dann sucht
# cat win_hd.dd | strings | egrep -i --color -f keywords.txt
die Keywords »password« und »passwort« im gesamten Windows-Image und hebt sie in der Ausgabe in roter Farbe hervor, wie in Abbildung 2 zu sehen ist.

Abbildung 2: Linux-Bordmittel im Einsatz. Cat, Strings und Grep suchen nach Stichwörtern in der Windows-Partition und heben die gefundenen Einträge farblich hervor.
Besonders spannend ist das Verfahren, wenn für die Schlagwortsuche nicht nur das Dateisystem, sondern auch noch andere Bereiche einer Festplatte dienen, zum Beispiel
- die Auslagerungs- oder Hibernation-Datei,
- der nicht allozierte (unallocated) Bereich der Festplatte,
- Daten im Versatz des Dateisystems (File-Slack) oder
- die vermeintlich gelöschten Dateien.
Gerade die Treffer aus dem Unallocated-Bereich einer Festplatte oder dem File-Slack verlangen häufig eine Wiederherstellung und die Zuordnung zu gelöschten Dateien. Hierbei hilft der dezimale Offset »-td« im Strings-Befehl in »cat winhd_dd | strings -td | egrep -i –color -f keywords.txt« weiter.
Will der Ermittler auch Keywords finden, die im 16-Bit-Unicode abgelegt sind, mit dem die Windows-NT-Betriebssysteme arbeiten, dann muss er bei dem Strings-Befehl einstellen, ob die Suche nach Little oder Big Endian [6] erfolgen soll. Die nötigen Argumente sind in diesem Fall entweder »-eb« oder »-el«. Weitere Details dazu liefert die Strings-Manpage. Wie sich später über eine Inode-Zuordnung eine Datei wiederherstellen lässt, zeigt Listing 3 anhand von Ntfsundelete.
Der Spürhund durchstöbert die ganze Festplatte
Das Sleuthkit (Spürhund-Kit, [7] und [8]) gehört zu den wichtigsten forensischen Werkzeugen. Es befindet sich im Standard-Debian-Repository und Aptitude installiert es. Im Wesentlichen besteht das Hündchen aus drei Programmen, die Funktionen eines erweiterte »ls« bieten und meist schon im Namen ihre Funktion verraten:
- Fls listet Files auf Dateiebene,
- Ils auf der Basis der Inodes,
- Dls stellt die eigentlich gelöschten (deleted) Dateien
dar.
Dazu kommen Verwandte der gängigen Unix-Tools Cat (Icat) und Find (Ifind) sowie Statistik-Werkzeuge wie Istat. Zuerst erstellt Sleuthkit eine Liste aller Dateien mit Zeitinformationen (Listing 2). Wer die Ausgabe in einer übersichtlich gruppierten Ansicht mit einer Zeitleiste der Ereignisse erhalten möchte, ruft »mactime -b /tmp/body« auf. Nun soll das Tool die Schlüsselwörter in den gelöschten Dateien auf der NTFS-Partition aufspüren:
# dls /dev/loop0 > unallocated # cat unallocated | strings | egrep -i --color -f keywords.txt
Dls wandelt so den nicht belegten Platz in eine Datei um, die Cat dann über eine Pipe an Strings und Egrep weiterleitet.
|
Listing 2: Zeitstempel der |
|---|
01 # fls -o 63 -m "C:" -r win_hd.dd > /tmp/body 02 # mactime -d -b /tmp/body 03 Thu Jun 19 2003 13:05:04,16656,m..,-/-rwxrwxrwx,0,0,315-128-3,C:/WINNT/system32/cdmodem.dll 05 Thu Jun 19 2003 13:05:04,11792,m..,-/-rwxrwxrwx,0,0,11267-128-3,C:/WINNT/ServicePackFiles/i386/partmgr.sys 07 Thu Jun 19 2003 13:05:04,7440,m..,-/-rwxrwxrwx,0,0,8093-128-3,C:/WINNT/ServicePackFiles/i386/ bhp.dll 09 Thu Jun 19 2003 13:05:04,1011764,m..,-/-rwxrwxrwx,0,0,7102-128-3,C:/WINNT/system32/mfc42u.dll 11 Thu Jun 19 2003 13:05:04,65593,m..,-/-rwxrwxrwx,0,0,6552-128-3,C:/Programme/Outlook Express/ csapi3t1.dll 13 Thu Jun 19 2003 13:05:04,122640,m..,-/-rwxrwxrwx,0,0,858-128-3,C:/WINNT/system32/idq.dll 14 Thu Jun 19 2003 13:05:04,166672,m..,-/-rwxrwxrwx,0,0,7178-128-3,C:/WINNT/system32/qcap.dll 15 Thu Jun 19 2003 13:05:04,65593,m..,-/-rwxrwxrwx,0,0,11555-128-3,C:/WINNT/Sersystem32/i386/csapi3t1.dll |
|
Listing 3: Dateien |
|---|
01 # ntfsundelete -u -i11137 /dev/loop0 02 Inode Flags %age Date Size Filename 03 ----------------------------------------------------- 04 11137 FN.. 0% 2003-06-19 50688 msiinst.exe 05 Undeleted 'msiinst.exe' successfully. 06 file msiinst.exe 07 msiinst.exe: MS-DOS executable PE for MS Windows (DLL) (GUI) Intel 80386 32-bit |
Der File-Slack
Der Begriff File-Slack [9] bezeichnet Daten im Versatz des Dateisystems. Der entsteht, wenn jemand zum Beispiel eine 2 KByte große Datei in einem Dateisystem speichert, das über 4 KByte große Blöcke verfügt. Alle gängigen Windows-Systeme sind hier vergleichsweise unsauber programmiert und schreiben nach der zu speichernden Datei zufällige Daten aus dem RAM in die überzähligen Bytes des betreffenden Blocks.
Genau da beginnt das Problem – beziehungsweise die Chance für den Ermittler: Mit Tools wie Dls aus dem Sleuthkit oder Bmap [10] kann der Polizist Daten rekonstruieren, die der Benutzer vielleicht nie bewusst auf seiner Festplatte gespeichert hatte. Manchen Ermittlern soll es so schon gelungen sein, verfängliche E-Mails zu rekonstruieren.
Als besonders hilfreiches Werkzeug erweist sich hier Dls mit der Option »-s«:
# dls -s /dev/loop0 > fileslack # cat fileslack | strings | egrep -i U--color -f keywords.txt
So kann der Forensiker auch im File-Slack nach Schlagwörtern suchen. Nach einer Studie der Universität Linz [11] sind moderne Linux-Filesysteme übrigens nicht von diesem Problem betroffen, sie schreiben Nullen in die überschüssigen Bytes, wie sie »/dev/zero« liefert.
Gelöschte Dateien, History und Windows-Registry
Mit »ntfsundelete« aus dem Paket »ntfsprogs« kann jeder Linux-Admin gelöschte Dateien auf NTFS-Partitionen wiederherstellen. Bevor er »ntfsundelete« jedoch aufrufen kann, muss das Device »/dev/loop0« wieder freigegeben sein, meist mit »umount /mnt«. Ohne weitere Optionen gibt »ntfsundelete /dev/loop0« nur eine Liste aller wiederherstellbaren Dateien aus (Abbildung 3). Das Beispiel in Listing 3 stellt die Datei »msiinst.exe« auf Inode 11137 wieder her.

Abbildung 3: Ntfsundelete zeigt die gelöschten, aber wiederherstellbaren Dateien. In der ersten Spalte steht die für die Recovery notwendige Inode-Nummer im Dateisystem innerhalb der Imagedatei.
Aber auch auf der Festplatte vorgefundene Dateien verraten dem Ermittler oft mehr über den Benutzer, als diesem lieb ist. Sowohl Microsofts Internet Explorer als auch Firefox speichern ihre History im Filesystem. Zum Analysieren dieser Informationen müssen die Ermittler zwei Programme installieren:
- Pasco [12] für den Internet Explorer
- Mork.pl [13] für Mozilla Firefox
Listing 4 zeigt den Ablauf einer typischen Analyse: Der Internet Explorer speichert seine Informationen profilbezogen in Dateien mit dem Namen »index.dat«. Mit einem Find-Befehl ermittelt der Forensiker alle abgerufenen Seiten.
|
Listing 4: |
|---|
01 # mount -o ro,noatime,noexec /dev/loop0 /mnt
02 # find /mnt -iname "index.dat" -exec pasco '{}' ';'
03 TYPE URL MODIFIED TIME ACCESS TIME FILENAME DIRECTORY HTTP HEADERS
04 URL http://www.google.de/favicon.ico 06/07/2006 21:35:34 12/02/2007
05 12:14:28 favicon[1].ico NG0RCTFI HTTP/1.1 200 OK Content-Type: image/x-icon
06 Content-Length: 1406 ~U:administrator
07 REDR http://msn.ivwbox.de/cgi-bin/ivw/CP/MSN01000000;?r=
08 12/02/2007 12:11:32 12/02/2007 12:11:32
09 URL Visited: Administrator@http://www.google.de 12/02/2007 12:14:28
10 URL Visited: Administrator@http://www.msn.de 12/02/2007 14:33:54 12/02/2007
11 14:33:54
12 # find /mnt -iname "history.dat" -exec mork.pl '{}' ';'
13 1202727704 1 http://www.linux4afrika.de/index.php?id=155&L=1
14 1202727670 1 http://www.linux4afrika.de/index.php?id=154&L=1
15 1202727641 1 http://www.linux4afrika.de/index.php?id=60&L=1
16 1202727641 2 http://www.linux4afrika.de/
17 1202727555 1 http://n-tv.de/916916.html
18 1202726960 1 http://n-tv.de/916917.html
19 1202726892 1 http://n-tv.de/916908.html
20 1202726827 3 http://n-tv.de/
21 1202726394 2 https://www.linux-magazin.de/
22 1202726204 2 http://www.google.de/
23 # find /mnt -iname "history.dat" -exec mork.pl '{}' ';' | awk '{print strftime("%F,%R",$1),$2,$3}'
24 2008-02-11 11:40 1 https://www.linux-magazin.de/heft_abo/ausgaben/2008/03/zwerg_am_druecker
25 2008-02-11 11:39 2 https://www.linux-magazin.de/
26 2008-02-11 11:36 2 http://www.google.de/
27 (...)
|
Auch Mozilla verrät Details
Das gleiche Spiel für den Firefox, der die Daten in »history.dat« speichert. Die erste Spalte enthält dabei die Datum- und Zeitinformation noch im Unix-Timestamp-Format. Der dritte Befehlsaufruf in Listing 4 konvertiert sie in ein für Menschen angenehmeres Format.
Auch die Registry eines Windows-Systems lässt sich mit Dumphive [14] benutzerfreundlich aufbereiten (Abbildung 4). Das Kommando »dumphive /mnt/WINNT/system32/config/system system.txt« speichert sie in einer separaten Textdatei, in der die Fahnder mit den Unix-Text-Tools bequem nach Einträgen suchen können.

Abbildung 4: Dumphive stellt die Windows-Registry im Klartext dar. Suchwerkzeuge wie Grep helfen dann wichtige Einstellungen zu rekonstruieren. Typische Beispiele sind der Passwort-Hash oder IP-Daten.
Windows-Passwörter kennenlernen
Der bloße Zugriff auf das System allein ist bereits interessant, aber die Kennwörter der Benutzer zu kennen, öffnet den Ermittlern meist noch weitere Türen, da die meisten User ihre Lieblingspasswörter bei vielen Webseiten und Diensten verwenden. Nicht zuletzt ermöglichen sie es dem Forensiker, sich am virtualisierten Imagesystem unter VMware anzumelden und diverse Systemprotokolle und Dateien gesondert unter die Lupe zu nehmen.
Neben Brute-Force-Angriffen und Tools wie John the Ripper, die Wortlisten oder Rainbow Tables verwenden, stehen dem Linux-Admin viele weitere Werkzeuge wie Bkhive, Samdump2 und Ophcrack [15] zur Verfügung.
Mit ihnen lokale Passwörter aus einer SAM-Datei, wie sie Windows-NT-basierte Systeme verwenden, zu extrahieren, ist nicht schwer, auch weil sich die Tools kombinieren lassen. So erkennt John the Ripper automatisch, wenn Admins ihn mit SAM-Daten eines Windows-Systems füttern. Hilfreich ist da die Microsoft-spezifische Aufteilung der Passwörter. Zwar können die Windows-Credentials 14 Zeichen lang sein, das System zerlegt sie aber in zwei Strings à sieben Zeichen. Das erweist sich ungewollt als ein hilfreiches Entgegenkommen des Herstellers für den Ermittler, der damit weniger Rechenleistung benötigt.
Schon bei Vista: Sicherere Passwörter
Ab Windows Vista hat MS das korrigiert und die anfälligen Lanmanager-Hashes standardmäßig durch NT-Hashes ersetzt. XP-Admins können das manuell einrichten, hier muss der Linux-Ermittler mit »dumphive« in der Registry nachsehen, ob der Eintrag »HKEY_LOCAL_MACHI- NE/SYSTEM/CurrentControlSet/Control/Lsa« auf »1« gesetzt ist. Dann helfen nur der Griff in den Geldbeutel und der Erwerb einer 8,5 GByte großen Dual-Layer-DVD mit kostenpflichtigen LM- oder NT-Rainbow-Tables für je 240 Dollar.
Wie die anderen genannten Tools ist auch Ophcrack in den Debian-Repositories enthalten. Für die Arbeit setzt es Rainbow Tables und die Hashes der Windows-Maschine voraus. Nach der erfolgreichen Installation kann der Ermittler bequem mit einem GUI arbeiten und das Passwort eines gewünschten Users per Doppelklick entschlüsseln (Abbildung 5).

Abbildung 5: Per Doppelklick die Passwörter der Windows-User herausfinden ist dank Ophcrack ganz einfach. Eine automatisierte Live-CD gibt’s davon auch.
Domänencontroller
Bei einem an einen Domänencontroller angebundenen Windows-System ist allerdings eine andere Vorgehensweise erforderlich, denn hier sind die Credentials nicht auf dem Client gespeichert. Allerdings reicht es häufig aus, mit einem Netzwerk-Sniffer während eines Anmeldevorgangs mitzuschneiden, die relevanten Datenpakete zu identifizieren, sie in eine Datei zu sichern und dann den Dump an Ophcrack zu verfüttern. Allerdings ist das schon deutlich aufwändiger und setzt den Live-Zugriff auf das Netz vor Ort voraus.
Vergleichsweise einfach
Die Kombinationsmöglichkeiten der Tools sind schier unbegrenzt und mit ein paar extra Paketen steht dem Ermittler die Windows-Welt offen. Wem das nicht reicht, der sollte einen Blick auf die Free Forensic Tools von Foundstone [16] werfen. Mit diesen Werkzeugen lassen sich dann Cookies, lange gelöschte Einträge aus dem Windows-Mülleimer und vieles mehr wiederherstellen.
Dem erfahrenen Linuxer erscheinen die Shell-Methoden sicherlich einfach, doch ist es nicht unbedingt jedermanns Sache, mit den teilweise komplexen Kommandozeilen-Befehlen umzugehen. Die Einarbeitungszeit liegt für Linux-Neulinge auch deshalb mit den Open-Source-Tools wohl noch deutlich höher als bei den teuren kommerziellen Produkten. Unübertroffen in puncto Usability ist allerdings die vollautomatisierte Ophcrack-Live-CD, die dem Benutzer die lästigen Shell-Befehle abnimmt und kurz nach dem Booten die Windows-Passwörter der lokalen Benutzer anzeigt.
Im Test mit einem XP-System (SP2) benötigte die CD nur ganze 280 Sekunden, um die bis zu 14 Zeichen langen Credentials der fünf Benutzer-Accounts zu ermitteln (Abbildung 5). Das Live-Linux beinhaltet (zum Glück) auf der CD jedoch nur die Tabellen für alphanumerische Passwörter ohne Sonderzeichen. Wer noch mehr will, braucht die kommerziellen Rainbow Tables. (mfe)







