Capire l'MBR protettivo nei dischi con partizionamento GPT. Parte 1.

Introduzione

In questa serie di post del blog, mi immergerò in profondità nello schema della tabella di partizione GUID. Il mio obiettivo è quello di fornire una chiara comprensione dello schema GPT e di come esso consenta agli investigatori forensi di analizzare e recuperare accuratamente i dati dai moderni dispositivi di archiviazione. Il supporto di GPT per dischi più grandi, partizioni multiple e funzioni di integrità dei dati migliorate, come la ridondanza e la protezione CRC, garantisce agli investigatori l'accesso e la verifica di tutti i dati necessari. Inoltre, la compatibilità di GPT con i sistemi operativi contemporanei e il firmware UEFI aumenta la capacità di eseguire esami forensi completi, rendendolo indispensabile per scoprire prove digitali e garantire l'integrità e l'affidabilità dei risultati forensi. 

Inizierò con l'MBR protettivo e come si differenzia dall'MBR tradizionale utilizzato con le unità legacy nel BIOS. Successivamente, vi illustrerò l'intestazione GPT e l'array di inserimento GPT. Infine, condividerò alcune riflessioni conclusive e suggerimenti su come spiegare questi concetti ai non addetti ai lavori, ad esempio quando si deve testimoniare di fronte a un giudice o a una giuria.

In definitiva, dopo aver letto questa serie, non avrete problemi ad affrontare una sfida CTF trovata sulla nostra piattaforma CTF.

PARTE 1

L'MBR protettivo

Il Master Boot Record (MBR), dal punto di vista del passato, ci ha fornito una tabella di marcia per individuare fino a quattro partizioni primarie su un disco rigido. Ogni voce di partizione a 16 byte ci guidava alla posizione della partizione, sia essa FAT32 o NTFS. Tuttavia, il vecchio MBR aveva delle limitazioni, tra cui, ma non solo, le seguenti:

  • Un limite di dimensione di 2 TB.
  • Limitato a 4 partizioni primarie; se sono necessarie altre partizioni, una di queste partizioni primarie sarà designata come partizione estesa.
  • Un singolo punto di guasto poiché l'MBR, che include la tabella delle partizioni, si trovava nel settore 0 senza alcun backup.

LBA 0 (settore logico 0) di un disco rigido GPT contiene il cosiddetto Protective MBR (MBR protettivo) anziché un MBR legacy. Pensate al Protective MBR come a un cartello all'ingresso della biblioteca che dice a tutti: "Ehi, questa biblioteca utilizza un sistema nuovo e migliorato. Non usate il vecchio metodo perché qui non funziona".

Invece di contenere la posizione delle sole quattro partizioni primarie sull'unità, il Protective MBR contrassegna l'intero disco come utilizzato da GPT, indicando ai sistemi più vecchi che il disco è completamente utilizzato. L'MBR protettivo esiste solo per la compatibilità con il passato. Contiene una sola voce di partizione, che contrassegna il disco e impedisce agli strumenti tradizionali di interpretare erroneamente la struttura del disco. 

Struttura dell'MBR di protezione

I primi 440 byte dell'MBR protettivo contengono codice di avvio non utilizzato dai sistemi UEFI. Viene ignorato.  

Di seguito è riportato un ipotetico layout di un disco con una nuova installazione di Windows 10 con una sola partizione creata durante il processo di installazione, l'unità C:. La partizione di sistema UEFI viene creata automaticamente e nascosta all'utente, mentre la partizione riservata Microsoft viene anch'essa creata durante l'installazione e nascosta all'utente. 

Qui possiamo vedere l'MBR protettivo che risiede a LBA 0 e che punta all'intestazione GPT a LBA 1.

Layout esadecimale dell'MBR protettivo

Ecco un esempio di layout esadecimale dell'MBR di protezione:

