Förstå den skyddande MBR i GPT-partitionerade diskar. Del 1.

Inledning

I den här serien av blogginlägg kommer jag att dyka djupt in i GUID Partition Table Schema. Jag strävar efter att ge en tydlig förståelse för GPT-schemat och hur det gör det möjligt för kriminaltekniska utredare att noggrant analysera och återställa data från moderna lagringsenheter. GPT:s stöd för större diskar, flera partitioner och förbättrade dataintegritetsfunktioner, t.ex. redundans och CRC-skydd, säkerställer att utredare kan komma åt och verifiera alla nödvändiga data. GPT:s kompatibilitet med moderna operativsystem och UEFI-firmware förbättrar dessutom möjligheten att utföra omfattande kriminaltekniska undersökningar, vilket gör den oumbärlig för att avslöja digitala bevis och säkerställa integriteten och tillförlitligheten hos kriminaltekniska resultat. 

Jag börjar med Protective MBR och hur den skiljer sig från den traditionella MBR som används med äldre enheter i BIOS. Därefter tar jag dig igenom GPT-huvudet och sedan GPT Entry Array. Slutligen delar jag med mig av några avslutande tankar och tips om hur man förklarar dessa begrepp för en lekman, till exempel när man vittnar inför en domare eller jury.

I slutändan, efter att ha läst den här serien, kommer du inte att ha några problem att ta itu med en CTF-utmaning som finns på vår CTF-plattform.

DEL 1

Den skyddande MBR

Master Boot Record (MBR) från en äldre synvinkel gav oss en färdplan för att lokalisera upp till fyra primära partitioner på en hårddisk. Varje 16-byte partitionspost vägledde oss till platsen för den partitionen, oavsett om det var FAT32 eller NTFS. Den gamla MBR hade dock begränsningar, inklusive men inte begränsat till:

  • En storleksgräns på 2 TB.
  • Begränsad till 4 primära partitioner; om fler behövs kan en av dessa primära partitioner utses till en utökad partition.
  • En enda felkälla eftersom MBR, som innehåller partitionstabellen, var placerad i sektor 0 utan säkerhetskopia.

LBA 0 (logisk sektor 0) på en GPT-hårddisk innehåller en så kallad Protective MBR i stället för en äldre MBR. Tänk på Protective MBR som en skylt vid ingången till biblioteket som säger till alla: "Det här biblioteket använder ett nytt och förbättrat system nu. Använd inte den gamla metoden, för den fungerar inte här."

I stället för att bara innehålla platsen för fyra primära partitioner på enheten markerar Protective MBR hela disken som använd av GPT, vilket indikerar för äldre system att disken är fullt utnyttjad. Protective MBR finns endast för bakåtkompatibilitet. Den innehåller ENDAST en partitionspost, vilket markerar disken och förhindrar att äldre verktyg misstolkar diskstrukturen. 

Struktur för den skyddande MBR

De första 440 byte i den skyddande MBR:en innehåller startkod som inte används av UEFI-system. Den ignoreras.  

Nedan visas en hypotetisk layout av en disk med en ny Windows 10-installation som bara har en partition skapad under installationsprocessen, C: -enheten. UEFI-systempartitionen skapas automatiskt och är dold för användaren, och Microsoft Reserved Partition skapas också under installationen och är dold för användaren. 

Här kan vi se den skyddande MBR som finns på LBA 0, som pekar på GPT-huvudet på LBA 1.

Hex-layout för den skyddande MBR:en

Här är ett exempel på en hex-layout för Protective MBR:

Som tidigare nämnts används inte de första 440 byte av startkoden av UEFI-system. Du kan se dessa första 440 byte nollställda på vissa system. Här är Protective MBR från den arbetsstation som jag använder för att skriva den här bloggen, där jag använder en Samsung 1TB NVME-enhet:

Som du kan se innehåller hela Protective MBR i det här fallet nollor förutom de fyra byte som ligger vid offset 440 (som inte används), den första "primära partitionsposten" (som bara pekar på LBA 1 - GPT-huvudet) och startsignaturen som ligger vid de två sista byte i sektorn (0x55AA). 

Låt oss nu titta närmare på den enda partitionsposten som finns i en Protective MBR:

Den första byten i partitionsposten sätts till 0x00 för att ange att det inte är en startbar partition. I en traditionell MBR skulle det här värdet antingen vara 0x00 (ej startbar) eller 0x80 (startbar). De följande tre bytena representerar Start av CHS (Cylinder/Huvud/Sektor), vilket kommer att motsvara 4-byte-värdet i Start LBA fältet vid byteoffset 8. Startvärdet för CHS kommer att sättas till 0x000200 som när den bryts ner och omvandlas till en LBA-adress är 1.

Följande en-byte-värde sätts till 0xEE för OS-typen: GPT Skyddande. Värdet på tre byte i offset 5 sätts till CHS-adressen för det sista logiska blocket på disken. Start-LBA:n, som tar oss till GPT-partitionshuvudet, finns i offset 8 i fyra byte och värdet kommer att sättas till 0x01000000 (eller LBA 1 vid läsning med liten endian). De sista 4 byte i posten vid offset 12 representerar diskens storlek minus ett. Den är inställd på 0xFFFFFFFF om skivans storlek är för stor för att kunna representeras i detta fält, vilket troligen är fallet.

Reparation av en skyddande MRB

Om MBR:n skadades, förlorades eller raderades kan du ersätta sektor 0 genom att kopiera den skyddande MBR:n från en annan enhet. Du kan också skapa en från början genom att lämna 0x00 från offset 0 till 446 och sedan skapa en generisk partitionspost som pekar på LBA 1 och se till att 0xEE finns vid offset 4 för att ange OS-typen GPT Protective. Slutligen placerar du startsignaturen (0x55AA) på de två sista byte i sektorn.

Generiskt inträde

446447448449450451452453454455456457458459460461
00000200EEFFFFFF01000000FFFFFFFF

Känga signatur

510511
55AA

Följande skulle räcka för en återuppbyggd Protective MBR:

Slutsats

I den här första delen utforskade vi Protective MBR och dess avgörande roll för att säkerställa bakåtkompatibilitet med äldre system. Vi undersökte hur Protective MBR markerar hela disken som använd av GPT, vilket förhindrar äldre system från att misstolka diskens struktur. Genom att förstå strukturen och funktionen hos Protective MBR har du nu en solid grund för att dyka djupare in i GPT-schemat.

När vi går vidare kommer vårt nästa fokus att ligga på GPT Header, hörnstenen i GPT-schemat som definierar disklayouten och säkerställer dataintegritet. I del 2 kommer vi att bryta ner GPT-huvudet och undersöka varje fält och dess betydelse. Håll ögonen öppna när vi fortsätter att reda ut komplexiteten i GPT-schemat, så att du får kunskapen att effektivt hantera och återställa data från moderna lagringsenheter.

Vill du dyka djupare in i GPT-strukturen?

I Del 2bryter vi ner de GPT-huvud och förklara hur den säkerställer dataintegritet över hela disken.
Sedan i Del 3utforskar vi de GPT Partition Entry Array och vad kriminaltekniker behöver veta när de rekonstruerar partitionstabeller.

Facebook
Twitter
E-post
Skriv ut

5 svar

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *