Skip to content

About

Recovery Tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

recovery.py — VMDK Ransomware Recovery Tool

Ein Python-Tool zur Wiederherstellung von Daten aus mit Partial-Encryption-Ransomware verschlüsselten Disk-Images (z. B. VMDK, .img). Das Tool erkennt verschlüsselte Bereiche automatisch per Entropie-Analyse, lokalisiert Partitionen aus dem Backup-GPT oder per Signatur-Scan und extrahiert alle wiederherstellbaren Dateien.


Funktionsweise

Ransomware, die nach dem Partial-Encryption-Prinzip arbeitet (verschlüsselt nur Kopf und Ende der Disk), hinterlässt den mittleren Datenbereich im Klartext. Dieses Tool macht sich genau das zunutze:

HEAD    [verschlüsselt]
MIDDLE  [Klartext  ← Daten werden hier extrahiert]
TAIL    [verschlüsselt]

Pipeline (3 Schritte)

Schritt Beschreibung
Step 1 Entropie-Scan — Grenzen des verschlüsselten Bereichs erkennen
Step 2 Partitions-Scan — Backup-GPT lesen oder NTFS/FAT32-Signaturen suchen
Step 3 Datei-Extraktion — tsk_recover pro Partition in eigene Ausgabeordner

Zusätzlich gibt es zwei optionale Modi:

  • --identify — Dateitypen wiederhergestellter Dateien erkennen (anhand Magic Bytes)
  • --carve — Dateien direkt aus dem Raw-Image herausschneiden (ohne Dateisystem)

Voraussetzungen

System-Tools

sudo apt install sleuthkit       # tsk_recover (Pflicht für Steps 1–3)
sudo apt install foremost        # optional, verbessert --carve deutlich

Python

Python 3.7 oder neuer, keine externen Pakete erforderlich (nur Standardbibliothek).


Installation

git clone <repo-url>
cd recovery
# optional: virtuelle Umgebung
python3 -m venv .venv && source .venv/bin/activate

Verwendung

Vollständige Wiederherstellung (Schritte 1–3)

python3 recovery.py <disk.img>
python3 recovery.py <disk.img> -o ./mein_output

Ergebnis: Für jede gefundene Partition wird ein Unterordner im Ausgabeverzeichnis erstellt und alle wiederherstellbaren Dateien werden darin gespeichert.

Nur Analyse, keine Extraktion

python3 recovery.py <disk.img> --scan-only

Gibt Entropie-Grenzen und gefundene Partitionen aus — ohne Dateien zu schreiben. Nützlich zur schnellen Lageeinschätzung.

Dateitypen erkennen (nach Wiederherstellung)

python3 recovery.py --identify ./recovery_output
python3 recovery.py --identify ./recovery_output --rename
  • Ohne --rename: Zeigt nur an, welche Dateien eine falsche oder fehlende Erweiterung haben.
  • Mit --rename: Benennt die Dateien automatisch auf die korrekte Erweiterung um.

Dateien direkt aus Raw-Image carven

python3 recovery.py --carve <disk.img>
python3 recovery.py --carve <disk.img> -o ./carved_output

Kein Dateisystem notwendig. Nutzt foremost wenn installiert, sonst den eingebauten Python-Carver.


Alle Parameter im Überblick

Parameter Beschreibung
disk Pfad zum verschlüsselten Disk-Image (VMDK, IMG, …)
-o, --output Ausgabeverzeichnis (Standard: <diskname>_recovery/)
--scan-only Nur Analyse (Entropie + Partitionen), keine Extraktion
--identify <DIR> Dateitypen in einem Verzeichnis erkennen
--rename In Kombination mit --identify: Dateien umbenennen
--carve <DISK> Dateien direkt aus Raw-Image carven

Erkannte Dateitypen

Beim --identify-Modus

Format Erkennung
PDF Magic Bytes %PDF
DOCX / XLSX / PPTX ZIP + interne Pfade (word/, xl/, ppt/)
DOC / XLS / PPT OLE2-Header + Stream-Namen
JPEG, PNG, GIF, BMP Standard Magic Bytes
ZIP, 7z, RAR, GZIP Magic Bytes
EXE / ELF MZ / \x7fELF
SQLite SQLite format 3
XML / HTML Textanteil + Tag-Erkennung
Plaintext Hoher Anteil druckbarer Zeichen

Beim --carve-Modus

PDF, ZIP (inkl. Office Open XML), OLE2, JPEG, PNG, GIF, SQLite


Ausgabe-Beispiel

================================================================
  VMDK RANSOMWARE RECOVERY
================================================================
  Disk   : disk.vmdk
  Size   : 128.00 GB  (137,438,953,472 bytes)
  Output : ./disk_recovery

  ── Entropy Scan ────────────────────────────────────────────
  HEAD   0x00000000 – 0x007fffff   (    8,388,608 B)   ENCRYPTED
  MIDDLE 0x00800000 – 0xf77fffff   (  125,829,120 B)   PLAINTEXT
  TAIL   0xf7800000 – 0xffffffff   (    8,388,608 B)   ENCRYPTED
  Pattern: partial-encryption ransomware CONFIRMED

  ── Partition Detection ─────────────────────────────────────
  Source : backup GPT  (2 partition(s) found)
    LBA        2048 –    1050623  (   512.0 MB)  EFI System
    LBA     1050624 – 268433407  (  127.5 GB)  Basic Data

  ── File Extraction ─────────────────────────────────────────
  ...
  ── Summary ─────────────────────────────────────────────────
  ./disk_recovery/Basic_Data  —  24,831 files  (98.3 GB)

  Next steps:
    Identify unknown filetypes : python3 recovery.py --identify ./disk_recovery
    Carve additional files     : python3 recovery.py --carve disk.vmdk -o ./disk_recovery/carved

Typischer Workflow

# 1. Lageeinschätzung
python3 recovery.py disk.vmdk --scan-only

# 2. Vollständige Extraktion
python3 recovery.py disk.vmdk -o ./output

# 3. Dateitypen prüfen und Erweiterungen reparieren
python3 recovery.py --identify ./output --rename

# 4. Zusätzlich carven (falls Dateisystem beschädigt)
python3 recovery.py --carve disk.vmdk -o ./output/carved

Hinweise & Einschränkungen

  • Das Tool funktioniert ausschließlich bei Partial-Encryption-Ransomware (verschlüsselt nur Anfang und Ende). Bei vollständiger Verschlüsselung gibt es keinen wiederherstellbaren Klartextbereich.
  • tsk_recover setzt ein lesbares NTFS- oder FAT32-Dateisystem voraus. Ist das Dateisystem selbst beschädigt, hilft --carve als Fallback.
  • Der Carver arbeitet sektorgranular (512 Byte). Fragmentierte Dateien können unvollständig sein.
  • Das Tool verändert das Quell-Image nie — alle Operationen sind lesend.

Lizenz

Dieses Tool ist für den privaten und forensischen Einsatz gedacht. Eine Weitergabe oder Nutzung in kommerziellen Produkten bedarf der Genehmigung des Autors.

About

Recovery Tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages