← Zurück zum Blog

Gelöschte Dateien von NTFS mit der MFT wiederherstellen

· 7 Min. Lesezeit

Gelöschte Dateien auf NTFS wiederherzustellen, läuft auf zwei Uhren und eine kurze Regel hinaus. Die Uhren: wie lange, bis der MFT-Datensatzplatz wiederverwendet wird, und wie lange, bis die Datencluster überschrieben werden. Die Regel: Schreibe nicht auf das Volume, solange eine der Uhren für dich noch nützlich ist.

Das ist der Wiederherstellungs-Workflow, den ich tatsächlich laufen lasse, wenn mir jemand ein NTFS-Volume reicht und sagt: "Sie haben X gelöscht, können wir es zurückbekommen?". Er greift auf dieselbe Werkzeugkiste zu, unabhängig davon, ob X eine einzelne Datei, ein Verzeichnisbaum oder der Inhalt eines von SDelete berührten Verzeichnisses ist.

Warum Löschen nicht löscht

Wenn Windows eine Datei von einem NTFS-Volume löscht:

  1. Das IN_USE-Flag (Bit 0 in den Datensatzkopf-Flags an Offset 0x16) wird gelöscht.
  2. Die Cluster, die die Daten hielten, werden in $Bitmap als frei markiert.
  3. Der Eintrag im $INDEX_ROOT des übergeordneten Verzeichnisses wird entfernt.

Was nicht passiert: Nichts überschreibt den Datensatz oder die Cluster. Sie werden als verfügbar für die nächste Allokation markiert. Bis etwas anderes sie beansprucht, ist die Datei wiederherstellbar. Siehe was beim Löschen erhalten bleibt für die Felddetails.

Die MFT-Slot-Wiederherstellungsuhr und die Datencluster-Wiederherstellungsuhr sind unabhängig. Du kannst einen Datensatz haben, der wiederverwendet wurde (der Slot ist jetzt eine andere Datei), aber dessen Datencluster noch die alten Bytes halten. Du kannst einen intakten gelöschten Datensatz haben, dessen Cluster einer neuen Datei zugewiesen wurden. Die beiden Situationen erfordern unterschiedliche Wiederherstellungsstrategien.

Schritt 1: Aufhören, auf das Volume zu schreiben

Jeder Schreibvorgang, den du auf dem Volume machst, riskiert die Wiederverwendung des Slots oder der Cluster eines gelöschten Datensatzes. Wenn die Datei wichtig ist:

  • Stoppe die Anwendung, die sie angefasst hat. War es eine Datenbank, stoppe die Engine. War es ein Dokument, schließe den Editor.
  • Wenn die Datei auf dem Systemlaufwerk lebte und das System noch läuft, schreibt das OS selbst ständig (Paging, Prefetch, Registry, Event-Logs). Fahre herunter oder boote von externen Medien. Ein laufendes System verliert wiederherstellbaren Platz pro Sekunde.
  • Bei einem externen Laufwerk unmounte sofort. Unter Windows auswerfen; unter Linux umount.

Das ist der Schritt, den Leute überspringen, wenn sie denken, die Wiederherstellung wird "einfach". Die Hälfte der gescheiterten Wiederherstellungsfälle, die ich gesehen habe, scheiterten in diesem Schritt.

Schritt 2: Image die Platte

Arbeite an einer Kopie, nie am Original. Die Standardoptionen:

  • FTK Imager: kostenlos, GUI, produziert .dd- oder .E01-Images. Hashe die Quelle während des Lesens.
  • dd unter Linux: dd if=/dev/sdX of=disk.img bs=4M conv=noerror,sync status=progress. Schnell bei gesunden Platten.
  • ddrescue: langsamer, aber toleriert Lesefehler bei versagenden Platten. Die richtige Wahl, wenn die Platte das Problem ist (klickend, langsame Reads, SMART-Warnungen).

Hashe das Image (SHA-256) sofort nach der Akquise. Jeder spätere Schritt arbeitet am Image, nie am Original.

Schritt 3: Den richtigen Wiederherstellungsansatz wählen

Der Ansatz hängt davon ab, was noch intakt ist.

