Kada PDF postane maliciozan

Kada PDF postane maliciozan

Portable Document Format

PDF je standardni, multiplatformski format zapisa. Tijekom svog postojanja doživio je više promjena, a trenutna najnovija inačica je 2.0. Upravo njegova široka rasprostranjenost, opća prihvaćenost te neovisnost o platformi za napadače čine  zanimljiv odabir u distribuciji malicioznog tereta raznim phishing metodama, odnosno može poslužiti kao ulazna točka za instalaciju zlonamjernog softvera.

PDF datoteka je složenija nego što neki korisnici zamišljaju. Nije to samo ekstenzija i lijepo formatiran tekst, slike i dr. PDF je u osnovi format zapisa koji se koristi za prikaz dokumenata, a može uključivati i razne druge elemente (sliku, tekst, URL-ove, izvršavanje JavaScript…)

Iako će dio čitatelja možda reći „Što će meni pojašnjenje PDF-a, pa ja to znam…” ili “Koristim 100 godina…znam što je to“, ipak postoje detalji koji će prosječnom korisniku dati jasniju sliku o tome što je PDF. Stvoren davne 1993. od strane Adobe-a primarno se koristi za razmjenu dokumenata neovisno o bilo kojem OS-u. Dakle, imali Windows, MacOS, Linux, Android i sl. PDF je uvijek tu. Godine 1998. postao je otvoreni standard prema ISO (ISO/IEC 32000-1:2008), dok je njegova posljednja verzija 2.0 prema ISO standardu ISO 32000-2:2020 objavljena 2017. godine.

Svaka PDF datoteka sastoji se od specifične strukture (o tome ćemo malo kasnije) koja uključuje slike, tekst, grafiku (raster i vektorski prikaz), dok je za prikaz dokumenata potrebno imati odgovarajući preglednik.

Poveznica između malwarea i PDF-a leži u činjenici da PDF kao format zapisa također može biti okidač u pozivanju malwarea ili se pak maliciozni teret može „skrivati“ unutar sadržajne strukture PDF-a. Vjerujemo da veliki dio čitatelja zna za ovu činjenicu, a oni drugi iskoristit će ovu informaciju kako bi dodatno obratili pažnju i time bili oprezniji. Kako je PDF format zapisa postao vrlo raširen i de facto nešto što uzimamo zdravo za gotovo, ponekad nismo ni svjesni da samo otvaranje jednog naizgled sasvim običnog dokumenta može imati štetne posljedice po naš računalni sustav. Obično korisnici kažu: „Ma to ti je običan PDF“ ili „Ma nije virus, PDF je, daj otvori…vidiš da nešto piše…Igor mi šalje dokument“ ili „Ma poslao mi je u PDF-u…sad ću ja pogledati“.

 

Slika_2_1.jpg

Kako se izgled PDF ikone mijenjao kroz povijest. Izvor: 1000logos.net

 

Iako danas postoje brojni sustavi koji će nam pomoći u detekciji nečeg sumnjivog, najbolja prevencija je da ne otvaramo ako nismo posve sigurni ili ako je isti dokument pristigao od strane nepoznatog pošiljatelja. Vrlo je važno koristiti pomoćne alate koji će vam otkriti više o samom dokumentu. Također, ozbiljna preporuka je koristiti izoliranu virtualizacijsku okolinu (Sandbox) kako biste mogli bezbrižnije analizirati ponašanje dokumenta kojeg želite otvoriti. Primjerice, Windows 10/11 imaju zgodnu funkcionalnost koju možete aktivirati na Start → Turn Windows features on/off → Sandbox

Struktura PDF-a

PDF podatkovna datoteka sastavljena je od objekata međusobno povezanih Xref tablicom. Ako dodajemo novi sadržaj postojećem dokumentu automatski se dodaju novi objekti pri čemu se Xref tablica ažurira. Isto tako, kada brišemo sadržaj, odabrani objekti se brišu iz Xref tablice. Važno je napomenuti da se kod operacije izmjene/ažuriranja objekti ne uklanjaju u potpunosti iz dokumenta, već se isti zapisuju na kraju dokumenta kod oznake %%EOF (End Of File) dok originalna verzija pri tome ostaje sačuvana.

Svaki PDF dokument ima jedinstvenu osnovnu strukturu:
zaglavlje dokumenta → Header;
tijelo dokumenta → Body;
tablica unakrsnih referenci → Xref table;
kraj dokumenta → Trailer.

 

Slika_3_1.jpg

Osnovna struktura PDF dokumenta

 

Header je obično prvi redak PDF dokumenta, a sadrži oznaku verzije u obliku “%PDF-<oznaka_verzije>%” te neke druge specifikacije.

Body je ono što korisnik vidi u dokumentu. Dakle, Body sadrži informacije o objektima (tekst, font, slike, URL-ove..) te drugim multimedijskim elementima koji se prikazuju korisniku.

Objekti imaju posebnu sintaksu koja izgleda otprilike ovako:
objNbr verNbr obj << (object contents) >> endobj gdje je [objNbr] – redni broj objekta, verNbr identifikator verzije objekta koji sa objnum čini jedinstvenu oznaku objekta kojim se može referencirati.

Nadalje, obj, endobj su ključne riječi, a u objekt se mogu stavljati vrijednosti poput vrste fonta, akcije itd. Objekti su u hijerarhijskom odnosu roditelj-djeca.
Xref tablica referencira se na sve objekte koji se nalaze u PDF dokumentu. Xref tablica „pokazuje“ na lokaciju objekta unutar PDF datoteke, ali bez potrebe za čitanjem cijelog dokumenta.

Dakle, na jednom mjestu imate pokazivač na lokaciju nekog objekta, npr. slike, bez da tražite kroz cijeli dokument.

Svaka linija unutar Xref tablice odgovara pojedinom objektu i označava pomak u bajtovima. Taj „pomak“ odnosi se na početak datoteke pa sve do mjesta gdje se određeni objekt nalazi.
Trailer predstavlja završni dio PDF datoteke te sadrži oznaku %% EOF (End Of File) koja ukazuje na unakrsnu referencu i na objekt korijena (Root). Upravo taj trailer omogućava vidljivost podataka PDF-a. Svi PDF preglednici čitaju PDF datoteke od kraja prema početku.

 

Slika_1_1.jpg

Windows 10/11 imaju integriran Sandbox koji možete uključiti na Start - Turn Windows features on/off - Sandbox. Štovatelji komandnog prompta to mogu učiniti putem Deployment Image Servicing and Management (DISM) upisom naredbe u cmd: dism /online /Enable-Feature /FeatureName: “Containers-DisposableClientVM” -All

 

Kada PDF krene u akciju

Svakom novom verzijom PDF-a Adobe je dodavao nove mogućnosti. Posljednja inačica PDF-a je 2.0, a izašla je 2017. godine (standard ISO 32000-2:2020). Neke od novina prema tvrdnjama Adobe-a jesu nadogradnje oko ispisa i renderiranja, podrška za 3D, geoprostorne značajke i dr. Od verzije 1.3 uvedena je mogućnost dodavanja JavaScript koda kojim se može utjecati na izgled stranica, podatke u poljima, forme te na akcije korisnika, poput otvaranja dokumenta i dr.

Neki od objekata strukture PDF-a koji mogu imati i izvodi razne akcije:
/Goto or /GotoR - idi na definiranu stranicu u dokumentu
/Launch - izvrši komandnu liniju, ukinuto od verzije 9.3.3. kako bi se spriječilo otvaranje /Launch cmd.exe
/J-avaScript - izvrši javascript kod
/EmbeddedFile - prikazuje druge datoteke ugrađene u samu PDF datoteku, npr. skripte
/Hide - skrivanje/otkrivanje poruka
/URI - spoji se na dani URI

U suštini, često se koriste akcije /Launch i /J-avaScript za izvršavanje napada. Isto tako, PDF-ovi mogu sadržavati i binarni sadržaj koji se može iskoristiti za skrivanje payloada (korisnog tereta) koristeći se nekim od filtara: ASCIIHexDecode, ASCII85Decode, LZWDecode, FlateDecode, CCTTFaxDecode, JBIG2Decode, DCTDecode, JPXDecode.

Svaki znak može se napisati heksadecimalnim ASCII kodom tako da npr. /#80ython je isto što i /Python. Sama mogućnost zamjene znaka ASCII kodom daje mogućnost prikrivanja malicioznog koda te izbjegavanje detekcije antivirusnim programima ili sustavima za detekciju upada.

 

Untitled-1_1.jpg

Oznaka %%EOF (End Of File) u strukturi PDF-a. Svi PDF preglednici čitaju PDF datoteke od kraja prema početku.

 

Parsiranje PeePDF alatom

