Moderne Dateisysteme löschen Metadaten gründlich und erschweren das forensische Wiederherstellen von Files. Statt die Datenblöcke manuell wieder zusammenzupuzzeln, erkennen Werkzeuge wie Foremost und Scalpel typische Datenstrukturen und schnitzen Dateien aus einem Festplatten-Image.
Egal ob ein Einbrecher die Protokolle seines Angriffs löscht, ein versehentlich abgesetztes »rm -rf« die digitale Bildersammlung vernichtet oder ein Pädophiler vor dem Zugriff der Polizei einschlägige Fotos vernichtet: Gelöschte Dateien zu rekonstruieren ist oft wichtig. Früher konnten Forensiker und Datenretter diese Files gut zurückholen, da die Dateisysteme nur den Eintrag im Verzeichnis löschten. Die Meta-Informationen, die den Ort der Datenblöcke auf der Festplatte beschreiben, blieben erhalten und TCT (The Coroners Toolkit, [1]), Sleuthkit [2] & Co. nutzten sie, um die Dateien und den Großteil ihres Namens wiederherzustellen.
Heute löschen viele Dateisysteme alle Meta-Informationen [3], nur noch die Datenblöcke bleiben erhalten. Diese Puzzlestücke korrekt zusammenzufügen heißt File-Carving – der Forensiker schnitzt (to carve) die rohen Daten von der Platte und rekonstruiert daraus die Files. Dies wird umso schwerer, je stärker das Dateisystem fragmentiert ist und viele Fehler produziert. Etliche Open-Source-Werkzeuge automatisieren das Carving: Allen voran Foremost [4] und dessen Abkömmling Scalpel [5], aber auch Photorec [6] und Ftimes [7]. Photorec beherrscht Carving jedoch nicht für beliebige Daten, und Ftimes ist so kompliziert zu bedienen, dass es sich für die meisten Anwender nicht lohnt.
Foremost und Scalpel ist das verwendete Dateisystem egal. Sie erwarten nur, dass die Datenblöcke der aufzufindenden Dateien sequenziell im untersuchten Image liegen. Die Tools finden Bilder in »dd«-Dumps ebenso wie in einem Abzug des Arbeitsspeichers oder einer Swapdatei. Carving identifiziert und rekonstruiert sogar Files in korrupten Dateisystemen, im Slack-Space (Versatz), ja selbst nachdem ein anderes Betriebssystem mit einem neuen Dateisystem auf der Festplatte installiert wurde – solange die gewünschten Datenblöcke erhalten blieben.
Wunder vollbringen die Werkzeuge allerdings nicht. Von physisch zerstörten Festplatten gelingt ihnen keine Wiederherstellung. Auch überschriebene Datenblöcke entziehen sich dem Carving – für sicheres Löschen gibt es unter Linux zum Beispiel die Befehle »shred« und »wipe«.
File-Carving
Da sich Carver nicht auf das Dateisystem stützen, brauchen sie andere Informationsquellen, um herauszufinden, wo eine Datei beginnt und wo sie endet. Glücklicherweise besitzen viele Dateitypen einen bekannten Aufbau. Besonders der Beginn (Header) und das Ende (Footer) der Files eines Typs sind wichtig. Diese Kenntnisse nutzt auch der Linux-Befehl »file«, wenn er den Typ von Dateien bestimmt.
File-Carver durchsuchen die komplette Festplatte beziehungsweise das komplette Image nach ihnen bekannten Headern und Footern. Die Blöcke dazwischen schnitzen sie raus und legen sie als neues File ab. Leider hat nicht jeder Dateityp einen eindeutigen Footer. Bei denen kann der Carver das Ende nur erraten: Ein File endet spätestens vor dem nächsten Header. Zwischen dem realen Ende der erkannten Dateien und dem nächsten Header können jedoch größere Mengen nicht erkannter Daten liegen. Um keine Unmenge Datenmüll zu sammeln, erlauben es die Carving-Programme, eine maximale Dateigröße zu definieren.
Leider sind die Header und Footer häufig sehr kurz, was zu vielen Falscherkennungen führt. Eine angenehme Ausnahme sind Bildformate. So beginnt jede Jpeg-Datei mit der Bytefolge 0xFFD8, meist folgt noch 0xFFE00010. File-Carver erkennen daher Jpeg-Bilder sehr gut. Wurden jedoch einige Blöcke bereits überschrieben oder ist die Datei fragmentiert, dann stellen die Tools bestenfalls Teile wieder her (Abbildung 1).

Abbildung 1: File-Carver ignorieren das Dateisystem und schnitzen die Bilder direkt aus den Datenblöcken. Bei fragmentierten Files liefern sie zwar fehlerhafte Fotos, die Reste genügen aber oft, um das Motiv zu erkennen.
Foremost und Scalpel
Inspiriert durch das Programm Carvthis – vom Defense Computer Forensic Lab bereits 1999 erarbeitet, aber nicht öffentlich zur Verfügung gestellt – entwickelten Jesse Kornblum und Kirs Kendall vom United States Air Force Office of Special Investigations im März 2001 Foremost. Dieses Programm unterstützt den Computer-Forensiker bei der Analyse und Wiederherstellung gelöschter Dateien in einem Dateisystem. Inzwischen ist das Programm Open Source und Nick Mikus pflegt die Quellen. Er hat das Programm im Rahmen seines Masters-Studiums wesentlich vorangebracht.
Golden G. Richard III entwickelte auf Basis von Foremost 0.69 sein eigenes Programm namens Scalpel. Es galt lange Zeit als fortgeschrittenes Werkzeug. Einige Quellen behaupten sogar, dass selbst die Foremost-Entwickler Scalpel empfehlen [8]. In Wahrheit werden beide Projekte aktiv entwickelt. Während Scalpel im Jahr 2005 seinem Vorläufer Foremost weit überlegen war und Images fast um den Faktor 10 schneller analysierte, hat Foremost in jüngerer Zeit dank Nick Mikus wieder aufgeholt und seinen Sprössling teils sogar überholt.
Der Forensiker kann bei beiden Programmen per Konfigurationsdatei genau einstellen, welche Dateien er sucht. Hierzu definiert er die Header und Footer (Listing 1). Die erste Spalte bezeichnet den Dateityp und dient zugleich als Namenserweiterung für die gefundenen Files. Bei Dateien, in denen die Groß- oderKleinschreibung der Header und Footer relevant ist, folgt in der zweiten Spalte ein »y«, bei anderen steht hier »n«. Dahinter stehen die maximale Dateigröße sowie die Bytefolgen des Headers und – so vorhanden – des Footers. Die Zeichenfolge »x« leitet dabei ein Byte in Hexadezimaldarstellung ein; möglich ist »s« für ein Leerzeichen, »?« steht als Wildcard für ein beliebiges Zeichen. Eventuell stehen am Ende noch Optionen.
|
Listing 1: |
|---|
01 gif y 155000000 x47x49x46x38x37x61 x00x3b 02 gif y 155000000 x47x49x46x38x39x61 x00x00x3b 03 jpg y 20000000 xffxd8xffxe0x00x10 xffxd9 04 jpg y 20000000 xffxd8xffxe1xffxd9 05 jpg y 20000000 xffxd8 xffxd9 |
Flotte Fahnder
Aufgrund seiner Herkunft verwendet Scalpel die gleiche Konfigurationsdatei wie Foremost, intern arbeiten die Tools jedoch verschieden. Das äußert sich auch in einem kleinen Test: Während Scalpel 1.60 für ein etwa 50 MByte großes Test-Image mit mehreren Jpeg-Bildern, HTML- und Office-Dokumenten 13 Sekunden benötigt, analysiert Foremost 1.5.3 dasselbe Dateisystem auf demselben Rechner in unter 3 Sekunden. Beide finden im Wesentlichen die gleichen Dateien, es zeigen sich aber – auch in der täglichen Praxis – einige Unterschiede in der Datei-Erkennung. Daher sollte der Forensiker immer beide Programme einsetzen.
Seit Version 0.9.1 verwendet Foremost neue Verfahren, um Zip-, Jpeg-, Office- und andere Formate zu erkennen. Diese sind direkt in Foremost implementiert, die Erkennung erfolgt also nicht mehr über die Header und Footer aus der Konfigurationsdatei. Die neue Erkennungsfunktion aktiviert Foremost, wenn es die Kommandozeilenoption »-t« gefolgt von den gewünschten Dateitypen erhält:
foremost -T -t jpg,gif,pdf -i Image-Datei
Die Namen der möglichen Formate stehen in Tabelle 1. Wer alle Builtins gleichzeitig aktivieren will, setzt »-t all«. Im obigen Kommando sorgt zudem die Option »-T« dafür, dass Foremost die gefundenen Dateien in ein Verzeichnis schreibt, dessen Name einen Zeitstempel enthält. Das erleichtert die Organisation der forensischen Analyse, da jeder neue Lauf seine Resultate in ein neues Directory legt.
|
Tabelle 1: |
|
|---|---|
|
Format |
Kommentar |
|
Bilder |
|
|
jpg |
JFIF-, Exif- und Raw-Formate |
|
gif |
Graphic Interchange Format |
|
png |
Portable Network Graphics |
|
bmp |
Windows-Bitmap-Dateien |
|
Executables |
|
|
exe |
Windows-PE, -DLL und -EXE |
|
Video und Audio |
|
|
avi |
Audio Video Interleaved |
|
mpg |
Erkennung aller Mpeg-Dateien, die mit 0x000001BA beginnen |
|
wmv |
Windows Media Video; teils auch WMA (Windows Media Audio) |
|
mov |
Quicktime Movie |
|
Format |
Kommentar |
|
Dokumente |
|
|
|
Portable Document Format |
|
ole |
Object Linking and Embedding; zum Beispiel Powerpoint, Word, |
|
doc |
Lediglich Word-Dateien |
|
htm |
Hyper Text Markup Language (Webseiten) |
|
Archivformate |
|
|
zip |
Zip, Jar, MS Office 2007, Open Office 2.0 (gezippte |
|
rar |
Roshal Archive |
|
cpp |
C-Quellcode; erkennt häufig falsche Dateien |
Platzbedarf
Da Carver aufgrund der False Positives sehr viele Daten aufspüren, sollte ausreichend Platz im Ziel-Dateisystem vorhanden sein. Dabei müsste die Kopieraktion gar nicht sein, denn die Daten stehen im ursprünglichen Image sowieso zur Verfügung. Genau das machen sich virtuelle Filesysteme zu nutzen, etwa Carv-FS [9]. Basierend auf Fuse (File System in Userspace) nimmt Carv-FS vom Carving-Tool nur eine Tabelle entgegen, die beschreibt, an welcher Stelle welche Datei liegt. Carv-FS stammt aus dem OCFA-Projekt der niederländischen Polizei (siehe Artikel in diesem Heft), da gerade bei großen Reihenuntersuchungen forensischen Materials enorme Datenmengen anfallen. Für überschaubare Analysen ist das Herauskopieren aber praktikabler.
Ein typischer Foremost-Lauf ohne Builtins ist in Listing 2 dargestellt. Das Image für dieses Beispiel stammt von der Challenge des Digital Forensic Research Workshop (DFRWS, [10]). Der DFRWS hat diesen Wettbewerb 2006 veranstaltet, um File-Carver zu testen und deren Entwicklung zu fördern. Nach Ende des Wettbewerbs veröffentlichten die Veranstalter eine Liste der enthaltenen Dateien.
|
Listing 2: |
|---|
01 Foremost version 1.5.3 by Jesse Kornblum, Kris Kendall, and Nick Mikus 02 Audit File 03 04 Foremost started at Sat Feb 9 18:36:29 2008 05 Invocation: ./foremost -v -T -i ../dfrws-2006-challenge.raw 06 Output directory: /linux-magazin/foremost/foremost-1.5.3/output_Sat_Feb__9_18_36_29_2008 07 Configuration file: /linux-magazin/foremost/foremost-1.5.3/foremost.conf 08 Processing: ../dfrws-2006-challenge.raw 09 |------------------------------------------------------------------ 10 File: ../dfrws-2006-challenge.raw 11 Start: Sat Feb 9 18:36:29 2008 12 Length: 47 MB (49999872 bytes) 13 14 Num Name (bs=512) Size File Offset Comment 15 16 0: 00003868.jpg 280 KB 1980416 17 1: 00008285.jpg 594 KB 4241920 18 2: 00011619.jpg 199 KB 5948928 19 3: 00012222.jpg 6 MB 6257664 20 [...] 21 20: 00045015.zip 274 KB 23047680 22 21: 00007982.png 6 KB 4086865 (1408 x 1800) 23 22: 00033012.png 69 KB 16902215 (1052 x 360) 24 23: 00035391.png 19 KB 18120696 (879 x 499) 25 24: 00035431.png 72 KB 18140936 (1140 x 540) 26 *| 27 Finish: Sat Feb 9 18:36:32 2008 28 29 25 FILES EXTRACTED 30 31 jpg:= 11 32 htm:= 5 33 ole:= 2 34 zip:= 3 35 png:= 4 36 ------------------------------------------------------------------ 37 38 Foremost finished at Sat Feb 9 18:36:32 2008 |
Photorec
Ist das Dateisystem nicht komplett zerstört, leisten Tools bessere Dienste, die das Filesystem mit auswerten. In diese Kategorie zählt Photorec [6]. Christophe Grenier entwickelte das Programm, um Fotos von nicht mehr einwandfrei lesbaren Flashspeichern zu retten. Daher stammt auch der Name. Das Programm funktioniert auch bei einer zerstörten Partitionstabelle, da es versucht die Partitionen selbst zu erkennen.
Hat Photorec ein Dateisystem erkannt, extrahiert es sehr viele Dateitypen. Der Name des Tools führt in die Irre, da es zum Beispiel auch EXE- oder Zip-Dateien wiederherstellt. Insgesamt unterstützt Photorec mehr als 180 Dateitypen. Die Bedienung erfolgt über ein praktisches Textmenü (Abbildung 2), das die Gefahr von Bedienfehlern minimiert. Leider arbeitet Photorec bisher nicht mit Speicherabbildern oder Swapdateien.

Abbildung 2: Photorec erkennt und rekonstruiert viel mehr Dateitypen, als sein Name vermuten lässt. Dank seines Text-Interface ist das Konsolentool recht gut bedienbar. Es setzt voraus, dass Reste des Dateisystems vorhanden sind.
Gedächtnisstütze
File-Carver unterstützen den Forensiker bei der Analyse von Dateisystemen und der Extraktion gelöschter Dateien. Foremost und Scalpel ignorieren dabei das Dateisystem und stellen sogar Daten aus Speicherabbildern und Swapdateien wieder her. Sie gehen dabei erstaunlich flott zu Werke. Ist das Dateisystem noch erhalten, leistet auch Photorec wertvolle Dienste. (fjl)
|
Infos |
|---|
|
[1] The Coroners Toolkit: [http://www.porcupine.org/forensics/tct.html] [2] Sleuthkit: [http://www.sleuthkit.org] [3] Ralf Spenneberg, “Detektiv-Arbeit”: Linux-Magazin 09/03, S. 60 [4] Foremost: [http://foremost.sf.net] [5] Scalpel: [http://www.digitalforensicssolutions.com/Scalpel/] [6] Photorec: [http://www.cgsecurity.org/wiki/PhotoRec] [7] Ftimes: [http://ftimes.sourceforge.net/FTimes/] [8] Foremost im Forensic-Wiki: [http://www.forensicswiki.org/wiki/Foremost] [9] OCFA, Carve Path Zero-storage Library and Filesystem: [http://ocfa.sourceforge.net/libcarvpath/] [10] DFRWS Carving Challenge: [http://www.dfrws.org/2006/challenge/] |





