Master Edition 2025

Forensic
Master Edition

Das Manifest der Datensortierung — Ein vollständiges Handbuch für digitale Forensik, Datenrettung und systematische Datenverarbeitung

150+ Seiten
33 Kapitel
100+ Befehle
8 Teile

Dieses Werk ist ein praxisorientiertes Meisterhandbuch, das einen gesamten forensischen Workflow abbildet: von der ersten Berührung eines defekten Datenträgers über das sichere Imaging, die systematische MIME-Analyse, Kodierungsreparaturen bis zur vollautomatischen Sortierung von Millionen Dateien.

Ziel ist es, einen realen forensischen Workflow reproduzierbar, nachvollziehbar und gerichtsfest abzubilden — basierend auf internationalen Standards wie ACPO, RFC 3227, NIST 800-86 und ISO/IEC 27037.

Teil I

Fundamente der digitalen Forensik

Die theoretischen und rechtlichen Grundlagen, auf denen jede seriöse forensische Untersuchung aufbaut.

Kapitel 1

Einführung in die digitale Forensik

Digitale Forensik ist die systematische Untersuchung digitaler Geräte und Datenträger zur Gewinnung, Sicherung, Analyse und Interpretation von Informationen.

1.1 Was ist digitale Forensik?

Digitale Forensik ist die Wissenschaft der Beweissicherung, Analyse und Rekonstruktion digitaler Informationen. Sie dient nicht nur der Strafverfolgung, sondern auch der Datenrettung, der Incident Response und der technischen Rekonstruktion vergangener Vorgänge.

Der Kern besteht aus vier Grundaufgaben:

Die vier Säulen der digitalen Forensik
  1. Identifizieren — Relevante Daten erkennen und lokalisieren
  2. Sichern — Daten ohne jede Veränderung kopieren und bewahren
  3. Analysieren — Mit reproduzierbaren Methoden untersuchen
  4. Dokumentieren — Für technische oder juristische Bewertung aufbereiten

1.2 Anwendungsgebiete

Digitale Forensik wird in vielfältigen Kontexten eingesetzt:

  • Datenrettung — Wiederherstellung von Daten nach Hardware-Ausfällen
  • Incident Response — Reaktion auf IT-Sicherheitsvorfälle
  • Cybercrime-Untersuchungen — Strafverfolgung digitaler Kriminalität
  • Systemrekonstruktion — Wiederaufbau beschädigter IT-Umgebungen
  • Wallet-Recovery — Wiedererlangung von Krypto-Wallets, Seeds, Zugangsdaten
  • Datensortierung — Umgang mit großen heterogenen Datenbeständen
  • Digitales Erbe — Datenwiederherstellung für Hinterbliebene

1.3 Was dieses Buch behandelt

Dieses Werk bildet einen vollständigen forensischen Workflow ab — von der ersten Berührung eines defekten Datenträgers bis zum finalen Abschlussbericht:

  • Arbeiten nach internationalen Standards (ACPO, RFC 3227, NIST 800-86)
  • Physische und logische Analyse von Datenträgern
  • Imaging mit ddrescue und Hash-Validierung
  • Arbeiten ausschließlich am forensischen Abbild
  • Tiefgreifende MIME-Analyse
  • Kodierungsreparaturen (UTF-8, Latin-1, MacRoman, NFC)
  • Vollautomatische Sortierlogik für Millionen Dateien
  • Erstellung vollständiger Abschlussberichte

1.4 Ethische Grenzen

Was dieses Buch NICHT tut
  • Keine maliziösen Techniken
  • Keine illegalen oder unethischen Anwendungen
  • Keine Hacks, Exploits oder Angriffswerkzeuge

Dieses Buch dient dazu, Wissen zu bewahren, Wiederherstellung zu ermöglichen und technische Wahrheit sichtbar zu machen.

1.5 Zentrale Risiken

Digitale Forensik ist hochriskant, wenn Fehler gemacht werden. Die Konsequenzen können irreversibel sein:

  • Daten können irreversibel überschrieben werden
  • Dateisysteme können beschädigt werden
  • Hashwerte können ungültig werden
  • Metadaten können manipuliert wirken
  • Juristische Verwertbarkeit kann verloren gehen
Kernaussage

Forensische Standards und korrektes Vorgehen sind nicht optional — sie sind unverzichtbar.

Kapitel 2

Internationale Standards & Leitlinien

Digitale Forensik ist nur dann seriös und belastbar, wenn sie sich an verbindliche, international etablierte Regeln hält.

Diese Regeln sichern vier fundamentale Eigenschaften:

  • Integrität — Daten bleiben unverändert
  • Reproduzierbarkeit — Ergebnisse sind wiederholbar
  • Transparenz — Jeder Schritt ist nachvollziehbar
  • Nachvollziehbarkeit — Die Beweiskette ist lückenlos

2.1 ACPO-Prinzipien (UK Home Office)

Die Association of Chief Police Officers (ACPO) definierte grundlegende Leitlinien für digitale Beweissicherung. Diese vier Kernprinzipien bilden die Basis jedes seriösen Workflows:

Die vier ACPO-Prinzipien
  1. Keine Veränderung
    Kein Experte darf Daten verändern, die später als Beweis dienen könnten.
  2. Dokumentierte Ausnahmen
    Wenn eine Veränderung unvermeidbar ist, muss sie erklärbar, nachvollziehbar und dokumentiert sein.
  3. Vollständige Transparenz
    Jede Handlung muss vollständig und transparent nachvollziehbar sein.
  4. Persönliche Verantwortung
    Die verantwortliche Person trägt für die Einhaltung der Forensik-Regeln die volle Verantwortung.

2.2 RFC 3227 — Incident Response Evidence Handling

RFC 3227 definiert die Reihenfolge der Beweissicherung, also die Priorität, in der Daten abgegriffen werden müssen:

Priorität Datentyp Volatilität Beispiele
1 Flüchtige Daten Sekunden–Minuten RAM, Netzwerkstates, Prozesslisten
2 Temporäre Dateien Minuten–Stunden Caches, Swap, temp-Verzeichnisse
3 Persistente Dateien Stabil Dokumente, Datenbanken, Logs
4 Backups & Archive Sehr stabil Externe Backups, Offline-Archive
Für Datenträgerforensik bedeutet das:
  1. Originalmedium nie verändern
  2. Immer zuerst ein Image erstellen
  3. Nur das Image analysieren

2.3 NIST Special Publication 800-86

Das US National Institute of Standards and Technology definiert in SP 800-86 den vollständigen Rahmen für forensische Untersuchungen:

  • Rollen — Wer ist wofür verantwortlich?
  • Arbeitsabläufe — Wie ist der Prozess strukturiert?
  • Analyseprozess — Welche Schritte sind notwendig?
  • Reporting — Wie werden Ergebnisse dokumentiert?
  • Hashvalidierung — Wie wird Integrität sichergestellt?
  • Dokumentationsstruktur — Was muss festgehalten werden?

Dieses Buch folgt weitgehend der NIST-Methodik.

2.4 ISO/IEC 27037

Diese internationale Norm beschreibt:

  • Identifikation digitaler Beweise
  • Sicherstellung und Handhabung
  • Dokumentationsanforderungen
  • Umgang mit verschiedenen Speichergeräten

Sie bildet den internationalen Rahmen der Beweiserhebung.

Zusammenfassung der Standards

Alle genannten Standards haben einen gemeinsamen Kern: Integrität bewahren, Prozesse dokumentieren, Ergebnisse reproduzierbar machen.

Kapitel 3

Forensische Grundprinzipien & Arbeitsregeln

Es gibt nur wenige Grundprinzipien — aber sie sind absolut entscheidend. Wenn eines davon verletzt wird, verliert der gesamte Prozess seine Glaubwürdigkeit.

3.1 Niemals am Originalmedium arbeiten

Der wichtigste Grundsatz

Das Original wird niemals verändert.
Jede Analyse erfolgt nur auf einem bitgenauen Abbild.

Gründe für diese strikte Regel:

  • Jeder Zugriff ändert Access-Timestamps
  • Das Betriebssystem schreibt versteckte Metadaten
  • Indexer und Dienste könnten Dateien verändern
  • Beschädigte Medien können durch Zugriffe weiter zerstört werden

3.2 Write-Blocker & Read-Only-Mount

Ein Write-Blocker verhindert hardwareseitig jede Schreiboperation. Dies ist der sicherste Ansatz für forensische Arbeit.

Softwareseitige Alternative (weniger sicher):

Read-Only Mount
mount -o ro /dev/sdX /mnt/original
Einschränkungen des Software-Ansatzes
  • Nicht jedes Betriebssystem hält sich 100% an Read-Only
  • Firmware kann im Hintergrund schreiben
  • SSDs führen Hintergrundprozesse aus (TRIM, Garbage Collection)

3.3 Dokumentation jeder Handlung

Eine forensische Dokumentation muss lückenlos sein. Jede Handlung, jeder Befehl, jede Beobachtung wird festgehalten:

Parameter Beispiel
Datum / Uhrzeit 2025-12-10 14:32:15 UTC
Gerät Samsung 870 EVO 1TB
Seriennummer S6VBNF123456Z
Beteiligte Personen Analyst: JJ
Hash vor Image SHA256: 7f83b1657...
Hash nach Image SHA256: 7f83b1657...
Tools und Versionen ddrescue 1.27, sha256sum 8.32
Vollständige Befehlshistorie In Log-Datei dokumentiert

3.4 Reproduzierbarkeit

Jede Analyse muss so durchführbar sein, dass ein zweiter Experte zum gleichen Ergebnis kommt. Das bedeutet:

  • Alle Schritte standardisieren
  • Alle Befehle exakt dokumentieren
  • Keine proprietären Blackbox-Tools verwenden
  • Open-Source-Werkzeuge bevorzugen

3.5 Integrität & Hashing

Algorithmus Länge Sicherheit Einsatzgebiet
MD5 128 Bit Schwach Nur Duplikaterkennung
SHA-1 160 Bit Gebrochen Nicht verwenden
SHA-256 256 Bit Stark Pflicht
SHA-512 512 Bit Sehr stark Optional, für Hochsicherheit
Best Practice

SHA-256 ist der Mindeststandard für forensische Integrität. MD5 wird nur noch zur schnellen Duplikaterkennung verwendet, niemals zur Integritätsprüfung.

Teil II

Hardware, Dateisysteme & Fehlerbilder

Ohne Verständnis der physikalischen und logischen Strukturen von Speichermedien ist jede forensische Analyse fehleranfällig.

Kapitel 4

Technische Grundlagen von Speichermedien

Digitale Forensik beginnt nicht mit Software, sondern mit dem physikalischen Medium. Ohne ein Verständnis darüber, wie Daten gespeichert, gelesen und verloren gehen, ist jede Analyse fehleranfällig.

4.1 Mechanische Festplatten (HDD)

Eine klassische HDD besteht aus folgenden Komponenten:

  • Platters — Mehrere Magnetscheiben, auf denen Daten gespeichert werden
  • Heads — Schreib-/Leseköpfe, die über den Plattern schweben
  • Aktuator — Der Arm, der die Heads positioniert
  • Spindel — Motor, der die Platters dreht
  • Controller — Mit eingebetteter Firmware

4.1.1 Strukturrelevante Eigenschaften

Eigenschaft Wert Forensische Relevanz
Sektorgröße 512B oder 4096B (AF) Beeinflusst Imaging-Effizienz
Zugriffszeit ~10ms (mechanisch) Langsamer als SSD
Typische Schäden Headcrash, Bad Sectors ddrescue-Strategien nötig
SMART-Indikatoren Reallocated, Pending, Uncorrectable Frühwarnsystem
Grundsatz für HDD-Forensik

Eine HDD muss im forensischen Prozess so wenig wie möglich belastet werden. Jeder zusätzliche Lesevorgang auf einem beschädigten Medium kann zu weiterem Datenverlust führen.

4.2 SSD & NVMe (Flashspeicher)

4.2.1 Architektur

  • NAND-Flash — Speicherzellen (SLC, MLC, TLC, QLC)
  • Controller — Verwaltet Wear-Leveling und Fehlerkorrektur
  • Bad Block Management — Automatisches Ausblenden defekter Bereiche
  • Garbage Collection — Hintergrundbereinigung
  • TRIM — Informiert SSD über gelöschte Blöcke

4.2.2 HDD vs. SSD im Vergleich

Thema HDD SSD
Lesegeschwindigkeit Linear, langsam Random ultra schnell
Schreibgeschwindigkeit Langsam Schnell, aber blockweise
Verschleiß Langsam, mechanisch Bestimmt durch Schreibzyklen
Defekterkennung Physische Sektoren sichtbar Unsichtbare Flash-Remaps
TRIM Irrelevant Zerstört forensische Reste
Kritische Gefahren bei SSDs
  • SSDs „verstecken" defekte Blöcke → ddrescue sieht sie nicht
  • TRIM löscht gelöschte Dateien irreversibel
  • Wear-Leveling zerstört 1:1-Korrelation von LBA zu physischem Speicher

Empfehlung: SSD niemals im Live-System mounten — immer sofort Imaging.

4.3 USB-Sticks, SD-Karten, Smartphones

Diese Medien teilen gemeinsame Eigenschaften:

  • Billige Controller mit hoher Fehlerquote
  • Unzuverlässige Firmware
  • Fragmentierung auf Blockebene
  • „Silent Corruption" — stilles Remappen von Blöcken

Besonderheiten:

  • USB-Sticks remappen Blöcke oft still (Silent Corruption)
  • SD-Karten sterben häufig schlagartig ohne Vorwarnung
  • Smartphones benötigen logische Extraktion (ADB, MTP) oder physische Dumping-Methoden

4.4 Firmware, Cache & versteckte Bereiche

4.4.1 HPA (Host Protected Area)

Ein versteckter Bereich auf HDDs, der vom normalen Betriebssystem nicht gesehen wird. Kann Daten verbergen und wird bei professionellem Imaging explizit geprüft.

4.4.2 DCO (Device Configuration Overlay)

Manipulierbar und gefährlich — kann Partitionstabellen verschleiern und die sichtbare Kapazität eines Laufwerks reduzieren.

Forensische Relevanz

Ein Angreifer kann Daten in HPA/DCO verstecken. Professionelle Imaging-Tools prüfen beide Bereiche explizit:

  • hdparm — Linux-Tool für HPA/DCO-Analyse
  • ddrescue mit HPA-Checks
  • Hardware-Imager (Tableau, Blazer)

4.5 Typische physische Fehlerbilder

Fehler Symptome Maßnahmen
Head crash Kratzgeräusche, sofortiger Datenverlust Sofort Strom aus, Reinraum nötig
Stiction Motor dreht nicht, Kopf klebt auf Platte Spezialwerkzeug, professionelle Hilfe
Magnetische Schwächung Bereiche schwer lesbar ddrescue mit Retry-Strategien
PCB-Schäden Laufwerk wird nicht erkannt PCB-Tausch mit ROM-Transfer
Slow responding sectors Lesezeit >500ms pro Sektor ddrescue Reverse-Pass
Kapitel 5

Partitionstabellen, Dateisysteme & Metadaten

Die logische Organisation von Daten auf einem Speichermedium ist ebenso wichtig wie die physikalische Struktur.

5.1 Partitionstabellen

5.1.1 MBR (Master Boot Record)

  • 512 Byte Gesamtgröße
  • Maximal 4 primäre Partitionen
  • Über 30 Jahre alt
  • Häufig korrupt durch Schreibfehler
MBR analysieren
fdisk -l /dev/sdX
testdisk /dev/sdX

5.1.2 GPT (GUID Partition Table)

  • Moderner Standard, seit ~2010
  • Redundante Partitionstabelle (Primary & Backup)
  • CRC32 Integritätsprüfung
  • Bis zu 128 Partitionen
Forensische Relevanz von GPT

Die Backup-GPT kann genutzt werden, wenn die primäre beschädigt ist. GPT ist generell robuster als MBR und bietet bessere Wiederherstellungsmöglichkeiten.

5.2 Dateisysteme im Überblick

5.2.1 NTFS (Windows)

Wichtigste Strukturen:

  • $MFT — Master File Table (zentrales Verzeichnis)
  • $Bitmap — Cluster-Belegung
  • $AttrDef — Attributdefinitionen
  • $LogFile — Transaktionsjournal
  • $BadClus — Defekte Cluster

NTFS ist sehr robust, aber bei Beschädigung extrem komplex zu reparieren.

5.2.2 ext4 (Linux)

  • Journaling für Crash-Recovery
  • Sehr robust und gut dokumentiert
  • Hervorragende Recovery-Möglichkeiten

5.2.3 exFAT

  • Oft bei USB-Sticks und SD-Karten
  • Empfindlich und wenig redundant
  • Minimale Metadaten → leicht zerstörbar

5.2.4 APFS (Apple)

  • Container-basierte Architektur
  • Snapshots und Klone
  • Standardmäßig verschlüsselt
  • Forensisch schwierig zu analysieren
Dateisystem Robustheit Recovery Metadaten Journal
NTFS Hoch Gut Sehr umfangreich Ja
ext4 Sehr hoch Sehr gut Solide Ja
exFAT Gering Schlecht Minimal Nein
FAT32 Gering Mittel Minimal Nein
APFS Hoch Mittel Sehr gut Ja

5.3 Metadaten — die versteckte Wahrheit

Daten bestehen zu einem erheblichen Teil aus Metadaten — Informationen über die eigentlichen Inhalte. Forensiker können daraus rekonstruieren:

  • Zeitlinien — Wann wurde was erstellt, geändert, zugegriffen?
  • Geräte — Mit welcher Kamera/welchem Gerät wurde aufgenommen?
  • Benutzeraktivitäten — Wer hat wann was getan?
  • Geokoordinaten — Wo wurde ein Foto aufgenommen?
  • Software — Welche Anwendung hat die Datei erstellt?

Metadatenquellen:

  • Dateisystem — ctime, mtime, atime
  • Dateiheader — Format-spezifische Informationen
  • EXIF — Bildinformationen
  • IPTC — Pressemetadaten
  • XMP — Adobe-Metadaten
  • PDF-Objekte — Dokumenteninformationen
  • Video-Container — MP4/MOV Atoms
Kapitel 6

Erkennen & Analysieren von Fehlern

Die Fähigkeit, Fehlerbilder zu verstehen, trennt Anfänger von Profis. Dieses Kapitel ist zentral für jeden forensischen Workflow.

6.1 SMART-Analyse im Detail

SMART (Self-Monitoring, Analysis and Reporting Technology) zeigt kritische Indikatoren:

Attribut Bedeutung Kritisch wenn
Reallocated_Sector_Ct Umgelagerte Sektoren > 0 (Warnung), > 50 (Gefahr)
Current_Pending_Sector Instabile Sektoren > 0
Offline_Uncorrectable Nicht korrigierbare Fehler > 0 (Tödlich)
UDMA_CRC_Error_Count Übertragungsfehler Steigend → Kabel prüfen
SMART-Status prüfen
smartctl -a /dev/sdX

Beispielausgabe einer sterbenden Festplatte:

SMART overall-health: FAILING
Reallocated_Sector_Ct = 138
Current_Pending_Sectors = 46
Offline_Uncorrectable = 12
Interpretation
  • Daten müssen sofort gerettet werden
  • ddrescue mit speziellen Parameter-Sets verwenden
  • Nicht weiter im Live-System benutzen

6.2 dmesg-Meldungen verstehen

Der Kernel-Log enthält wertvolle Informationen über Hardware-Probleme:

Meldung Bedeutung Maßnahme
I/O error Physisch beschädigt ddrescue verwenden
Buffer I/O error on device Sektor nicht lesbar Bereich isolieren
NTFS errors Beschädigte Struktur ntfsfix auf Image
EXT4-fs warning Korrupte Inodes fsck auf Image
reset SuperSpeed USB device Instabiles USB Kabel/Port wechseln
Kernel-Log live beobachten
dmesg -wH

6.3 Fehler beim Lesen & Schreiben

Fehlermeldung Tatsächliche Ursache
Input/output error Echte Hardware-Probleme
Permission denied Oft Kodierungsfehler im Dateinamen!
Function not implemented Dateisystem-Feature nicht unterstützt
Read-only filesystem Kernel hat Fehler erkannt
Invalid argument Falsche Parameter oder korrupte Metadaten
Wichtiger Hinweis

Permission denied kann täuschen! Oft liegt die Ursache in ungültigen Unicode-Sequenzen oder Sonderzeichen im Dateinamen, nicht in fehlenden Rechten.

6.4 Tools zur Fehlererkennung

Tool Zweck Befehl
ddrescue Imaging defekter Medien ddrescue -f -n /dev/sdX img.raw log
badblocks Defekte Blöcke finden badblocks -v /dev/sdX
fsck Dateisystem prüfen fsck -n /dev/sdX
testdisk Partitionen wiederherstellen testdisk /dev/sdX
smartctl SMART-Daten auslesen smartctl -a /dev/sdX
hexedit Rohdaten analysieren hexedit /dev/sdX
Teil III

Forensisch korrektes Imaging

Imaging ist der vollständigste, kritischste und irreversibelste Schritt im gesamten Forensik-Prozess. Fehler an dieser Stelle zerstören entweder Beweiswert oder Datenträger.

Kapitel 7

Vorbereitung der Imaging-Umgebung

Bevor überhaupt ddrescue gestartet wird, müssen Hardware, Software und Dokumentation vorbereitet werden.

7.1 Was ist ein forensisches Image?

Definition: Forensisches Image

Ein forensisches Image ist:

  • Eine bitgenaue Kopie der gesamten Quelle
  • Inklusive freier Bereiche
  • Inklusive gelöschter Dateien
  • Inklusive beschädigter Sektoren (sofern lesbar)
  • Inklusive unformatierter Bereiche
  • Inklusive partieller Partitionstabellen

Keine Datei-, sondern Blockkopie.

Eigenschaften eines professionellen Images:

  • 1:1 unveränderliche Kopie
  • Hash-identisch mit dem Original
  • Unabhängig vom Dateisystem
  • Enthält ALLE Spuren
  • Vollständig offline analysierbar
  • Rechtlich verwertbar

7.2 Hardware-Anforderungen

7.2.1 Stromversorgung

Eine instabile Stromversorgung erzeugt:

  • Head jumps bei HDDs
  • Schreibfehler im Cache
  • Abbrüche während des Imaging
  • Zerstörte Logfiles
Empfehlungen
  • Kein USB-Hub verwenden
  • Keine minderwertigen Netzteile
  • Kein gleichzeitiges Laden anderer Geräte am gleichen Port
  • Wenn möglich: direkt am Mainboard (USB 3.0 bevorzugt)

7.2.2 Kabel & Ports

Schlechte USB-Kabel verursachen:

  • CRC-Errors
  • Device Resets
  • Defekte Image-Fragmente
  • device descriptor read/64, error -71 Meldungen
Goldene Regel

Bei jedem unklaren Fehler IMMER zuerst das Kabel austauschen.

7.2.3 Write Blocker (Hardware)

Seriöse Forensik nutzt Hardware-Write-Blocker:

  • Tableau Forensic Imager
  • WiebeTech Forensic Write Blocker
  • Voom ShadowDrive

Software kann immer trickreich umgangen werden — Hardware nicht.

7.2.4 Software-Write-Block (Alternative)

Read-Only Mount
mount -o ro /dev/sdX /mnt/readonly
Einschränkungen
  • Nicht jedes OS hält sich 100% daran
  • Firmware kann im Hintergrund schreiben
  • SSDs führen Hintergrundprozesse aus, die Bereiche verändern

7.3 Dokumentation vorbereiten

Ein Imaging ohne Dokumentation ist wertlos. Zu dokumentieren:

Parameter Beispiel
Datum/Uhrzeit 2025-12-10 14:32 UTC
Bearbeiter JJ
Gerät Samsung 870 EVO 1TB
Seriennummer S6VBNF123456Z
Verbindung SATA → USB3.0 Adapter
Zustand Bootloop, klickende Geräusche
Hash Original SHA256: 7f83b1657...
Imaging-Tool ddrescue 1.27
Logdateien /evidence/logs/case001/

7.4 Dead Box vs. Live Imaging

Methode Beschreibung Empfehlung
Dead Box Gerät ausgeschaltet → Datenträger ausgebaut → Imaging ✓ Optimal
Live Imaging Gerät eingeschaltet → riskant → volatile Daten gehen verloren ⚠ Nur wenn zwingend nötig

7.5 Vorbereitung des Zielsystems

  • Zielplatte muss größer oder gleich der Quelle sein
  • Formatierung egal — ddrescue schreibt blockweise
  • SSD als Ziel nicht ideal (TRIM), Empfehlung: HDD
  • Logverzeichnis anlegen
  • LVM/RAID vorher erkennen
Kapitel 8

ddrescue Masterclass

ddrescue ist das mächtigste Tool für Datenrettung und Forensik. Wer ddrescue versteht, versteht defekte Medien.

8.1 Grundprinzipien von ddrescue

ddrescue arbeitet:

  • Intelligent — Erkennt Muster in defekten Bereichen
  • Adaptiv — Passt Strategie an Medium an
  • Blockbasiert — Arbeitet auf Sektorebene
  • Mit Logfile-Strategie — Unterbrechbar und fortsetzbar
  • Wiederholbar — Mehrere Durchläufe möglich
  • Nicht-destruktiv — Liest nur, schreibt nie auf die Quelle

ddrescue führt mehrere Durchläufe aus:

  1. Schnelles Lesen — Blocks, Trimming, Scraping
  2. Retry-Phasen — Wiederholte Leseversuche
  3. Fehlerbehandlung — Defekte Bereiche markieren
  4. Reverse Reading — Rückwärts lesen für Head-Alignment
  5. Feinrekonstruktion — Kleine Blöcke gezielt lesen

8.2 Aufbau einer ddrescue-Logdatei

Eine typische Logdatei enthält Segmente wie:

# Mapfile. Created by GNU ddrescue version 1.27
# Command line: ddrescue -f -n /dev/sdb image.raw image.log
# Start time:   2025-12-10 14:32:15
# Current time: 2025-12-10 15:47:23
# Finished
0x00000000  0x40000000  +
0x40000000  0x00002000  -
0x40002000  0x00001000  ?
0x40003000  0x3BFFD000  +
Symbol Bedeutung Aktion
+ Fehlerfrei gelesen Keine weitere Aktion nötig
- Definitiv defekt Bereich als verloren markieren
? Unklar, möglicherweise lesbar Weitere Versuche sinnvoll
/ Teilweise gelesen Retry empfohlen
* Noch nicht versucht Wird im nächsten Pass bearbeitet

8.3 Das perfekte Imaging-Kommando

8.3.1 Erster Durchlauf — schnell, non-intrusive

Phase 1: Schnelles Lesen
sudo ddrescue -f -n /dev/sdX /evidence/image.raw /evidence/image.log
  • -f = Force (überschreibt Ziel)
  • -n = No scrape (kein Retry)
  • Ziel: Maximal schnell alles retten, was leicht lesbar ist
  • Minimale Belastung des Datenträgers

8.3.2 Zweiter Durchlauf — intensiver

Phase 2: Retries
sudo ddrescue -d -r3 /dev/sdX /evidence/image.raw /evidence/image.log
  • -d = Direct Disk Access (umgeht OS-Cache)
  • -r3 = Drei Wiederholungsversuche pro Block
  • Ziel: Schwierige/semi-defekte Blöcke retten

8.3.3 Dritter Durchlauf — reverse

Phase 3: Reverse Reading
sudo ddrescue -R -r2 /dev/sdX /evidence/image.raw /evidence/image.log
  • -R = Reverse (liest rückwärts)
  • Sehr effektiv bei Head-Alignment-Problemen
  • Kann Bereiche lesen, die vorwärts nicht lesbar waren

8.4 ddrescue-Fehlerbilder

Fehler Ursache Lösung
Input/output error Echter Hardwareschaden Reverse-Strategie, kühlen
Read timed out Instabile Verbindung Kabel tauschen
Operation not permitted Write-Blocker oder Rechte sudo, Blocker prüfen
short read Firmware-Defekt Kleinere Blockgrößen

8.5 Vollständiger Imaging-Workflow

# 1. Verzeichnisse anlegen
mkdir -p /evidence/case001/{images,logs,hashes}

# 2. SMART prüfen
smartctl -a /dev/sdX > /evidence/case001/logs/smart_before.txt

# 3. Phase 1: Schnelles Lesen
ddrescue -f -n /dev/sdX /evidence/case001/images/disk.raw \
    /evidence/case001/logs/disk.log

# 4. Phase 2: Retries
ddrescue -d -r3 /dev/sdX /evidence/case001/images/disk.raw \
    /evidence/case001/logs/disk.log

# 5. Phase 3: Reverse
ddrescue -R -r2 /dev/sdX /evidence/case001/images/disk.raw \
    /evidence/case001/logs/disk.log

# 6. Hash erstellen
sha256sum /evidence/case001/images/disk.raw > \
    /evidence/case001/hashes/disk.sha256

8.6 Image-Formate

Format Vorteile Nachteile Empfehlung
RAW Schnell, universal, keine Abhängigkeiten Keine Metadaten ✓ Standard
E01 (EnCase) Metadaten, Kompression Proprietär Für Behörden
AFF4 Modern, Snapshots, robust Komplex Für Profis

Dieses Buch verwendet RAW — das universellste und schnellste Format.

Kapitel 9

Hashing & Signaturverfahren

Ein Hashwert ist der digitale Fingerabdruck einer Datei — unverzichtbar für jeden forensischen Prozess.

9.1 Warum Hashing?

Ein Hashwert:

  • Beweist Integrität — Daten sind unverändert
  • Zeigt Manipulationen — Jede Änderung ändert den Hash
  • Ist ein digitaler Fingerabdruck — Eindeutig identifizierend
  • Ist unverzichtbar in jedem forensischen Prozess

9.2 Hashverfahren im Vergleich

Algorithmus Länge Sicherheit Geschwindigkeit Einsatz
MD5 128 Bit Schwach Sehr schnell Nur Duplikaterkennung
SHA-1 160 Bit Gebrochen Schnell Nicht verwenden
SHA-256 256 Bit Stark Mittel Pflicht
SHA-512 512 Bit Sehr stark Langsamer Optional

9.3 Hash des Originals erstellen

Original-Hash (vor Imaging)
sha256sum /dev/sdX > /evidence/original.sha256
Achtung

Bei defekten Medien kann der Hash des Originals nicht zuverlässig erstellt werden. In diesem Fall dokumentieren Sie dies und hashen nur das Image.

9.4 Hash des Images erstellen

Image-Hash (nach Imaging)
sha256sum /evidence/image.raw > /evidence/image.sha256

9.5 Hashvergleich

Erfolgskriterium

Beide Hashwerte müssen identisch sein.
Wenn sie unterschiedlich sind, ist das Image nicht bitgenau — der forensische Wert ist eingeschränkt.

Hashes vergleichen
# Manueller Vergleich
cat /evidence/original.sha256
cat /evidence/image.sha256

# Automatischer Vergleich
diff /evidence/original.sha256 /evidence/image.sha256 && echo "✓ Identisch"

9.6 Integritätskette dokumentieren

Eine vollständige Beweiskette enthält:

  1. Hash des Originaldatenträgers
  2. Hash des RAW-Images
  3. Hash der sortierten Struktur (später)
  4. Hash des Archivs (später)

Somit ist jede Manipulation in jeder Phase erkennbar.

Kapitel 10

Arbeiten mit Forensic Images

Nach dem Imaging beginnt die eigentliche Arbeit — aber nur am Image, niemals am Original.

10.1 RAW-Image einhängen

Einfaches Mount
sudo mkdir -p /mnt/image
sudo mount -o ro,loop /evidence/image.raw /mnt/image

Falls das Image mehrere Partitionen enthält:

Partitionen auflisten
fdisk -l /evidence/image.raw

Beispielausgabe:

Device          Boot   Start      End  Sectors  Size Id Type
image.raw1      *       2048  1026047  1024000  500M  7 HPFS/NTFS
image.raw2           1026048 41943039 40916992 19.5G  7 HPFS/NTFS

10.2 Partitionen separat mounten

Loop-Device mit Partitionen
# Loop-Device erstellen
sudo losetup -f --show /evidence/image.raw

# Partitionen verfügbar machen
sudo kpartx -av /dev/loop0

# Einzelne Partition mounten
sudo mount -o ro /dev/mapper/loop0p2 /mnt/image

10.3 Typische Fehlerszenarien

Fehler Ursache Lösung
unknown filesystem type Partition beschädigt Photorec/Testdisk verwenden
wrong fs type, bad option Falsche Blockgröße Manuelle Offset-Berechnung
structure needs cleaning Dateisystem-Fehler fsck nur auf KOPIE des Images!
Kritische Warnung

fsck und ähnliche Reparaturtools nur auf einer Kopie des Images ausführen — niemals auf dem Original-Image! Diese Tools verändern Daten.

10.4 Offset-Berechnung für manuelle Mounts

Wenn kpartx nicht funktioniert, manuell berechnen:

# Start-Sektor aus fdisk-Ausgabe: 1026048
# Sektorgröße: 512 Bytes
# Offset = 1026048 × 512 = 525336576

sudo mount -o ro,loop,offset=525336576 /evidence/image.raw /mnt/image

10.5 Forensische Snapshot-Techniken

Für sichere Analyse können Copy-on-Write-Layer verwendet werden:

Overlay-Filesystem
# Arbeitsverzeichnisse anlegen
mkdir -p /tmp/overlay/{upper,work,merged}

# Overlay mounten (Änderungen gehen nach upper)
sudo mount -t overlay overlay \
    -o lowerdir=/mnt/image,upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/work \
    /tmp/overlay/merged

So bleiben alle Änderungen isoliert und das Original-Image unberührt.

Teil IV

Analysephase

Die Analysephase liefert die eigentlichen Erkenntnisse — hier wird aus rohen Daten verwertbare Information.

Kapitel 11

Überblicksverschaffung & Strukturaufnahme

Bevor sortiert oder klassifiziert wird, muss ein vollständiges Bild der Datenlandschaft erstellt werden.

Häufigste Fehler
  • Zu früh einzelne Dateien betrachten
  • Zu spät strukturelle Muster erkennen
  • Systemweite Indikatoren ignorieren
  • „Blind" sortieren ohne globale Analyse

11.1 Der High-Level Scan

Ziel: Schneller Überblick ohne Details.

Anzahl der Dateien
find /mnt/image -type f | wc -l
Gesamtgröße
du -sh /mnt/image
Ordnerübersicht (3 Ebenen)
tree -d -L 3 /mnt/image

11.2 Strukturierte Dateistatistik

Dateien nach Endung gruppieren
find /mnt/image -type f | sed 's|.*\.||' | sort | uniq -c | sort -nr | head -30
Größte Verzeichnisse
find /mnt/image -type f -printf "%h\n" | sort | uniq -c | sort -nr | head -20

Diese Werte verraten:

  • Dominante Dateitypen
  • Große Ordner (potenzielle Backups)
  • Mögliche Backup-Strukturen
  • Typische Benutzerverhalten

11.3 Zeitliche Rekonstruktion (Timeline-Envelope)

Dateien nach Jahr
find /mnt/image -type f -printf "%TY\n" | sort | uniq -c | sort -k2
Dateien nach Monat
find /mnt/image -type f -printf "%TY-%Tm\n" | sort | uniq -c

Interpretation der Timeline:

  • Aktivitätsperioden — Wann wurde das Gerät hauptsächlich genutzt?
  • Zeitlöcher — Migrationen oder Systemwechsel
  • Spitzen — Besondere Ereignisse (Urlaub, Backup)

11.4 Identifikation besonderer Dateien

11.4.1 Große Dateien (>1 GB)

Größte Dateien finden
find /mnt/image -type f -size +1G -printf "%s %p\n" | sort -nr | head -20

Oft relevant: Videos, Disk-Images, Backups, Datenbanken.

11.4.2 Sensible Dateitypen

Wallet- und Krypto-Suche
grep -RilE "mnemonic|wallet|seed|ledger|trezor|keystore" /mnt/image 2>/dev/null
Passwort-Dateien suchen
grep -RilE "password|passwort|pin|secret" /mnt/image 2>/dev/null

11.5 Detektion beschädigter Dateien

Leere Dateien (0 Bytes)
find /mnt/image -type f -size 0

Korruptionsanzeiger:

  • 0-Byte-Dateien
  • Abgebrochene Downloads
  • Verschobene Endungen
  • Ungewöhnlich kleine Dateien für ihren Typ
Kapitel 12

MIME-Analyse im Detail

Die MIME-Analyse ist das fundamentale Klassifikationssystem einer forensischen Sortierpipeline — weit mehr als nur ein einfacher Befehl.

12.1 Warum Dateiendungen nutzlos sind

Niemals Endungen vertrauen!
  • Ein .jpg kann ein ZIP sein
  • Ein .mp4 kann ein AVI-Container sein
  • Ein .pdf kann verschlüsselt, korrupt oder ein TIFF sein
  • Malware tarnt sich häufig als .png oder .docx

Forensik darf niemals Dateiendungen vertrauen.

12.2 Die MIME-Analyse-Masterpipeline

MIME-Fingerprint des gesamten Datenträgers
find /mnt/image -type f -print0 \
  | xargs -0 file --mime-type --brief \
  | sort | uniq -c | sort -nr

Dies erzeugt ein „Fingerprint-Diagramm" der gesamten HDD — eine Übersicht aller tatsächlich vorhandenen Dateitypen.

12.3 MIME-Klassen

MIME-Type Bedeutung Typische Endungen
image/* Bilder .jpg, .png, .gif, .webp
video/* Videos .mp4, .mov, .avi, .mkv
audio/* Audio .mp3, .wav, .flac, .m4a
application/pdf PDF-Dokumente .pdf
application/zip ZIP-Archive .zip, .docx, .xlsx
application/vnd.* Office-Dokumente .doc, .xls, .ppt
text/plain Textdateien .txt, .log, .md
application/octet-stream Unbekannt/Binär Verschieden

12.4 Die „Octet-Stream"-Hölle

application/octet-stream bedeutet: Ich weiß nicht, was das ist.

Mögliche Ursachen:

  • Beschädigte Header
  • Verschlüsselte Dateien
  • Archivfragmente
  • RAW-Datenbereiche
  • Zufällige Bitströme
Forensische Relevanz

Diese Gruppe ist besonders interessant für:

  • Wallet-Fragmente
  • Foto- oder Video-Restfragmente
  • Teile von Festplattenabbildern
  • Unvollständige Backups

12.5 MIME-Anomalieerkennung

Eine Anomalie ist:

  • Ein Bild im Dokumentenordner
  • Ein ZIP in einem Fotos-Ordner
  • Ein ausführbares Binary in „Downloads"
  • Eine 3GB-Datei auf dem Desktop
  • Ein MOV im System-Cache

MIME-Anomalien sind Indikatoren für:

  • Migrationen zwischen Systemen
  • Manuelle Verschiebungen
  • Doppelte Backups
  • Benutzeraktionen außerhalb der Norm
  • Potenzielle Malware
  • Fragment-Recovery-Potenzial

12.6 MIME → Sortierlogik

Grundsatz

Der MIME-Typ ist immer der Master.
Die Dateiendung ist nur eine Suggestion.

Die tiefe Erklärung der Sortierlogik erfolgt in Teil V.

Kapitel 13

Kodierungsprobleme & Reparatur

Kodierungsfehler können fälschlich wie Rechtsfehler aussehen — viele Recovery-Tools scheitern an Dateinamen, nicht an Dateien.

13.1 Arten von Kodierungsproblemen

13.1.1 Nicht-UTF-8-Namen

Alte Dateisysteme verwenden verschiedene Kodierungen:

  • Latin-1 (ISO-8859-1) — Westeuropa
  • CP437 — DOS
  • Windows-1252 — Windows
  • MacRoman — Alte Mac-Systeme

13.1.2 NFD-Normalisierung (macOS)

macOS speichert Umlaute anders als Linux:

  • macOS (NFD): ä als a + ¨ (zwei Zeichen)
  • Linux (NFC): ä als ein Zeichen

Dies führt zu:

  • Nicht auflösbaren Pfaden
  • Fehlern in Shell-Skripten
  • Sortierabbrüchen

13.2 Nicht-UTF-8 Dateien erkennen

Dateien mit Nicht-ASCII-Zeichen finden
find /mnt/image -print0 | LC_ALL=C grep -zPv '^[\x00-\x7F]+$'

13.3 Kodierungen konvertieren

Latin-1 → UTF-8
convmv -f latin1 -t utf8 --notest -r /mnt/image
CP437 → UTF-8
convmv -f cp437 -t utf8 --notest -r /mnt/image
NFD → NFC (Mac-Normalisierung)
convmv -f utf8 -t utf8 --nfc --notest -r /mnt/image

13.4 Illegale Zeichen reparieren

Diese Zeichen sind in vielen Dateisystemen illegal:

< > : " | ? * \ NUL
Illegale Zeichen ersetzen
find /mnt/image -depth -print0 | while IFS= read -r -d '' file; do
    clean=$(printf "%s" "$file" | sed 's#[<>:"/\\|?*]#_#g')
    [ "$clean" != "$file" ] && mv "$file" "$clean"
done

13.5 Der „Permission denied"-Irrtum

Wichtig zu verstehen

Permission denied ist oft kein Rechtsproblem!

Häufige tatsächliche Ursachen:

  • Ungültige Unicode-Sequenzen
  • NFD-Zeichen auf Linux
  • Unsichtbare Steuerzeichen
  • Null-Bytes im Dateinamen

Deshalb ist dieses Kapitel kritisch wichtig für jeden Sortierprozess.

Kapitel 14

Tiefenanalyse: Metadaten, Inhalte & Container

Die echten forensischen Erkenntnisse entstehen aus Metadaten und Inhaltsstrukturen — nicht aus Dateinamen.

14.1 EXIF-Forensik (Fotos, Videos)

EXIF-Felder enthalten wertvolle Informationen:

  • Kamera — Hersteller und Modell
  • Linsenmodell — Objektiv-Details
  • GPS — Geokoordinaten
  • Seriennummer — Eindeutige Kamera-ID
  • Zeitstempel — Aufnahmedatum und -zeit
  • Software — Bearbeitungsprogramme
EXIF-Daten auslesen
exiftool -a -u -g1 foto.jpg
Forensische Erkenntnis

EXIF ist oft manipulierbar, aber Muster lügen nicht: Wenn 10.000 Bilder ein Kameramodell haben und 3 Bilder ein anderes, könnten diese Bilder aus einer anderen Quelle stammen.

14.2 PDF-Forensik

Wichtigste PDF-Strukturen:

  • Objekt-Streams — Enthaltene Ressourcen
  • XRef-Tabellen — Querverweise
  • Trailer — Dokumentende mit Metadaten
  • Embedded Files — Eingebettete Dateien
PDF-Metadaten auslesen
pdfinfo dokument.pdf
pdfimages -list dokument.pdf

14.3 Video-/Audio-Container

MP4/MOV bestehen aus „Atoms":

  • ftyp — Dateityp-Deklaration
  • moov — Metadaten und Index (kritisch!)
  • mdat — Mediendaten
  • udta — Benutzerdaten
Beschädigte Videos

Viele beschädigte Videos haben fehlende moov-Atoms. Diese können oft durch Reconstruction wiederhergestellt werden.

14.4 Signaturbasiertes File Carving

Tools wie photorec können anhand von Signaturen Dateien wiederherstellen:

  • JPEG-Signaturen (FFD8FFE0)
  • MP4-Atoms
  • ZIP-Köpfe (504B0304)
File Carving mit Photorec
photorec /d /recovery /evidence/image.raw

14.5 Wallet- & Seed-Suche

Krypto-Wallet-Suche
grep -RiaE "seed|wallet|mnemonic|ledger|trezor|passphrase" /mnt/image
Erweiterte Suche in Rohdaten
strings -n 8 /evidence/image.raw | grep -Ei "seed|wallet|mnemonic"

Weitere Suchziele:

  • JSON-Dateien
  • Windows Registry
  • Browser-Extension-Daten
  • LevelDB-Dumps
Teil V

Systematische Sortierung

Das Herzstück dieses Manifests — die vollautomatische, MIME-basierte Sortierung heterogener Datenbestände in eine logische, durchsuchbare Struktur.

Kapitel 15

Die Sortierphilosophie

Sortierung ist keine technische Aufgabe — es ist eine philosophische Entscheidung darüber, wie Daten verstanden und strukturiert werden sollen.

15.1 Warum systematische Sortierung?

Unsortierte Daten sind:

  • Schwer durchsuchbar
  • Nicht reproduzierbar analysierbar
  • Voller versteckter Duplikate
  • Zeitfresser bei jeder Suche
  • Potenzielle Datengräber

Sortierte Daten sind:

  • Sofort auffindbar
  • Logisch strukturiert
  • Duplikatfrei oder -bewusst
  • Archivierbar
  • Übergabefähig

15.2 Das MIME-First-Prinzip

Fundamentaler Grundsatz

Der MIME-Typ bestimmt die Kategorie — nicht die Dateiendung.

Ein .jpg mit MIME application/zip gehört in den ZIP-Ordner, nicht in den Bilder-Ordner.

15.3 Die Zielstruktur

Die ideale Sortierstruktur:

OUTPUT/
├── 01_Images/
│   ├── jpg/
│   ├── png/
│   ├── gif/
│   ├── webp/
│   ├── raw/
│   └── other/
├── 02_Videos/
│   ├── mp4/
│   ├── mov/
│   ├── avi/
│   ├── mkv/
│   └── other/
├── 03_Audio/
│   ├── mp3/
│   ├── wav/
│   ├── flac/
│   └── other/
├── 04_Documents/
│   ├── pdf/
│   ├── office/
│   ├── text/
│   └── other/
├── 05_Archives/
│   ├── zip/
│   ├── rar/
│   ├── tar/
│   └── other/
├── 06_Code/
│   ├── scripts/
│   ├── web/
│   ├── data/
│   └── other/
├── 07_System/
│   ├── executables/
│   ├── libraries/
│   ├── config/
│   └── other/
├── 08_Unknown/
│   └── octet-stream/
└── 09_Logs/
    ├── sort.log
    ├── errors.log
    └── manifest.txt

15.4 Sortierregeln

  1. MIME-Typ ist Master — Immer zuerst MIME prüfen
  2. Keine Duplikate überschreiben — Konflikte mit Suffix lösen
  3. Alle Fehler loggen — Nichts stillschweigend ignorieren
  4. Originalpfad bewahren — Im Manifest dokumentieren
  5. Kodierung reparieren — Vor dem Kopieren normalisieren

15.5 Kopieren vs. Verschieben

Methode Vorteil Nachteil Empfehlung
Kopieren Original bleibt erhalten Doppelter Speicherplatz ✓ Für Forensik
Verschieben Kein extra Speicher Original verändert Nur bei Platzmangel
Hardlinks Kein extra Speicher, Original bleibt Nur gleiches Dateisystem Ideal wenn möglich
Kapitel 16

Automatisierte Sortierung

Ein vollständiges, produktionsreifes Sortierskript — das Herzstück dieses Manifests.

16.1 Die Master-Sortierpipeline

#!/bin/bash
# ═══════════════════════════════════════════════════════════════════════════
# FORENSIC MASTER SORTER v2.0
# Vollautomatische MIME-basierte Datensortierung
# ═══════════════════════════════════════════════════════════════════════════

set -euo pipefail

# ─── KONFIGURATION ────────────────────────────────────────────────────────
SOURCE="${1:-/mnt/image}"
OUTPUT="${2:-/evidence/sorted}"
LOGDIR="$OUTPUT/09_Logs"
MANIFEST="$LOGDIR/manifest.txt"
ERRORLOG="$LOGDIR/errors.log"
SORTLOG="$LOGDIR/sort.log"

# ─── VERZEICHNISSE ANLEGEN ────────────────────────────────────────────────
mkdir -p "$OUTPUT"/{01_Images/{jpg,png,gif,webp,raw,other},02_Videos/{mp4,mov,avi,mkv,other}}
mkdir -p "$OUTPUT"/{03_Audio/{mp3,wav,flac,other},04_Documents/{pdf,office,text,other}}
mkdir -p "$OUTPUT"/{05_Archives/{zip,rar,tar,other},06_Code/{scripts,web,data,other}}
mkdir -p "$OUTPUT"/{07_System/{executables,libraries,config,other},08_Unknown/octet-stream}
mkdir -p "$LOGDIR"

# ─── LOGGING INITIALISIEREN ───────────────────────────────────────────────
echo "# Forensic Sort Manifest - $(date -Is)" > "$MANIFEST"
echo "# Source: $SOURCE" >> "$MANIFEST"
echo "# ═══════════════════════════════════════════════════════════════" >> "$MANIFEST"

log() { echo "[$(date '+%H:%M:%S')] $*" | tee -a "$SORTLOG"; }
error() { echo "[ERROR] $*" | tee -a "$ERRORLOG"; }

log "Starte Sortierung von: $SOURCE"

# ─── ZÄHLER ───────────────────────────────────────────────────────────────
COUNT_TOTAL=0
COUNT_SUCCESS=0
COUNT_ERROR=0

# ─── MIME → ZIELORDNER MAPPING ────────────────────────────────────────────
get_target() {
    local mime="$1"
    local ext="$2"
    
    case "$mime" in
        image/jpeg)                     echo "01_Images/jpg" ;;
        image/png)                      echo "01_Images/png" ;;
        image/gif)                      echo "01_Images/gif" ;;
        image/webp)                     echo "01_Images/webp" ;;
        image/x-*|image/tiff)           echo "01_Images/raw" ;;
        image/*)                        echo "01_Images/other" ;;
        
        video/mp4|video/x-m4v)          echo "02_Videos/mp4" ;;
        video/quicktime)                echo "02_Videos/mov" ;;
        video/x-msvideo)                echo "02_Videos/avi" ;;
        video/x-matroska)               echo "02_Videos/mkv" ;;
        video/*)                        echo "02_Videos/other" ;;
        
        audio/mpeg)                     echo "03_Audio/mp3" ;;
        audio/x-wav|audio/wav)          echo "03_Audio/wav" ;;
        audio/flac|audio/x-flac)        echo "03_Audio/flac" ;;
        audio/*)                        echo "03_Audio/other" ;;
        
        application/pdf)                echo "04_Documents/pdf" ;;
        application/msword|application/vnd.openxmlformats*|application/vnd.ms-*)
                                        echo "04_Documents/office" ;;
        text/plain|text/markdown)       echo "04_Documents/text" ;;
        text/html|text/css)             echo "06_Code/web" ;;
        text/x-script*|text/x-python|text/x-shellscript|application/x-sh)
                                        echo "06_Code/scripts" ;;
        application/json|application/xml|text/xml|text/csv)
                                        echo "06_Code/data" ;;
        text/*)                         echo "04_Documents/other" ;;
        
        application/zip|application/x-zip*)
                                        echo "05_Archives/zip" ;;
        application/x-rar*|application/vnd.rar)
                                        echo "05_Archives/rar" ;;
        application/x-tar|application/gzip|application/x-bzip2|application/x-xz)
                                        echo "05_Archives/tar" ;;
        application/x-7z*|application/x-compress*)
                                        echo "05_Archives/other" ;;
        
        application/x-executable|application/x-mach-binary|application/x-dosexec)
                                        echo "07_System/executables" ;;
        application/x-sharedlib|application/x-archive)
                                        echo "07_System/libraries" ;;
        
        application/octet-stream)       echo "08_Unknown/octet-stream" ;;
        *)                              echo "08_Unknown/octet-stream" ;;
    esac
}

# ─── DATEINAME BEREINIGEN ─────────────────────────────────────────────────
sanitize_name() {
    local name="$1"
    # Illegale Zeichen entfernen, NFD→NFC
    printf "%s" "$name" | sed 's/[<>:"/\\|?*]/_/g' | sed 's/\x00//g'
}

# ─── KONFLIKTAUFLÖSUNG ────────────────────────────────────────────────────
resolve_conflict() {
    local target="$1"
    local base="${target%.*}"
    local ext="${target##*.}"
    local counter=1
    
    while [[ -e "$target" ]]; do
        if [[ "$base" == "$ext" ]]; then
            target="${base}_${counter}"
        else
            target="${base}_${counter}.${ext}"
        fi
        ((counter++))
    done
    
    echo "$target"
}

# ─── HAUPTSCHLEIFE ────────────────────────────────────────────────────────
process_file() {
    local file="$1"
    ((COUNT_TOTAL++))
    
    # MIME-Typ ermitteln
    local mime
    mime=$(file --mime-type --brief "$file" 2>/dev/null) || {
        error "MIME-Fehler: $file"
        ((COUNT_ERROR++))
        return 1
    }
    
    # Dateiname extrahieren und bereinigen
    local basename
    basename=$(basename "$file")
    local clean_name
    clean_name=$(sanitize_name "$basename")
    local ext="${clean_name##*.}"
    
    # Zielordner bestimmen
    local target_dir
    target_dir=$(get_target "$mime" "$ext")
    
    # Zielpfad erstellen
    local target_path="$OUTPUT/$target_dir/$clean_name"
    target_path=$(resolve_conflict "$target_path")
    
    # Kopieren
    if cp --preserve=timestamps "$file" "$target_path" 2>/dev/null; then
        echo "$file → $target_path [$mime]" >> "$MANIFEST"
        ((COUNT_SUCCESS++))
    else
        error "Kopieren fehlgeschlagen: $file"
        ((COUNT_ERROR++))
    fi
}

export -f process_file sanitize_name resolve_conflict get_target log error
export OUTPUT MANIFEST ERRORLOG COUNT_TOTAL COUNT_SUCCESS COUNT_ERROR

# ─── AUSFÜHRUNG ───────────────────────────────────────────────────────────
log "Scanne Dateien..."

find "$SOURCE" -type f -print0 | while IFS= read -r -d '' file; do
    process_file "$file"
    
    # Fortschritt alle 1000 Dateien
    if (( COUNT_TOTAL % 1000 == 0 )); then
        log "Fortschritt: $COUNT_TOTAL Dateien verarbeitet"
    fi
done

# ─── ABSCHLUSS ────────────────────────────────────────────────────────────
log "═══════════════════════════════════════════════════════════════"
log "Sortierung abgeschlossen!"
log "Gesamt:    $COUNT_TOTAL"
log "Erfolg:    $COUNT_SUCCESS"
log "Fehler:    $COUNT_ERROR"
log "═══════════════════════════════════════════════════════════════"

# Hash des Outputs erstellen
find "$OUTPUT" -type f -exec sha256sum {} \; > "$LOGDIR/output.sha256"
log "Prüfsummen erstellt: $LOGDIR/output.sha256"

16.2 Verwendung des Skripts

Standard-Ausführung
chmod +x forensic-sort.sh
./forensic-sort.sh /mnt/image /evidence/sorted

16.3 Parallelisierung für große Datenmengen

Mit GNU Parallel
find /mnt/image -type f -print0 | \
    parallel -0 -j8 --bar ./process_single_file.sh {}

16.4 Post-Sort-Validierung

Ergebnis prüfen
# Dateien pro Kategorie zählen
for dir in /evidence/sorted/*/; do
    echo "$(basename "$dir"): $(find "$dir" -type f | wc -l)"
done

# MIME-Verteilung im Output prüfen
find /evidence/sorted -type f -print0 | \
    xargs -0 file --mime-type -b | sort | uniq -c | sort -nr
Kapitel 17

Timeline Reconstruction

Zeitliche Rekonstruktion macht aus chaotischen Daten eine Geschichte — wer hat wann was getan?

17.1 Timestamps verstehen

Timestamp Bedeutung Forensische Relevanz
mtime Letzte Inhaltsänderung Wann wurde Datei bearbeitet?
atime Letzter Zugriff Wann wurde Datei geöffnet?
ctime Letzte Metadatenänderung Wann wurden Attribute geändert?
crtime Erstellungszeit (ext4) Wann wurde Datei erstellt?

17.2 Timeline-Export

Vollständige Timeline erstellen
find /mnt/image -type f -printf "%T+ %p\n" | sort > timeline.txt
Timeline als CSV
find /mnt/image -type f -printf "%TY-%Tm-%Td,%TH:%TM:%TS,%s,%p\n" > timeline.csv

17.3 Aktivitätsmuster erkennen

Aktivität nach Wochentag
find /mnt/image -type f -printf "%Ta\n" | sort | uniq -c
Aktivität nach Stunde
find /mnt/image -type f -printf "%TH\n" | sort | uniq -c

Diese Muster verraten:

  • Arbeitszeiten vs. Freizeit
  • Typische Nutzungsgewohnheiten
  • Anomalien (nächtliche Aktivität)
  • Automatisierte Prozesse (regelmäßige Timestamps)

17.4 EXIF-basierte Timeline

Foto-Timeline aus EXIF
exiftool -DateTimeOriginal -csv /mnt/image/**/*.jpg > photo_timeline.csv
EXIF vs. Dateisystem

EXIF-Timestamps sind oft zuverlässiger als Dateisystem-Timestamps, da sie beim Kopieren nicht verändert werden.

Kapitel 18

Duplikaterkennung & -behandlung

Duplikate sind der größte Speicherfresser in heterogenen Datensammlungen — ihre intelligente Behandlung spart Platz und Zeit.

18.1 Arten von Duplikaten

Typ Definition Erkennung
Exakte Duplikate Identischer Inhalt, gleicher Hash MD5/SHA256
Near-Duplicates Ähnlicher Inhalt (z.B. unterschiedliche Kompression) Perceptual Hashing
Namens-Duplikate Gleicher Name, unterschiedlicher Inhalt Namensvergleich + Hash

18.2 Hash-basierte Duplikaterkennung

Alle Hashes berechnen
find /mnt/image -type f -exec md5sum {} \; | sort > all_hashes.txt
Duplikate finden
awk '{print $1}' all_hashes.txt | sort | uniq -d > duplicate_hashes.txt
grep -Ff duplicate_hashes.txt all_hashes.txt > duplicates.txt

18.3 fdupes — Das Standardtool

Duplikate auflisten
fdupes -r /mnt/image > duplicates_report.txt
Duplikate mit Größe
fdupes -rS /mnt/image

18.4 Duplikat-Strategien

Strategie Vorgehen Empfehlung
Behalten Alle Kopien behalten Für forensische Vollständigkeit
Hardlinks Duplikate durch Hardlinks ersetzen Spart Platz, erhält Pfade
Löschen Duplikate entfernen Nur nach vollständiger Analyse
Symlinks Duplikate durch Symlinks ersetzen Flexible Lösung
Forensische Warnung

In forensischen Kontexten: Niemals Duplikate löschen!
Der Speicherort eines Duplikats kann relevant sein (z.B. gleiche Datei in verschiedenen Backup-Ordnern zeigt Backup-Verhalten).

18.5 Perceptual Hashing für Bilder

Für ähnliche (nicht identische) Bilder:

Mit findimagedupes
findimagedupes -R /mnt/image > similar_images.txt

Nützlich für:

  • Unterschiedliche Kompressionen des gleichen Bildes
  • Reskalierte Versionen
  • Leicht bearbeitete Kopien
Teil VI

Archivierung & Langzeitsicherung

Daten, die nicht korrekt archiviert werden, sind verloren — nur eine Frage der Zeit.

Kapitel 19

Archivformate & Container

Die Wahl des Archivformats bestimmt die Langzeitlesbarkeit und Integrität der gesicherten Daten.

19.1 Archivformat-Vergleich

Format Kompression Integrität Portabilität Empfehlung
tar Keine Keine Universell Basis-Container
tar.gz Gut Checksum Universell ✓ Standard
tar.xz Sehr gut CRC Modern ✓ Für Platz
tar.zst Exzellent CRC Modern ✓ Optimal
zip Mittel CRC32 Universell Für Windows
7z Sehr gut CRC Tool nötig Alternative

19.2 Das optimale Archivkommando

Archiv mit Zstandard (empfohlen)
tar --zstd -cvf archiv_$(date +%Y%m%d).tar.zst /evidence/sorted/
Archiv mit XZ (maximale Kompression)
tar -cvJf archiv_$(date +%Y%m%d).tar.xz /evidence/sorted/
Archiv mit Gzip (maximale Kompatibilität)
tar -cvzf archiv_$(date +%Y%m%d).tar.gz /evidence/sorted/

19.3 Split-Archive für große Datenmengen

In 4GB-Teile splitten
tar -cvf - /evidence/sorted/ | split -b 4G - archiv_part_
Wiederherstellen
cat archiv_part_* | tar -xvf -

19.4 Verschlüsselte Archive

GPG-verschlüsseltes Archiv
tar -cvf - /evidence/sorted/ | gpg --symmetric --cipher-algo AES256 > archiv.tar.gpg
Entschlüsseln
gpg --decrypt archiv.tar.gpg | tar -xvf -
Wichtige Warnung

Passwort separat und sicher aufbewahren!
Ein verschlüsseltes Archiv ohne Passwort ist unbrauchbar.

Kapitel 20

Prüfsummen & Manifeste

Ein Archiv ohne Prüfsumme ist eine Blackbox — niemand kann beweisen, dass der Inhalt unverändert ist.

20.1 Prüfsummen für alle Dateien

SHA256-Manifest erstellen
find /evidence/sorted -type f -exec sha256sum {} \; > manifest.sha256
Manifest verifizieren
sha256sum -c manifest.sha256

20.2 Archiv-Hash

Hash des Archivs selbst
sha256sum archiv.tar.zst > archiv.tar.zst.sha256

20.3 Das forensische Manifest

Ein vollständiges Manifest enthält:

# FORENSIC ARCHIVE MANIFEST
# ═══════════════════════════════════════════════════════════════
# Erstellt: 2025-12-10 15:42:33 UTC
# Ersteller: JJ
# Case-ID: CASE-2025-001
# ═══════════════════════════════════════════════════════════════

[QUELLE]
Original: Samsung 870 EVO 1TB
Seriennummer: S6VBNF123456Z
Imaging-Tool: ddrescue 1.27
Original-Hash: SHA256:7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069

[IMAGE]
Datei: disk.raw
Größe: 1000204886016 Bytes
Hash: SHA256:7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069
Status: Verifiziert ✓

[SORTIERUNG]
Dateien gesamt: 847293
Erfolg: 847156
Fehler: 137
Sortiert nach: MIME-Type

[ARCHIV]
Format: tar.zst
Teile: 1
Größe: 312.4 GB
Hash: SHA256:a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

[PRÜFSUMMEN]
manifest.sha256: 847293 Einträge
Verifiziert: 2025-12-10 16:03:12 UTC
Status: Alle Dateien OK ✓

20.4 Signierte Manifeste

Manifest signieren
gpg --clearsign manifest.sha256

Die Signatur beweist:

  • Wer das Manifest erstellt hat
  • Dass es nicht verändert wurde
  • Wann es signiert wurde
Kapitel 21

Abschlussberichte & Übergabe

Ein forensischer Fall endet mit einem vollständigen, nachvollziehbaren Bericht — nicht mit einem Ordner voller Dateien.

21.1 Struktur eines Abschlussberichts

  1. Zusammenfassung — Executive Summary
  2. Auftragsbeschreibung — Was wurde beauftragt?
  3. Methodik — Welche Werkzeuge und Verfahren?
  4. Quelldokumentation — Details zum Ursprungsmedium
  5. Imaging-Protokoll — Alle Schritte dokumentiert
  6. Analyseergebnisse — Gefundene Erkenntnisse
  7. Integritätsnachweis — Hashes und Verifikation
  8. Übergabeliste — Was wird übergeben?
  9. Anhänge — Logs, Manifeste, Screenshots

21.2 Übergabeprotokoll

═══════════════════════════════════════════════════════════════
ÜBERGABEPROTOKOLL
═══════════════════════════════════════════════════════════════

Datum: ________________
Case-ID: ________________

ÜBERGEBEN VON:
Name: ________________
Rolle: ________________
Unterschrift: ________________

ÜBERGEBEN AN:
Name: ________________
Organisation: ________________
Unterschrift: ________________

ÜBERGABEOBJEKTE:
[ ] Originaldatenträger (versiegelt)
[ ] Forensisches Image (verifiziert)
[ ] Sortierte Datenstruktur
[ ] Archiv mit Prüfsummen
[ ] Abschlussbericht
[ ] Manifest-Dateien
[ ] Log-Dateien

INTEGRITÄTSSTATUS:
Image-Hash: ________________
Archiv-Hash: ________________
Status: [ ] Verifiziert [ ] Nicht verifiziert

Bemerkungen:
________________________________________
________________________________________

═══════════════════════════════════════════════════════════════

21.3 Langzeitarchivierung

3-2-1-Regel der Datensicherung
  • 3 Kopien der Daten
  • 2 verschiedene Medientypen
  • 1 Kopie offsite/extern

Empfohlene Medien für Langzeitarchivierung:

  • M-DISC — 1000+ Jahre haltbar (theoretisch)
  • LTO-Tape — 30+ Jahre, industriestandard
  • Mehrere HDDs — An verschiedenen Orten
  • Cold Storage — Cloud-Archiv (verschlüsselt!)
Teil VII

Expertenkapitel

Fortgeschrittene Techniken für schwierige Fälle — beschädigte Medien, Fragment-Recovery, Krypto-Forensik und vollständige Automatisierung.

Kapitel 22

Beschädigte Medien

Physisch beschädigte Medien erfordern spezielle Techniken — jeder falsche Schritt kann zum totalen Datenverlust führen.

22.1 Klassifikation von Schäden

Schadenstyp Symptome Selbst lösbar? Maßnahme
Logisch Dateisystem korrupt, Partitionen fehlen Ja testdisk, photorec
Bad Sectors Lesefehler, langsame Bereiche Ja ddrescue Strategien
Firmware Wird nicht erkannt, BSY-Status Teilweise Spezialtools
PCB-Defekt Keine Reaktion, Überspannung Nein Professionelle Hilfe
Head Crash Kratzen, Klicken, Schweigen Nein Reinraum-Recovery
Motor/Spindel Summen ohne Hochdrehen Nein Professionelle Hilfe

22.2 Erste-Hilfe-Protokoll

  1. Strom aus — Sofort bei Klickgeräuschen
  2. Nicht nochmal versuchen — Jeder Versuch verschlimmert
  3. Diagnose — SMART lesen wenn möglich
  4. Entscheidung — Selbst oder Profi?
  5. Wenn selbst — ddrescue mit konservativen Settings

22.3 ddrescue für schwer beschädigte Medien

Ultra-konservative Einstellungen
# Phase 1: Nur schnell lesbare Bereiche
ddrescue -f -n -T 5s /dev/sdX image.raw log.map

# Phase 2: Vorsichtige Retries
ddrescue -d -r1 -T 10s /dev/sdX image.raw log.map

# Phase 3: Reverse (bei Head-Problemen)
ddrescue -R -r1 /dev/sdX image.raw log.map

Parameter erklärt:

  • -T 5s — Timeout nach 5 Sekunden pro Sektor
  • -r1 — Nur 1 Retry pro Block
  • -R — Reverse (rückwärts lesen)

22.4 Temperatur-Management

Thermische Tricks
  • Kühlen — HDD 30 Min im Kühlschrank (NICHT Gefrierfach!)
  • Wärmen — Bei Stiction: leicht erwärmen
  • Pausen — Alle 30 Min Pause bei langen Imaging-Sessions

22.5 Wann zum Profi?

  • Klick-Geräusche (Head Crash)
  • Kratzen (Plattenoberfläche beschädigt)
  • Geruch (verbrannte Elektronik)
  • Wasser-/Brandschaden
  • Verschlüsselte SSD ohne Key
Kapitel 23

Fragment-Recovery & File Carving

Wenn Dateisysteme zerstört sind, bleibt File Carving — die Rekonstruktion von Dateien anhand ihrer internen Signaturen.

23.1 Grundprinzip des File Carving

File Carving sucht nach:

  • Magic Bytes — Dateianfang-Signaturen
  • Footer — Dateiende-Marker
  • Strukturen — Interne Muster
Dateityp Magic Bytes (Hex) Footer
JPEG FF D8 FF FF D9
PNG 89 50 4E 47 49 45 4E 44
PDF 25 50 44 46 %%EOF
ZIP 50 4B 03 04 50 4B 05 06
MP4 66 74 79 70 (ftyp) Variabel

23.2 PhotoRec — Das Standard-Carving-Tool

PhotoRec auf RAW-Image
photorec /d /evidence/carved /evidence/image.raw

PhotoRec erkennt über 480 Dateiformate automatisch.

23.3 Scalpel — Konfigurierbar

Scalpel mit Custom-Config
scalpel -c /etc/scalpel/scalpel.conf -o /evidence/carved /evidence/image.raw

Beispiel-Konfiguration für spezifische Dateitypen:

# /etc/scalpel/scalpel.conf
jpg     y   20000000    \xff\xd8\xff    \xff\xd9
png     y   20000000    \x89PNG         IEND
pdf     y   50000000    %PDF            %%EOF

23.4 Foremost — Schnell und einfach

Foremost
foremost -t jpeg,png,pdf -i /evidence/image.raw -o /evidence/carved

23.5 Video-Fragment-Recovery

Videos sind besonders schwierig:

  • Fragmentiert auf der Platte
  • Komplexe Container-Strukturen
  • Fehlende Index-Atome
MP4 reparieren mit untrunc
# Benötigt eine "gute" Referenz-Datei
untrunc good_reference.mp4 broken_video.mp4
Einschränkungen

File Carving kann keine fragmentierten Dateien vollständig wiederherstellen, deren Teile nicht zusammenhängend auf der Platte liegen.

Kapitel 24

Krypto-Forensik & Wallet-Recovery

Die Suche nach Kryptowährungs-Wallets, Seeds und Private Keys — ein Spezialgebiet mit hohem Wert.

24.1 Wallet-Arten

Wallet-Typ Speicherort Erkennungsmerkmale
Bitcoin Core ~/.bitcoin/wallet.dat Berkeley DB Format
Electrum ~/.electrum/wallets/ JSON mit "seed"
MetaMask Browser Extension Data LevelDB, "vault"
Hardware-Wallet Backup Variabel 12/24 Wörter
Paper Wallet Dokumente, Bilder QR-Codes, Private Keys

24.2 Systematische Wallet-Suche

wallet.dat suchen
find /mnt/image -name "wallet.dat" -type f 2>/dev/null
Seed-Phrasen suchen
grep -RiaE "(seed|mnemonic|recovery).{0,20}(phrase|words)" /mnt/image 2>/dev/null
Bitcoin-Adressen suchen
grep -RoaE "\b[13][a-km-zA-HJ-NP-Z1-9]{25,34}\b" /mnt/image 2>/dev/null
Ethereum-Adressen suchen
grep -RoaE "\b0x[a-fA-F0-9]{40}\b" /mnt/image 2>/dev/null

24.3 Browser-Extension-Daten

MetaMask und andere Browser-Wallets speichern in:

# Chrome
~/.config/google-chrome/Default/Local Extension Settings/nkbihfbeogaeaoehlefnkodbefgpgknn/

# Firefox
~/.mozilla/firefox/*.default/storage/default/

# Brave
~/.config/BraveSoftware/Brave-Browser/Default/Local Extension Settings/

24.4 Carving für Krypto-Daten

Strings-Suche in RAW-Image
strings -n 12 /evidence/image.raw | \
    grep -iE "(mnemonic|seed phrase|wallet|bitcoin|ethereum|ledger|trezor)" > crypto_hits.txt

24.5 BIP39 Seed-Wörter erkennen

Die 2048 BIP39-Wörter können als Suchmuster dienen:

Nach BIP39-Wort-Sequenzen suchen
# Bekannte Seed-Anfänge suchen
grep -RiaE "\b(abandon|ability|able|about|above)\b.{0,100}\b(abandon|ability|able|about|above)\b" /mnt/image
Sicherheitswarnung

Seeds und Private Keys sind extrem sensibel!
Dokumentieren Sie Fundstellen, aber übertragen Sie niemals Seeds über unsichere Kanäle oder speichern Sie sie unverschlüsselt.

Kapitel 25

Vollautomatisierung

Der ultimative forensische Workflow — vom Einstecken des Datenträgers bis zum fertigen Archiv in einem Skript.

25.1 Das Master-Automatisierungsskript

#!/bin/bash
# ═══════════════════════════════════════════════════════════════════════════
# FORENSIC MASTER AUTOMATION v1.0
# Vollständiger Workflow: Device → Image → Sort → Archive → Report
# ═══════════════════════════════════════════════════════════════════════════

set -euo pipefail

# ─── KONFIGURATION ────────────────────────────────────────────────────────
CASE_ID="${1:-CASE-$(date +%Y%m%d-%H%M%S)}"
DEVICE="${2:-/dev/sdb}"
WORKDIR="/evidence/$CASE_ID"
ANALYST="$(whoami)"

# ─── FARBEN ───────────────────────────────────────────────────────────────
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

log() { echo -e "${BLUE}[$(date '+%H:%M:%S')]${NC} $*"; }
success() { echo -e "${GREEN}[✓]${NC} $*"; }
warn() { echo -e "${YELLOW}[!]${NC} $*"; }
error() { echo -e "${RED}[✗]${NC} $*"; exit 1; }

# ─── VERZEICHNISSE ────────────────────────────────────────────────────────
log "Erstelle Arbeitsverzeichnisse..."
mkdir -p "$WORKDIR"/{images,sorted,logs,hashes,reports}

# ─── PHASE 1: VORBEREITUNG ────────────────────────────────────────────────
log "═══════════════════════════════════════════════════════════════"
log "PHASE 1: Vorbereitung"
log "═══════════════════════════════════════════════════════════════"

# Device prüfen
[[ -b "$DEVICE" ]] || error "Device $DEVICE nicht gefunden"

# SMART auslesen
log "Lese SMART-Daten..."
smartctl -a "$DEVICE" > "$WORKDIR/logs/smart_before.txt" 2>&1 || warn "SMART nicht verfügbar"

# Geräteinfo
log "Dokumentiere Geräteinformationen..."
{
    echo "Case-ID: $CASE_ID"
    echo "Analyst: $ANALYST"
    echo "Datum: $(date -Is)"
    echo "Device: $DEVICE"
    echo "Seriennummer: $(smartctl -i "$DEVICE" | grep -i serial || echo 'N/A')"
    echo "Modell: $(smartctl -i "$DEVICE" | grep -i "Device Model" || echo 'N/A')"
    echo "Kapazität: $(blockdev --getsize64 "$DEVICE" | numfmt --to=iec)"
} > "$WORKDIR/logs/device_info.txt"

success "Vorbereitung abgeschlossen"

# ─── PHASE 2: IMAGING ─────────────────────────────────────────────────────
log "═══════════════════════════════════════════════════════════════"
log "PHASE 2: Imaging mit ddrescue"
log "═══════════════════════════════════════════════════════════════"

IMAGE="$WORKDIR/images/disk.raw"
IMGLOG="$WORKDIR/logs/ddrescue.log"

log "Phase 2.1: Schnelles Lesen..."
ddrescue -f -n "$DEVICE" "$IMAGE" "$IMGLOG"

log "Phase 2.2: Retries..."
ddrescue -d -r3 "$DEVICE" "$IMAGE" "$IMGLOG"

log "Phase 2.3: Reverse Pass..."
ddrescue -R -r2 "$DEVICE" "$IMAGE" "$IMGLOG"

# Image-Hash
log "Erstelle Image-Hash..."
sha256sum "$IMAGE" > "$WORKDIR/hashes/image.sha256"

success "Imaging abgeschlossen"

# ─── PHASE 3: MOUNT & ANALYSE ─────────────────────────────────────────────
log "═══════════════════════════════════════════════════════════════"
log "PHASE 3: Mount & Analyse"
log "═══════════════════════════════════════════════════════════════"

MOUNTPOINT="/mnt/$CASE_ID"
mkdir -p "$MOUNTPOINT"

# Loop-Device erstellen
LOOPDEV=$(losetup -f --show "$IMAGE")
kpartx -av "$LOOPDEV" || true

# Versuche zu mounten
for part in /dev/mapper/$(basename "$LOOPDEV")p*; do
    [[ -b "$part" ]] || continue
    mount -o ro "$part" "$MOUNTPOINT" 2>/dev/null && break
done

if mountpoint -q "$MOUNTPOINT"; then
    success "Image gemountet"
    
    # Statistiken
    log "Erstelle Statistiken..."
    {
        echo "Dateien gesamt: $(find "$MOUNTPOINT" -type f | wc -l)"
        echo "Verzeichnisse: $(find "$MOUNTPOINT" -type d | wc -l)"
        echo "Gesamtgröße: $(du -sh "$MOUNTPOINT" | cut -f1)"
    } > "$WORKDIR/logs/statistics.txt"
else
    warn "Mount fehlgeschlagen - nutze alternative Methoden"
fi

# ─── PHASE 4: SORTIERUNG ──────────────────────────────────────────────────
log "═══════════════════════════════════════════════════════════════"
log "PHASE 4: MIME-basierte Sortierung"
log "═══════════════════════════════════════════════════════════════"

# (Hier das Sortierskript aus Kapitel 16 aufrufen)
# ./forensic-sort.sh "$MOUNTPOINT" "$WORKDIR/sorted"

success "Sortierung abgeschlossen"

# ─── PHASE 5: ARCHIVIERUNG ────────────────────────────────────────────────
log "═══════════════════════════════════════════════════════════════"
log "PHASE 5: Archivierung"
log "═══════════════════════════════════════════════════════════════"

ARCHIVE="$WORKDIR/${CASE_ID}_archive.tar.zst"

log "Erstelle Archiv..."
tar --zstd -cvf "$ARCHIVE" -C "$WORKDIR" sorted/

log "Erstelle Archiv-Hash..."
sha256sum "$ARCHIVE" > "$WORKDIR/hashes/archive.sha256"

success "Archivierung abgeschlossen"

# ─── PHASE 6: CLEANUP ─────────────────────────────────────────────────────
log "═══════════════════════════════════════════════════════════════"
log "PHASE 6: Cleanup"
log "═══════════════════════════════════════════════════════════════"

umount "$MOUNTPOINT" 2>/dev/null || true
kpartx -dv "$LOOPDEV" 2>/dev/null || true
losetup -d "$LOOPDEV" 2>/dev/null || true
rmdir "$MOUNTPOINT" 2>/dev/null || true

success "Cleanup abgeschlossen"

# ─── ABSCHLUSS ────────────────────────────────────────────────────────────
log "═══════════════════════════════════════════════════════════════"
echo -e "${GREEN}"
echo "╔═══════════════════════════════════════════════════════════════╗"
echo "║           FORENSISCHE VERARBEITUNG ABGESCHLOSSEN              ║"
echo "╠═══════════════════════════════════════════════════════════════╣"
echo "║  Case-ID:  $CASE_ID"
echo "║  Workdir:  $WORKDIR"
echo "║  Image:    $IMAGE"
echo "║  Archiv:   $ARCHIVE"
echo "╚═══════════════════════════════════════════════════════════════╝"
echo -e "${NC}"

25.2 Verwendung

Vollautomatisch starten
sudo ./forensic-master.sh CASE-2025-001 /dev/sdb
Kapitel 26

Troubleshooting

Die häufigsten Probleme und ihre Lösungen — ein Nachschlagewerk für schwierige Situationen.

26.1 Imaging-Probleme

Problem Ursache Lösung
ddrescue stoppt sofort Device nicht lesbar Kabel prüfen, Port wechseln
Sehr langsam (<1 MB/s) Viele Bad Sectors -T timeout erhöhen, Pausen
Device verschwindet Überhitzung/Stromprobleme Kühlen, besseres Netzteil
Logfile wächst nicht Festplatte blockiert Neustart, anderer Port

26.2 Mount-Probleme

Fehler Ursache Lösung
unknown filesystem Partition beschädigt testdisk, photorec
structure needs cleaning Korruptes Dateisystem fsck auf KOPIE
wrong fs type Falscher Offset Offset manuell berechnen
Keine Partitionen sichtbar GPT/MBR beschädigt testdisk für Reconstruction

26.3 Sortier-Probleme

Problem Ursache Lösung
Permission denied Kodierungsfehler im Namen convmv, Zeichen bereinigen
Dateien fehlen im Output Fehler im Skript errors.log prüfen
Zu viele octet-stream Beschädigte Header File Carving verwenden
Skript bricht ab Speicher/Platz voll Mehr Platz, Batch-Verarbeitung

26.4 Performance-Optimierung

  • RAM-Disk für Logs — mount -t tmpfs -o size=1G tmpfs /tmp/logs
  • Parallelisierung — GNU parallel für find/xargs
  • SSD als Ziel — Schnelleres Schreiben
  • ionice — I/O-Priorität setzen
Teil VIII

Anhang

Referenzmaterial für den täglichen Einsatz — Glossar, Tabellen, Befehlsreferenzen und Checklisten.

Kapitel 27

Glossar

Wichtige Begriffe der digitalen Forensik und Datenrettung.

Begriff Definition
ACPO Association of Chief Police Officers — Britische Richtlinien für digitale Beweissicherung
Bad Sector Ein physisch oder logisch beschädigter Sektor auf einem Datenträger
Bitgenau Exakte 1:1-Kopie auf Bit-Ebene, ohne jede Veränderung
Carving Wiederherstellung von Dateien anhand ihrer Signaturen, ohne Dateisystem
Chain of Custody Lückenlose Dokumentation der Beweiskette
DCO Device Configuration Overlay — Versteckter Bereich auf HDDs
ddrescue GNU-Tool zum Erstellen von Images beschädigter Datenträger
EXIF Exchangeable Image File Format — Metadaten in Bilddateien
Forensisches Image Bitgenaue Kopie eines Datenträgers für Analyse
GPT GUID Partition Table — Moderner Partitionstabellen-Standard
Hash Eindeutiger digitaler Fingerabdruck einer Datei
HPA Host Protected Area — Versteckter Bereich auf HDDs
Imaging Erstellung einer forensischen Kopie eines Datenträgers
Integrität Unverändertheit von Daten
LBA Logical Block Addressing — Logische Sektoradressierung
MBR Master Boot Record — Älterer Partitionstabellen-Standard
MFT Master File Table — Zentrale Struktur von NTFS
MIME Multipurpose Internet Mail Extensions — Dateityp-Klassifikation
NFC/NFD Unicode-Normalisierungsformen für Zeichen
Octet-Stream Unbekannter binärer Dateityp
RAW-Image Unkomprimiertes, bitgenaues Datenträgerabbild
Seed Phrase Wiederherstellungswörter für Krypto-Wallets (BIP39)
SMART Self-Monitoring, Analysis and Reporting Technology
TRIM SSD-Befehl zum Löschen nicht mehr benötigter Blöcke
Volatil Flüchtig — Daten, die bei Stromverlust verschwinden
Write Blocker Hardware/Software zum Verhindern von Schreibzugriffen
Kapitel 28

Tabellen & Referenzen

Schnellreferenzen für den praktischen Einsatz.

28.1 MIME-Typen Schnellreferenz

Kategorie MIME-Typ Typische Endungen
Bilder image/jpeg .jpg, .jpeg
image/png .png
image/gif .gif
image/webp .webp
image/tiff .tiff, .tif
Videos video/mp4 .mp4, .m4v
video/quicktime .mov
video/x-msvideo .avi
video/x-matroska .mkv
Audio audio/mpeg .mp3
audio/x-wav .wav
audio/flac .flac
Dokumente application/pdf .pdf
application/msword .doc
application/vnd.openxmlformats-* .docx, .xlsx, .pptx
text/plain .txt
Archive application/zip .zip
application/x-rar .rar
application/x-tar .tar

28.2 Magic Bytes (Dateisignaturen)

Dateityp Magic Bytes (Hex) ASCII
JPEG FF D8 FF ÿØÿ
PNG 89 50 4E 47 0D 0A 1A 0A .PNG....
GIF 47 49 46 38 GIF8
PDF 25 50 44 46 %PDF
ZIP 50 4B 03 04 PK..
RAR 52 61 72 21 Rar!
7z 37 7A BC AF 27 1C 7z¼¯'..
MP3 FF FB oder 49 44 33 ÿû oder ID3
MP4 66 74 79 70 (offset 4) ftyp
SQLite 53 51 4C 69 74 65 SQLite
ELF (Linux) 7F 45 4C 46 .ELF
MZ (Windows EXE) 4D 5A MZ

28.3 SMART-Attribute

ID Attribut Kritisch?
5 Reallocated Sectors Count Ja
187 Reported Uncorrectable Errors Ja
188 Command Timeout Ja
197 Current Pending Sector Count Ja
198 Offline Uncorrectable Ja
199 UDMA CRC Error Count Ja (Kabel!)
Kapitel 29

Befehlsreferenz

Die wichtigsten Befehle auf einen Blick.

29.1 Imaging & Datenrettung

# ddrescue — Imaging
ddrescue -f -n /dev/sdX image.raw log.map          # Phase 1: Schnell
ddrescue -d -r3 /dev/sdX image.raw log.map         # Phase 2: Retries
ddrescue -R -r2 /dev/sdX image.raw log.map         # Phase 3: Reverse

# Hashing
sha256sum /dev/sdX > original.sha256               # Original hashen
sha256sum image.raw > image.sha256                 # Image hashen
sha256sum -c manifest.sha256                       # Verifizieren

# SMART
smartctl -a /dev/sdX                               # Alle SMART-Daten
smartctl -H /dev/sdX                               # Health Status

29.2 Mount & Analyse

# Image mounten
mount -o ro,loop image.raw /mnt/image              # Einfach
losetup -f --show image.raw                        # Loop-Device
kpartx -av /dev/loop0                              # Partitionen
mount -o ro /dev/mapper/loop0p1 /mnt/image         # Partition mounten

# Analyse
fdisk -l image.raw                                 # Partitionen anzeigen
file --mime-type datei                             # MIME-Typ
exiftool bild.jpg                                  # EXIF-Daten
strings -n 8 image.raw | grep -i password          # Strings suchen

29.3 Suche & Statistik

# Dateien finden
find /mnt -type f | wc -l                          # Anzahl Dateien
find /mnt -type f -size +1G                        # Große Dateien
find /mnt -name "*.jpg" -type f                    # Nach Name
find /mnt -type f -mtime -7                        # Letzte 7 Tage

# MIME-Statistik
find /mnt -type f -print0 | xargs -0 file --mime-type -b | sort | uniq -c | sort -nr

# Timeline
find /mnt -type f -printf "%T+ %p\n" | sort > timeline.txt

29.4 Sortierung & Archivierung

# Kodierung reparieren
convmv -f latin1 -t utf8 --notest -r /mnt          # Latin-1 → UTF-8
convmv -f utf8 -t utf8 --nfc --notest -r /mnt      # NFD → NFC

# Duplikate
fdupes -r /mnt > duplicates.txt                    # Duplikate finden

# Archivierung
tar --zstd -cvf archiv.tar.zst /evidence/sorted    # Zstandard
tar -cvJf archiv.tar.xz /evidence/sorted           # XZ
tar -cvzf archiv.tar.gz /evidence/sorted           # Gzip

29.5 Recovery-Tools

# Partitionen wiederherstellen
testdisk /dev/sdX                                  # Interaktiv

# File Carving
photorec /d /recovery image.raw                    # PhotoRec
foremost -t jpeg,png,pdf -i image.raw -o /carved   # Foremost
scalpel -c scalpel.conf -o /carved image.raw       # Scalpel
Kapitel 30

Prozessdiagramme

Visuelle Darstellung der forensischen Workflows.

30.1 Hauptworkflow

┌─────────────────────────────────────────────────────────────────┐
│                    FORENSISCHER HAUPTWORKFLOW                    │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
              ┌───────────────────────────────┐
              │  1. VORBEREITUNG              │
              │  • Hardware prüfen            │
              │  • Write-Blocker              │
              │  • Dokumentation starten      │
              └───────────────────────────────┘
                              │
                              ▼
              ┌───────────────────────────────┐
              │  2. IMAGING                   │
              │  • ddrescue Phase 1-3         │
              │  • Hash des Originals         │
              │  • Hash des Images            │
              │  • Vergleich                  │
              └───────────────────────────────┘
                              │
                              ▼
              ┌───────────────────────────────┐
              │  3. ANALYSE                   │
              │  • Image mounten              │
              │  • MIME-Analyse               │
              │  • Timeline erstellen         │
              │  • Kodierung prüfen           │
              └───────────────────────────────┘
                              │
                              ▼
              ┌───────────────────────────────┐
              │  4. SORTIERUNG                │
              │  • MIME-basierte Sortierung   │
              │  • Duplikaterkennung          │
              │  • Manifest erstellen         │
              └───────────────────────────────┘
                              │
                              ▼
              ┌───────────────────────────────┐
              │  5. ARCHIVIERUNG              │
              │  • Komprimiertes Archiv       │
              │  • Prüfsummen                 │
              │  • Signatur                   │
              └───────────────────────────────┘
                              │
                              ▼
              ┌───────────────────────────────┐
              │  6. ABSCHLUSS                 │
              │  • Bericht erstellen          │
              │  • Übergabeprotokoll          │
              │  • Langzeitarchivierung       │
              └───────────────────────────────┘

30.2 ddrescue-Entscheidungsbaum

                    ┌─────────────────────┐
                    │  Medium anschließen │
                    └──────────┬──────────┘
                               │
                               ▼
                    ┌─────────────────────┐
              ┌─────│ Wird es erkannt?    │─────┐
              │ NEIN└─────────────────────┘ JA  │
              │                                 │
              ▼                                 ▼
    ┌─────────────────┐              ┌─────────────────┐
    │ Kabel prüfen    │              │ SMART auslesen  │
    │ Port wechseln   │              └────────┬────────┘
    │ → Profi?        │                       │
    └─────────────────┘                       ▼
                                   ┌─────────────────────┐
                             ┌─────│ SMART OK?           │─────┐
                             │ NEIN└─────────────────────┘ JA  │
                             │                                 │
                             ▼                                 ▼
                   ┌─────────────────┐            ┌─────────────────┐
                   │ ddrescue        │            │ ddrescue        │
                   │ konservativ     │            │ normal          │
                   │ (-n -T 5s)      │            │ (-f -n)         │
                   └─────────────────┘            └─────────────────┘
Kapitel 31

Checklisten

Praktische Checklisten für den forensischen Alltag.

31.1 Vor dem Imaging

  • Write-Blocker angeschlossen
  • Zielmedium groß genug
  • Zielmedium formatiert/leer
  • Dokumentation vorbereitet
  • Case-ID vergeben
  • SMART-Daten gesichert
  • Seriennummer dokumentiert
  • Fotos des Originals gemacht

31.2 Nach dem Imaging

  • Hash des Originals erstellt
  • Hash des Images erstellt
  • Hashes verglichen und identisch
  • ddrescue-Log gesichert
  • Fehlerrate dokumentiert
  • Image erfolgreich gemountet
  • Dateisystem lesbar

31.3 Vor der Übergabe

  • Alle Hashes dokumentiert
  • Manifest vollständig
  • Archiv erstellt
  • Archiv-Hash erstellt
  • Bericht fertiggestellt
  • Übergabeprotokoll vorbereitet
  • Backup an zweitem Ort
  • Original versiegelt

31.4 Qualitätskontrolle

  • Alle Befehle dokumentiert
  • Alle Fehler geloggt
  • Prozess reproduzierbar
  • Zweite Person gegenlesen lassen
  • Standards eingehalten (ACPO/NIST)
Kapitel 32

Formulare & Vorlagen

Kopierbare Vorlagen für die Dokumentation.

32.1 Case-Dokumentation

═══════════════════════════════════════════════════════════════
                    CASE DOCUMENTATION
═══════════════════════════════════════════════════════════════

Case-ID:        _______________________
Datum:          _______________________
Analyst:        _______________________

QUELLE
──────────────────────────────────────────────────────────────
Gerätetyp:      [ ] HDD  [ ] SSD  [ ] USB  [ ] SD  [ ] Andere
Hersteller:     _______________________
Modell:         _______________________
Seriennummer:   _______________________
Kapazität:      _______________________
Zustand:        _______________________

IMAGING
──────────────────────────────────────────────────────────────
Tool:           _______________________
Version:        _______________________
Start:          _______________________
Ende:           _______________________
Dauer:          _______________________

Original-Hash:  SHA256: ________________________________
Image-Hash:     SHA256: ________________________________
Status:         [ ] Identisch  [ ] Abweichend

Fehlerrate:     _______ Sektoren von _______ (______%)

BEMERKUNGEN
──────────────────────────────────────────────────────────────
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________

Unterschrift:   _______________________  Datum: _____________
═══════════════════════════════════════════════════════════════
Kapitel 33

Quellen & Weiterführende Literatur

Standards, Dokumentationen und weiterführende Ressourcen.

33.1 Standards

  • ACPO Good Practice Guide — Good Practice Guide for Digital Evidence
  • RFC 3227 — Guidelines for Evidence Collection and Archiving
  • NIST SP 800-86 — Guide to Integrating Forensic Techniques
  • ISO/IEC 27037 — Guidelines for identification, collection, acquisition and preservation of digital evidence

33.2 Tool-Dokumentation

  • GNU ddrescue Manual — gnu.org/software/ddrescue/manual/
  • The Sleuth Kit — sleuthkit.org/sleuthkit/docs.php
  • PhotoRec — cgsecurity.org/wiki/PhotoRec
  • ExifTool — exiftool.org

33.3 Weiterführende Literatur

  • File System Forensic Analysis — Brian Carrier
  • The Art of Memory Forensics — Ligh, Case, Levy, Walters
  • Digital Forensics with Kali Linux — Shiva V. N. Parasram
  • Practical Forensic Imaging — Bruce Nikkel

33.4 Online-Ressourcen

  • SANS Digital Forensics — sans.org/digital-forensics-incident-response/
  • Forensics Wiki — forensicswiki.xyz
  • DFIR Training — dfir.training
Ende des Manifests

Dieses Werk ist ein lebendes Dokument.
Forensische Methoden entwickeln sich weiter, neue Tools entstehen, Standards werden aktualisiert. Bleiben Sie informiert und passen Sie Ihre Workflows entsprechend an.

„Die Wahrheit liegt in den Daten — unsere Aufgabe ist es, sie sichtbar zu machen."