Kako smo prethodno mogli vidjeti da PDF datoteke u strukturi mogu koristiti akcije /Launch i /J-avaScript za izvršavanje određenih akcija, postavlja se pitanje kako iste možemo prepoznati? Prvi i osnovni korak je da otvaranje sumnjivog PDF-a radimo isključivo u izoliranoj okolini (vidi dio o sandboxu). Analizu strukture sumnjivog PDF-a možemo odraditi nekim od PDF parsera, a za ovu demonstraciju koristili smo poznati takav alat PeePDF (https://pypi.org/project/peepdf). PeePDF je alat otvorenog koda razvijen u Python programskom jeziku, a može se koristiti za utvrđivanje sadrži li pdf datoteka maliciozne komponente. Alat je sastavni dio REMnux Linuxa, a može se instalirati i na druge linux distribucije.

PeePDF-om moguće je vidjeti sve objekte u strukturi dokumenta, podržani su i filteri kodiranja, a može analizirati i različite verzije datoteke, tokove objekata (streams) te šifrirane datoteke.

U danim primjerima prikazana je analiza ugniježđenog JavaScript kôda u testnom dokumentu i to kao dio funkcionalnosti i mogućnosti PeePDF alata.

Također, druga važna funkcionalnost u parsiranju PeePDF-om je uporaba XOR naredbe u potrazi za shellcode-om. Shellcode predstavlja dio programskog koda koji se može klasificirati kao koristan teret (Payload), a koji je namijenjen iskorištavanju ranjivosti softvera. Naziv „Shellcode“ dobio je iz razloga što obično pokreće naredbenu ljusku (shell) iz koje napadač može kontrolirati kompromitirano računalo. To se isto odnosi i na bilo koji dio kôda koji obavlja sličan zadatak.

 

PeePdf_pokretanje.jpg

Pokretanje PeePDF alata u interaktivnom načinu rada naredbom peepdf –i. Interaktivni način rada omogućava korištenje drugih alata unutar PeePDF-a koji se koriste za parsiranje dokumenta (encode, decode, encrypt, js_analyse, xor itd.)

 

Za sve okuse i ukuse

Iako PeePDF ima i više nego dovoljno mogućnosti, postoje i neke alternative:

1. pdfstreamdumper – Alternativan istraživački alat za analizu zlonamjernih pdf dokumenata.
2. mpeepdf – Modificirana verzija PeePDF alata
3.pdfparser – Još jedan „klasičar“. Sastavni dio REMnux Linux-a.
4. pdfalyzer – Zanimljiv alat s GUI-em (Windows) za analizu PDF-a s naglaskom na vizualizaciju unutarnje strukture stabla PDF-a te skeniranje njegove unutrašnjosti u potrazi za sumnjivim sadržajem.

 

PeePdf_otvaranje_filea.jpg

U interaktivnom načinu rada naredbom Open <ime_datoteke> otvaramo željeni dokument. Primjerice, PPDF>open form.pdf. Otvaranjem dokumenta dobivamo uvid u strukturu PDF dokumenta i to verziju PDF-a, broj objekata, broj streamova, JS objekata i dr. Za primijetiti je da PeePDF ističe JavaScript objekte kao sumnjive (Suspicious elements). Informacije o otvorenom PDF file-u možemo dobiti i naredbom PPDF> info

 

Kome je ovo namijenjeno?

Nakon nekoliko redaka ovog teksta jasno je da PDF dokumenti mogu kriti potencijalno maliciozne sadržaje koji za cilj imaju kompromitirati vaš sustav. PeePDF ili slični alati mogu vam pomoći u razotkrivanju tih „skrivenih namjera“ PDF dokumenata. Iako u današnjem mrežnom okruženju moderni IDS / IPS enterprise sustavi mogu biti dobro podešeni u otkrivanju/blokiranju potencijalno malicioznog sadržaja u datotečnim privicima, pa i PDF-ovima, parsiranje alatima poput PeePDF-a nezamjenjivo je u forenzičkim analizama i reverzibilnom inženjeringu. Ovdje smo razradili samo dio mogućnosti PeePDF alata koji se koristi kao parser PDF datoteka u otkrivanju malicioznih komponenti. Kako korisnici (ponajprije u enterprise sustavima) svakodnevno zaprimaju stotine PDF-ova, zasigurno ovo „ručno“ parsiranje PeePDF-om nije namijenjeno takvim okruženjima. Za takve potrebe koristit će se neka drugačija enterprise rješenja. Međutim PeePDF, bez obzira na ograničenja, može biti koristan alat u analizi sumnjivih PDF-ova kada se traži dubinska, forenzička analiza specifičnog slučaja, ali i kao pomoć za bolje razumijevanje strukture PDF-a.

 

PeePdf_objekt_11.jpg

Kako je svaki objekt u strukturi PDF-a numeriran, za primjer ćemo odabrati object 11 iza kojeg nam jasno stoji da se radi o JavaScript kôdu. Naredbom PPDF > object 11 prikazat će se sadržaj objekta. I tako zasebno za svaki objekt.

 

PeePdf_opcije.jpg

PeePDF nudi brojne opcije koje se koriste kod parsiranja dokumenta. Primjerice, js_beautify naredba „uljepšava“ JavaScript kôd pohranjen u varijabli.

 

PeePdf_js_beautify.jpg

 

PeePdf_js_beautify_2.jpg

„Uljepšan“ JavaScript kôd. Za primijetiti je dio kôda koji se odnosi na cURL (catch URL) funkciju i slanje podataka putem Submit Form na URL www.gnostice.com/newsletters/demos/200804/forms_test.asp. Ovo nam je dokaz da PDF šalje podatke URL-om i to putem .asp obrasca (forme). Sasvim dovoljno za posumnjati u maliciozne namjere autora ovog dokumenta.

 

PeePdf_offsets.jpg

Prikazuje fizičku mapu datoteke, odnosno verzije dokumenta. Naredba offset vizualno prikazuje fizičku strukturu dokumenta. Možemo vidjeti početni i krajnji pomak i veličinu elemenata (u zagradama). Pojednostavljeno, offset pokazuje fizičku lokaciju objekta unutar strukture dokumenta.

 

PeePDF_unobfuscated.jpg

U potrazi za shellcode-om. XOR naredba omogućava operacije nad streamovima unutar PDF datoteke u potrazi za shellcode-om, potencijalno malicioznim payload-om. Ako je poznat, XOR operacija može se izvesti pomoću dekripcijskog ključa kako bi se dekriptirao payload.

 

PeePdf_RAW.jpg

Naredba rawobject ponaša se isto kao i naredba object samo što rawobject prikazuje i u „sirovom“ RAW formatu.

 

Vremeplov

1988.

Danas kada se priča o raznovrsnom malwareu, virusima i drugom malicioznim sadržaju, autora ovog teksta obično podsjeti na 80-e godine 20. stoljeća. Kako i sam pripada generaciji 80-ih, vratit ćemo se kratko u 1988. godinu. U IT industriji 1988. godina ostat će zapamćena i po prvoj Creative Labs Sound Blaster kartici (predmet želja gamera s početka 90-ih), najavi prvog MS Office-a na COMDEX sajmu u SAD-u, MS-DOS je nastupio s verzijom 4.0, a Steve Jobs otkrio je novi NEXT PC.

Međutim 1988. godinu obilježit će i Robert Tappan Morris, tadašnji student na Sveučilištu Cornell, koji je zbog puste znatiželje htio saznati veličinu tadašnjeg interneta. Pri tome je napisao program koji je „prebrojavao“ spojena računala na internetu, a koji se proširio vrlo brzo i tako „zagušio“ dijelove internetske mreže. Ideja programa je da se kopira na korisnikovo računalo na internetu i pri tome pošalje signal natrag na Morrisovo računalo. Kada je shvatio što se dogodilo, već je bilo kasno. Ono što je Morris kreirao je tehnika koju će koristiti računalni crvi za širenje mrežom (internetom). Ta tehnika evoluirala je tijekom godina te se masovno koristi u širenju malicioznog sadržaja.

1993.

Druga važna godina za naslov ovog teksta je 1993. Tvrtka Adobe Systems kreirala je tada novi format zapisa Portable Document Format (PDF) baziran na jeziku PostScript, a koji se prvenstveno koristio za čuvanje dvodimenzionalnih dokumenata kako njihov prikaz ne bi ovisio o uređaju, odnosno rezoluciji ispisa. Eto, prošlo je više od 30 godina od tog vremena, a tehnologije još žive.

 

PeePdf_js_eval.jpg

Izvršava Javascript kôd pohranjen u varijabli, datoteci ili objektu.

 

 

Ocijeni sadržaj
(0 glasova)

// možda će vas zanimati

Newsletter prijava


Kako izgleda naš posljednji newsletter pogledajte na ovom linku.

Copyright © by: VIDI-TO d.o.o. Sva prava pridržana.