Wir führen heute die Besprechung von Übung 2 fort. Thematisch wird hierbei an die Analyse des NTFS-Dateisystems angeknüpft.
| Skript-Anfang | Übung 2 – Seite 1 |
|---|---|
| Skript-Ende | Übung 2 – Seite 1 |
Besprechung der Übung
Finden Sie die MFT Entry Number (d.h. die Inode-Nummer) der Datei watermark.bmp. Wie lautet ihre Sequence Number?
Wir durchsuchen das Image mit fls und filtern die Ausgabe mit grep nach dem Dateinamen.
$ fls -r workingcopy_partition_workingcopy_partition_workingcopy_partition_ext.dd | grep watermark.bmp
+ r/r 46-128-4: watermark.bmp
Aus dem Rückgabewert können wir ablesen, dass es eine Instanz dieser Datei gibt, welche über Inode 46 adressiert wird. Über die Inode können wir mit istat weitere Informationen auslesen.
$ istat workingcopy_partition_workingcopy_partition_workingcopy_partition_ext.dd 46
MFT Entry Header Values:
Entry: 46 Sequence: 3
$LogFile Sequence Number: 7528758
Allocated File
Links: 2
[...]
Die Sequenznummer lässt sich leicht aus dieser Ausgabe ablesen. Die Datei hat somit die Inode 46 und die Sequenznummer 3.
Geben Sie den vollständigen Verzeichnispfad der Datei an.
In der Ausgabe von fls haben wir gesehen, dass die Datei eine Hierarchiestufe unter dem Root-Verzeichnis liegt (erkennbar an dem +). Die Ausgabe über istat enthält den Hinweis auf die Inode des Parent MFT Entry. Wir geben uns diese Informationen daher nochmals aus.
$ istat workingcopy_partition_workingcopy_partition_workingcopy_partition_ext.dd 46
MFT Entry Header Values:
Entry: 46 Sequence: 3
$LogFile Sequence Number: 7528758
Allocated File
Links: 2
[...]
$FILE_NAME Attribute Values:
Flags: Archive
Name: watermark.bmp
Parent MFT Entry: 41 Sequence: 6
Allocated Size: 0 Actual Size: 0
Created: 2014-04-01 03:27:10 (CEST)
File Modified: 2014-04-01 03:27:10 (CEST)
MFT Modified: 2014-04-01 03:27:10 (CEST)
Accessed: 2014-04-01 03:27:10 (CEST)
[...]
Rufen wir nun die Inode 41 ebenfalls über istat auf, erhalten wir folgende Informationen.
$ istat workingcopy_partition_workingcopy_partition_workingcopy_partition_ext.dd 41
MFT Entry Header Values:
Entry: 41 Sequence: 6
$LogFile Sequence Number: 7528870
Allocated Directory
Links: 2
$STANDARD_INFORMATION Attribute Values:
Flags:
Owner ID: 0
Security ID: 268 (S-1-5-32-544)
Created: 2014-04-01 03:27:10 (CEST)
File Modified: 2014-04-01 03:27:11 (CEST)
MFT Modified: 2014-04-01 03:27:11 (CEST)
Accessed: 2014-04-01 03:27:11 (CEST)
$FILE_NAME Attribute Values:
Flags: Directory
Name: c11ebc8f1088cd30d5e7
Parent MFT Entry: 5 Sequence: 5
Allocated Size: 0 Actual Size: 0
Created: 2014-04-01 03:27:10 (CEST)
File Modified: 2014-04-01 03:27:10 (CEST)
MFT Modified: 2014-04-01 03:27:10 (CEST)
Accessed: 2014-04-01 03:27:10 (CEST)
Der Parent-Eintrag dieser Inode ist das Root-Verzeichnis (Inode 5), somit haben wir das oberste Verzeichnis erreicht. Der vollständige Pfad der Datei ist daher /c11ebc8f1088cd30d5e7/watermark.bmp.
Sichern Sie die Informationen aus dem MFT Entry der Datei watermark.bmp einmal als Hexdump und einmal für den Menschen lesbar.
Die Ausgabe des Hexdumps kann über icat und dd ermöglicht werden. Hierfür überspringen wir die ersten 47104 (=46*1024) Byte.
$ icat workingcopy_partition_workingcopy_partition_workingcopy_partition_ext.dd 0 | dd of=watermark_bmp_mft.dd skip=47104 count=1024 bs=1\n1024+0 Datensätze ein\n1024+0 Datensätze aus\n1024 Bytes (1,0 kB) kopiert, 0,212446 s, 4,8 kB/s
Die für Menschen lesbare Ausgabe erhalten wir dadurch, dass wir die Ausgabe von istat in eine Textdatei schreiben.
$ istat workingcopy_partition_workingcopy_partition_workingcopy_partition_ext.dd 46 > watermark_bmp.txt
Welche Attribute sind im MFT Entry von watermark.bmp vorhanden?
In der istat-Ausgabe bzw. der soeben erstellten Textdatei sind die Attribute aufgelistet.
$ istat workingcopy_partition_workingcopy_partition_workingcopy_partition_ext.dd 46
MFT Entry Header Values:
Entry: 46 Sequence: 3
$LogFile Sequence Number: 7528758
Allocated File
Links: 2
[...]
Attributes:
Type: $STANDARD_INFORMATION (16-0) Name: N/A Resident size: 72
Type: $FILE_NAME (48-3) Name: N/A Resident size: 90
Type: $FILE_NAME (48-2) Name: N/A Resident size: 92
Type: $DATA (128-4) Name: N/A Non-Resident size: 110348 init_size: 110348
[...]
Der MFT Entry hat die vier Attribute $STANDARD_INFORMATION und $DATA sowie zwei mal das Attribut $FILE_NAME.
Mounten Sie das Dateisystem und löschen Sie die Datei watermark.bmp.
$ sudo mount -t ntfs-3g workingcopy_partition_workingcopy_partition_workingcopy_partition_ext.dd /mnt
[sudo] password for mkr:
The disk contains an unclean file system (0, 0).
The file system wasn't safely closed on Windows. Fixing.
$ rm /mnt/c11ebc8f1088cd30d5e7/watermark.bmp
Um eine Löschoperation durchführen zu können, muss das Dateisystem ohne Schreibschutz gemountet werden. Veränderungen durch das Mounten allein können daher nicht ausgeschlossen werden.
Welche Informationen haben sich im Inode der Datei verändert. Entscheiden Sie insbesondere, ob beim Löschen die Sequence Number erhöht wird.
Zunächst geben wir uns die Informationen über Inode 46 bzw. watermark.bmp erneut aus.
$ istat workingcopy_partition_workingcopy_partition_workingcopy_partition_ext.dd 46
MFT Entry Header Values:
Entry: 46 Sequence: 4
$LogFile Sequence Number: 7528758
Not Allocated File
Links: 0
[...]
Attributes:
Type: $STANDARD_INFORMATION (16-0) Name: N/A Resident size: 72
Type: $FILE_NAME (48-2) Name: N/A Resident size: 92
Type: $DATA (128-4) Name: N/A Non-Resident size: 110348 init_size: 110348
[...]
Vergleicht man dies mit der Textdatei von zuvor, so erkennt man, dass sich die Sequenznummer von 3 auf 4 geändert hat. Weiterhin ist die Datei nun als Not Allocated vermerkt und verfügt über 0 Links. Ein $FILE_NAME-Attribut wurde in diesem Zug gelöscht (der DOS-Name). Da $DATA noch vorhanden ist, kann die Datei vollständig und unproblematisch wieder rekonstruiert werden.
Speichern Sie nun das PDF des Übungsblatts in dem gleichen Verzeichnis wie die eben gelöschte Datei ab. Welcher MFT Entry wird genutzt? Entscheiden Sie mit Hilfe des ursprünglichen Dateisystemimages, ob sich die Sequenznummer beim Anlegen der Datei geändert hat.
Die Datei lässt sich einfach über fls im Image finden.
$ fls -r workingcopy_partition_workingcopy_partition_workingcopy_partition_ext.dd | grep forensic
+ r/r 124-128-2: forensic-ss15-exercise2.pdf
Für das Übungsblatt wird nun die Inode 124 verwendet. Die Sequenznummer ändert sich durch diesen Schritt nicht.
Sie wenden den folgenden Befehl auf einen nicht näher bekannten MFT Entry xx an. Welches Attribut lesen Sie aus? Geben Sie das Datum an, das durch den last accessed Zeitstempel definiert wird.
$ icat workingcopy_partition_workingcopy_partition_workingcopy_partition_workingcopy_partition_ext.dd xx-16 | xxd | less\n0000000: ee82 ec80 494d cf01 3446 1081 494d cf01 ....IM..4F..IM..\n0000010: 3446 1081 494d cf01 2ece 3881 494d cf01 4F..IM....8.IM..\n0000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................\n0000030: 0000 0000 0c01 0000 0000 0000 0000 0000 ................\n0000040: 0000 0000 0000 0000 ........
Das Suffix -16 steht für das Attribut $STANDARD_INFORMATION. Die folgende Tabelle beschreibt den Aufbau der Zeitstempel.
| Offset | Größe | Beschreibung |
|---|---|---|
| 0x00 | 8 | C Time – File Creation |
| 0x08 | 8 | A Time – File Altered |
| 0x10 | 8 | M Time – MFT Changed |
| 0x18 | 8 | R Time – File Read |
Der Zeitstempel ist somit 0x01cf4d498138ce2e und entspricht der Dezimalzahl 130407892312968750. Dieser Wert steht für die Anzahl der 0,1 Mikrosekunden seit dem 01.01.1601 mit UTC 00:00. Wir können daher abschätzen, dass der letzte Zugriff im Jahr 2014 (=1601+413) gegen Ende März (=89/3) stattgefunden hat. Die zugrundeliegende Formel wird im folgenden gezeigt.
\( \130407892312968750 * 0,1\mu s = 130407892312968750 * \frac{1}{10} * \frac{1s}{1000000 } =13040789231,296875s \60\frac{s}{m}*60\frac{m}{h}*24\frac{h}{d}*365,2425\frac{d}{y}=31556952\frac{mhds}{mhdy}=31556952\frac{s}{y} \ \frac{13040789231,296875s}{31556952\frac{s}{y}}\approx 413,24616 Jahre \)