Partitions/File Systems/Carving

Support HackTricks

Partitions

Dysk twardy lub dysk SSD może zawierać różne partycje w celu fizycznego oddzielenia danych. Minimalną jednostką dysku jest sektor (zwykle składający się z 512B). Zatem rozmiar każdej partycji musi być wielokrotnością tego rozmiaru.

MBR (master Boot Record)

Jest przydzielony w pierwszym sektorze dysku po 446B kodu rozruchowego. Ten sektor jest niezbędny, aby wskazać PC, co i skąd powinno być zamontowane jako partycja. Pozwala na maksymalnie 4 partycje (najwyżej tylko 1 może być aktywna/rozruchowa). Jednak jeśli potrzebujesz więcej partycji, możesz użyć partycji rozszerzonej. Ostatni bajt tego pierwszego sektora to sygnatura rekordu rozruchowego 0x55AA. Tylko jedna partycja może być oznaczona jako aktywna. MBR pozwala na maks. 2.2TB.

W bajtach 440 do 443 MBR możesz znaleźć Sygnaturę Dysku Windows (jeśli używany jest Windows). Litera logicznego dysku twardego zależy od Sygnatury Dysku Windows. Zmiana tej sygnatury może uniemożliwić uruchomienie Windows (narzędzie: Active Disk Editor).

Format

OffsetLengthItem

0 (0x00)

446(0x1BE)

Kod rozruchowy

446 (0x1BE)

16 (0x10)

Pierwsza partycja

462 (0x1CE)

16 (0x10)

Druga partycja

478 (0x1DE)

16 (0x10)

Trzecia partycja

494 (0x1EE)

16 (0x10)

Czwarta partycja

510 (0x1FE)

2 (0x2)

Sygnatura 0x55 0xAA

Format rekordu partycji

OffsetLengthItem

0 (0x00)

1 (0x01)

Flaga aktywności (0x80 = rozruchowa)

1 (0x01)

1 (0x01)

Głowica startowa

2 (0x02)

1 (0x01)

Sektor startowy (bity 0-5); wyższe bity cylindra (6- 7)

3 (0x03)

1 (0x01)

Cylinder startowy najniższe 8 bitów

4 (0x04)

1 (0x01)

Kod typu partycji (0x83 = Linux)

5 (0x05)

1 (0x01)

Głowica końcowa

6 (0x06)

1 (0x01)

Sektor końcowy (bity 0-5); wyższe bity cylindra (6- 7)

7 (0x07)

1 (0x01)

Cylinder końcowy najniższe 8 bitów

8 (0x08)

4 (0x04)

Sektory poprzedzające partycję (little endian)

12 (0x0C)

4 (0x04)

Sektory w partycji

Aby zamontować MBR w systemie Linux, najpierw musisz uzyskać offset startowy (możesz użyć fdisk i polecenia p)

A następnie użyj następującego kodu

#Mount MBR in Linux
mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/

LBA (Logical block addressing)

Logical block addressing (LBA) to powszechnie stosowany schemat do określania lokalizacji bloków danych przechowywanych na urządzeniach pamięci komputerowej, zazwyczaj w systemach pamięci wtórnej, takich jak dyski twarde. LBA jest szczególnie prostym liniowym schematem adresowania; bloki są zlokalizowane za pomocą indeksu całkowitego, przy czym pierwszy blok to LBA 0, drugi LBA 1, i tak dalej.

GPT (GUID Partition Table)

Tabela partycji GUID, znana jako GPT, jest preferowana ze względu na swoje ulepszone możliwości w porównaniu do MBR (Master Boot Record). Wyróżnia się globalnie unikalnym identyfikatorem dla partycji, GPT wyróżnia się w kilku aspektach:

  • Lokalizacja i rozmiar: Zarówno GPT, jak i MBR zaczynają się od sektora 0. Jednak GPT działa na 64 bitach, w przeciwieństwie do 32 bitów MBR.

  • Limity partycji: GPT obsługuje do 128 partycji w systemach Windows i pomieści do 9,4ZB danych.

  • Nazwy partycji: Oferuje możliwość nadawania nazw partycjom z maksymalnie 36 znakami Unicode.

Odporność danych i odzyskiwanie:

  • Redundancja: W przeciwieństwie do MBR, GPT nie ogranicza partycjonowania i danych rozruchowych do jednego miejsca. Replikuje te dane w całym dysku, co zwiększa integralność danych i odporność.

  • Cyclic Redundancy Check (CRC): GPT stosuje CRC, aby zapewnić integralność danych. Aktywnie monitoruje uszkodzenia danych, a po ich wykryciu GPT próbuje odzyskać uszkodzone dane z innej lokalizacji na dysku.

Ochronny MBR (LBA0):

  • GPT utrzymuje zgodność wsteczną poprzez ochronny MBR. Ta funkcja znajduje się w przestrzeni MBR, ale jest zaprojektowana, aby zapobiec przypadkowemu nadpisaniu dysków GPT przez starsze narzędzia oparte na MBR, co chroni integralność danych na dyskach sformatowanych w GPT.

Hybrid MBR (LBA 0 + GPT)

Z Wikipedii

W systemach operacyjnych, które obsługują rozruch oparty na GPT przez usługi BIOS zamiast EFI, pierwszy sektor może być również używany do przechowywania pierwszej fazy kodu bootloadera, ale zmodyfikowanego w celu rozpoznania partycji GPT. Bootloader w MBR nie może zakładać rozmiaru sektora wynoszącego 512 bajtów.

Nagłówek tabeli partycji (LBA 1)

Z Wikipedii

Nagłówek tabeli partycji definiuje użyteczne bloki na dysku. Definiuje również liczbę i rozmiar wpisów partycji, które tworzą tabelę partycji (offsety 80 i 84 w tabeli).

OffsetDługośćZawartość

0 (0x00)

8 bajtów

Podpis ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h lub 0x5452415020494645ULL na maszynach little-endian)

8 (0x08)

4 bajty

Wersja 1.0 (00h 00h 01h 00h) dla UEFI 2.8

12 (0x0C)

4 bajty

Rozmiar nagłówka w little endian (w bajtach, zazwyczaj 5Ch 00h 00h 00h lub 92 bajty)

16 (0x10)

4 bajty

CRC32 nagłówka (offset +0 do rozmiaru nagłówka) w little endian, z tym polem wyzerowanym podczas obliczeń

20 (0x14)

4 bajty

Zarezerwowane; musi być zerowe

24 (0x18)

8 bajtów

Bieżące LBA (lokalizacja tej kopii nagłówka)

32 (0x20)

8 bajtów

Kopia zapasowa LBA (lokalizacja drugiej kopii nagłówka)

40 (0x28)

8 bajtów

Pierwsze użyteczne LBA dla partycji (ostatnie LBA głównej tabeli partycji + 1)

48 (0x30)

8 bajtów

Ostatnie użyteczne LBA (pierwsze LBA drugiej tabeli partycji − 1)

56 (0x38)

16 bajtów

GUID dysku w mieszanym endianie

72 (0x48)

8 bajtów

Rozpoczęcie LBA tablicy wpisów partycji (zawsze 2 w kopii głównej)

80 (0x50)

4 bajty

Liczba wpisów partycji w tablicy

84 (0x54)

4 bajty

Rozmiar pojedynczego wpisu partycji (zazwyczaj 80h lub 128)

88 (0x58)

4 bajty

CRC32 tablicy wpisów partycji w little endian

92 (0x5C)

*

Zarezerwowane; musi być zerami przez resztę bloku (420 bajtów dla rozmiaru sektora 512 bajtów; ale może być więcej przy większych rozmiarach sektorów)

Wpisy partycji (LBA 2–33)

Format wpisu partycji GUID

Offset

Długość

Zawartość

0 (0x00)

16 bajtów

Typ GUID partycji (mieszany endian)

16 (0x10)

16 bajtów

Unikalny GUID partycji (mieszany endian)

32 (0x20)

8 bajtów

Pierwsze LBA (little endian)

40 (0x28)

8 bajtów

Ostatnie LBA (włącznie, zazwyczaj nieparzyste)

48 (0x30)

8 bajtów

Flagi atrybutów (np. bit 60 oznacza tylko do odczytu)

56 (0x38)

72 bajty

Nazwa partycji (36 UTF-16LE jednostek kodowych)

Typy partycji

Więcej typów partycji w https://en.wikipedia.org/wiki/GUID_Partition_Table

Inspekcja

Po zamontowaniu obrazu forensycznego za pomocą ArsenalImageMounter, możesz zbadać pierwszy sektor za pomocą narzędzia Windows Active Disk Editor. Na poniższym obrazie wykryto MBR w sektorze 0 i zinterpretowano:

Gdyby to była tabela GPT zamiast MBR, powinien pojawić się podpis EFI PART w sektorze 1 (który na poprzednim obrazie jest pusty).

Systemy plików

Lista systemów plików Windows

  • FAT12/16: MSDOS, WIN95/98/NT/200

  • FAT32: 95/2000/XP/2003/VISTA/7/8/10

  • ExFAT: 2008/2012/2016/VISTA/7/8/10

  • NTFS: XP/2003/2008/2012/VISTA/7/8/10

  • ReFS: 2012/2016

FAT

System plików FAT (File Allocation Table) jest zaprojektowany wokół swojego podstawowego komponentu, tabeli alokacji plików, umieszczonej na początku woluminu. System ten chroni dane, utrzymując dwie kopie tabeli, zapewniając integralność danych, nawet jeśli jedna z nich ulegnie uszkodzeniu. Tabela, wraz z folderem głównym, musi znajdować się w stałej lokalizacji, co jest kluczowe dla procesu uruchamiania systemu.

Podstawową jednostką przechowywania w systemie plików jest klaster, zazwyczaj 512B, składający się z wielu sektorów. FAT ewoluował przez wersje:

  • FAT12, obsługujący 12-bitowe adresy klastrów i obsługujący do 4078 klastrów (4084 z UNIX).

  • FAT16, rozwijający się do 16-bitowych adresów, co pozwala na obsługę do 65,517 klastrów.

  • FAT32, dalej rozwijający się z 32-bitowymi adresami, pozwalający na imponujące 268,435,456 klastrów na wolumin.

Znaczącym ograniczeniem we wszystkich wersjach FAT jest maksymalny rozmiar pliku wynoszący 4GB, narzucony przez 32-bitowe pole używane do przechowywania rozmiaru pliku.

Kluczowe komponenty katalogu głównego, szczególnie dla FAT12 i FAT16, obejmują:

  • Nazwa pliku/folderu (do 8 znaków)

  • Atrybuty

  • Daty utworzenia, modyfikacji i ostatniego dostępu

  • Adres tabeli FAT (wskazujący na pierwszy klaster pliku)

  • Rozmiar pliku

EXT

Ext2 to najczęściej stosowany system plików dla partycji bez dziennika (partycji, które nie zmieniają się zbyt często) jak partycja rozruchowa. Ext3/4z dziennikiem i są zazwyczaj używane dla pozostałych partycji.

Metadane

Niektóre pliki zawierają metadane. Informacje te dotyczą zawartości pliku, które czasami mogą być interesujące dla analityka, ponieważ w zależności od typu pliku mogą zawierać informacje takie jak:

  • Tytuł

  • Wersja MS Office używana

  • Autor

  • Daty utworzenia i ostatniej modyfikacji

  • Model aparatu

  • Współrzędne GPS

  • Informacje o obrazie

Możesz użyć narzędzi takich jak exiftool i Metadiver do uzyskania metadanych pliku.

Odzyskiwanie usuniętych plików

Zarejestrowane usunięte pliki

Jak wcześniej wspomniano, istnieje kilka miejsc, w których plik jest nadal zapisany po jego "usunięciu". Dzieje się tak, ponieważ zazwyczaj usunięcie pliku z systemu plików po prostu oznacza go jako usunięty, ale dane nie są dotykane. Wtedy możliwe jest zbadanie rejestrów plików (takich jak MFT) i znalezienie usuniętych plików.

Ponadto system operacyjny zazwyczaj zapisuje wiele informacji o zmianach w systemie plików i kopiach zapasowych, więc możliwe jest próbowanie ich użycia do odzyskania pliku lub jak największej ilości informacji.

File/Data Carving & Recovery Tools

Carving plików

File carving to technika, która próbuje znaleźć pliki w masie danych. Istnieją 3 główne sposoby, w jakie działają takie narzędzia: Na podstawie nagłówków i stóp typów plików, na podstawie struktur typów plików oraz na podstawie samej zawartości.

Należy zauważyć, że ta technika nie działa na odzyskiwanie fragmentowanych plików. Jeśli plik nie jest przechowywany w sąsiadujących sektorach, to ta technika nie będzie w stanie go znaleźć lub przynajmniej jego części.

Istnieje wiele narzędzi, które możesz użyć do carvingu plików, wskazując typy plików, które chcesz wyszukiwać.

File/Data Carving & Recovery Tools

Carving strumieni danych

Carving strumieni danych jest podobny do carvingu plików, ale zamiast szukać kompletnych plików, szuka interesujących fragmentów informacji. Na przykład, zamiast szukać kompletnego pliku zawierającego zarejestrowane adresy URL, ta technika będzie szukać adresów URL.

File/Data Carving & Recovery Tools

Bezpieczne usuwanie

Oczywiście istnieją sposoby na "bezpieczne" usunięcie plików i części logów o nich. Na przykład, możliwe jest nadpisanie zawartości pliku danymi śmieciowymi kilka razy, a następnie usunięcie logów z $MFT i $LOGFILE dotyczących pliku oraz usunięcie kopii cieni woluminu. Możesz zauważyć, że nawet wykonując tę akcję, mogą istnieć inne części, w których istnienie pliku jest nadal zarejestrowane, i to prawda, a częścią pracy profesjonalisty w dziedzinie forensyki jest ich znalezienie.

Referencje

Support HackTricks

Last updated