Partitions/File Systems/Carving

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Particije

Tvrdi disk ili SSD disk mogu sadržati različite particije sa ciljem fizičkog razdvajanja podataka. Minimalna jedinica diska je sektor (obično sastavljen od 512B). Dakle, veličina svake particije mora biti višekratnik te veličine.

MBR (master Boot Record)

Nalazi se u prvom sektoru diska nakon 446B boot koda. Taj sektor je bitan kako bi PC-u pokazao šta i odakle treba da se montira particija. Dozvoljava do 4 particije (najviše samo 1 može biti aktivna/bootable). Međutim, ako vam je potrebno više particija, možete koristiti proširene particije. Poslednji bajt ovog prvog sektora je potpis boot zapisa 0x55AA. Samo jedna particija može biti označena kao aktivna. MBR dozvoljava maksimalno 2.2TB.

Od bajtova 440 do 443 MBR-a možete pronaći Windows Disk Signature (ako se koristi Windows). Logičko slovo drajva tvrdog diska zavisi od Windows Disk Signature-a. Menjanje ovog potpisa može sprečiti Windows da se podigne (alat: Active Disk Editor).

Format

OffsetDužinaStavka

0 (0x00)

446(0x1BE)

Boot kod

446 (0x1BE)

16 (0x10)

Prva Particija

462 (0x1CE)

16 (0x10)

Druga Particija

478 (0x1DE)

16 (0x10)

Treća Particija

494 (0x1EE)

16 (0x10)

Četvrta Particija

510 (0x1FE)

2 (0x2)

Potpis 0x55 0xAA

Format Zapisa Particije

OffsetDužinaStavka

0 (0x00)

1 (0x01)

Aktivna oznaka (0x80 = bootable)

1 (0x01)

1 (0x01)

Početna glava

2 (0x02)

1 (0x01)

Početni sektor (bitovi 0-5); gornji bitovi cilindra (6- 7)

3 (0x03)

1 (0x01)

Najnižih 8 bitova početnog cilindra

4 (0x04)

1 (0x01)

Kod tipa particije (0x83 = Linux)

5 (0x05)

1 (0x01)

Završna glava

6 (0x06)

1 (0x01)

Završni sektor (bitovi 0-5); gornji bitovi cilindra (6- 7)

7 (0x07)

1 (0x01)

Najnižih 8 bitova završnog cilindra

8 (0x08)

4 (0x04)

Sektori pre particije (little endian)

12 (0x0C)

4 (0x04)

Sektori u particiji

Da biste montirali MBR u Linux-u prvo morate dobiti početni offset (možete koristiti fdisk i komandu p)

Zatim koristite sledeći kod

#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)

Logičko blok adresiranje (LBA) je uobičajena šema korišćena za specifikaciju lokacije blokova podataka smeštenih na uređajima za čuvanje podataka računara, obično sekundarnim skladišnim sistemima poput hard disk drajvova. LBA je posebno jednostavna linearna šema adresiranja; blokovi se lociraju pomoću celobrojnog indeksa, pri čemu je prvi blok LBA 0, drugi LBA 1, i tako dalje.

GPT (GUID Partition Table)

Tabela sa globalno jedinstvenim identifikatorom, poznata kao GPT, preferira se zbog svojih unapređenih mogućnosti u poređenju sa MBR (Master Boot Record). Karakteristična po svom globalno jedinstvenom identifikatoru za particije, GPT se ističe na nekoliko načina:

  • Lokacija i Veličina: I GPT i MBR počinju od sektora 0. Međutim, GPT radi na 64 bita, za razliku od MBR-ovih 32 bita.

  • Ograničenja particija: GPT podržava do 128 particija na Windows sistemima i može da primi do 9.4ZB podataka.

  • Imena particija: Omogućava mogućnost imenovanja particija sa do 36 Unicode karaktera.

Otpornost podataka i obnova:

  • Redundantnost: Za razliku od MBR-a, GPT ne ograničava particionisanje i podatke o podizanju sistema na jedno mesto. Ona duplira ove podatke po disku, poboljšavajući integritet i otpornost podataka.

  • Ciklična redundancija provere (CRC): GPT koristi CRC kako bi osigurala integritet podataka. Aktivno nadgleda korupciju podataka, i kada je detektovana, GPT pokušava da povrati oštećene podatke sa druge lokacije na disku.

Zaštitni MBR (LBA0):

  • GPT održava kompatibilnost unazad putem zaštitnog MBR-a. Ova funkcija se nalazi u prostoru za stari MBR, ali je dizajnirana da spreči starije MBR bazirane alatke da greškom prepišu GPT diskove, čime se čuva integritet podataka na GPT formatiranim diskovima.

Hibridni MBR (LBA 0 + GPT)

Od Vikipedije

U operativnim sistemima koji podržavaju GPT bazirano podizanje sistema putem BIOS servisa umesto EFI, prvi sektor se može koristiti i dalje za skladištenje prvog koraka koda bootloadera, ali modifikovanog da prepozna GPT particije. Bootloader u MBR-u ne sme pretpostaviti veličinu sektora od 512 bajtova.

Zaglavlje particione tabele (LBA 1)

Od Vikipedije

Zaglavlje particione tabele definiše upotrebljive blokove na disku. Takođe definiše broj i veličinu unosa particija koji čine particionu tabelu (ofseti 80 i 84 u tabeli).

OfsetDužinaSadržaj

0 (0x00)

8 bajtova

Potpis ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ili 0x5452415020494645ULL na malo-indijskim mašinama)

8 (0x08)

4 bajta

Revizija 1.0 (00h 00h 01h 00h) za UEFI 2.8

12 (0x0C)

4 bajta

Veličina zaglavlja u malo-indijskom poretku (u bajtovima, obično 5Ch 00h 00h 00h ili 92 bajta)

16 (0x10)

4 bajta

CRC32 zaglavlja (ofset +0 do veličine zaglavlja) u malo-indijskom poretku, pri čemu je ovo polje nula tokom računanja

20 (0x14)

4 bajta

Rezervisano; mora biti nula

24 (0x18)

8 bajtova

Trenutni LBA (lokacija ovog kopiranog zaglavlja)

32 (0x20)

8 bajtova

Rezervisano LBA (lokacija drugog kopiranog zaglavlja)

40 (0x28)

8 bajtova

Prvi upotrebljivi LBA za particije (poslednji LBA primarne particione tabele + 1)

48 (0x30)

8 bajtova

Poslednji upotrebljivi LBA (prvi LBA sekundarne particione tabele − 1)

56 (0x38)

16 bajtova

Disk GUID u mešovitom poretku

72 (0x48)

8 bajtova

Početni LBA niza unosa particija (uvek 2 u primarnom kopiranju)

80 (0x50)

4 bajta

Broj unosa particija u nizu

84 (0x54)

4 bajta

Veličina jednog unosa particije (obično 80h ili 128)

88 (0x58)

4 bajta

CRC32 niza unosa particija u malo-indijskom poretku

92 (0x5C)

*

Rezervisano; moraju biti nule za ostatak bloka (420 bajtova za veličinu sektora od 512 bajtova; ali može biti više sa većim veličinama sektora)

Unosi particija (LBA 2–33)

Format unosa particije GUID

Ofset

Dužina

Sadržaj

0 (0x00)

16 bajtova

GUID particije tipa (mešoviti poretk)

16 (0x10)

16 bajtova

Jedinstveni GUID particije (mešoviti poretk)

32 (0x20)

8 bajtova

Prvi LBA (malo-indijski)

40 (0x28)

8 bajtova

Poslednji LBA (inkluzivno, obično neparan)

48 (0x30)

8 bajtova

Zastavice atributa (npr. bit 60 označava samo za čitanje)

56 (0x38)

72 bajta

Ime particije (36 UTF-16LE jedinica koda)

Tipovi particija

Više tipova particija na https://en.wikipedia.org/wiki/GUID_Partition_Table

Inspekcija

Nakon montiranja forenzičke slike pomoću ArsenalImageMounter, možete pregledati prvi sektor koristeći Windows alatku Active Disk Editor. Na sledećoj slici detektovan je MBR na sektoru 0 i interpretiran:

Ako je to bio GPT sto umesto MBR-a, trebalo bi da se pojavi potpis EFI PART u sektoru 1 (koji je prazan na prethodnoj slici).

Fajl-sistemi

Lista Windows fajl-sistema

  • 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

FAT (File Allocation Table) fajl-sistem je dizajniran oko svoje osnovne komponente, tabele alokacije fajlova, koja se nalazi na početku zapremine. Ovaj sistem štiti podatke održavanjem dve kopije tabele, obezbeđujući integritet podataka čak i ako je jedna oštećena. Tabela, zajedno sa korenskim folderom, mora biti na fiksnom mestu, ključnom za proces pokretanja sistema.

Osnovna jedinica skladištenja fajl-sistema je klaster, obično 512B, koji se sastoji od više sektora. FAT se razvijao kroz verzije:

  • FAT12, podržava 12-bitne adrese klastera i može rukovati do 4078 klastera (4084 sa UNIX-om).

  • FAT16, unapređenje na 16-bitne adrese, omogućavajući do 65.517 klastera.

  • FAT32, dalje napredovanje sa 32-bitnim adresama, dozvoljavajući impresivnih 268.435.456 klastera po zapremini.

Značajno ograničenje kroz verzije FAT-a je maksimalna veličina fajla od 4GB, nametnuta 32-bitnim poljem korišćenim za skladištenje veličine fajla.

Ključne komponente korenskog direktorijuma, posebno za FAT12 i FAT16, uključuju:

  • Ime fajla/foldera (do 8 karaktera)

  • Atributi

  • Datumi kreiranja, modifikacije i poslednjeg pristupa

  • Adresa FAT tabele (ukazuje na početni klaster fajla)

  • Veličina fajla

EXT

Ext2 je najčešći fajl-sistem za particije bez dnevnika (particije koje se ne menjaju mnogo), poput boot particije. Ext3/4 su sa dnevnikom i obično se koriste za ostale particije.

Metapodaci

Neki fajlovi sadrže metapodatke. Ove informacije se odnose na sadržaj fajla koji ponekad može biti zanimljiv analitičaru jer, u zavisnosti od tipa fajla, može sadržati informacije poput:

  • Naslov

  • Korišćena verzija MS Office-a

  • Autor

  • Datumi kreiranja i poslednje modifikacije

  • Model kamere

  • GPS koordinate

  • Informacije o slici

Možete koristiti alate poput exiftool i Metadiver da biste dobili metapodatke fajla.

Obnova obrisanih fajlova

Evidentirani obrisani fajlovi

Kao što je već viđeno, postoji nekoliko mesta gde je fajl i dalje sačuvan nakon što je "obrisan". To je zato što brisanje fajla iz fajl-sistema obično označava kao obrisano, ali podaci nisu dirani. Zatim je moguće pregledati registre fajlova (poput MFT-a) i pronaći obrisane fajlove.

Takođe, OS obično čuva mnogo informacija o promenama fajl-sistema i rezervnim kopijama, pa je moguće pokušati ih koristiti za obnovu fajla ili što više informacija.

pageFile/Data Carving & Recovery Tools

Izvlačenje fajlova

Izvlačenje fajlova je tehnika koja pokušava pronaći fajlove u masi podataka. Postoje 3 glavna načina rada alata poput ovog: Na osnovu zaglavlja i podnožja tipova fajlova, na osnovu strukture tipova fajlova i na osnovu sadržaja samog fajla.

Imajte na umu da ova tehnika ne funkcioniše za povrat fragmentiranih fajlova. Ako fajl nije smešten u kontinualnim sektorima, tada ova tehnika neće moći da ga pronađe ili bar deo njega.

Postoje različiti alati koje možete koristiti za izvlačenje fajlova, navodeći tipove fajlova koje želite pretražiti

pageFile/Data Carving & Recovery Tools

Izvlačenje podataka iz struja

Izvlačenje podataka iz struja je slično izvlačenju fajlova, ali umesto traženja kompletnih fajlova, traži zanimljive fragmente informacija. Na primer, umesto traženja kompletnog fajla koji sadrži evidentirane URL-ove, ovom tehnikom će se tražiti URL-ovi.

pageFile/Data Carving & Recovery Tools

Bezbedno brisanje

Očigledno, postoje načini za "sigurno" brisanje fajlova i dela logova o njima. Na primer, moguće je prepisati sadržaj fajla sa beskorisnim podacima nekoliko puta, a zatim ukloniti logove iz $MFT i $LOGFILE o fajlu, i ukloniti kopije senki zapremine. Možda ćete primetiti da čak i nakon izvršavanja te radnje može postojati drugi delovi gde je postojanje fajla i dalje evidentirano, što je tačno i deo posla forenzičara je da ih pronađe.

Reference

Last updated