Aus Linux-Magazin 03/2011

Automatisiertes Wiederherstellen von Dateien mit Sleuthkit 3.2

© Ed Phillips, 123RF.com

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.

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
list«

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
/dev/sda«

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:
BSD-Recovery

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
freebsd.E01«

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.

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.

Abbildung 3: Tsk_loaddb erstellt eine SQLite-Datenbank mit den gelöschten Dateien einer Partition.

Abbildung 3: Tsk_loaddb erstellt eine SQLite-Datenbank mit den gelöschten Dateien einer Partition.

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.

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.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben