Część 3
Wprowadzenie
W naszych poprzednich postach położyliśmy podwaliny pod zrozumienie tablicy partycji GUID (GPT), analizując ochronny MBR i nagłówek GPT. Teraz, w części 3, skupiamy się na tablicy wpisów partycji GPT. Ten kluczowy składnik schematu GPT zapewnia szczegółową mapę wszystkich partycji na dysku, a każdy wpis zawiera istotne informacje o określonej partycji. Dzięki zrozumieniu struktury i funkcji tablicy wpisów partycji GPT uzyskasz kompleksowy obraz tego, jak GPT zarządza partycjami, umożliwiając bardziej efektywną analizę, rozwiązywanie problemów i odzyskiwanie danych.
Tablica wpisów partycji GPT (GUID Partition Table)
Tablica wpisów tablicy partycji GUID (GPT) jest krytyczną częścią systemu partycjonowania GPT, który służy do definiowania i zarządzania partycjami na dysku twardym. Jest to szczegółowa lista, która rejestruje specyfikę każdej partycji na dysku, podobnie jak katalog biblioteki, który zawiera szczegółowe informacje o każdej książce.
Kluczowe składniki tablicy wpisów GPT:
Identyfikator GUID partycji: Każda partycja ma unikalny identyfikator, znany jako Partition GUID, który zapewnia, że każda partycja może być jednoznacznie zidentyfikowana, nawet w różnych systemach.
Unikalny identyfikator: Jest to kolejny unikalny identyfikator specyficzny dla każdej partycji, zapewniający dodatkową warstwę unikalnej identyfikacji.
Rozpoczęcie adresowania LBA (Logical Block Addressing) partycji: Wskazuje punkt początkowy partycji na dysku. Informuje system, gdzie zaczyna się partycja.
Końcowa LBA partycji: Podobnie jak początkowe LBA, wskazuje miejsce zakończenia partycji na dysku.
Bity atrybutów: Są to flagi, które dostarczają dodatkowych informacji o partycji, takich jak to, czy jest ona bootowalna lub czy ma jakieś specjalne atrybuty.
Nazwa partycji: Każda partycja może mieć czytelną dla człowieka nazwę, co ułatwia nam identyfikację celu lub zawartości partycji. Ta nazwa jest zakończona znakiem null, aby oznaczyć koniec ciągu.
Omówmy je szczegółowo, aby w pełni zrozumieć każdy wpis w tablicy.


Gdy dysk jest skonfigurowany jako dysk GPT, pierwszą partycją, która zostanie utworzona, jest partycja systemowa EFI (ESP). Jest to ukryta partycja, która nie jest łatwo dostępna dla użytkowników. Partycja ta znajduje się w sektorze 2048 i jest sformatowana jako FAT32 w celu zapewnienia kompatybilności ze wszystkimi systemami (Windows, Linux, MacOS).
Powyższy zrzut ekranu przedstawia standardową instalację systemu Windows 10, w której utworzono partycję Microsoft Reserved wraz z jedną partycją danych podstawowych określoną przez użytkownika podczas instalacji.

Poniżej znajduje się fragment identyfikatorów GUID z tabeli znalezionej na stronie Wikipedii GUID Partition Table:

Źródło: https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs
Oczywiście identyfikator GUID nie zostanie zapisany w formularzu GUID podczas przeglądania wartości w przeglądarce szesnastkowej.

Identyfikatory GUID są konwertowane tak samo, jak w poprzednim wpisie na blogu, ale można je również łatwo zobaczyć podczas przeglądania w HxD:

Możemy potwierdzić identyfikatory GUID partycji woluminu za pomocą polecenia: mountvol.exe


Znając początkowy LBA i końcowy LBA, możemy obliczyć rozmiar partycji. Na przykład partycja EFI:
Początkowy LBA: 2048
Końcowe LBA: 534527
Całkowita długość: 532479 sektorów x 512 bajtów/sektor = 272629248 bajtów, czyli 260 MB.


Zapasowa tablica wpisów partycji GPT
Backup GPT Partition Entry Array znajduje się na końcu dysku i przed nagłówkiem GPT, a konkretnie 33 sektory przed końcem dysku (LBA (n - 33), gdzie n to ostatni sektor dysku). Możemy również obliczyć, dlaczego jest to 33 sektory przed końcem dysku lub 32 sektory przed nagłówkiem kopii zapasowej GPT.
Każdy wpis partycji ma 128 bajtów, a całkowita liczba wpisów w tablicy wpisów wynosi 128. Oznacza to, że w tablicy znajdują się 16 384 sektory lub 32 sektory (16384/512).
Nagłówek GPT kopii zapasowej wskazuje lokalizację tablicy wpisów partycji GPT kopii zapasowej


Kopia zapasowa tablicy wpisów partycji GPT w pobliżu końca dysku
Naprawianie tablicy wpisów partycji GPT
Naprawa tablicy wpisów partycji GPT jest tak prosta, jak skopiowanie 16 384-bajtowej kopii zapasowej znalezionych 33 sektorów z końca dysku i wklejenie ich w LBA 2 do 3. Nie ma potrzeby żadnych zmian/modyfikacji wartości szesnastkowych, ponieważ są to dokładne kopie.
Kopia zapasowa GPT znajdująca się na końcu dysku jest taka sama jak podstawowa. W rzeczywistości wycięcie sektorów dla każdego z nich i ich haszowanie pokazuje, że są one dokładnie takie same.

Wnioski
W tej trzeciej części dokładnie zbadaliśmy tablicę wpisów partycji GPT, krytyczny składnik schematu GPT. Rozbijając każde pole we wpisach partycji, od identyfikatorów GUID po bity atrybutów i nazwy partycji, zobaczyliśmy, w jaki sposób GPT zapewnia solidną strukturę do organizowania i uzyskiwania dostępu do danych na dysku. Wiedza ta jest niezbędna do prowadzenia dochodzeń kryminalistycznych, odzyskiwania danych i administrowania systemem, wyposażając cię w umiejętności efektywnej nawigacji i manipulowania dyskami z partycjami GPT. Bądź na bieżąco z naszym następnym postem, w którym zagłębimy się w praktyczne zastosowania i studia przypadków, przenosząc teorię w praktykę.
Ten post kończy naszą 3-częściową serię na temat struktur partycji GPT.
Jeśli przegapiłeś wcześniejsze posty, zacznij od Część 1 - Ochronny MBRgdzie badamy, w jaki sposób utrzymywana jest kompatybilność ze starszymi wersjami, i kontynuujemy z Część 2 - Nagłówek GPTktóry definiuje układ dysku i zapewnia integralność.
Chcesz dowiedzieć się więcej? Zapisz się do naszego newslettera, aby uzyskać dostęp do nadchodzących treści na temat odzyskiwania partycji, haszowania na poziomie dysku i wyzwań CTF opartych na rzeczywistych scenariuszach kryminalistycznych.
Jedna odpowiedź