SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA exfat Datotečni sustav Andrej Šeškar 0036474276 Zagreb, siječanj, 2017.
1. Uvod Jedan od elemenata računalne forenzike je proučavanje uređaja za pohranu podataka, odnosno forenzika datotečnih sustava. No što ako je takav sustav forenzičaru nepoznat ili slabo dokumentiran? Pošto su datotečni sustavi proizvod koji se može patentirati i čija se uporaba može licencirati, detalji njihove implementacije mogu ostati nejasni, ili čak zaštićene poslovne tajne. Kad forenzički alati prisiljeno zaostaju za tehnologijom, kao i cijeli operativni sustavi koji nemaju podršku za takve datotečne sustave, te jedva da postoje open source alati koji shvaćaju podatkovnu strukturu, kako se može provesti analiza i forenzika pod takvim uvjetima? Odkad je uveden na tržište u 2006. godini, Extended FAT (exfat) datotečni sustav je ostao relativna nepoznanica u računalnoj forenzici. Kao i NTFS (New Technology File System), spada u Microsoftovo intelektualno vlasništvo, no za razliku od NTFS, detalji njegove implementacije su još uvijek neobznanjeni široj publici. Sve što znamo o exfat sustavu se svodi na to da je optimiziran za flash memoriju, točnije za veliku flash memoriju koja skladišti podatke u velikim datotekama. Jedna od glavnih obilježja sustava su ta da za razliku od FAT32 dopušta veličinu individualnih datoteka veću od 4 GiB, odnosno podržava virtualno neograničenu veličinu pojedinačne datoteke (128 PiB) te virtualno neograničen broj datoteka (odnosno 2 32-11, skoro 16 puta više od FAT32). Pošto se podatkovni kapaciteti uređaja u široj uporabi eksponencijalno povećavaju već godinama, možemo očekivati da će se i ovaj datotečni sustav sve više pojavljivati u uporabi, uzeši u obzir da je namijenjen kao zamjena za FAT32 koji je trenutno de facto standard za prijenosnu memoriju te je podržan na gotovo svim operativnim sustavima. Na taj račun je exfat već prozvan FAT64 (iako to nije posve tehnički korektno), a neki proizvođači flash memorije su već krenuli koristiti exfat kao pretpostavljen datotečni sustav za svoje medije sa visokim kapacitetom. Zbog svojeg nadolazećeg rasta u uporabi i nedostatka bilo kakve dokumentacije koja sadržava specifikacije ovog novog datotečnog sustava, exfat je privukao pažnju inženjera, forenzičara i autora forenzičkih alata koji su se okupili kako bi otkrili principe rada i format ovog sustava. U 2010. godini, stručnjaci sa SANS instituta su objavili rad u kojem je opisan njihov postupak obrnutog inženjeringa exfat sustava, te su bitni detalji izvedbe postali javno dostupni. Iako su određene značajke izvedbe još uvijek nepoznate, osnovni principi rada i podatkovne strukture više nisu tajna te je moguće donekle odraditi forenziku nad uređajima koji koriste exfat za pohranu podataka. Opisati ćemo svojstva i mehanizme exfat sustava čije poznavanje je forenzičaru potrebno za istragu, način na koji exfat pohranjuje podatke na mediju, strukturu direktorija u sustavu, te ove podatke predstaviti uz usporedbe sa već poznatim datotečnim sustavima.
2. Osnovne značajke Unatoč svome imenu i činjenici da exfat uistinu koristi FAT (engl. File Allocation Table tablica za alokaciju podataka), on nije standardni datotečni sustav iz FAT obitelji kao što su FAT16 i FAT32, već je on izvedenica takvih sustava i ima određena odstupanja u odnosu na njih. Njegova vrsta MBR (Master Boot Record) particije se označava sa 0x07 kao kod NTFS sustava, no podaci o logičkoj geometriji se u njegovom VBR-u pohranjuju u formatu koji uopće nije nalik BPB-u kakvog bismo pronašli u NTFS-u. Za evidentiranje slobodnog prostora na mediju koristi tzv. free space bitmap bitmap alokacijsku tablicu gdje je svaki sektor predstavljen jednim bitom koji bilježi njegovo zauzeće. Postoji još mnogo razlika, ali ove su dovoljne da, unatoč tome što je exfat spiritualni nasljednik FAT32 sustava, ilustriraju da je neispravno exfat oslovljavati nadimkom FAT64. Iako se koncept FAT-a kod njega zadržao, njegova struktura se razlikuje od strukture njegovih prethodnika. Kod exfat sustava, medij se dijeli u četiri regije: Glavna Boot regija Rezervna (Backup) Boot regija FAT regija Podatkovna regija Slika 1. Razdioba medija po exfat datotečnom sustavu
Na slici 1 vidimo opisane četiri regije, a svaka od njih se može podijeliti na još podregija. Na početku se nalazi glavna boot regija, ili točnije glavni VBR (Volume Boot Record), a iza njega je smješten sekundarni VBR koji se koristi u slučaju greške pri uporabi prvog, te je njegova identična replika. Iza boot regija stoji FAT tablica koja se potom može ali ne mora ponoviti (ovisno o specifikaciji koju ćemo kasnije objasniti), te na kraju dolazi tzv. Cluster heap. Cluster heap je niz klastera koji sadržavaju same datoteke i direktorije na mediju, kao i prethodno spomenutu bitmap alokacijsku tablicu, te nešto što nazivamo upcase tablica (engl. upcase table tablica koja se koristi za preobrazbu svih znakovnih nizova u niz sa isključivo velikim slovima). Svaki VBR je smješten u 12 sektora. Sadrži podatke potrebne za podizanje sustava (MBS Main Boot Sector i MEBS Main Extended Boot Sectors), BPB (BIOS Parameter Block), OEM naziv, a završava checksum sektorom. Checksum sektor je nov pojam u odnosu na datotečne sustave iz FAT obitelji on sadrži bitove za provjeru ispravnosti podataka svih prethodnih 11 sektora. Ovakav sustav provjere omogućava da osiguramo integritet metapodataka koji se nalaze u VBR-u i time se zaštitimo od mogućih prijetnji kao što su boot sektor virusi ili naprosto detektiramo greške kao što su koruptirani metapodaci. Ovakve provjere se koriste i drugdje u sustavu, te se exfat općenito oslanja na checksume i hash funkcije da osigura integritet odnosno brzinu dohvaćanja podataka. Na primjer, metapodaci svake pojedine datoteke su zaštićeni checksum vrijednošću. Nadalje, upcase tablica je isto zaštićena checksum vrijednošću pošto se ona nikad ne mijenja, a koristi se svaki put pri pretraživanju datoteka po imenu. Hash funkcije se također koriste prilikom pretraživanja po imenu za svako ime se izračunava hash vrijednost od 2 bajta, ukoliko postoje zabilježene hash vrijednosti imena datoteka koje odgovaraju onoj traženoj, među tim datotekama se vrši pretraživanje po imenu datoteke. Ovime se pretraživanje po imenu ne izvršava nad svim datotekama već samo nad odabranim brojem njih. Ovakav postupak ubrzava pretraživanje i jedan je od patentiranih dijelova sustava. Kao što je prethodno spomenuto, moguće je da se koriste dvije FAT tablice u exfat datotečnom sustavu. Ovo je jedna od opcija koje su bile dostupne i u sustavima FAT obitelji, a služi za osiguranje transakcijske sigurnosti podataka. Kod FAT sustava je imala naziv TFAT, a kod exfat sustava se naziva TexFAT, gdje akronim označava Transactional FAT odnosno Transactional exfat, indicirajući na svoju svrhu. Po pitanju podrške od strane operativnih sustava, exfat je originalno namijenjen za Microsoft Windows, koji ga podržava (uz odgovarajuće ažuriranje) od verzije XP nadalje. Pošto je intelektualno vlasništvo tvrtke Microsoft, podrška na Mac OS sustavima je u početku bila ograničena, no danas je implementirana, ali zbog načina licenciranja ostaje uglavnom nepodržan na Linux distribucijama. Postoje implementacije kroz FUSE (Filesystem in Userspace) programsko sučelje, no one zbog spomenutih problema ne mogu postati službeni dijelovi Linux sustava.
3. Struktura Boot Recorda Na tablici 1 je prikazana definicija strukture MBS-a u exfat sustavu. Field Name Offset Size Description / Value (Byte) (Byte) Jump Boot 0 3 0xEB7690 File System Name 3 8 EXFAT Must Be Zero 11 53 Must be 0x00 Partition Offset 64 8 Sector Address Volume Length 72 8 Size of total volume in sectors FAT Offset 80 4 Sector address of 1st FAT FAT Length 84 4 Size of FAT in sectors Cluster Heap Offset 88 4 Sector address of the Data Region Cluster Count 92 4 Number of clusters in the Cluster Heap Root Directory First 96 4 Cluster addres of the Root Directory Cluster Volume Serial 100 4 Volume Serial Number Number File System Revision 104 2 Version and revision number (VV.MM) Volume Flags 106 2 Field Offset Size Description bits bits Active FAT 0 1 0 1st 1 2nd Volume Dirty 1 1 0 Clean 1 Dirty Media Failure 2 1 0 No failures 1 Failures reported Clear to Zero 3 1 No meaning Reserved 4 12 Bytes Per Sector 108 1 This is a power of 2. Range: min of 2 9 = 512 byte cluster size, and a max of 2 12 = 4096. Sectors Per Cluster 109 1 This is a power of 2. Range: Min of 2 1 =512. The maximum Cluster size is 32 MiB, so the Values in Bytes per Sector + Sectors Per Cluster cannot exceed 25. Number of FATs 110 1 This number is either 1 or 2, and is only 2 if TexFAT is in use. Drive Select 111 1 Used by INT 13 Percent In Use 112 1 Percentage of Heap in use Reserved 113 7 Boot Code 120 390 The Boot Program Boot Signature 510 2 0xAA55 Excess 512 If the sector is larger than 512 bytes, extra padding may exist beyond the signature Tablica 1. Sadržaj glavnog i pomoćnog boot sektora
Pošto Microsoft nije službeno izbacio specifikacije exfat sustava, ova tablica je konstruirana reverznim inženjeringom. Konceptualno, boot record se ne razlikuje od onih u FAT sustavima, ali prisutne su određene implementacijske razlike koje osiguravaju da ih operativni sustavi ne pokušaju prepoznati kao klasični FAT. Boot sektor je prvi sektor u VBR-u, a započinje jump naredbom koja pokazuje na nastavak izvršivog boot koda koji se nalazi na 120. bajtu sektora. Taj dio je od posebne zanimljivosti za potencijalne forenzičare pošto se bilo koje izvršive računalne instrukcije mogu nalaziti u tim dijelu sektora, uključujući izmjenjeni boot kod, te će se boot sektor virusi pokušati tamo zapisati. Nakon inicijalne jump naredbe klasično slijedi OEM naziv koji je u svim slučajevima EXFAT. Za identifikaciju datotečnog sustava ne možemo koristiti tip particije pošto je oznaka za tip 0x07, i ona se dijeli sa još nekim datotečnim sustavima kao što su NTFS. Nakon OEM naziva slijedi BIOS blok parametara, ali njemu prethodi 53 bajta na kojima se nalaze isključivo nule. Ovo polje, Must Be Zero, je polje na kojem bi stariji driveri pokušali učitati BIOS parametre klasičnih FAT sustava. Da bi se to spriječilo, polje je ostavljeno prazno, a nakon njega tek kreću pravi BIOS parametri koji se kasnije koriste. Ovdje su definirane veličine i adrese svih podatkovnih cjelina koje sačinjavaju datotečni sustav. Zapisane su i određene varijable u obliku bitovnih zastavica koje govore o trenutnom stanju medija. Nakon BIOS bloka parametara slijedi nastavak izvršnog boot koda koji može imati maksimalno 390 bajtova duljine, a klasično se završava magičnim brojem 0xAA55. Ovaj program se može nastaviti tako da završi sa jump naredbom, i sljedećih 8 sektora (MEBS Main Extended Boot Sector) je određeno u namjenu pisanja nastavka boot koda, te se uvijek mora završiti sa magičnim brojem, čak i kad nije u uporabi. Sljedeća 3 sektora redom sadržavaju OEM parametre, jedan sektor rezerviran za buduću uporabu, te sektor sa sumom za provjeru ispravnosti, odnosno checksum sektor koji smo spomenuli ranije. O prva dva od tri sektora su informacije ograničene zbog patentiranja. Narednih 12 sektora su identična replika primarnog VBR-a te služe za slučaj da se na prvom dogodi greška pri korištenju. Na 23. sektoru završava pomoćna boot regija te od 24. sektora započinje FAT.
4. Podatkovna organizacija Iako se exfat smatra pripadnikom FAT obitelji datotečnih sustava te, kao što smo vidjeli, uistinu koristi FAT-ove, on ih ne koristi na isti način. Kod klasičnih FAT sustava sama tablica ima dvije uloge. Prva je određivanje da li je neki klaster alociran, a druga je pronalazak sljedećeg alociranog klastera koji pripadaju nekoj datoteci ili nizu direktorija. Kod exfat sustava, ove se uloge mijenjaju. U exfat sustavu, FAT se više ne koristi za potrebe određivanja alokacije pojedinog klastera za to se koristi bitmap alokacijska tablica, poput NTFS sustava. Za potrebe pronalaska sljedećeg alociranog klastera neke datoteke, exfat se ponaša identično klasičnim FAT sustavima ukoliko je datoteka fragmentirana i potrebno je saznati na kojem klasteru je sljedeći segment. No ukoliko na medij zapisujemo datoteku bez fragmentiranja, ne moramo ažurirati FAT, pošto nam neće biti potreban za pronalazak fragmenata. Čak i ako postoje određeni podaci u FAT-u koji su zaostali od prethodnog korištenja, nije ih potrebno promijeniti, već se u direktorijskom zapisu preko kojeg pristupamo datoteci nalazi zastavica koja za datoteku definira da li je kontinuirana ili ne, a na temelju nje se operacija čitanja neće zaustavljati na kraju svakog klastera već će se konzultirati sa FAT-om tek kad dođe do fragmentiranja. Ovo su dobre vijesti za performance operacija čitanja i zapisivanja velikih datoteka, no za potrebe forenzike mogu biti problematične. Naime, čak i neoštećen FAT može sadržavati lažne (odnosno zastarjele) podatke. S druge strane, alokacijska bitmapa mora biti ažurna. Kao što je spomenuto, moguće je da postoje dvije FAT tablice, no isto vrijedi i za alokacijske bitmape mogu postojati dvije, te ih ima dvije ukoliko se koristi sustav za sigurnosne transakcije TexFAT, isto kao i FAT tablica. No za razliku od FAT-ova, alokacijske bitmape nemaju predodređeno mjesto na mediju. FAT se uvijek nalazi izvan Cluster Heapa i prethodi mu, odmah nakon VBR-a ima svoju dodijeljenu regiju na mediju. No alokacijska bitmapa se nalazi na Cluster Heapu i to na neodređenom mjestu kojem se pristupa preko pokazivača. Pokazivač na alokacijsku mapu se nalazi u prvom klasteru Root Directoryja (korijenskog direktorija), a pokazivač na njega se nalazi u boot sektoru. Ona se u principu prva izgradi na disku i općenito će se nalaziti u trećem fizičkom klasteru, odnosno prvom klasteru Cluster Heapa, no to je naprosto rezultat okolnosti, a ne pisano pravilo, te se one u teoriji mogu nalaziti bilo gdje u podatkovnoj regiji medija što može predstavljati određene probleme u forenzici. Postavlja se pitanje, u kojim slučajevima možemo vjerovati mehanizmima za upravljanje podataka?
Kao što smo prethodno spomenuli, u direktorijskom zapisu datoteke postoji zastavica koja određuje da li se za pojedinu datoteku treba gledati u FAT podatke ili ih ignorirati. Na slici 2 je prikazan primjer korištenja FAT tablice za pronalazak fragmentirane datoteke na mediju, te ćemo na tom primjeru ilustrirati kako se FAT tablica konzultira kad datoteka nije cjelovita. Slika 2. Uporaba FAT tablice kod exfat sustava Za primjer je uzeta datoteka čiji su dijelovi raspodjeljeni u 4 klastera. Prvo se iz direktorijskog zapisa čita na kojem klasteru datoteka započinje, i utvrđuje se da je to klaster 40, provjerava se i zastavica ispravnosti FAT tablice te se ustanovljava da je datoteka fragmentirana i da će biti potrebno gledati u FAT podatke za dohvaćanje cijele datoteke. Dohvati se pokazivač na adresu sektora u kojem je smještena FAT tablica, zapisanom u MBR-u kao što je opisano u poglavlju 3. Nakon što se obrade podaci na klasteru 40, gleda se u FAT, pod zapisom 40, da se ustanovi koji je sljedeći klaster, u ovom slučaju 41. Nakon toga, proces dohvaća i obrađuje podatke na klasteru 41 i ponovo gleda u FAT zapis pod poljem 41 i vidi da je sljedeći klaster 80, i tako se proces nastavlja dok ne dođe do EOF (End Of File) markera. Kao što vidimo, jednom kad je zastavica koja nalaže slijeđenje FAT lanca podignuta u direktorijskom opisu datoteke, FAT nam daje vjerodostojne informacije o lokaciji fragmentirane datoteke.
5. Zaključak Kao sustav optimiziran za brži rad sa medijima većeg kapaciteta i većim datotekama, u svijetu gdje kapacitet medija i veličina datoteka eksponencijalno rastu, Extended FAT (exfat) ima potencijal da postane novi industrijski standard formatiranja. No pored svega toga, exfat datotečni sustav je za vrijeme svojeg postojanja ostao relativna nepoznanica u odnosu na ostale datotečne sustave u široj uporabi, uglavnom zbog vrlo restriktivnog licenciranja uporabe sustava, njegovog patentiranja, kao i nedostatka službene dokumentacije koja bi bila dostupna široj javnosti. Usprkos tome, neke od osnovnih struktura i mehanizama na kojima počiva rad exfat sustava su obznanjeni zahvaljujući povećanom interesu stručnjaka za njim, te se reverznim inženjeringom uspjelo proniknuti u prirodu exfat sustava. Iako se zasniva na FAT arhitekturi, pojedine razlike u izvedbi i patentiranja tih razlika ga čine nekompatibilnim sa standardnim sustavima i alatima koji rade sa datotečnim sustavima iz FAT obitelji. Prikazali smo specifičnosti exfat sustava, kao i njegove sličnosti sa srodnim ili konceptualno različitim sustavima, te smo ustanovili na koje podatke se možemo osloniti pri forenzici ovog datotečnog sustava i pod kojim uvjetima. Kako sustav bude dobivao na popularnosti, sigurno će se pojaviti i forenzički alati koji će ukloniti potrebu za ručnim radom na ovom sustavu, no do onda će za forenziku biti potrebno opsežno znanje o ovom sustavu, koji za sada još uvijek nije otvorena knjiga.
6. Izvori [1] http://www.ntfs.com/exfat-overview.htm [2] http://www.howtogeek.com/235596/whats-the-difference-between-fat32-exfat-andntfs/ [3] http://arstechnica.com/information-technology/2013/06/review-is-microsofts-new-datasharing-system-a-cross-platform-savior/ [4] http://www.ntfs.com/ntfs_vs_fat.htm [5] https://worldwide.espacenet.com/publicationdetails/biblio?cc=us&nr=2008168029 [6] http://www.ntfs.com/exfat-volume-layout.htm [7] https://web.archive.org/web/20130507183540/http://www.microsoft.com:80/enus/legal/intellectualproperty/iplicensing/programs/exfatfilesystem.aspx [8] https://paradigmsolutions.files.wordpress.com/2009/12/exfat-excerpt-1-4.pdf [9] http://events.linuxfoundation.org/images/stories/pdf/lceu11_munegowda_s.pdf