Das Forensik-Toolkit Sleuthkit hilft Admins beim Retten versehentlich gelöschter Dateien. Forensiker kommen damit Verdächtigen auf die Schliche. Die neue Version 3.2 automatisiert jetzt ehemals komplizierte Abläufe, unterstützt zahlreiche Dateisysteme und läuft auch auf Mac OS und BSD.
Als Coroner bezeichnet der englische Sprachraum den Rechtsmediziner oder einen Untersuchungsrichter, der forensische Analysen durchführt. In der Welt der freien Software ist das Coroner’s Toolkit von Brian Carrier jedem Datenforensiker ein Begriff, wenn auch eher unter seinem heutigen Namen. Als Sleuthkit [1] hilft der Werkzeugkasten Admins beim Wiederherstellen gelöschter Files, auch auf Dateisystemen, die eigentlich keine Undelete-Funktion vorsehen.
Die Expertise des Entwicklers kann sich sehen lassen: In seinem Buch “File System Forensic Analysis” [2] beschreibt er detailliert heutige Dateisysteme. Dort zerlegt er auch Microsofts proprietäres NTFS und macht seine Analyse publik, was nicht zuletzt diversen Open-Source-Projekten hilft.
Ende 2010 veröffentlichte Carrier die neueste Version 3.2 (auf der DELUG-DVD), die auch dem nicht forensisch veranlagten Admin einige Gründe liefert, sie genauer unter die Lupe zu nehmen. Zwar hat sich das Spürhundkit (“sleuth” steht auch fürs Schnüffeln) zum De-facto-Standard für Open-Source-Forensiker entwickelt, enthalten sind aber auch zahlreiche Kommandozeilen-Programme, die die posthume Rekonstruktion von Dateien und Abläufen auf einem Rechner erlauben.
Wer die Kommandozeile nicht mag, dem bietet die Community grafische Aufsätze für Sleuthkit. Der bekannteste davon ist Autopsy [3], ebenfalls aus der Schmiede von Brian Carrier. Es liegt aber nur in der betagten Version 2.24 vom März 2010 vor, ein Update wird sehnlichst erwartet. Auf Anfrage des Linux-Magazins teilten die Entwickler immerhin mit, dass die Modernisierung von Autopsy derzeit volle Priorität habe.
Sich einen Spürhund zulegen
Das Backend von Sleuthkit dagegen ist brandneu und bringt einige nützliche Konsolentools mit. Alle aktuellen Distributionen installieren derzeit noch Version 3.1.x. Um die 3.2 zu nutzen, sind also Sourcen zu kompilieren.
Die Autoren des Linux-Magazins testeten dies auf Debian Squeeze, Ubuntu 10.04 und Maverick, Free BSD sowie Mac OS X und erlebten eine kleine Überraschung. Aus Erfahrung begannen sie mit Debian und Ubuntu, die beiden Nicht-Linuxe sollten später folgen. Doch ließen sich weder mit Debian Squeeze noch mit Ubuntu Binärdateien erzeugen, während Free BSD und Mac OS X ohne zu murren mitspielten.
Hilfe von Lenny
Nach einer Recherche in Foren und Mailinglisten erwies sich das Problem als durchaus gängig. Ausführbare Binaries brachte erst die Idee, ein veraltetes Debian Lenny zum Paketbau zu nutzen. Weil das nicht jeder bei der Hand hat, liegen die so generierten ».deb«-Pakete für 32 und 64 Bit der DELUG-DVD bei. Sie sind unter Squeeze oder einem aktuellen Ubuntu problemlos übers Paketmanagement installierbar. Wer sich auch das sparen will, findet auf der DVD eine Live-CD, die ebenfalls Sleuthkit 3.2 enthält, das erste Versuche ermöglicht, zum Beispiel am eigenen Rechner.
Problemfall Dateisystem
Fast alle in Sleuthkit enthaltenen Kommandozeilen-Werkzeuge besitzen Schalter, um die unterstützten Dateisysteme und Imageformate aufzulisten. Auch das Programm Fls, das eigentlich dazu dient, Files und Verzeichnisse in einem Image anzuzeigen, gibt mit der Option »-f list« alle unterstützten Filesysteme aus (siehe Abbildung 1).

Abbildung 1: Sleuthkit unterstützt mittlerweile eine längliche Liste von Dateisystemen, auch auf Mac OS X. Prominente Vertreter wie ZFS, XFS oder Reiser fehlen zwar noch, aber auch die teure proprietäre Konkurrenz kann das nicht besser.
Leider fehlen noch wichtige Dateisysteme wie XFS, Reiser oder Btrfs. Ein schwacher Trost ist, dass auch jene Forensiker mit solchen Einschränkungen leben müssen, die mit teurer proprietärer Software arbeiten. Der Markt bietet dafür derzeit keine zufriedenstellende Lösung. Den Nutzern von Open-Source-Produkten steht immerhin der logische Zugriff mit Linux-Bordmitteln offen. Anwendern proprietärer Programme unter Windows bleibt nur der Griff zu aufwändigem File Carving [4]. Debian-basierte Systeme bringen zusätzlich noch XFS-Werkzeuge wie Xfsdump oder Xfsprogs.
Auch beim Shootingstar ZFS sieht es mit Sleuthkit schlecht aus. Dem Admin, der Suns Filesystem im Einsatz hat, bleibt nur die logische Auswertung, etwa mit den in der vorigen Ausgabe des Linux-Magazins beschriebenen Tools [5].
Undelete
“Alle reden von Backup, aber jeder will eigentlich Restore”, so lautet ein häufig von Consultants postulierter Spruch. Das Wiederherstellen versehentlich gelöschter Dateien ist nicht nur für den Forensiker, sondern auch für Administratoren keine triviale Aufgabe. Gut dran ist zweifelsfrei derjenige, der Dateien auf einem NTFS-Dateisystem sucht. Im Bordmittel-Paket der Linux-Distributionen befindet sich das Programm Ntfsundelete, Debianer erhalten es durch die Installation der Ntfsprogs. Der im Linux-Magazin-Artikel [6] beschriebene rekursive Ansatz stellt mit einer Bash-Schleife so die meisten gelöschten Dateien einer NTFS-Partition wieder her. Probleme bereiten Dateien, deren Blöcke das Betriebssystem bereits ganz oder auch nur teilweise wieder überschrieben hat.
Automatik-Tools
Was aber, wenn es sich um ein Linux-Dateisystem oder eine BSD-Variante handelt? Hier waren bisher aufwändige Konstruktionen mit »fls« und »mactime« notwendig, beides Programme aus dem Sleuthkit. Eleganter wäre allerdings ein Pendant zu Ntfsundelete, das alle erfolgreich rekonstruierten Dateien einfach in einen beliebigen Ordner – in der Regel auf einer externen Festplatte – kopiert und auf diese Weise auch die Verzeichnisstrukturen bewahrt.
Genau diese Wünsche bedient die neue Schnüfflerversion. Vier neue Programme stehen zur Verfügung, die alle mit »tsk_« (für “The Sleuth Kit”) beginnen: »tsk_comparedir«, »tsk_gettimes«, »tsk_loaddb« und »tsk_recover«. Tsk_recover stellt gelöschte Dateien automatisch wieder her, aber auch nur, wenn andere Dateien sie nicht bereits überschrieben haben. Diese können auf den erwähnten Dateisystemen liegen, auch ein »tsk_recover -f list« bestätigt die Unterstützung.
Partition oder Platte?
Ein Administrator sucht verlorene Dateien meist direkt auf der Partition seiner Festplatte, während dem Forensiker in der Regel EWF- oder AFF-Images [7] vorliegen. Ob das Tool die gewünschten Formate unterstützt, zeigt der Befehl »tsk_recover -i list« (Listing 1). Die Formate »raw« und »split« kennt Sleuthkit immer, »ewf« und »aff« nur dann, wenn der Admin »libewf« und »afflib« vor dem Kompilieren der Sourcen installiert hat.Tsk_recover lässt sich sowohl auf eine Partition als auch auf die gesamte Festplatte anwenden, da es die vorhandenen Partitionen automatisch erkennt. Oft ist es jedoch besser und übersichtlicher, eine Partition nach der anderen durchzugehen. Die ermittelt das Sleuthkit-Tool »mmls« und liefert den Offset der einzelnen Partitionen (Listing 2).
|
Listing 1: »tsk_recover -i |
|---|
01 Supported image format types: 02 raw (Single raw file (dd)) 03 aff (Advanced Forensic Format) 04 afd (AFF Multiple File) 05 afm (AFF with external metadata) 06 afflib (All AFFLIB image formats (including beta ones)) 07 ewf (Expert Witness format (encase)) 08 split (Split raw files) |
|
Listing 2: »mmls |
|---|
01 GUID Partition Table (EFI) 02 Offset Sector: 0 03 Units are in 512-byte sectors 04 05 Slot Start End Length Description 06 00: Meta 0000000000 0000000000 0000000001 Safety Table 07 01: ----- 0000000000 0000002047 0000002048 Unallocated 08 02: Meta 0000000001 0000000001 0000000001 GPT Header 09 03: Meta 0000000002 0000000033 0000000032 Partition Table 10 04: 00 0000002048 0585936895 0585934848 11 05: 01 0585936896 1171873791 0585936896 12 06: 02 1171873792 1175779327 0003905536 13 07: 03 1175779328 1183592447 0007813120 14 08: 04 1183592448 3231592447 2048000000 15 09: 05 3231592448 3805032447 0573440000 16 10: 06 3805032448 3907028991 0101996544 17 11: ----- 3907028992 3907029167 0000000176 Unallocated |
Offset
Die erste nutzbare Partition beginnt im Beispiel beim Offset 2048, was bei einer modernen GPT-Partition (Globally Unique Identifier Partition Table, [8]) Standard ist, während alte, konventionelle MS-DOS-Partitionierungen meist bei Offset 63 begannen. Die Wiederherstellung startet jetzt mit:
tsk_recover -o 2048 /dev/sda /tmp/recovered
Bei »/tmp/recovered« handelt es sich um einen leeren Ordner auf einer Partition mit ausreichend Platz. Das zweite Beispiel rekonstruiert ein forensisches EWF-Image von Free BSD (Listing 3).
|
Listing 3: |
|---|
01 # mmls freebsd.E01 02 DOS Partition Table 03 Offset Sector: 0 04 Units are in 512-byte sectors 05 06 Slot Start End Length Description 07 00: Meta 0000000000 0000000000 0000000001 Primary Table (#0) 08 01: ----- 0000000000 0000000062 0000000063 Unallocated 09 02: 00:00 0000000063 0041942879 0041942817 FreeBSD (0xA5) 10 03: ----- 0041942880 0041943039 0000000160 Unallocated 11 12 # tsk_recover -o 63 freebsd.E01 /tmp/recovered_bsd 13 Files Recovered: 1 |
Das Ergebnis dieses Aufrufs überraschte die Tester. Sleuthkit konnte nur eine gelöschte Datei wiederherstellen. Die Erklärung ist einfach: Die Autoren des Linux-Magazins hatten übersehen, dass BSD mit Slices arbeitet, also Partitionen in Partitionen. Der Mmls-Befehl hat lediglich eine Partition erkannt, zumindest für Unix-Systeme eine unübliche Konfiguration. Die Slices erkennt Sleuthkit erst, wenn es etwas genauer in diese Partition hineinsieht. Der Trick ist vertraut: Wieder mal gilt es, den Offset 63 an den Mmls-Befehl zu übergeben (Listing 4).
|
Listing 4: »mmls -o 63 |
|---|
01 BSD Disk Label 02 Offset Sector: 63 03 Units are in 512-byte sectors 04 05 Slot Start End Length Description 06 00: ----- 0000000000 0000000062 0000000063 Unallocated 07 01: Meta 0000000001 0000000001 0000000001 Partition Table 08 02: 00 0000000063 0001048638 0001048576 4.2BSD (0x07) 09 03: 02 0000000063 0041942879 0041942817 Unused (0x00) 10 04: 01 0001048639 0005174974 0004126336 Swap (0x01) 11 05: 03 0005174975 0009334462 0004159488 4.2BSD (0x07) 12 06: 04 0009334463 0010383038 0001048576 4.2BSD (0x07) 13 07: 05 0010383039 0041942879 0031559841 4.2BSD (0x07) 14 08: ----- 0041942880 0041943039 0000000160 Unallocated |
Slices revisited
Die weiteren Slices sind nun deutlich erkennbar, eine Partition beginnt bei Offset 5174975, danach folgen nochmals zwei Partitionen. Mit
tsk_recover -o 5174975 freebsd.E01 /tmp/recovered_bsd Files Recovered: 12
rekonstruiert der Admin gelöschte Dateien in der Partition am mit »-o« angegebenen Offset. Abbildung 2 zeigt so die nach »/tmp/recovered_bsd« wiederhergestellten Files der Festplatte eines BSD-Systems, das in »/media/virt/ewf« gemountet ist.

Abbildung 2: Hier hat der Admin die gelöschten Daten eines BSD-Systems wiederhergestellt, zum Beispiel »spool«- oder »tmp«-Verzeichnisse.
Uhrenvergleich
Damit nicht genug, auch die anderen drei Neuheiten in Version 3.2 fördern Interessantes zu Tage:
- »tsk_gettimes« erzeugt die für den Forensiker
wichtigen Zeitstempelinformationen. - »tsk_comparedir« vergleicht zwei Verzeichnisse und
gibt die Unterschiede detailliert aus. - »tsk_loaddb« erstellt eine indizierte, schnell
durchsuchbare SQLite-Datenbank mit allen gelöschten
Files.
Tsk_gettimes und Tsk_comparedir sind weitgehend selbsterklärend, einen besonderen Blick verdient jedoch Tsk_loaddb. Um das ständig steigende Datenaufkommen auch künftig in den Griff zu bekommen, bietet es sich an, die gesammelten forensischen Informationen zu indizieren und in einer Datenbank zu speichern. Sleuthkit bringt dafür erstmals ein Tool mit: »tsk_loaddb -d /tmp/bsd3 freebsd.E01« erstellt eine Datei »freebsd.E01.db« im SQLite-Format. Wer deren Inhalt einsehen will, muss den SQLitebrowser installieren (»aptitude install sqlitebrowser«) und unter »Anwendungen | Software Entwicklung | SQLitebrowser« starten. Abbildung 3 zeigt die Datenbankstruktur im ».db«-File.
Zusätzliche Information erhält der Anwender, wenn er SQL-Befehle wie »SELECT * FROM tsk_fs_files;« einsetzt (Abbildung 4). Auf den ersten Blick ist die Ausgabe allerdings nicht sehr aussagekräftig, teilweise sind wichtige Informationen gut versteckt.

Abbildung 4: Alle gelöschten und wiederhergestellten Dateien im Überblick. Der SQLitebrowser ist als GUI nicht perfekt, aber ein Anfang. Kommerzielle Hersteller wie Access Data setzen auf Oracle-Datenbanken.
Proprietäre Software wie zum Beispiel das Forensik Toolkit (FTK) von Access Data [9] setzt auf eine Ressourcen-hungrige Oracle-Datenbank. Das Indizieren der Files dauert dabei teilweise erschreckend lange, anschließend wird die Geduld des Anwenders jedoch mit einer schicken Oberfläche belohnt.
Datenbanken – oder was?
In Zeiten schnell wachsender Datenmengen führt der Weg für Auswertungs-Tools wie Sleuthkit über Datenbanken. Auch für Admins, die versehentlich gelöschte Dateien wiederherstellen müssen, bietet sich bereits ab mittleren Partitionsgrößen das flinke SQLite-Backend an.
Aber dessen Vorteil tritt eigentlich nur dann deutlich zu Tage, wenn grafische Oberflächen wie bei Windows-Programmen oder GUIs wie Autopsy im Spiel sind. Deren Arbeit und Abfragegeschwindigkeit lässt sich mit Datenbanken deutlich steigern, während die flinken Linux-Kommandozeilentools weniger profitieren. Die SQL-Statements arbeiten hier nicht so viel schneller als die klassische Befehlszeile.
Mausschubser dagegen, die auf eine Grafikoberfläche nicht verzichten wollen, profitieren deutlich. Und nicht zuletzt deshalb wollen die Entwickler um Brian Carrier in den nächsten Monaten das Web-GUI Autopsy voranbringen und so Sleuthkit einem noch größeren Benutzerkreis nahebringen.
|
Infos |
|---|
|
[1] Sleuthkit: [http://sleuthkit.org] [2] Brian Carrier, “File System Forensic Analysis”: [http://www.digital-evidence.org/fsfa/index.html] [3] Autopsy: [http://sleuthkit.org/autopsy/desc.php] [4] File Carving: [http://www.forensicswiki.org/wiki/File_Carving] [5] Hans-Peter Merkel, Markus Feilner, “Hindernislauf”: Linux-Magazin 02/11, S. 86 [6] Hans-Peter Merkel, Markus Feilner, “Italienische Aufklärung”: Linux-Magazin 12/10, S. 84 [7] Hans-Peter Merkel, Markus Feilner, “Von wegen Affig”: Linux-Magazin 08/09, S. 70 [8] GPT: [http://de.wikipedia.org/wiki/GUID_Partition_Table] [9] Forensic Toolkit von Access Data:[http://accessdata.com] |
|
Der Autor |
|---|
|
Hans-Peter Merkel ist mit dem Schwerpunkt Datenforensik seit vielen Jahren in der Open- Source-Community aktiv. Er bildet Mitarbeiter von Strafverfolgungsbehörden in Europa, Asien und Afrika aus und engagiert sich als Gründer und Vorsitzender bei Freioss und Linux4afrika. |







