Truecrypt Volumes wiederherstellen

01.05.2008

Abstract: Ein Truecrypt Volume wiederherstellen

Version 1.0

In diesem Text werde ich kurz die Möglichkeiten zum wiederherstellen eines Truecrypt-Volumes beschreiben.

Eins vorweg, Festplattenlesefehler sind eine ernste Angelegenheit. Das ahnungslose Versuchen und Herumdoktern kann zu weiterem Datenverlust führen. Für den Fall, dass die Daten tatsächlich von Wert sind (etwa die eigene Diplomarbeit und nicht nur die eigene MP3-Sammlung), sollte man immer zu einem Fachmann gehen.

Weiterhin ist diese Anleitung unter Laborbedingungen entstanden. Ich übernehme keine Garantie, dass sie in eurem Fall hilft oder unter realen Bedingungen funktioniert.

Das reale Wiederherstellen von Daten ist ziemlich knifflig und nicht für Amateure empfohlen.

Unter realen Bedingungen hat man mit sehr viel mehr Problemen zu kämpfen, als mit dem hier Beschriebenen.

Auch setzt dieser Text Erfahrungen im Wiederherstellen von Daten und dem Ungang mit Linux voraus. Er ist nicht für Anfänger gedacht. Diese Leute sollten lieber den Fachhandel aufsuchen.

Truecrypt ist so entworfen worden, dass sich die von ihm erstellen Daten nicht von zufälligen Daten der Festplatte unterscheiden. Daher haben alle Programme (die ich kenne) die zur Datenwiederherstellung programmiert wurden, daher auf Mustererkennung basieren, Probleme damit.

Macht man sich also nun an die Wiederherstellung von kaputten Truecrypt-Volumes, muss man einiges Wissen mitbringen (etwa die Partitionierung der Festplatte, einen gesicherten Volume-Header, das Passwort) ohne das eine Wiederherstellung unmöglich ist.

Dass es generell möglich ist ein Truecrypt-Volume wiederherzustellen (NICHT ZU ENTSCHLÜSSELN) ist also nicht den Programmierern von Truecrypt anzulasten.

Weiterhin werde ich hier nicht den Fall von Hidden-Volumes behandeln.

Die Aufgabe:

Ein Truecrypt-Volume, das durch Lesefehler nicht mehr zu öffnen ist öffnen.

Ich werde nur einen kurzen Überblick über die Wiederherstellungsmöglichkeiten für den Inhalt des Truecrypt-Volumes geben. Es soll nicht Ziel dieses Textes sein, alle Möglichkeiten die man anwenden kann, wenn das Volume wieder lesbar ist, aufzuzeigen.

Einen guten Einstieg findet man hier:

https://help.ubuntu.com/community/DataRecovery

Die Testumgebung:

Diese Anleitung ist unter den folgenden Bedingungen entstanden:

  1. Alle Operationen sind innerhalb einer virtuellen Maschine erfolgt (Virtualbox 1.5.6)
  2. Als „Festplatte“ dient eine virtuelle 512MB Festplatte. (Die Größe wurde gewählt, damit der Zeitaufwand erträglich bleibt)
  3. Als Betriebssystem wird Windows XP Professional SP2 genutzt.
  4. Als Rettungssystem kommt Ubuntu 8.04 LTS Desktop zum Einsatz.
  5. Als Testdatei wurde ein Worddokument genommen, das den englischen Wikipedia Artikel über Wikipedia enthält.

Vorraussetzungen:

  1. Die Festplatte von der gesichert werden soll ist ansprechbar und man kann die Daten hintereinander auslesen. (Evtl. vorgehen bei Fehlern wird hier nicht behandelt)
  2. Der Truecrypt-Volume-Header ist gesichert worden und auf die Sicherung hat man Zugriff. (Sonst kann man eine Wiederherstellung komplett vergessen.)
  3. Das Passwort ist bekannt. (Sonst kann man eine Wiederherstellung komplett vergessen.)

Hintergrund

Ein wenig technischer Hintergrund, warum das ganze klappt. Es ist etwas ungenau, da ich hier nicht zu spezifisch werden möchte, auch das würde den Rahmen dieses Textes sprengen.

Dateisysteme speichern ihre Daten auf Festplatten in Blöcken.

Truecrypt verschlüsselt die Daten der Festplatte blockorientiert. Der Inhalt einer Datei steht in mehreren Blöcken auf der Festplatte.

Was im Regelfall passiert, wenn eine Datei durch einen Festplattenschaden nicht mehr lesbar ist, ist dass einer dieser Blöcke inkorrekte Daten enthält. Dadurch wird dieser Block ungültig und der Inhalt einer Datei verändert sich.

Im Falle von reinen Textdokumenten (.txt) steht an der Stelle, die aus diesem Block gelesen wurde, Kauderwelsch. Bei Formaten wie Word-Dokumenten wird das Programm, das sie bearbeitet, Fehlermeldungen anzeigen.

Truecrypt verschlüsselt diese Blöcke nun vor dem Schreiben auf die Festplatte. Genauso entschlüsselt Truecrypt die Daten wiederum auch. Truecrypt arbeitet also zwischen dem Dateisystem und der Festplatte.

Bei einem fehlerhaften Block auf der Festplatte entschlüsselt Truecrypt die Daten genauso. Das Dateisystem erhält auch an dieser Stelle einfach nur fehlerhafte Daten.

Truecrypt ist das egal, da es einfach nur mathematische Operationen auf die sich auf der Festplatte befindenden Daten anwendet. Wenn die Daten auf der Festplatte falsch sind, kommt eben auch nach dem entschlüsseln das falsche raus. Da aber falsch, falsch bleibt ist es im Kern egal.

Daher steigt mit dem Einsatz von Truecrypt auch nicht die Gefahr eines Datenverlusts.

Der Plan

In meiner Testumgebung habe ich die Daten auf dem 512MB-Datenträger jetzt einfach pseudozufällig verändert. In einem realen Einsatz ist die Platte ja schon beschädigt. ;)

Was wir jetzt tun werden.

  1. Ein 1:1-Image des defekten Datenträgers erstellen. Denn man arbeitet nie auf dem Originaldatenträger, wenn man nicht Ontrack heißt. (So ohne Netz und doppelten Boden ist einfach unpraktisch. So wegen Herz, Notarzt und Krankenhaus und so…)
  2. Den Datenträger (meint ab hier das Image) auf eine evtl. vorhandene Partitionstabelle untersuchen.
  3. Versuchen entweder das Truecrypt-Volume wiederherzustellen und zu mounten oder das Laufwerk auf dem sich das Volume befindet wiederherzustellen.
  4. Versuchen das Truecrypt-Volume zu mounten und dessen Inhalt wiederherzustellen.

Allerdings muss noch beachtet werden, dass es drei Typen von Truecrypt-Volumes gibt.

  1. Dateibasierte (File-based) sind die Volumes, die man als Datei im täglichen Betrieb sehen kann bzw. die man mit dem Explorer verschieben / löschen kann.
  2. Partitionsbasierte (Partition-based) sind die Volumes, die eine Partition umfassen.
  3. Gerätebasierte (Device-based) sind die Volumes die eine gesamte Festplatte einnehmen. Achtung: Gemeint ist wirklich die gesamte Festplatte, die Festplatte erscheint also als nicht nur unparitioniert, Windows möchte die Festplatte initialisieren. Wenn die Festplatte nur eine Partition hat, ist das ein Sonderfall der partionsbasierten Volumes.

Jede diese Varianten ist unterschiedlich schwer wiederherzustellen:

Art

Schwierigkeitsgrad

Dateibasiert

mittel bis unmöglich*

Partitionsbasiert

leicht oder unmöglich*

Gerätebasiert

leicht

* Unmöglich meint, dass die Daten nur noch eine sehr geringe Wiederhestellungswahrscheinlichkeit mittels der unten beschriebenen ultimativen Methode.

Die Schwierigkeit der Durchführung begründet sich in der unterschiedlichen Komplexität der Volumes:

· Gerätebasierte Volumes sind am einfachsten wiederherzustellen, da sie im Kern wie eine normale Festplatte zu behandeln sind. Das einzige was man tun muss ist den Volume-Header wiederherzustellen. Dann kann man das Volume wieder mounten und die Daten wie bei einer normalen Festplatte wiederherstellen.

· Partitionsbasierte Volumes sind schwer wiederherzustellen. Für den Fall das die Partitionstabelle defekt ist und sich der Nutzer nicht an deren zylindergenauen Aufbau (etwa durch ein Backup) erinnert, gibt es keine Möglichkeit den Anfang der Truecrypt-Partition zu finden und somit den Volume-Header an die richtige Stelle zurückzuspielen. Hat man aber ein Backup der Partitionstabelle oder hat die Gesamte Festplatte als eine Partition erstellt wurde, dann ist es im Prinzip wie beim Gerätebasierten Volume.

· Dateisystembasierte Volumes sind einfacher wiederherzustellen, als Partitionsbasierte, da man hier die normalen forensischen Tools für die sonstige Wiederherstellung zum Einsatz bringen kann. Allerdings sinkt die Wiederherstellungswahrscheinlichkeit gegen null, wenn Das Volume stark defragmentiert ist (Die Datei, nicht das Dateisystem im Volume)

Wie man sieht verhält sich die Wiederherstellungswahrscheinlichkeit umgekehrt zum Komfort der Unterschiedlichen Typen.

Die Durchführung

Man startet Ubuntu.

Nun startet man eine Konsole. (Anwendungen->Zubehört-Terminal)

Befehle werden in diesem Text so gekennzeichnet:

echo bla

Erstmal root werden, man muss eh für den ganzen Durchlauf als root arbeiten…

sudo bash

Image

Nun muss man das Dateisystem wo sich der gesicherte Truecrypt-Volume-Header befindet und auf dem die Sicherung gespeichert werden soll mounten (siehe google…)

mkdir /media/windows

mount.ntfs-3g /dev/sda1 /media/windows

Als nächstes sichert man die kaputte Festplatte

ddrescue –r 3 /dev/sdb /media/windows/sdb.image \ /media/windows/sdb.log

Das Image als Device nutzen

losetup –d /dev/loop1
losetup /dev/loop1 /media/windows/sdb.image

Truecrypt installieren:

wget http://www.truecrypt.org/downloads/truecrypt-5.1a-ubuntu-x86.tar.gz

tar xvzf truecrypt-5.1a-ubuntu-x86.tar.gz

cd truecrypt-5.1a

dpkg –i truecrypt_5.1a-0_i683.deb

Nun trennen sich die Wege für die verschiedenen Partitionstypen.

Ich arbeite mich von einfach nach schwer durch.

Daher zuerst das gerätbasierte Volume:

Truecrypt-Volume retten - Gerätebasiert

Das gerätbasierte Volume ist wie schon gesagt das Pflegeleichteste.

Um das Gerät wieder wie gewohnt als Volume nutzen zu können, muss man nur folgendes machen:

Man startet Truecrypt (ALT+F2 drücken, truecrypt eintippen, ENTER drücken)

Man klickt Select File und wählt das Image aus. (In meinem Fall /media/windows/sdb.image)

Mit Volume Tools->Restore Volume Header->Auswahl des gesicherten Truecrypt-Headers->Restore header of standard Volume stellt man den Header wieder her.

Nun kann man mit Mount das Volume mounten. Sollte Truecrypt meckern, dass es das Dateisystem nicht kennt, muss man unter Options->Do not mount anklicken.

Ist das Volume jetzt gemountet / gemapped kann man mit der Wiederherstellung der Daten beginnen.

Truecrypt-Volume retten – Partitionsbasiert

Der einfache Fall: Die gesamte Festplatte wurde als eine Partition genutzt.

Die Festplatte sah also in etwa so aus:

Dann reicht es folgendes zu machen:

losetup –o 32256 /dev/loop2 /dev/loop1

32256 ist hier das Offset der ersten Partition.

Dann ist die Partition wieder verfügbar und man kann mit der Header-Wiederherstellung beginnen.

Sollte man Truecrypt neben anderen Partitionen gehabt haben, ist es schwerer die Truecrypt-Partition zu finden.

Es gibt im Netz einige Tutorials zum Wiederherstellen der Partitionstabelle.

Hier deshalb nur ein knappes Beispiel:

Angenommen die Festplatte hat vorher so ausgesehen:

Man kann dann raten wo sich die Truecrypt-Partition befunden hat:

Wie man sieht hat das Tool gpart die beiden normalen Partitionen und den Beginn der erweiterten Partition gefunden. Die Truecrypt-Partition kann man so aber nicht finden.

Hat man jetzt nur eine Truecrypt-Partition und kann sich erinnern, wie die Festplatte ungefähr aufgebaut war, kann man die Partitionstabelle per Hand wiederherstellen.

Sollte man allerdings mehrere Truecrypt-Partitionen nebeneinander haben, geht die Wiederherstellungswahrscheinlichkeit gegen null, da diese Programme die Truecrypt-Partitionen nicht finden können. Es bleibt dann nur der sehr mühsame Weg der händischen Datenwiederherstellung. (Siehe ultimative Möglichkeit)

Header-Wiederherstellung

Um die Partition wieder wie gewohnt als Volume nutzen zu können, muss man nur folgendes machen:

Man startet Truecrypt (ALT+F2 drücken, truecrypt eintippen, ENTER drücken)

Man klickt Select File und wählt das entsprechende Gerät aus.

Im Falle der Einpartitionen Festplatte wäre das /dev/loop2.

Mit Volume Tools->Restore Volume Header->Auswahl des gesicherten Truecrypt-Headers->Restore header of standard Volume stellt man den Header wieder her.

Nun kann man mit Mount das Volume mounten. Sollte Truecrypt meckern, dass es das Dateisystem nicht kennt, muss man unter Options->Do not mount anklicken.

Ist das Volume jetzt gemountet /gemapped kann man mit der Wiederherstellung der Daten beginnen.

Truecrypt-Volume retten - Dateibasiert

Angenommen die Festplatte sah ursprünglich so aus:

Und die Truecrypt-Datei befand sich auf dem ersten Volume.

Hat man ein Truecrypt-Volume als Datei erstellt, gibt es eigentlich nur zwei Varianten. Entweder man kann das Dateisystem noch benutzen oder nicht.

Zu erst muss man dazu schauen, ob die Partitionstabelle noch existiert:

mmls /dev/loop1 –b

Sollte jetzt eine Fehlermeldung kommen, muss erst die Partitionstabelle wiederhergestellt werden:

testdisk /dev/loop1

Nun muss nach

mmls /dev/loop1 –b

die korrekte Partitionstabelle angezeigt werden.

Jetzt muss man die Partition mounten in der das Dateisystem ist auf dem das Truecrypt-Volume gespeichert ist:

losetup –o 32256 /dev/loop2 /dev/loop1

Um das korrekte Offset zu erhalten, rechnet man den Startwert der Partition mal 512.

Kann man das Dateisystem mit

mount /dev/loop2 /mnt

kann man die Datei wie gewohnt mit Truecrypt mounten. Im Zweifel muss man noch den Header wieder herstellen.

Für den Fall das man das Dateisystem nicht mounten kann, muss man zuerst die Daten des Systems wiederherstellen. (Siehe dazu andere Anleitungen)

Truecrypt-Volume retten – Die ultimative Möglichkeit

Es gibt den Fall (bei partitions- und dateibasierten Volumes), da kann man einfach das Volume nicht mehr in seiner ursprünglichen Form wiederherstellen.

Etwa durch eine starke Fragmentierung des Volumes oder man ist nicht dazu in der Lage die Partition wiederherzustellen in der sich das Truecrypt-Volume befand.

Dann bleibt nur eins, man stellt alle mit gesicherten Volume-Header lesbaren Daten wieder her.

Um dieses tun zu können, betrachtet man das gesamte Image als Festplatte und stellt den Header direkt in das Image wieder her. (Man stellt den Header genauso wieder her, wie man es bei dem Gerätebasierten Volume gemacht hätte.)

Öffnet man dann das Volume werden alle Daten die man liest durch die Entschlüsselungs-Funktion von Truecrypt gejagt.

Dadurch kann man dann ein Datenwiederherstellungsprogramm nach rettbaren Sachen suchen lassen. Da die Daten transparent (für das Programm unsichtbar) entschlüsselt werden, funktioniert es normal. Die Daten die vorher innerhalb des Volumes waren sind nun im „Klartext“ vorhanden und das Programm kann die Daten extrahieren.

Theoretisch könnte man nun noch ein Image von den entschlüsselten Daten machen und diese z.B.: bei Ontrack einschicken.

Die Wiederherstellungsmöglichkeiten die man bei dieser Methode hat, sind begrenzt. Es entspricht in etwa dem schlimmsten Fall des Datenverlusts. Zwar kann man alle noch lesbaren Daten wiederherstellen, Textdateien sogar mit hoher Wahrscheinlichkeit, aber Daten wie Videos oder Musik sind in der Regel schwer wiederzufinden, da sich ihr Inhalt kaum von dem nun unlesbaren Kauderwelsch der (im Original unverschlüsselten) anderen (im Original verschlüsselten) Daten unterscheidet.

Aber das gleiche Problem hat man, wenn man sich das Dateisystem komplett zerschossen hat.

Die Daten wiederherstellen

Man kann nachdem man ein Volume wieder lesen kann so ziemlich alle normalen Wiederherstellungsprogramme / Möglichkeiten nutzen. Da sich die Programme nicht anders verhalten, wenn man sie auf einem Truecrypt-Volume benutzt. (Es ist dem Programm egal ob es auf einem loop-Device oder direkt auf einer Festplatte arbeitet. Da alle Programme auf dem Level von Bytes arbeiten ist es im Kern sogar egal, auf was die zu untersuchenden Daten gespeichert sind. (CD / USB-Stick / Netzwerk / Große Käseplatte)

Einen Blick Wert ist dieses Howto:

https://help.ubuntu.com/community/DataRecovery

Fazit

Ich hoffe ich konnte zeigen, dass es nicht unmöglich ist Daten von einem Truecrypt-Volume wiederherzustellen und wie der ungefähre weg für die Wiederherstellung aussieht. (Sofern man Header und Passwort hat.)

Um eine Schritt-für-Schritt Anleitung für die Datenrettung zu erstellen, müsste ich allerdings auch noch das gesamte Feld der Computer Forensic erklären, was ich nicht will und kann. (Dieser kurze Text hat schon 10 Seiten….)

Der Schlüssel zum Wiederherstellen liegt im Besitz eines intakten Volumeheaders. Hat man diesen, ist die restliche Wiederherstellung nicht anders als bei „normalen“ Rettungen auch.

Also Leute, immer schön den Volume-Header und im Falle von partitionsbasierten Volumes auch die Partitionstabelle sichern. :)

Ich habe und behalte an diesem Text alle Urheberrechte.

Ich stelle ihn unter der

„Creative Commons Namensnennung-Keine kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen 2.0 Deutschland Lizenz“ zur allgemeinen Verfügung.

Creative Commons License
Dieser Werk ist unter einer Creative Commons-Lizenz lizenziert.

Entry Filed under: Software, Technik. Schlagworte: , , .

Leave a Comment

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed


Neueste Artikel

Top-Beiträge

Kategorien

Archive

Links

Schlagworte