Forstå den beskyttende MBR-en på GPT-partisjonerte disker. Del 1.

Innledning

I denne serien av blogginnlegg vil jeg dykke dypt ned i GUID Partition Table Schema. Målet er å gi en klar forståelse av GPT-skjemaet og hvordan det gjør det mulig for kriminalteknikere å analysere og gjenopprette data fra moderne lagringsenheter på en nøyaktig måte. GPTs støtte for større disker, flere partisjoner og forbedrede dataintegritetsfunksjoner, for eksempel redundans og CRC-beskyttelse, sikrer at etterforskere kan få tilgang til og verifisere alle nødvendige data. GPTs kompatibilitet med moderne operativsystemer og UEFI-fastvare forbedrer dessuten muligheten til å utføre omfattende kriminaltekniske undersøkelser, noe som gjør den uunnværlig for å avdekke digitale bevis og sikre integriteten og påliteligheten til de kriminaltekniske funnene. 

Jeg begynner med Protective MBR og hvordan den skiller seg fra den tradisjonelle MBR-en som brukes med eldre stasjoner i BIOS. Deretter tar jeg deg gjennom GPT-overskriften og deretter GPT Entry Array. Til slutt vil jeg dele noen avsluttende tanker og tips om hvordan du forklarer disse konseptene til en lekmann, for eksempel når du vitner foran en dommer eller jury.

Når du har lest denne serien, vil du til slutt ikke ha noen problemer med å takle en CTF-utfordring på CTF-plattformen vår.

DEL 1

Den beskyttende MBR-en

Master Boot Record (MBR) fra et eldre synspunkt ga oss et veikart for å finne opptil fire primære partisjoner på en harddisk. Hver 16-byte partisjonspost ledet oss til plasseringen av den aktuelle partisjonen, enten den var FAT32 eller NTFS. Den gamle MBR hadde imidlertid begrensninger, blant annet

  • En størrelsesbegrensning på 2 TB.
  • Begrenset til 4 primære partisjoner; hvis det er behov for flere, vil en av de primære partisjonene bli utpekt som en utvidet partisjon.
  • Et enkelt feilpunkt siden MBR, som inkluderer partisjonstabellen, var plassert i sektor 0 uten sikkerhetskopi.

LBA 0 (logisk sektor 0) på en GPT-harddisk inneholder det som kalles en Protective MBR i stedet for en eldre MBR. Tenk på Protective MBR som et skilt ved inngangen til biblioteket som forteller alle: "Hei, dette biblioteket bruker et nytt og forbedret system nå. Ikke bruk den gamle metoden, for den fungerer ikke her."

I stedet for å inneholde plasseringen til bare fire primære partisjoner på disken, markerer Protective MBR hele disken som brukt av GPT, noe som indikerer for eldre systemer at disken er fullt utnyttet. Protective MBR finnes bare for å sikre bakoverkompatibilitet. Den inneholder KUN én partisjonsoppføring, som markerer disken og forhindrer at eldre verktøy feiltolker diskstrukturen. 

Strukturen til den beskyttende MBR-enheten

De første 440 byte i den beskyttende MBR-en inneholder oppstartskode som ikke brukes av UEFI-systemer. Den ignoreres.  

Nedenfor ser du et hypotetisk oppsett av en disk med en fersk Windows 10-installasjon som bare har én partisjon opprettet under installasjonsprosessen, C: -stasjonen. UEFI-systempartisjonen opprettes automatisk og skjules for brukeren, og Microsoft Reserved Partition opprettes også under installasjonen og skjules for brukeren. 

Her ser vi Protective MBR på LBA 0, som peker til GPT Header på LBA 1.

Hex-layout for den beskyttende MBR-enheten

Her er et eksempel på hex-layout for Protective MBR:

Som nevnt tidligere, brukes ikke de første 440 byte med oppstartskode av UEFI-systemer. Du kan se at disse første 440 byte er nullet ut på noen systemer. Her er Protective MBR fra arbeidsstasjonen jeg bruker til å skrive denne bloggen, der jeg bruker en Samsung 1 TB NVME-disk:

Som du kan se, inneholder hele Protective MBR i dette tilfellet nuller, bortsett fra de fire byte som ligger ved offset 440 (som ikke brukes), den første "primary partition entry" (som bare peker på LBA 1 - GPT Header), og oppstartssignaturen som ligger ved de to siste byte i sektoren (0x55AA). 

La oss nå se nærmere på den ene partisjonsposten som finnes i en Protective MBR:

Den første byten i partisjonsposten er satt til 0x00 for å indikere at det ikke er en oppstartbar partisjon. I en tradisjonell MBR vil denne verdien enten være 0x00 (ikke oppstartbar) eller 0x80 (oppstartbar). De neste tre byte representerer Starter CHS plassering (Cylinder/Head/Sector), som vil tilsvare 4-byte-verdien i Starter LBA feltet ved byteoffset 8. Start CHS-verdien blir satt til 0x000200 som, når den brytes ned og konverteres til en LBA-adresse, er 1.

Følgende verdi på én byte er satt til 0xEE for OS-typen: GPT Beskyttende. Tre-byte-verdien ved offset 5 settes til CHS-adressen til den siste logiske blokken på disken. Start-LBA-en, som fører oss til GPT-partisjonshodet, ligger ved offset 8 i fire byte, og verdien blir satt til 0x01000000 (eller LBA 1 ved lesing av little endian). De siste 4 byte i posten ved offset 12 representerer størrelsen på disken minus én. Den er satt til 0xFFFFFFFFFF hvis størrelsen på disken er for stor til å bli representert i dette feltet, noe som mest sannsynlig er tilfelle.

Reparasjon av en beskyttende MRB

Hvis MBR-en ble ødelagt, mistet eller slettet, kan du erstatte sektor 0 ved å kopiere den beskyttende MBR-en fra en annen stasjon. Du kan også opprette en fra bunnen av ved å la 0x00 stå fra offset 0 til og med 446, og deretter opprette en generisk partisjonspost som peker til LBA 1, og sørge for at 0xEE finnes ved offset 4 for å indikere GPT Protective OS-typen. Til slutt plasserer du oppstartssignaturen (0x55AA) i de to siste byte i sektoren.

Generisk oppføring

446447448449450451452453454455456457458459460461
00000200EEFFFFFF01000000FFFFFFFF

Boot Signature

510511
55AA

Følgende vil være tilstrekkelig for en gjenoppbygd Protective MBR:

Konklusjon

I denne første delen utforsket vi Protective MBR og dens avgjørende rolle for å sikre bakoverkompatibilitet med eldre systemer. Vi undersøkte hvordan Protective MBR markerer hele disken som brukt av GPT, slik at eldre systemer ikke kan feiltolke diskens struktur. Ved å forstå strukturen og funksjonen til Protective MBR har du nå et solid grunnlag for å dykke dypere ned i GPT-skjemaet.

Når vi går videre, vil vi fokusere på GPT Header, hjørnesteinen i GPT-skjemaet som definerer disklayouten og sikrer dataintegritet. I del 2 skal vi bryte ned GPT-headeren og se nærmere på hvert enkelt felt og dets betydning. Følg med når vi fortsetter å avdekke kompleksiteten i GPT-skjemaet, slik at du får kunnskapen du trenger for å administrere og gjenopprette data fra moderne lagringsenheter på en effektiv måte.

Ønsker du å dykke dypere ned i GPT-strukturen?

I Del 2bryter vi ned GPT-overskrift og forklare hvordan den sikrer dataintegritet på tvers av disken.
Så i Del 3utforsker vi GPT Partition Entry Array og hva kriminalteknikere trenger å vite når de rekonstruerer partisjonstabeller.

Facebook
Twitter
E-post
Skriv ut

5-svar

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *