Open Source im professionellen Einsatz

Carving-Tools spüren Files auf, ohne das Dateisystem zu kennen kennen

Selbst geschnitzt

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.

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:
Konfiguration

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

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook