Computerforensik Wintersemester 2009/2010 Harald Baier Kapitel 4: File-Carving, Verschlüsselung, Steganographie
Motivation Im Rahmen forensischer Untersuchungen ergeben sich oft folgende Herausforderungen: Gelöschte Daten sind wieder herzustellen: File-Carving Zugriff auf verschlüsselte Daten Entdeckung von versteckten Daten Diskussion an Hand konkreter Tools Harald Baier Computerforensik h_da WS 2009/2010 2
Inhalt File-Carving Beispiel-Tool: scalpel Verschlüsselung Beispiel-Tool: TrueCrypt Steganographie Beispiel-Tool: outguess Harald Baier Computerforensik h_da WS 2009/2010 3
Inhalt File-Carving Beispiel-Tool: scalpel Verschlüsselung Beispiel-Tool: TrueCrypt Steganographie Beispiel-Tool: outguess Harald Baier Computerforensik h_da WS 2009/2010 4
File-Carving: Grundlagen Rekonstruktion von Dateien: Suche nach Fragmenten alter Dateien Ohne Verwendung von Metadaten des Dateisystems Suchorte nach Fragmenten: Nicht-allozierte Bereiche innerhalb des Dateisystems (z.b. FS-Blöcke gelöschter Dateien) Nicht-allozierte Bereiche außerhalb des Dateisystems: Innerhalb der Partition: File System Slack Außerhalb der Partition: Von alter Partitionierung Defekte Bereiche des Datenträgers Harald Baier Computerforensik h_da WS 2009/2010 5
File-Carving: Prinzipien Idealzustand: Nicht-fragmentierte Datei Datenblöcke liegen in aufeinanderfolgenden HDD-Blöcken Datei-Header und -Footer finden Dazwischen liegen die Daten: Auslesen mit dcat aus TSK Beispiele für Header- und Footer-Hexdumps: JPEG-Header: ffd8 ffe0 0010 JPEG-Footer: ffd9 MPEG-Header: 0000 01ba MPEG-Footer: 0000 01b9 Andernfalls Verwendung von Heuristiken Harald Baier Computerforensik h_da WS 2009/2010 6
Open-Source-Tools für File-Carving foremost: Aktuelle Version 1.5.6 vom 2009-05-06 Stammt ursprünglich von US Air Force Office of Special Investigations Center Sucht nach Headern und Footern von Dateien scalpel: Aktuelle Version 1.6.0 vom 2006-12-08 Basiert auf foremost 0.69 Ziel: Bessere Performanz als foremost Für Windows und Linux verfügbar Ebenfalls 'Signatur-basiert' Header und Footer stehen in Konfigurationsdatei Harald Baier Computerforensik h_da WS 2009/2010 7
Konfigurationsdatei scalpel.conf # case size header footer #extension sensitive # GIF and JPG files (very common) gif y 5000000 \x47\x49\x46\x38\x37\x61 \x00\x3b gif y 5000000 \x47\x49\x46\x38\x39\x61 \x00\x3b jpg y 200000000 \xff\xd8\xff\xe0\x00\x10 \xff\xd9 # PNG # png y 20000000 \x50\x4e\x47? \xff\xfc\xfd\xfe [REMOVED] # doc y 10000000 \xd0\xcf\x11\xe0\xa1\xb1 # # Outlook files # pst y 500000000 \x21\x42\x4e\xa5\x6f\xb5\xa6 # ost y 500000000 \x21\x42\x44\x4e Harald Baier Computerforensik h_da WS 2009/2010 8
Wiederherstellung von Fotos der Digitalkamera (1/2) Problem: Header und Footer nicht Standard-JPEG Digitalkameras verwenden oft Exif-Marker: Exif = Exchangeable Image File format for digital cameras Exif-Datenblock speichert Metadaten zur Aufnahme: Kameraeinstellungen Zeitpunkt und ggfls. GPS-Koordinaten bei Aufnahme Thumbnail des Bildes (manchmal bleibt dieses nach Bildbearbeitung erhalten) Daten im Exif-Datenblock sind forensisch interessant Linux-Tool exif liest Daten aus (auch Thumbnail) Harald Baier Computerforensik h_da WS 2009/2010 9
Wiederherstellung von Fotos der Digitalkamera (2/2) Exif-Marker für Start of Image: JPEG-Start-of-Image-Header ffd8 Exif-Header: ffe1 Spezifischer String: b752 (in unserem Beispiel) String 'Exif' in ASCII: 4578 6966 Zwei Nullbytes: 0000 Footer: 0931 0d0a Harald Baier Computerforensik h_da WS 2009/2010 10
Konfigurationsdatei für Digitalkamera # case size header footer #extension sensitive # GIF and JPG files (very common) # gif y 5000000 \x47\x49\x46\x38\x37\x61 \x00\x3b # gif y 5000000 \x47\x49\x46\x38\x39\x61 \x00\x3b # jpg y 200000000 \xff\xd8\xff\xe0\x00\x10 \xff\xd9 # EXIF marker jpg y 200000000 \xff\xd8\xff\xe1 \x09\x31\x0d\x0a # PNG # png y 20000000 \x50\x4e\x47? \xff\xfc\xfd\xfe [REMOVED] Harald Baier Computerforensik h_da WS 2009/2010 11
scalpel: Wiederherstellung von Bildern Wiederherstellung aus Image: watson $ scalpel -c scalpel.conf image_digitalkamera.dd Scalpel legt einen Ordner scalpel-output an Bilder liegen in Ordnern der Form jpg-2-0 (Dateinamen werden nicht wiederhergestellt) Scalpel legt Log-Datei audit.txt an watson $ ls scalpel-output audit.txt jpg-2-0 watson $ ls scalpel-output/jpg-2-0 00000000.jpg 00000022.jpg 00000044.jpg 00000066.jpg 00000001.jpg 00000023.jpg 00000045.jpg 00000067.jpg [REMOVED] Harald Baier Computerforensik h_da WS 2009/2010 12
Inhalt File-Carving Beispiel-Tool: scalpel Verschlüsselung Beispiel-Tool: TrueCrypt Steganographie Beispiel-Tool: outguess Harald Baier Computerforensik h_da WS 2009/2010 13
Informationen von www.truecrypt.org Main Features: Creates a virtual encrypted disk within a file and mounts it as a real disk. Encrypts an entire partition or storage device such as USB flash drive or hard drive. Encrypts a partition or drive where Windows is installed (preboot authentication). Encryption is automatic, real-time (on-the-fly) and transparent. Provides plausible deniability, in case an adversary forces you to reveal the password: Hidden volume (steganography) and hidden operating system. Encryption algorithms: AES-256, Serpent, and Twofish. Mode of operation: XTS. Harald Baier Computerforensik h_da WS 2009/2010 14
Hauptfenster von TrueCrypt Harald Baier Computerforensik h_da WS 2009/2010 15
TrueCrypt-Eigenschaften (1/2) TrueCrypt verschlüsselt nicht einzelne Dateien, sondern nur 'File Container' oder Partitionen File Container = Volume Diese Container werden über das TrueCrypt-GUI angelegt Dateisysteme für Linux-Container: FAT, ext2, ext3 Standardkonfiguration: Passwort-basiert Aber auch Anbindung an Sicherheitstoken via PKCS#11 Mehrfachverschlüsselungen möglich: Zweifachverschlüsselung (z.b. AES-Serpent) Dreifachverschlüsselung: AES-Serpent-Twofish Harald Baier Computerforensik h_da WS 2009/2010 16
TrueCrypt-Eigenschaften (2/2) Unverschlüsselte Daten liegen nur im RAM: Forensischer Zugriff ohne Passwort nur via Hauptspeicher Post-mortem-Analyse erfordert Passwort Einhängepunkte für Container: Windows: Laufwerkbuchstaben D:\, E:\, Linux: /media/truecrypt1, /media/truecrypt2, Harald Baier Computerforensik h_da WS 2009/2010 17
Inhalt File-Carving Beispiel-Tool: scalpel Verschlüsselung Beispiel-Tool: TrueCrypt Steganographie Beispiel-Tool: outguess Harald Baier Computerforensik h_da WS 2009/2010 18
Steganographie Wissenschaft von der Verschleierung der Existenz einer Nachricht Prinzip: Verschleiere Daten durch Einbettung in unauffällige Trägerdatei Typischerweise Bild-, Audio- oder Videodatei als Trägerdatei Sicherheitsziel: Vertraulichkeit Bei Übermittlung von Alice zu Bob Bei persistenter Speicherung auf Speichermedium (Beispiel: Strafbare Inhalte) Forensiker sollte versteckte Daten finden: Vorsicht bei verschiedenen Dateien in einer Trägerdatei Harald Baier Computerforensik h_da WS 2009/2010 19
Open-Source-Tools für Steganographie outguess: Aktuelle Version 0.2 vom 2001-02-12 Einbetten von Nachrichten in jpg-bilder Zwei verschiedene Nachrichten können in gleiche Trägerdatei versteckt werden steghide: Aktuelle Version 0.5.1 vom 2003-10-15 Einbetten von Nachrichten in jpg- oder bmp-bilder Aber auch in wav- oder au-dateien stegdetect: Aktuelle Version 0.6 vom 2004-09-06 Steganalyse: Erkennen von versteckten Daten Harald Baier Computerforensik h_da WS 2009/2010 20
Outguess: Syntax OutGuess 0.2 Universal Stego (c) 1999-2001 Niels Provos outguess [options] [<input file> [<output file>]] -[ss] <n> -[ii] <n> iteration start, capital letter for 2nd dataset iteration limit -[kk] <key> key -[dd] <name> filename of dataset -[ee] use error correcting encoding -p <param> parameter passed to destination data handler -r retrieve message from data -x <n> number of key derivations to be tried -m mark pixels that have been modified -t collect statistic information -F[+-] turns statistical steganalysis foiling on/off. The default is on. Harald Baier Computerforensik h_da WS 2009/2010 21
Outguess: Beispiel für Einbetten einer Datei watson $ outguess -k 1234 -d geheim.txt bild.jpg bild_in.jpg Reading bild.jpg... JPEG compression quality set to 75 Extracting usable bits: 21799 bits Correctable message size: 13303 bits, 61.03% Encoded 'geheim.txt': 272 bits, 34 bytes Finding best embedding... 0: 153(50.3%)[56.2%], bias 150(0.98), saved: -2, total: 0.70% 4: 154(50.7%)[56.6%], bias 144(0.94), saved: -2, total: 0.71% [REMOVED] 28, 239: Embedding data: 272 in 21799 Bits embedded: 303, changed: 127(41.9%)[46.7%], bias: 112, tot: 21813, skip: 21510 [REMOVED] Harald Baier Computerforensik h_da WS 2009/2010 22
Outguess: Beispiel für Auslesen einer Datei watson $ outguess -k 1234 -r bild_in.jpg out-geheim.txt Reading bild.jpg... Extracting usable bits: 21799 bits Steg retrieve: seed: 28, len: 34 watson $ ls -l out-geheim.txt -rw------- 1 baier baier 34 2009-12-12 21:32 out-geheim.txt Harald Baier Computerforensik h_da WS 2009/2010 23
Outguess: Beispiel für Einbetten zweier Dateien Beim Einbetten muss ein fehlerkorrigierender Code verwendet werden (Flag -E) watson $ outguess -k 1234 -d offen.txt \ -E-K 4321 -D geheim.txt bild.jpg bild_in.jpg Auslesen der unverdächtigen Datei: watson $ outguess -k 1234 -r bild_in.jpg out1.txt Auslesen der geheimen Datei: watson $ outguess -K 4321 -r bild_in.jpg out2.txt Harald Baier Computerforensik h_da WS 2009/2010 24