Come già detto, i primi 440 byte del codice di avvio non sono utilizzati dai sistemi UEFI. È possibile vedere questi primi 440 byte azzerati su alcuni sistemi. Ecco l'MBR protettivo della workstation che sto usando per scrivere questo blog, dove sto usando un'unità Samsung NVME da 1 TB:

Come si può vedere, in questo caso l'intero MBR protettivo contiene degli zeri, tranne i quattro byte situati all'offset 440 (che non vengono utilizzati), la prima "voce della partizione primaria" (che punta semplicemente all'LBA 1 - l'intestazione GPT) e la firma di avvio situata negli ultimi due byte del settore (0x55AA). 

Ora diamo un'occhiata più da vicino all'unica voce di partizione presente in un MBR protettivo:

Il primo byte della voce della partizione è impostato su 0x00 per indicare che non si tratta di una partizione avviabile. In un MBR tradizionale, questo valore sarebbe 0x00 (non avviabile) o 0x80 (avviabile). I tre byte successivi rappresentano il Avvio del CHS (Cilindro/Testa/Settore), che corrisponderà al valore a 4 byte nel file Avvio LBA al byte di offset 8. Il valore CHS iniziale sarà impostato su 0x000200 che, una volta scomposto e convertito in un indirizzo LBA, è pari a 1.

Il seguente valore a un byte è impostato su 0xEE per il tipo di sistema operativo: Protezione GPT. Il valore a tre byte con offset 5 è impostato sull'indirizzo CHS dell'ultimo blocco logico del disco. L'LBA iniziale, che ci porta all'intestazione della partizione GPT, si trova all'offset 8 per quattro byte e il valore sarà impostato su 0x01000000 (o LBA 1 in caso di lettura little endian). Gli ultimi 4 byte del record all'offset 12 rappresentano la dimensione del disco meno uno. È impostato su 0xFFFFFFFF se la dimensione del disco è troppo grande per essere rappresentata in questo campo, il che è molto probabile.

Riparazione di un MRB protettivo

Se l'MBR è danneggiato, perso o cancellato, è possibile sostituire il settore 0 copiando l'MBR protettivo da un'altra unità. È anche possibile crearne uno da zero, lasciando 0x00 dall'offset 0 fino a 446 e creando una voce di partizione generica che punti all'LBA 1, assicurandosi che esista 0xEE all'offset 4 per indicare il tipo di sistema operativo protettivo GPT. Infine, inserire la firma di avvio (0x55AA) negli ultimi due byte del settore.

Voce generica

446447448449450451452453454455456457458459460461
00000200EEFFFFFF01000000FFFFFFFF

Firma dello stivale

510511
55AA

Per un MBR protettivo ricostruito è sufficiente quanto segue:

Conclusione

In questa prima puntata abbiamo esplorato il Protective MBR e il suo ruolo cruciale nel garantire la retrocompatibilità con i sistemi precedenti. Abbiamo esaminato come il Protective MBR contrassegni l'intero disco come utilizzato da GPT, impedendo ai sistemi più vecchi di interpretare erroneamente la struttura del disco. Comprendendo la struttura e la funzione del Protective MBR, si dispone ora di una solida base per approfondire lo schema GPT.

Per andare avanti, ci concentreremo sull'intestazione GPT, la pietra miliare dello schema GPT che definisce il layout del disco e garantisce l'integrità dei dati. Nella seconda parte, analizzeremo l'intestazione GPT, esaminando ogni campo e il suo significato. Rimanete sintonizzati per continuare a svelare le complessità dello schema GPT, fornendovi le conoscenze necessarie per gestire e recuperare efficacemente i dati dai moderni dispositivi di archiviazione.

Volete approfondire la struttura GPT?

In Parte 2, scomponiamo il Intestazione GPT e spiegare come garantisce l'integrità dei dati sul disco.
Poi in Parte 3, esploriamo il Array di voci di partizione GPT e ciò che gli analisti forensi devono sapere quando ricostruiscono le tabelle di partizione.

Facebook
Twitter
Email
Stampa

5 risposte

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *