Inzicht in de beschermende MBR in GPT-gepartitioneerde schijven. Deel 1.

Inleiding

In deze serie blogposts duik ik diep in het GUID Partition Table Schema. Ik wil een duidelijk begrip geven van het GPT-schema en hoe het forensisch onderzoekers in staat stelt om gegevens nauwkeurig te analyseren en te herstellen van moderne opslagapparaten. De ondersteuning van GPT voor grotere schijven, meerdere partities en verbeterde functies voor gegevensintegriteit, zoals redundantie en CRC-bescherming, zorgt ervoor dat onderzoekers alle benodigde gegevens kunnen openen en verifiëren. Bovendien verbetert de compatibiliteit van GPT met moderne besturingssystemen en UEFI-firmware de mogelijkheid om uitgebreide forensische onderzoeken uit te voeren, waardoor het onmisbaar is voor het blootleggen van digitaal bewijs en het waarborgen van de integriteit en betrouwbaarheid van forensische bevindingen. 

Ik zal beginnen met de Protective MBR en hoe deze verschilt van de traditionele MBR die gebruikt wordt met oudere schijven in BIOS. Vervolgens neem ik de GPT header met je door en vervolgens de GPT Entry Array. Tot slot deel ik enkele afsluitende gedachten en tips om deze concepten uit te leggen aan een leek, bijvoorbeeld als je getuigt voor een rechter of jury.

Uiteindelijk zul je na het lezen van deze serie geen probleem hebben om een CTF-uitdaging aan te gaan op ons CTF-platform.

DEEL 1

De beschermende MBR

De Master Boot Record (MBR) vanuit een legacy standpunt gaf ons een routekaart om tot vier primaire partities op een harde schijf te lokaliseren. Elke 16-byte partitie-invoer leidde ons naar de locatie van die partitie, of het nu FAT32 of NTFS was. De oude MBR had echter beperkingen, inclusief maar niet beperkt tot:

  • Een limiet van 2 TB.
  • Beperkt tot 4 primaire partities; als er meer nodig zijn, wordt een van die primaire partities aangewezen als uitgebreide partitie.
  • Een enkel foutpunt omdat de MBR, die de partitietabel bevat, zich op sector 0 bevond zonder back-up.

LBA 0 (logische sector 0) van een GPT harde schijf bevat een zogenaamde Protective MBR in plaats van een legacy MBR. Zie de Beschermende MBR als een bord bij de ingang van de bibliotheek dat iedereen vertelt: "Hé, deze bibliotheek gebruikt nu een nieuw en verbeterd systeem. Gebruik niet de oude methode want die werkt hier niet."

In plaats van de locatie van slechts vier primaire partities op de schijf te bevatten, markeert de Beschermende MBR de volledige schijf als gebruikt door GPT, wat oudere systemen aangeeft dat de schijf volledig wordt gebruikt. De Protective MBR bestaat alleen voor achterwaartse compatibiliteit. Het bevat ALLEEN één partitie-entry, die de schijf markeert en voorkomt dat oudere programma's de schijfstructuur verkeerd interpreteren. 

Structuur van het beschermende MBR

De eerste 440 bytes van de beschermende MBR bevatten opstartcode die niet wordt gebruikt door UEFI-systemen. Deze wordt genegeerd.  

Hieronder ziet u een hypothetische lay-out van een schijf met een nieuwe Windows 10-installatie met slechts één partitie die is gemaakt tijdens het installatieproces, de C: schijf. De UEFI-systeempartitie wordt automatisch aangemaakt en verborgen voor de gebruiker, en de Microsoft gereserveerde partitie wordt ook aangemaakt tijdens de installatie en verborgen voor de gebruiker. 

Hier zien we de Protective MBR op LBA 0, die wijst naar de GPT Header op LBA 1.

Hex Layout van de beschermende MBR

Hier is een voorbeeld van een hex layout van de Protective MBR:

Zoals eerder vermeld, worden de eerste 440 bytes van de opstartcode niet gebruikt door UEFI-systemen. Je kunt deze eerste 440 bytes op sommige systemen als nul zien. Hier is de Protective MBR van het werkstation dat ik gebruik om deze blog te schrijven, waar ik een Samsung 1TB NVME schijf gebruik:

Zoals je kunt zien, bevat de volledige Protective MBR in dit geval nullen, behalve de vier bytes op offset 440 (die niet worden gebruikt), de eerste "primary partition entry" (die alleen naar LBA 1 wijst - de GPT Header) en de boot signature op de laatste twee bytes van de sector (0x55AA). 

Laten we nu eens kijken naar die ene partitie entry die bestaat in een Protective MBR:

De eerste byte van de partitie entry is ingesteld op 0x00 om aan te geven dat het geen bootable partitie is. In een traditionele MBR zou deze waarde 0x00 (niet-bootable) of 0x80 (bootable) zijn. De volgende drie bytes vertegenwoordigen de Beginnen met CHS locatie (cilinder/hoofd/sector), die overeenkomt met de 4-byte waarde in de LBA starten veld op byte offset 8. De Starting CHS-waarde wordt ingesteld op 0x000200 die, wanneer afgebroken en geconverteerd naar een LBA-adres, 1 is.

De volgende één-byte waarde is ingesteld op 0xEE voor het OS-type: GPT Beschermend. De drie-byte waarde op offset 5 wordt ingesteld op het CHS-adres van het laatste logische blok op de schijf. De start-LBA, die ons naar de GPT Partition Header brengt, bevindt zich op offset 8 voor vier bytes en de waarde wordt ingesteld op 0x01000000 (of LBA 1 bij lezen little endian). De laatste 4 bytes van de record op offset 12 vertegenwoordigen de grootte van de schijf min één. Het is ingesteld op 0xFFFFFFFF als de grootte van de schijf te groot is om in dit veld te worden weergegeven, wat waarschijnlijk het geval is.

Een beschermende MRB repareren

Als de MBR corrupt, verloren of gewist was, zou u sector 0 kunnen vervangen door de Protective MBR van een andere schijf te kopiëren. U kunt er ook een vanaf nul aanmaken, waarbij u 0x00 laat staan vanaf offset 0 tot en met 446 en vervolgens een generieke partitie-invoer aanmaakt die wijst naar LBA 1, waarbij u ervoor zorgt dat 0xEE bestaat op offset 4 om het GPT Protective OS-type aan te geven. Plaats tenslotte de opstarthandtekening (0x55AA) op de laatste twee bytes van de sector.

Generieke invoer

446447448449450451452453454455456457458459460461
00000200EEFFFFFF01000000FFFFFFFF

Handtekening

510511
55AA

Het volgende zou voldoende zijn voor een herbouwde Protective MBR:

Conclusie

In deze eerste aflevering onderzochten we de Protective MBR en zijn cruciale rol in het garanderen van achterwaartse compatibiliteit met oudere systemen. We hebben onderzocht hoe de Protective MBR de hele schijf markeert als gebruikt door GPT, om te voorkomen dat oudere systemen de structuur van de schijf verkeerd interpreteren. Door de structuur en functie van de Protective MBR te begrijpen, heb je nu een solide basis om dieper in het GPT schema te duiken.

Onze volgende focus ligt op de GPT Header, de hoeksteen van het GPT schema dat de schijfindeling definieert en de gegevensintegriteit garandeert. In deel 2 zullen we de GPT Header uitsplitsen en elk veld en de betekenis ervan onderzoeken. Blijf kijken terwijl we de complexiteit van het GPT-schema verder ontrafelen, zodat u de kennis krijgt om gegevens effectief te beheren en te herstellen op moderne opslagapparaten.

Wil je dieper in de GPT-structuur duiken?

In Deel 2breken we de GPT-kop en leg uit hoe het de integriteit van gegevens over de schijf garandeert.
Dan in Deel 3verkennen we de GPT Partitie Entry Array en wat forensisch analisten moeten weten bij het reconstrueren van partitietabellen.

Facebook
Twitter
E-mail
Afdrukken

5 Reacties

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Abonneer je om op de hoogte te blijven!

Mis nooit een bericht - ontvang een melding wanneer we een nieuw blogartikel, forensische gids of belangrijke updates publiceren.

Laatste bericht