Partitions/File Systems/Carving
Partitionen
Eine Festplatte oder eine SSD-Festplatte kann verschiedene Partitionen enthalten, um Daten physisch zu trennen. Die minimale Einheit einer Festplatte ist der Sektor (normalerweise bestehend aus 512B). Daher muss die Größe jeder Partition ein Vielfaches dieser Größe sein.
MBR (Master Boot Record)
Er wird im ersten Sektor der Festplatte nach den 446B des Boot-Codes zugewiesen. Dieser Sektor ist entscheidend, um dem PC anzuzeigen, was und von wo aus eine Partition eingehängt werden soll. Es erlaubt bis zu 4 Partitionen (höchstens nur 1 kann aktiv/bootfähig sein). Wenn jedoch mehr Partitionen benötigt werden, können erweiterte Partitionen verwendet werden. Das letzte Byte dieses ersten Sektors ist die Boot-Record-Signatur 0x55AA. Nur eine Partition kann als aktiv markiert werden. MBR erlaubt maximal 2,2 TB.
Von den Bytes 440 bis 443 des MBR finden Sie die Windows-Disk-Signatur (wenn Windows verwendet wird). Der logische Laufwerksbuchstabe der Festplatte hängt von der Windows-Disk-Signatur ab. Eine Änderung dieser Signatur könnte verhindern, dass Windows startet (Tool: Active Disk Editor).
Format
Offset | Länge | Element |
---|---|---|
0 (0x00) | 446(0x1BE) | Boot-Code |
446 (0x1BE) | 16 (0x10) | Erste Partition |
462 (0x1CE) | 16 (0x10) | Zweite Partition |
478 (0x1DE) | 16 (0x10) | Dritte Partition |
494 (0x1EE) | 16 (0x10) | Vierte Partition |
510 (0x1FE) | 2 (0x2) | Signatur 0x55 0xAA |
Format des Partitionsdatensatzes
Offset | Länge | Element |
---|---|---|
0 (0x00) | 1 (0x01) | Aktiv-Flagge (0x80 = bootfähig) |
1 (0x01) | 1 (0x01) | Start-Head |
2 (0x02) | 1 (0x01) | Start-Sektor (Bits 0-5); obere Bits des Zylinders (6-7) |
3 (0x03) | 1 (0x01) | Niedrigste 8 Bits des Startzylinders |
4 (0x04) | 1 (0x01) | Partitions-Typcode (0x83 = Linux) |
5 (0x05) | 1 (0x01) | End-Head |
6 (0x06) | 1 (0x01) | End-Sektor (Bits 0-5); obere Bits des Zylinders (6-7) |
7 (0x07) | 1 (0x01) | Niedrigste 8 Bits des Endzylinders |
8 (0x08) | 4 (0x04) | Sektoren vor der Partition (Little Endian) |
12 (0x0C) | 4 (0x04) | Sektoren in der Partition |
Um ein MBR in Linux einzuhängen, müssen Sie zuerst den Startoffset erhalten (Sie können fdisk
und den Befehl p
verwenden)
Und dann verwenden Sie den folgenden Code
LBA (Logical block addressing)
Logische Blockadressierung (LBA) ist ein gängiges Schema zur Spezifizierung des Speicherorts von Datenblöcken, die auf Computerspeichergeräten gespeichert sind, in der Regel auf sekundären Speichersystemen wie Festplattenlaufwerken. LBA ist ein besonders einfaches lineares Adressierungsschema; Blöcke werden durch einen ganzzahligen Index lokalisiert, wobei der erste Block LBA 0, der zweite LBA 1 usw. ist.
GPT (GUID-Partitionstabelle)
Die GUID-Partitionstabelle, bekannt als GPT, wird aufgrund ihrer erweiterten Funktionen im Vergleich zu MBR (Master Boot Record) bevorzugt. Besonders hervorzuheben ist die global eindeutige Kennung für Partitionen bei GPT:
Standort und Größe: Sowohl GPT als auch MBR beginnen bei Sektor 0. GPT arbeitet jedoch mit 64 Bits, im Gegensatz zu MBR mit 32 Bits.
Partitionsbegrenzungen: GPT unterstützt bis zu 128 Partitionen auf Windows-Systemen und kann bis zu 9,4 ZB an Daten aufnehmen.
Partitionsnamen: Bietet die Möglichkeit, Partitionen mit bis zu 36 Unicode-Zeichen zu benennen.
Datenresilienz und Wiederherstellung:
Redundanz: Im Gegensatz zu MBR beschränkt GPT die Partitionierung und Bootdaten nicht auf einen einzigen Ort. Es repliziert diese Daten über die Festplatte, was die Datenintegrität und -resilienz verbessert.
Zyklische Redundanzprüfung (CRC): GPT verwendet CRC, um die Datenintegrität sicherzustellen. Es überwacht aktiv auf Datenkorruption und versucht bei Erkennung, die beschädigten Daten von einem anderen Speicherort auf der Festplatte wiederherzustellen.
Schützender MBR (LBA0):
GPT gewährleistet die Abwärtskompatibilität durch einen schützenden MBR. Diese Funktion befindet sich im Legacy-MBR-Bereich, ist jedoch so konzipiert, dass ältere MBR-basierte Dienstprogramme nicht versehentlich GPT-Festplatten überschreiben und somit die Datenintegrität auf GPT-formatierten Festplatten schützen.
Hybrider MBR (LBA 0 + GPT)
In Betriebssystemen, die GPT-basiertes Booten über BIOS-Dienste anstelle von EFI unterstützen, kann der erste Sektor auch weiterhin verwendet werden, um den ersten Abschnitt des Bootloader-Codes zu speichern, jedoch modifiziert, um GPT-Partitionen zu erkennen. Der Bootloader im MBR darf nicht von einer Sektorengröße von 512 Bytes ausgehen.
Partitionstabelle-Header (LBA 1)
Der Partitionstabellen-Header definiert die verwendbaren Blöcke auf der Festplatte. Er definiert auch die Anzahl und Größe der Partitionseinträge, aus denen die Partitionstabelle besteht (Offsets 80 und 84 in der Tabelle).
Offset | Länge | Inhalt |
---|---|---|
0 (0x00) | 8 Bytes | |
8 (0x08) | 4 Bytes | Revision 1.0 (00h 00h 01h 00h) für UEFI 2.8 |
12 (0x0C) | 4 Bytes | Headergröße in Little-Endian (in Bytes, normalerweise 5Ch 00h 00h 00h oder 92 Bytes) |
16 (0x10) | 4 Bytes | CRC32 des Headers (Offset +0 bis Headergröße) in Little-Endian, wobei dieses Feld bei der Berechnung auf Null gesetzt wird |
20 (0x14) | 4 Bytes | Reserviert; muss Null sein |
24 (0x18) | 8 Bytes | Aktuelles LBA (Speicherort dieser Headerkopie) |
32 (0x20) | 8 Bytes | Backup-LBA (Speicherort der anderen Headerkopie) |
40 (0x28) | 8 Bytes | Erstes verwendbares LBA für Partitionen (letztes LBA der primären Partitionstabelle + 1) |
48 (0x30) | 8 Bytes | Letztes verwendbares LBA (erstes LBA der sekundären Partitionstabelle - 1) |
56 (0x38) | 16 Bytes | Disk-GUID in gemischter Endianität |
72 (0x48) | 8 Bytes | Start-LBA eines Arrays von Partitionseinträgen (immer 2 in der primären Kopie) |
80 (0x50) | 4 Bytes | Anzahl der Partitionseinträge im Array |
84 (0x54) | 4 Bytes | Größe eines einzelnen Partitionseintrags (normalerweise 80h oder 128) |
88 (0x58) | 4 Bytes | CRC32 des Partitionseintrags-Arrays in Little-Endian |
92 (0x5C) | * | Reserviert; muss für den Rest des Blocks Nullen sein (420 Bytes für eine Sektorengröße von 512 Bytes; kann jedoch bei größeren Sektorengrößen mehr sein) |
Partitionseinträge (LBA 2–33)
Format des GUID-Partitionseintrags | ||
---|---|---|
Offset | Länge | Inhalt |
0 (0x00) | 16 Bytes | Partitionstyp-GUID (gemischte Endianität) |
16 (0x10) | 16 Bytes | Eindeutige Partition-GUID (gemischte Endianität) |
32 (0x20) | 8 Bytes | Erstes LBA (Little-Endian) |
40 (0x28) | 8 Bytes | Letztes LBA (einschließlich, normalerweise ungerade) |
48 (0x30) | 8 Bytes | Attributflags (z. B. Bit 60 kennzeichnet schreibgeschützt) |
56 (0x38) | 72 Bytes | Partitionsname (36 UTF-16LE-Codeeinheiten) |
Partitionstypen
Weitere Partitionstypen unter https://en.wikipedia.org/wiki/GUID_Partition_Table
Inspektion
Nach dem Einhängen des forensischen Abbilds mit ArsenalImageMounter können Sie den ersten Sektor mit dem Windows-Tool Active Disk Editor** inspizieren.** Im folgenden Bild wurde ein MBR im Sektor 0 erkannt und interpretiert:
Wenn es sich um eine GPT-Tabelle anstelle eines MBR handeln würde, sollte die Signatur EFI PART im Sektor 1 erscheinen (der in dem vorherigen Bild leer ist).
Dateisysteme
Liste der Windows-Dateisysteme
FAT12/16: MSDOS, WIN95/98/NT/200
FAT32: 95/2000/XP/2003/VISTA/7/8/10
ExFAT: 2008/2012/2016/VISTA/7/8/10
NTFS: XP/2003/2008/2012/VISTA/7/8/10
ReFS: 2012/2016
FAT
Das FAT (File Allocation Table)-Dateisystem ist um seine Kernkomponente, die Dateizuordnungstabelle, herum konzipiert, die sich am Anfang des Volumes befindet. Dieses System schützt Daten, indem es zwei Kopien der Tabelle aufrechterhält, um die Datenintegrität auch bei Beschädigung einer Kopie zu gewährleisten. Die Tabelle sowie der Stammordner müssen sich an einem festen Speicherort befinden, der für den Startvorgang des Systems entscheidend ist.
Die grundlegende Speichereinheit des Dateisystems ist ein Cluster, normalerweise 512B groß und besteht aus mehreren Sektoren. FAT hat sich im Laufe der Versionen weiterentwickelt:
FAT12, unterstützt 12-Bit-Clusteradressen und kann bis zu 4078 Cluster verwalten (4084 mit UNIX).
FAT16, erweitert auf 16-Bit-Adressen, was Platz für bis zu 65.517 Cluster bietet.
FAT32, weiterentwickelt mit 32-Bit-Adressen, was beeindruckende 268.435.456 Cluster pro Volume ermöglicht.
Eine wesentliche Einschränkung bei allen FAT-Versionen ist die maximale Dateigröße von 4 GB, die durch das 32-Bit-Feld für die Speicherung der Dateigröße festgelegt ist.
Wichtige Bestandteile des Stammverzeichnisses, insbesondere für FAT12 und FAT16, sind:
Datei-/Ordnername (bis zu 8 Zeichen)
Attribute
Erstellungs-, Änderungs- und Letzter-Zugriff-Datum
FAT-Tabellenadresse (zeigt den Startcluster der Datei an)
Dateigröße
EXT
Ext2 ist das häufigste Dateisystem für nicht journaling Partitionen (Partitionen, die sich nicht oft ändern), wie die Boot-Partition. Ext3/4 sind journaling und werden normalerweise für die restlichen Partitionen verwendet.
Metadaten
Einige Dateien enthalten Metadaten. Diese Informationen beziehen sich auf den Inhalt der Datei, der für einen Analysten interessant sein könnte, da je nach Dateityp Informationen wie:
Titel
Verwendete MS Office-Version
Autor
Erstellungs- und letztes Änderungsdatum
Kameramodell
GPS-Koordinaten
Bildinformationen
Sie können Tools wie exiftool und Metadiver verwenden, um die Metadaten einer Datei zu erhalten.
Wiederherstellung gelöschter Dateien
Protokollierte gelöschte Dateien
Wie bereits erwähnt, gibt es mehrere Orte, an denen die Datei auch nach dem "Löschen" noch gespeichert ist. Dies liegt daran, dass das Löschen einer Datei aus einem Dateisystem diese nur als gelöscht markiert, aber die Daten nicht berührt werden. Anschließend ist es möglich, die Registrierungen der Dateien (wie die MFT) zu überprüfen und die gelöschten Dateien zu finden.
Außerdem speichert das Betriebssystem in der Regel viele Informationen über Dateisystemänderungen und Backups, sodass versucht werden kann, sie zur Wiederherstellung der Datei oder so vieler Informationen wie möglich zu verwenden.
pageFile/Data Carving & Recovery ToolsDateischnitzerei
Dateischnitzerei ist eine Technik, die versucht, Dateien in der Masse von Daten zu finden. Tools dieser Art arbeiten auf 3 Hauptwegen: Basierend auf Dateityp-Headern und Footern, basierend auf Dateityp-Strukturen und basierend auf dem Inhalt selbst.
Beachten Sie, dass diese Technik nicht funktioniert, um fragmentierte Dateien wiederherzustellen. Wenn eine Datei nicht in aufeinanderfolgenden Sektoren gespeichert ist, kann diese Technik sie nicht finden oder zumindest nicht vollständig.
Es gibt mehrere Tools, die Sie für die Dateischnitzerei verwenden können, um die Dateitypen zu suchen, die Sie suchen möchten.
pageFile/Data Carving & Recovery ToolsDatenstromschnitzerei
Die Datenstromschnitzerei ähnelt der Dateischnitzerei, sucht jedoch nicht nach vollständigen Dateien, sondern nach interessanten Fragmenten von Informationen. Anstatt beispielsweise nach einer vollständigen Datei mit protokollierten URLs zu suchen, sucht diese Technik nach URLs.
pageFile/Data Carving & Recovery ToolsSicheres Löschen
Offensichtlich gibt es Möglichkeiten, Dateien und Teile von Protokollen darüber "sicher" zu löschen. Es ist beispielsweise möglich, den Inhalt einer Datei mehrmals mit Junk-Daten zu überschreiben und dann die Protokolle aus den $MFT und $LOGFILE über die Datei zu entfernen und die Volume Shadow Copies zu löschen. Es ist möglich, dass selbst nach dieser Aktion noch andere Teile vorhanden sind, in denen das Vorhandensein der Datei protokolliert ist, und es ist Aufgabe des Forensik-Profis, sie zu finden.
Referenzen
iHackLabs Certified Digital Forensics Windows
Last updated