SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Seminarski rad u okviru predmeta „Računalna forenzika“ 2017/2018 7z format Matej Erceg Zagreb, siječanj 2018.
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
Seminarski rad u okviru predmeta „Računalna forenzika“ 2017/2018
7z format
Matej Erceg
Zagreb, siječanj 2018.
Sadržaj
1. Uvod ................................................................................................................. 1
2. Analiza .............................................................................................................. 2
2.1. 7z format .................................................................................................... 2
2.2. Sadržaj formata ........................................................................................... 4
2.3. Forenzičke zanimljivosti .............................................................................. 8
3. Zaključak ........................................................................................................... 9
4. Literatura ........................................................................................................ 10
1
1. Uvod
Količine podataka kojima računala barataju još su od početaka računarstva u
stalnom porastu. Prateći taj trend, rastu i memorijski zahtjevi sadržaja koje
prosječni korisnici konzumiraju tijekom svakodnevnog korištenja računala. Tako je
danas redovito potrebno pohranjivati slike, audio i video zapise, razne tekstualne
dokumente, sigurnosne kopije važnih datoteka, slike sustava i slično.
Pored toga, glatka i brza razmjena velikih količina podataka (i velikih datoteka)
preko mreže se iz perspektive današnjeg korisnika podrazumijeva kao osnovna i
nužna funkcionalnost računala.
Uz sve ostale tehnologije, veoma važnu ulogu u efikasnoj pohrani i transportu
podataka i datoteka imaju razne metode kompresije, koje mogu iskoristiti
pojedina matematička, statistička ili druga svojstva podataka (npr. redundantnost,
ponavljajuće uzorke) i zapisati te iste podatke, s gubicima ili bez njih, na sažetiji
način. Na taj način moguće je uštediti značajne količine memorije i skratiti vrijeme
potrebno za premještanje podataka.
Iako su algoritmi kompresije kompleksno područje i nije moguće sve metode
primijeniti jednako efikasno na svaki skup podataka, neke od njih su integrirane u
popularne i pristupačne programe za arhiviranje i kompresiju podataka, kao što su
WinZip i WinRar na Windows OS, ili 7-zip.
Svaki od tih programa komprimirane podatke sprema u posebne oblikovane
datoteke koje tipično sadrže dodatna zaglavlja i metapodatke koji su, između
ostaloga, potrebni za naknadni postupak dekompresije. Neki od poznatijih takvih
formata su zip, rar, gz, 7z...
2
2. Analiza
2.1. 7z format
Jedan od najpopularnijih multi-platformskih kompresijskih formata je 7z. Prvotno
ga je razvio ruski freelance programer Igor Pavlov, te objavio zajedno s pripadnim
7-Zip programom za kompresiju i dekompresiju, 2000. godine pod GNU Lesser
General Public licencom.
7z format, kao i većina drugih sličnih formata, zapravo integrira funkcionalnosti
arhiviranja podataka, tj. pakiranja većeg broja datoteka u jedan paket, i
kompresije tih datoteka radi smanjenja njihove veličine. Za razliku od nekih drugih
formata, podržava i među-datotečnu kompresiju (solid compression), tj.
zajedničko sažimanje datoteka sličnog tipa na temelju svojstava koja se ispoljavaju
kao posljedica njihove konkatenacije.
Uz ove, još neke od značajki 7z formata su podrška za višedijelne arhive,
kompresija datoteka reda veličine exbibyte (264 bajtova), te modularni dizajn koji
omogućava ulančavanje proizvoljnog broja kompresijskih, enkripcijskih i
konverzijskih metoda.
Što se tiče kompresijskih metoda, pretpostavljena općenamjenska metoda
korištena u 7z formatu je LZMA, koja nudi visoku brzinu kompresije i dekompresije
uz mali memorijski otisak i visoki omjer kompresije. 7z još integrira i niz
specijaliziranih kompresijskih metoda za pojedine vrste datoteka; trenutno
integrirane metode prikazane su na slici 2.1.
4
2.2. Sadržaj formata
Za analizu sadržaja 7z arhive korištena je aplikacija HxD, koja omogućava pregled
sadržaja datoteka na razini bajtova. Analiza je napravljena na tekstualnim
datotekama radi jednostavnosti iščitavanja zajedničkih karakteristika različitih 7z
arhiva i lakog prepoznavanja originalnog sadržaja.
Svaka 7z datoteka započinje s oznakom 7z i magic number-om koji zajedno čine
prvih šest bajtova: 37 7A BC AF 27 1C. Ovi bajtovi vidljivi su na slici 2.2.
Slika 2.2 Primjer 7z arhive
Sljedeća dva bajta predstavljaju verziju arhive, na način da prvi od njih označava
Major izdanje, a drugi Minor izdanje. Na prethodnoj slici verzija je prema tim
pravilima 0.4.
Naredna četiri bajta predstavljaju CRC (Cyclic Redundancy Check) vrijednost za
početno zaglavlje, koje slijedi odmah nakon CRC-a.
5
Početno zaglavlje sastoji se od 3 dijela: prvi je 8B broj (UINT64) koji predstavlja
pomak do sljedećeg zaglavlja (offset), zatim 8B broj koji predstavlja veličinu
sljedećeg zaglavlja, te konačno 4B CRC vrijednost za sljedeće zaglavlje. Upravo
spomenute 8B vrijednosti su kodirane na specifičan način, tj. ne predstavljaju
uvijek direktan iznos, već se on treba preračunati po određenom pravilu (formula
je dana na slici 2.3). Također, treba napomenuti da 7z koristi little-endian notaciju
za višebajtne zapise.
Slika 2.3 Izračun vrijednosti u zaglavlju
Prethodno spomenuti pomak se primjenjuje od kraja početnog zaglavlja, dakle od
prvog bajta nakon 4B vrijednosti koja predstavlja iznos CRC-a sljedećeg zaglavlja.
Primjenimo li ovo pravilo na primjer sa slike 2.2., očitani pomak u iznosu 0x3F
trebamo primijeniti na poziciji 0x20, što nas dovodi na poziciju 0x5F gdje nalazimo
bajt vrijednosti 0x01. Upravo ova vrijednost je i posebna oznaka za početak
zaglavlja. Također, ako se na toj poziciji primjeni vrijednost iz drugog 8B broja, tj.
0x62, dolazi se do pozicije 0xC1, što je točan kraj datoteke. Dakle, arhiva u ovom
primjeru završava krajem običnog zaglavlja.
Može se primijetiti da vrijednost 0x01 nalazimo i na poziciji 0x20, što je zapravo i
početak prvog običnog zaglavlja. Obzirom da je u ovom primjeru komprimirana
vrlo jednostavna tekstualna datoteka, algoritam je zaključio da primjenom
6
kompresije neće biti ostvarena ušteda prostora, pa to zaglavlje nema nikakvih
dodatnih opisnika (štoviše, dodatni opisnici bi u tom slučaju zauzeli više prostora
nego što bi se dobilo kompresijom). Zato odmah na sljedećoj poziciji, 0x21,
nalazimo bajt 0x00, koji je ujedno i posebna oznaka za kraj svojstva (end property).
Ova oznaka se pojavljuje na krajevima običnih zaglavlja i mnogih drugih struktura
7z formata (može se primijetiti i na poziciji 0x5E, gdje predstavlja kraj
podatkovnog niza, i na samom kraju arhive). Jedini preostali bajt prije
podatkovnog niza je na poziciji 0x22, iznosa 0x3A, koji u ovom slučaju predstavlja
veličinu podatkovnog niza direktno nakon njega.
Daljnja struktura običnih zaglavlja izrazito varira u ovisnosti o komprimiranom
sadržaju i odabranoj metodi kompresije. Primjerice, kod običnog zaglavlja koje
počinje na poziciji 0x5F, na sljedećoj njegovoj poziciji, 0x60, nalazi se bajt 0x04 koji
označava MainStreamInfo strukturu, koja onda opet u svojoj ugniježđenoj
hijerarhiji može imati razne dodatne opisnike. U ovom slučaju, idući opisnik, na
poziciji 0x61, je 0x06 koji označava PackInfo strukturu.
Nakon ove točke, sadržaj 7z arhive se značajno razlikuje u ovisnosti o
komprimiranom sadržaju. Tipično sadrži nizove izmjenjujućih zaglavlja i
komprimiranih podatkovnih nizova. Međutim, i svaka od tih struktura posjeduje
paletu opcionalnih parametara i ugniježđenih hijerarhija, što praćenje golim okom
čini prilično zamršenim. Također, 7z koristi i dodatne strukture kada je potrebno
arhivirati i očuvati hijerarhiju i sadržaj mapa (folders).
Usporedba originalne tekstualne datoteke i struktura dodanih prilikom njenog
omatanja u 7z format može se vidjeti na slici 2.4. Također, u nastavku je priložen i
primjer sadržaja arhive s dvije komprimirane datoteke, gdje se vidi značajna
promjena sadržaja zaglavlja i samih podatkovnih nizova uslijed primjene
kompresijskih metoda (Slika 2.5).
8
2.3. Forenzičke zanimljivosti
Sa gledišta računalne forenzike, za 7z format vrijede zakonitosti koje vrijede i za
ostale kompresijske i arhivske formate. Primjerice, obzirom na mogućnost
omatanja datoteka u više kompresijskih i/ili enkripcijskih slojeva, zlonamjerni
korisnici mogu iskoristiti 7z format za skrivanje malicioznih datoteka. Pokazalo se
da je u takvim slučajevima ponekad moguće „prevariti“ antivirusne i ostale
zaštitne sustave i kriomice dovesti maliciozni kod na ciljano računalo. Ne pomaže
ni činjenica da su formati poput 7z toliko široko rasprostranjeni da mnogi korisnici
zaboravljaju na potencijalne opasnosti i ne barataju takvim datotekama s
dovoljnom razinom opreza.
Slučajevi ubacivanja ransomwarea i ostalih malicioznih sadržaja učestali su i danas,
jedan od uobičajenih primjera napada je slanje automatski generirane email
poruke koja u prilogu sadrži 7z arhivu s malicioznim kodom.
Napredak metoda detekcije i zaštite je reducirao opasnost od nekih oblika napada,
no uvijek ostaje mogućnost otkrivanja i eksploatacije novih sigurnosnih propusta,
pa kompresijski formati i dalje ostaju potencijalni vektori malicioznih napada.
9
3. Zaključak
7z format jedan je od najpopularnijih arhivskih i kompresijskih formata.
Objedinjuje visoke performanse i jednostavnost korištenja s mogućnostima
nadogradnje i ulančavanja više metoda kompresije i enkripcije.
Sadržaj 7z formata je uvelike ovisan o datotekama koje su unutar njega
komprimirane, no neke od prepoznatljivih karakteristika su početnih šest bajtova s
magic number-om, i dodatna zaglavlja za opis komprimiranih podatkovnih nizova.
Kao i ostali kompresijski formati, 7z zbog svoje funkcije omatanja i, posljedično,
prikrivanja originalnih datoteka, može predstavljati potencijalan vektor za
maliciozne napade.
10
4. Literatura
1. 7zip home (Siječanj 2018):
http://www.7-zip.org/7z.html
2. Beware of 7-zip Archive (.7z) Malicious Email Attachments (Siječanj 2018.):
https://www.onlinethreatalerts.com/article/2017/8/30/beware-of-7-zip-archive-7
z-malicious-email-attachments/
3. 7z format description (Siječanj 2018.):
http://cpansearch.perl.org/src/BJOERN/Compress-Deflate7-1.0/7zip/DOC/7zForm
at.txt
4. 7z wikipedia (Siječanj 2018.):
https://en.wikipedia.org/wiki/7z
5. GNU LGPL (Siječanj 2018.):
https://www.gnu.org/licenses/lgpl-3.0.en.html
6. Ongoing email campaign spreading GlobeImposter Ransomware (Siječanj
2018.):
https://www.netskope.com/blog/ongoing-email-campaign-spreading-globeimpost
er-ransomware/