Navigeren door de GPT Partition Entry Array voor forensische analyse. Deel 3.

Deel 3

Inleiding

In onze vorige posts hebben we de basis gelegd voor het begrijpen van de GUID Partition Table (GPT) door de Protective MBR en de GPT Header te onderzoeken. Nu, in deel 3, richten we onze aandacht op de GPT Partition Entry Array. Dit cruciale onderdeel van het GPT-schema biedt een gedetailleerde kaart van alle partities op de schijf, waarbij elk item vitale informatie bevat over een specifieke partitie. Door de structuur en functie van de GPT Partition Entry Array te begrijpen, krijg je een uitgebreid beeld van hoe GPT partities beheert, waardoor je effectievere analyses, probleemoplossing en gegevensherstel kunt uitvoeren.

GPT (GUID-partitietabel) Partitie Entry Array

De GUID Partition Table (GPT) Entry Array is een kritisch onderdeel van het GPT partitioneringssysteem, dat wordt gebruikt om de partities op een harde schijf te definiëren en beheren. Zie het als een gedetailleerde lijst die de details van elke partitie op de schijf vastlegt, zoals de catalogus van een bibliotheek die de details van elk boek vastlegt.

Belangrijkste onderdelen van de GPT Entry Array:

Partitie GUID: Elke partitie heeft een unieke identifier, bekend als de Partition GUID, die ervoor zorgt dat elke partitie uniek geïdentificeerd kan worden, zelfs op verschillende systemen.

Uniek ID: Dit is nog een unieke identificatie die specifiek is voor elke partitie en die een extra laag van unieke identificatie biedt.

LBA (Logical Block Addressing) van de partitie starten: Dit geeft het beginpunt van de partitie op de schijf aan. Het vertelt het systeem waar de partitie begint.

Einde LBA van partitie: Net als de start-LBA geeft dit aan waar de partitie eindigt op de schijf.

Attribuut Bits: Dit zijn vlaggen die extra informatie geven over de partitie, zoals of deze bootable is of speciale attributen heeft.

Naam van partitie: Elke partitie kan een menselijk leesbare naam hebben, zodat we gemakkelijker het doel of de inhoud van de partitie kunnen identificeren. Deze naam wordt afgesloten met een null karakter om het einde van de string aan te geven.

Laten we deze allemaal in detail uitwerken, zodat je elk item in de array volledig begrijpt.

Wanneer de schijf is ingesteld als een GPT-schijf, is de eerste partitie die wordt aangemaakt de EFI System Partition (ESP). Dit is een verborgen partitie die niet direct beschikbaar is voor gebruikers. Deze partitie bevindt zich op sector 2048 en is geformatteerd als FAT32 voor compatibiliteit met alle systemen (Windows, Linux, MacOS).

De bovenstaande schermafbeelding toont een standaard Windows 10-installatie waarbij de Microsoft Reserved Partition is aangemaakt samen met één Basic Data Partition die door de gebruiker is opgegeven tijdens de installatie.

Hieronder staat een uittreksel van GUID's uit een tabel die te vinden is op de GUID Partition Table Wikipedia pagina:

Bron: https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs

Natuurlijk wordt de GUID niet opgeslagen in de GUIID vorm als je de waarden bekijkt in de hex viewer. 

De GUID's worden geconverteerd zoals we in de vorige blogpost hebben gedaan, maar zijn ook goed te zien als je het in HxD bekijkt:

We kunnen de GUID's van de volumepartitie bevestigen met de opdracht: mountvol.exe

Als we de start-LBA en eind-LBA weten, kunnen we berekenen hoe groot de partitie is. Bijvoorbeeld de EFI-partitie:

Beginnende LBA: 2048

Einde LBA: 534527

Totale lengte: 532479 sectoren x 512 bytes/sector = 272629248 bytes wat 260 MB is.

De back-up GPT partitie Entry Array

De Backup GPT Partition Entry Array bevindt zich aan het einde van de schijf en voor de GPT Header, namelijk 33 sectoren voor het einde van de schijf (LBA (n - 33) waarbij n de laatste sector van de schijf is). We kunnen ook berekenen waarom het 33 sectoren voor het einde van de schijf is, of 32 sectoren voor de Backup GPT Header.

Elke partitie entry is 128 bytes en er zijn in totaal 128 entries in de Entry Array. Dat betekent dat er 16.384 sectoren in de Array zijn of 32 sectoren (16384/512). 

De Backup GPT Header wijst naar de locatie van de Backup GPT Partition Entry Array.

Back-up GPT Partitie Invoer Array Bijna Einde Schijf

Een GPT Partition Entry Array repareren

Het repareren van de GPT Partition Entry Array is zo eenvoudig als het kopiëren van de 16.384-byte back-up gevonden 33 sectoren vanaf het einde van de schijf en deze in LBA 2 tot en met 3 te plakken. Er zijn geen wijzigingen/wijzigingen van hex-waarden nodig omdat dit exacte kopieën zijn.

De backup GPT aan het einde van de schijf is hetzelfde als de primaire. In feite laat het uitsnijden van de sectoren voor beide en het hashen ervan zien dat ze exact overeenkomen. 

Conclusie

In deze derde aflevering hebben we de GPT Partition Entry Array, een kritisch onderdeel van het GPT schema, grondig onderzocht. Door het opsplitsen van elk veld binnen de partitie entries, van de GUID's tot de attribuut bits en partitie namen, hebben we gezien hoe GPT een robuust raamwerk biedt voor het organiseren en benaderen van schijfgegevens. Deze kennis is essentieel voor forensisch onderzoek, gegevensherstel en systeembeheer, en geeft je de vaardigheden om effectief te navigeren en GPT-gepartitioneerde schijven te manipuleren. Blijf kijken voor ons volgende bericht, waarin we dieper ingaan op praktische toepassingen en casestudy's en de theorie in praktijk brengen.

Deze post sluit onze 3-delige serie over GPT-partitiestructuren af.
Als je de eerdere berichten hebt gemist, begin dan met Deel 1 - De beschermende MBR, waarin we onderzoeken hoe legacy-compatibiliteit wordt onderhouden, en gaan verder met Deel 2 - De GPT-headerdie de schijfindeling definieert en de integriteit garandeert.

Wil je dieper gaan? Abonneer je op onze nieuwsbrief voor toekomstige inhoud over partitieherstel, hashing op schijfniveau en CTF-uitdagingen gebaseerd op echte forensische scenario's.

Facebook
Twitter
E-mail
Afdrukken

Eén reactie

Geef een reactie

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