MFT-Replay, wenn der Datensatz der gelöschten Datei noch in der Tabelle ist. Parse $MFT mit einem Tool, das gelöschte Datensätze auflistet. Name, Zeitstempel, übergeordnetes Verzeichnis und (bei kleinen Dateien) Daten der Datei sind aus dem Datensatz wiederherstellbar. Bei nicht-residenten Dateien zeigt die Runliste weiterhin auf die ursprünglichen Cluster; wurden diese Cluster noch nicht überschrieben, extrahiert icat oder Äquivalent die Daten.

  • MFTECmd listet gelöschte Datensätze auf und markiert residente Daten.
  • Der Browser-Parser filtert mit einem Klick auf gelöschte Einträge und zeigt residente Daten inline.
  • Sleuth Kits fls -d -m listet gelöschte Einträge auf; icat -r stellt deren Daten wieder her, wenn möglich.

Dateisystem-bewusste Recovery-Tools, wenn du eine GUI-gesteuerte selektive Wiederherstellung aus einem Volume oder Image willst:

  • R-Studio: kommerziell, die Wahl des Analysten für NTFS. Bewältigt komplexen Schaden, stellt aus formatierten Volumes wieder her, versteht EFS und BitLocker (mit Schlüssel).
  • TestDisk + PhotoRec: kostenlos, reif, gut bei Partitionsschäden. PhotoRec ist Signatur-Carving statt dateisystem-bewusst, sodass es Dateinamen verliert.
  • Recuva: Konsumenten-Klasse. Okay für einfache Einzeldatei-Einzelplatten-Wiederherstellungen auf unkomplizierten Volumes. Nichts, was ich für eine Untersuchung verwenden würde.

Signatur-Carving, wenn die MFT weg ist oder der Datensatz wiederverwendet wurde. scalpel, foremost und PhotoRec scannen das rohe Image nach bekannten Dateisignaturen (JPEG FF D8 FF, PNG 89 50 4E 47, ZIP 50 4B 03 04, PDF 25 50 44 46) und setzen zusammen, was sie finden. Gecarvte Dateien verlieren ihre Dateinamen und Zeitstempel; die lebten in der MFT. Die Bytes selbst kommen zurück, modulo Fragmentierung.

Bei fragmentierten Dateien hat Signatur-Carving Schwierigkeiten. Die Carver verketten aufeinanderfolgende Cluster, die richtig aussehen, aber wenn die Datei über die Platte verstreut war, können sie sie nicht wieder zusammensetzen. NTFS-bewusstes MFT-Replay handhabt Fragmentierung korrekt, weil die Runliste jedes Fragment explizit beschreibt.

Schritt 4: Wenn MFT-Recovery der einzige Weg ist

Kleine Dateien (unter ~700 Bytes $DATA) leben vollständig im MFT-Datensatz. Selbst wenn $Bitmap Dutzende Male überschrieben wurde, sitzen die residenten Bytes noch im Datensatz, bis der Slot wiederverwendet wird. Siehe residente Daten.

Für eine kleine Textdatei, eine kleine JSON-Konfig, ein PowerShell-Skript, einen Registry-Export, ein kleines Zertifikat oder eine .lnk-Datei ist der Browser-Parser oft der schnellste Weg: lege die extrahierte $MFT ab, filtere auf gelöschte Einträge, suche Datensätze mit residentem $DATA und kopiere die Bytes wieder heraus. Das funktioniert, wenn nichts anderes funktioniert, weil die Daten in erster Linie nie aus der MFT herauskamen.

Was wirklich nicht wiederherstellbar ist

Überschriebene Cluster. Moderne HDDs und SSDs bieten keinen realistischen Weg, Daten wiederherzustellen, die einmal überschrieben wurden. Die fantasievolle "Remanente Magnetisierung"-Wiederherstellung aus älterer Forensik-Literatur gilt nicht für Platten, die in diesem Jahrzehnt hergestellt wurden. Die Dichte ist zu hoch, die Kopfpositionierung zu präzise.

Von TRIM zurückgewonnene SSD-Blöcke. Sobald der SSD-Controller einen Block TRIM'd hat, wird der zugrunde liegende Flash während des Garbage Collection genullt. Die Daten sind weg, schnell. Das Fenster zwischen Löschen und TRIM-Abschluss auf modernem Windows ist höchstens Sekunden.

Verschlüsselte Volumes ohne den Schlüssel. BitLocker-, VeraCrypt- oder LUKS-verschlüsselte NTFS-Volumes sind ohne den Schlüssel nicht wiederherstellbar. Der Klartext hat die Platte überhaupt nie berührt.

Von einem kompetenten Wiper gewipte Dateien. sdelete -p 3 -z -s -q C:\target\* überschreibt die Cluster der Datei dreimal, nullt freien Platz und rekursiert. Die Wiederherstellung ist für Datencluster unmöglich; der MFT-Datensatz kann noch Metadaten und residente Daten enthalten, aber die substanziellen Dateiinhalte sind weg.

Residente Daten: der Fall, in dem die Physik auf deiner Seite ist

Der Fall residenter Daten überrascht Junior-Analysten immer wieder. Dateien unter der Schwelle sitzen inline im MFT-Datensatz. Der Datensatz besteht fort, bis der Slot wiederverwendet wird. Der Datenbereich ist irrelevant; selbst wenn $Bitmap tausendmal überschrieben wurde, sind die residenten Bytes noch da.

Ich habe einmal eine 400-Byte-.config-Datei von einer Festplatte wiederhergestellt, die nach der Löschung weitere zwei Wochen genutzt und größtenteils überschrieben worden war. Der MFT-Slot oberhalb von Datensatz 230.000 war nicht wiederverwendet worden. Die ganze Datei saß dort, resident, im Datensatz. Fünf Minuten Arbeit.

Deshalb versuche ich immer MFT-First-Recovery für kleine Dateien, bevor ich den Datenbereich anfasse.

Häufig gestellte Fragen

Wie lange bleiben gelöschte Dateien auf NTFS wiederherstellbar?

Bis der MFT-Slot wiederverwendet und die Datencluster überschrieben werden. Auf einem geschäftigen System sind das Stunden. Auf einem untätigen System können es Monate sein. Es gibt keinen festen Timer; es wird vom Allokationsdruck des Volumes getrieben.

Erschwert das Leeren des Papierkorbs die Wiederherstellung?

Nein. Der Papierkorb ist ein verstecktes Verzeichnis ($Recycle.Bin) auf jedem Volume. Sein Leeren löscht die Dateien im normalen NTFS-Sinn; dieselben Wiederherstellungstechniken gelten. Vor dem Leeren ist die Datei eine normale NTFS-Datei unter \$Recycle.Bin\<SID>\ mit einem $R<ID>-Namen; der $I<ID>-Begleiter speichert den ursprünglichen Pfad.

Kann ich mit del /F oder Shift+Delete gelöschte Dateien wiederherstellen?

Ja. Diese überspringen den Papierkorb, löschen aber auf die gleiche Weise (IN_USE gelöscht, Cluster freigegeben). Der MFT-Datensatz ist immer noch da, bis er wiederverwendet wird.

Kann ich Dateien von einer formatierten NTFS-Platte wiederherstellen?

Eine Schnellformatierung schreibt nur den Bootsektor und eine frische $MFT neu. Die meisten der alten Datencluster sind intakt und viele der vorherigen MFT-Datensätze (NTFS verwendet denselben Startoffset wieder) sind über Signatur-Carving nach FILE-Headern über das rohe Volume wiederherstellbar. Eine vollständige Formatierung nullt das Volume; diese Daten sind weg.

Was ist mit einer Datei, die vor der Löschung umbenannt wurde?

Der MFT-Datensatz nach der Löschung zeigt den endgültigen Namen (den nach dem Umbenennen). Das USN-Journal bewahrt das Paar RENAME_OLD_NAME / RENAME_NEW_NAME, sodass du den ursprünglichen Namen von dort wiederherstellen kannst.

Weiterführende Literatur

  • Brian Carrier, File System Forensic Analysis. Kapitel über Löschsemantik und Wiederherstellung auf NTFS.
  • Die Dokumentation von fls -d und icat -r des Sleuth Kit. Kanonischer Kommandozeilen-Workflow für die Aufzählung gelöschter Dateien und Datenwiederherstellung.
  • PhotoRec-Dokumentation. Die Referenz für Signatur-Carving, wenn die MFT nicht mehr das richtige Tool ist.

Externe Ressourcen