Analyse roher Daten mit CI Hex Viewer
Analyse roher Daten ist ein unentbehrliches Teil des Prozesses von Datenrettung und forensischer Untersuchung. Datensuche und Datenanalyse auf einem Speicher werden normalerweise mithilfe spezieller Software durchgeführt. Es gibt aber Fälle, die die automatischen Softwaremechanismen nicht bedecken können. Dann müssen die rohen Daten direkt vom User analysiert werden. |
In diesem Artikel wird ein Beispiel zur Analyse roher Daten mit Programm CI Hex Viewer angeführt. Hier wird die Struktur des Bootsektors der NTFS-Partition mit dem Zweck der Suche der Dateitabelle MFT für weitere Datenrettung analysiert. Dabei werden einige Tipps zur Programmbenutzung gegeben.
Zuerst öffnen wir den NTFS-Volumen im Programm CI Hex Viewer. Dazu drücken wir den Knopf Öffnen, dann Physische Festplatte und wählen die zu analysierende NTFS-Partition aus der Speicherliste im Dialogfenster.
Eine virtuelle Festplatte wird dabei als eine Datei mit Option Als Speicherabbilddateigeöffnet.
Mit der im Programm schon geöffneter Festplatte kann man Partitionen auch durch die Option Partition aus diesem Speicher öffnen.
NTFS-Bootsektor hat die folgende Struktur:
Offset |
Feldlänge |
Feldname |
0x0 |
3 |
Sprung auf Bootstrap-Code |
0x03 |
8 |
„NTFS“-Kennzeichen |
0x0B |
25 |
Bios Parameter Block (BPB) |
0x24 |
48 |
Erweiterter BPB |
0x54 |
426 |
Bootstrap-Code |
0x01FE |
2 |
Marker für das Ende des Bootsektors |
Zur Einteilung des Bereiches markieren wir sofort die Datenblöcke des Bootsektors im Programm. Dazu wählen wir Position markieren aus der Toolbar
und speichern die Position mit unserem Kommentar.
Alle markierten Positionen werden in eine Liste eingetragen.
Um diese Struktur auch für weitere Analysen zu verwenden, speichern wir die Liste in eine Datei drückend auf den Knopf Speichern. Die gespeicherte Liste wird durch den Knopf Öffnen ins Programm geladen. Mit dem Knopf Löschen wird die aktuelle Liste entfernt.
Der BPB und der erweiterte BPB sind das wichtigste Teil des Bootsektors für Datenrettung aus einem NTFS-Laufwerk. Sie enthalten wesentliche Informationen über die Architektur des Laufwerks und weisen auf die MFT, wo sich die Einträge über alle Dateien im NTFS-System befinden. Insgesamt hat der BPB die folgende Struktur:
Offset |
Feldlänge (Bytes) |
Feldname |
0x0B |
2 |
Anzahl von Bytes pro Sektor |
0x0D |
1 |
Anzahl von Sektoren pro Cluster |
0x0E |
2 |
Anzahl von reservierten Sektoren |
0x10 |
3 |
Immer 0 |
0x13 |
2 |
Wird durch NTFS nicht benutzt |
0x15 |
1 |
Quellentyp |
0x16 |
2 |
Immer 0 |
0x18 |
2 |
Anzahl von Sektoren pro Spur |
0x1A |
2 |
Anzahl von Köpfen |
0x1C |
4 |
Anzahl versteckter Sektoren |
0x20 |
4 |
Wird durch NTFS nicht benutzt |
0x24 |
4 |
Wird durch NTFS nicht benutzt |
0x28 |
8 |
Anzahl von Sektoren im NTFS-Volumen |
0x30 |
8 |
Startcluster von MFT |
0x38 |
8 |
Startcluster der MFT-Kopie |
0x40 |
4 |
Anzahl von Clustern pro MFT-Eintrag |
0x44 |
4 |
Anzahl von Clustern pro Index-Eintrag |
0x48 |
8 |
Einzigartige Seriennummer des Volumens |
0x50 |
4 |
Kontrollsumme |
Der BPB beginnt mit Offset 0x0B, gefolgt vom erweiterten BPB ab Offset 0x24. Insgesamt nimmt der BPB den Datenbereich von Offset 0x0B bis Offset 0x53 (73 Bytes). Von der Liste markierter Positionen übergehen wir auf den Anfang des BPB.
Zu einem leichten Anschauen heben wir diesen Bereich hervor, indem wir den Knopf Bereich wählen drücken
und den Bereich durch Angabe der Positionen ab 0x0B bis 0x53
bzw. durch Angabe von der Anzahl von Bytes markieren.
Die Information über den Markierungsbereich wird in der kontextuellen Zeile widerspiegelt. Hier finden wir den Anfang, die Länge und die Gesamtgröße des markierten Bereiches. Die hexadezimale Darstellung lässt sich leicht in dezimal konvertieren. Dazu drücken wir [DEC] an der Spitze von der Spalte für die Zeilenadresse.
Die Werte von Datenfelder lassen sich auch mit dem Rohdateninspektor leicht lesen. Zur Widerspiegelung von Werten der Datenfelder im Rohdateninspektor wird der Cursor an die Anfangsposition des Feldes gestellt. Danach wird die Zeile mit einer entsprechenden Feldlänge in der Tafel gesucht. Zum Beispiel, befindet sich der Wert des 2-Byte-Feldes ab Position 0x0B in der Zeile Word (2 Bytes) – 0x0200.
Zum Hinzufügen bzw. zur Entfernung eines Datentyps im Rohdateninspektor wird Abschnitt Konfiguration geöffnet, konfigurieren in der Zeile für den Dateninspektor gedrückt und die nötigen Datentype werden gewählt.
Die Analyse von BPB auf unserer NTFS-Partition ergibt das Folgende:
Offset |
Feldlänge (Bytes) |
Feldname |
Ergebnis |
0x0B |
2 |
Anzahl von Bytes pro Sektor |
0x200 (512 Bytes) |
0x0D |
1 |
Anzahl von Sektoren pro Cluster |
0x08 (8 Sektoren) |
0x0E |
2 |
Anzahl versteckter Sektoren |
0 (Sektoren) |
0x15 |
1 |
Datenquellentyp |
0xF8 (steht für die Festplatte) |
0x18 |
2 |
Anzahl von Sektoren pro Spur |
0x3F (63 Sektoren) |
0x1A |
2 |
Anzahl von Köpfen |
0xFF (255 Köpfe) |
0x1C |
4 |
Anzahl versteckter Sektoren |
0x1080 (4224 Sektoren) |
0x28 |
8 |
Anzahl von Sektoren auf der Partition insgesamt |
0x0C247FFF (203 718 655 Sektoren) |
0x30 |
8 |
MFT-Startcluster |
0x0C0000 (Cluster 786432) |
0x38 |
8 |
Startcluster der MFT- Backupkopie |
0x02 (Cluster 2) |
0x40 |
4 |
Anzahl von Clustern pro MFT-Eintrag |
0xF6 (246 Cluster) |
0x44 |
4 |
Anzahl von Clustern pro Index-Eintrag in NTFS |
0x01 (1 Cluster) |
0x48 |
8 |
Kennung für die NTFS-Partition |
0x38 2C 72 B2 2C 72 6B 30 |
0x50 |
4 |
Kontrollsumme |
0x00 00 00 00 |
Anhand von den entsprechenden Werten erkennt und sammelt das Programm die Information über Datenquellen. Die Zusammenfassung von Datenquelleneigenschaften ist in der Informationstafel zu finden.
Der Inspektor kann auch ausblendet werden, indem der Knopf Inspektor-Tafel umschalten gedrückt wird.
Um die Konsistenz des Bootsektors zu überprüfen, öffnen wir den Marker für das Ende des Bootsektors. Dazu wählen wir Nächste Position aus der Drop-Down-Liste und übergehen auf die nötige Position ohne die ganze Liste öffnen zu müssen.
Hier finden wir den Wert AA 55, was dem Wert eines unbeschädigten Bootsektors entspricht.
Die wichtigste Information für die Datenrettung von NTFS ist die Information zum Finden von MFT. Zum Ausrechnen der MFT-Position sind die Startposition des MFT-Clusters, die Anzahl von Sektoren in einem Cluster und die Anzahl von Bytes in einem Sektor wesentlich. Aus unserer Analyse folgt, dass sich die MFT auf Cluster 786432 befindet, dass die Anzahl von Bytes pro Sektor 512 und die Anzahl von Sektoren pro Cluster 8 ist. Der MFT-Startcluster wird mit der Clustergröße multipliziert, was den MFT-Startposition ergibt: 786432 x (512 x 8) = 786432 x 4096 = 3221225472 (0xC0000000).
Wir stellen den Cursor am Start der Partition und überspringen zum MFT-Startposition mit dem Knopf Übergehen.
Dazu geben wir im Dialog zum Positionswechsel Position 0xC0000000, wählen Bytes als Einheit zum Ausrechnen der neuen Position und die Richtung Vom Anfang.
In diesem Block sehen wir die Merkmale von MFT ($M.F.T.):
Zum Zurückkehren auf den Partitionsstart als eine vorherige Position drücken wir den Knopf Vorherige Stelle.
Fazit:
In unserem Beispiel wurde die MFT durch Analyse der Struktur vom Bootsektor gefunden. Es war ein erster Schritt, womit Datenrettung aus einer beschädigten NTFS-Partition beginnen soll. Datenrettungsergebnisse hängen in einer wesentlichen Masse vom Abstand der MFT ab.