Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.

Razlike

Slijede razlike između dviju inačica stranice.

Poveznica na ovu usporedbu

Starije izmjene na obje strane Starija izmjena
Novija izmjena
Starija izmjena
racfor_wiki:seminari:sigurnosna_analiza_pdf_formata [2023/01/06 23:30]
ip51131
racfor_wiki:seminari:sigurnosna_analiza_pdf_formata [2024/12/05 12:24] (trenutno)
Redak 1: Redak 1:
 ===== Sigurnosna analiza PDF formata ===== ===== Sigurnosna analiza PDF formata =====
 +==== Sažetak ====
 +U ovom radu predstavljena je sigurnosna analiza PDF formata. Opisan je PDF format te objašnjeni osnovni dijelovi njegove dokumentacije. Objašnjena je struktura PDF dokumenta i vrste podataka koje se mogu koristiti. Na kraju, predstavljen je eksperiment koji opisuje alate za sigurnu analizu PDF dokumenta u svrhu pronalaženja malicioznog koda.
 ==== Uvod ==== ==== Uvod ====
-Trenutno je prisutan velik broj kibernetičkih prijetnji, a većina njih temelji se na malicioznom kodu. Maliciozni kod, ili //malware//, sav je kod koji je napravljen s namjerom da bi oštetio korisnikovo računalo. Jedan od vrlo čestih načina za prijenos malicioznog koda je korištenje PDF dokumenta, koji zbog svojih specifičnosti predstavlja izrazito efikasan i neočekivan //vektor zaraze//. U ovom radu predstavit će se osnovna specifikacija PDF formata, trikovi koji se koriste u svrhu oštećenja i prikazati eksperiment sigurnog pretraživanja PDF dokumenta u svrhu pronalaska malicioznog koda. +Trenutno je prisutan velik broj kibernetičkih prijetnji, a većina njih temelji se na malicioznom kodu. Maliciozni kod, ili //malware//, sav je kod koji je napravljen s namjerom da bi oštetio korisnikovo računalo. Jedan od vrlo čestih načina za prijenos malicioznog koda je korištenje PDF dokumenta, koji zbog svojih specifičnosti predstavlja izrazito efikasan i neočekivan //vektor zaraze//. U ovom radu predstavit će se osnovna specifikacija PDF formata i prikazati eksperiment sigurne analize PDF dokumenta u svrhu pronalaska malicioznog koda. 
  
 ==== Opis i dokumentacija PDF formata ==== ==== Opis i dokumentacija PDF formata ====
Redak 20: Redak 22:
 U tijelu PDF dokumenta nalaze se tekstualni i multimedijski objekti - točnije - objekti prikazani korisniku. U tijelu PDF dokumenta nalaze se tekstualni i multimedijski objekti - točnije - objekti prikazani korisniku.
 === xref tablica kružnih referenci === === xref tablica kružnih referenci ===
-Kako pristupiti elementima PDF dokumenta? Odgovor na to može se naći u tablici kružnih referenci koja sadrži reference na sve objekte u dokumentu. Tablica kružnih sastoji se od zapisa veličine 20 okteta koji predstavljaju svaki objekt u dokumentu, što omogućuje nasumični pristup željenom objektu bez slijednog pretraživanja cijelog PDF dokumenta. Ova tablica nalazi se iza tijela dokumenta i njen se početak može prepoznati po ključnoj riječi "xref"{{ :racfor_wiki:seminari:xref_0036511318.png?600 |}} Na prikazanoj slici možemo vidjeti sadržaj tablice križnih referenci. +Kako pristupiti elementima PDF dokumenta? Odgovor na to može se naći u tablici kružnih referenci koja sadrži reference na sve objekte u dokumentu. Tablica kružnih sastoji se od zapisa veličine 20 okteta koji predstavljaju svaki objekt u dokumentu, što omogućuje nasumični pristup željenom objektu bez slijednog pretraživanja cijelog PDF dokumenta. Ova tablica nalazi se iza tijela dokumenta i njen se početak može prepoznati po ključnoj riječi "xref". Na prikazanoj slici možemo vidjeti sadržaj tablice križnih referenci. {{ :racfor_wiki:seminari:xref_0036511318.png?600 |}} 
 Kako bismo ju demistificirali, potrebno je razjasniti njene dijelove - ID objekta, broj elemenata u objektu, odmak elementa i //broj generacije// elementa koji služi kao oznaka revizije unutar dokumenta, što je posebnost PDF formata, umjesto izvan dokumenta. Na primjer, ako je dokument tek izrađen, element će biti //generacije 0//. Zadnji znak u zapisu određuje je li element oslobođen ("f") ili se koristi ("n"). Ako je element oslobođen, nije prikazan i ne koristi se u dokumentu, ali bi i dalje mogao biti prisutan, za razliku od korištenog elementa koji je prikazan u dokumentu. U slučaju prikazanom na slici, ID objekta je 0 i sadrži 11 elemenata. Sljedećih 10 bajtova predstavlja odmak - 0 - i njegov generacijski broj je 65535 (maksimalni). Generacijski broj elementa inkrementira se svaki put kad je element oslobođen, a u slučaju da se element ponovno koristi, tada se postojeći generacijski broj ne mijenja. Na kraju zapisa nalazi se zastavica f, što znači da je ovaj objekt oslobođen. Svaki oslobođeni element kao odmak ima referencu na sljedeći slobodni element, dok korišteni element na tom mjestu ima zapisan odmak od početka dokumenta do početka elementa.  Kako bismo ju demistificirali, potrebno je razjasniti njene dijelove - ID objekta, broj elemenata u objektu, odmak elementa i //broj generacije// elementa koji služi kao oznaka revizije unutar dokumenta, što je posebnost PDF formata, umjesto izvan dokumenta. Na primjer, ako je dokument tek izrađen, element će biti //generacije 0//. Zadnji znak u zapisu određuje je li element oslobođen ("f") ili se koristi ("n"). Ako je element oslobođen, nije prikazan i ne koristi se u dokumentu, ali bi i dalje mogao biti prisutan, za razliku od korištenog elementa koji je prikazan u dokumentu. U slučaju prikazanom na slici, ID objekta je 0 i sadrži 11 elemenata. Sljedećih 10 bajtova predstavlja odmak - 0 - i njegov generacijski broj je 65535 (maksimalni). Generacijski broj elementa inkrementira se svaki put kad je element oslobođen, a u slučaju da se element ponovno koristi, tada se postojeći generacijski broj ne mijenja. Na kraju zapisa nalazi se zastavica f, što znači da je ovaj objekt oslobođen. Svaki oslobođeni element kao odmak ima referencu na sljedeći slobodni element, dok korišteni element na tom mjestu ima zapisan odmak od početka dokumenta do početka elementa. 
 === Trailer === === Trailer ===
Redak 32: Redak 34:
  
 ==== Struktura dokumenta ==== ==== Struktura dokumenta ====
-Svaka stranica PDF dokumenta predstavljena je //straničnim objektom// - rječnikom koji sadrži reference na sadržaj stranice. Svi stranični objekti zajedno formiraju //drvo stranica//, koje je deklarirano indirektnom referencom u //katalogu dokumenta//.+Svaka stranica PDF dokumenta predstavljena je //straničnim objektom// - rječnikom koji sadrži reference na sadržaj stranice. Svi stranični objekti zajedno formiraju //stablo stranica//, koje je deklarirano indirektnom referencom u //katalogu dokumenta//.
 === Katalog dokumenta === === Katalog dokumenta ===
 Katalog dokumenta je korijen svih objekata u PDF dokumentu - sadrži reference na druge objekte koji definiraju sadržaj dokumenta. Referenca na katalog nalazi se u /Root elementu trailera. Zapisi sadržani u katalogu su sljedeći: Katalog dokumenta je korijen svih objekata u PDF dokumentu - sadrži reference na druge objekte koji definiraju sadržaj dokumenta. Referenca na katalog nalazi se u /Root elementu trailera. Zapisi sadržani u katalogu su sljedeći:
Redak 38: Redak 40:
   * verzija (/Version) - verzija PDF specifikacije   * verzija (/Version) - verzija PDF specifikacije
   * proširenja (/Extensions) - informacije o razvojnim proširenjima   * proširenja (/Extensions) - informacije o razvojnim proširenjima
-  * stranice (/Pages) - indirektna referenca na korijen drveta stranica+  * stranice (/Pages) - indirektna referenca na korijen stabla stranica
   * odredišta (/Dests) - indirektna referenca na korijen imenovanih odredišta   * odredišta (/Dests) - indirektna referenca na korijen imenovanih odredišta
   * obrisi (/Outlines) - indirektna referenca na korijen hijerarhije obrisa   * obrisi (/Outlines) - indirektna referenca na korijen hijerarhije obrisa
Redak 45: Redak 47:
 i ostali. i ostali.
  
-=== Drvo stranica === +=== Stablo stranica === 
-Drvo stranica definira sve stranice PDF dokumenta i sadrži čvorove koji ih predstavljaju. Postoje dva tipa čvorova: **središnji** - čvorovi drva stranica - i **listovi** - objekti stranica. +Stablo stranica definira sve stranice PDF dokumenta i sadrži čvorove koji ih predstavljaju. Postoje dva tipa čvorova: **središnji** - čvorovi stabla stranica - i **listovi** - objekti stranica. 
-Svaki čvor u drvetu se obavezno sastoji od sljedeća tri zapisa: tip (/Type), količina (/Count), roditelj (/Parent) i djeca (/Kids). Drvo stranica nije povezano ni s jednim elementom u PDF dokumentu. +Svaki čvor u stablu se obavezno sastoji od sljedeća tri zapisa: tip (/Type), količina (/Count), roditelj (/Parent) i djeca (/Kids). Stablo stranica nije povezano ni s jednim elementom u PDF dokumentu. 
-====  PDF "trikovi"==== +====Analiza==== 
-Za čitanje PDF datoteke, potrebno je instalirati neki od PDF čitača, poput Adobe Acrobat, no neke specifične informacije o PDF dokumentu mogu se //izvući// i bez pokretanja čitačem, pomoću alata **PDFiD** koji je korišten u primjerima ovog poglavlja. PDFiD skenira PDF datoteku u svrhu pronalaska zadanih nizova znakova te broji njihove pojave, što je korisno kod identifikacije JavaScript programa ili naredbi za izvršavanje akcija. Ovo se može identificirati pretragom za nizove znakova "/JS", "/JavaScript", "/AA" i "/OpenAction". Pokazalo se da velika količina malicioznih PDF datoteka sadrži JavaScript programe koji se automatski pokreću naredbama za izvršavanje akcija bez potrebe za interakcijom korisnika. Naravno, nije svaki PDF dokument koji ih sadrži maliciozan, no prisutnost JavaScript programa i automatizirane akcije čini dokument, u najmanju ruku, sumnjvim. Ostale stvari na koje treba obratiti pozornost je prisutnost JBIG2 kompresije, ugrađeni Flash, bilo kakve akcije pokretanja i XML. Naravno, njihova prisutnost sama po sebi ne čini PDF dokument malicioznim, ali zahtijeva daljnju istragu.  +Za čitanje PDF datoteke, potrebno je instalirati neki od PDF čitača, poput Adobe Acrobat, no neke specifične informacije o PDF dokumentu mogu se //izvući// i bez pokretanja čitačem, pomoću alata **PDFiD** koji je korišten u primjerima ovog poglavlja. PDFiD skenira PDF datoteku u svrhu pronalaska zadanih nizova znakova te broji njihove pojave, što je korisno kod identifikacije JavaScript programa ili naredbi za izvršavanje akcija. Ovo se može identificirati pretragom za nizove znakova "/JS", "/JavaScript", "/AA" i "/OpenAction". Pokazalo se da velika količina malicioznih PDF datoteka sadrži JavaScript programe koji se automatski pokreću naredbama za izvršavanje akcija bez potrebe za interakcijom korisnika. Naravno, nije svaki PDF dokument koji ih sadrži maliciozan, no prisutnost JavaScript programa i automatizirane akcije čini dokument, u najmanju ruku, sumnjvim. Ostale stvari na koje treba obratiti pozornost je prisutnost JBIG2 kompresije, ugrađeni Flash, bilo kakve akcije pokretanja i XML. Naravno, njihova prisutnost sama po sebi ne čini PDF dokument malicioznim, ali zahtijeva daljnju istragu.   Na prikazanoj slici možemo vidjeti primjer korištenja alata PDFiD.
 {{ :racfor_wiki:seminari:js_0036511318.png?600 |}} {{ :racfor_wiki:seminari:js_0036511318.png?600 |}}
 Slika je preuzeta iz [4]. Slika je preuzeta iz [4].
  
-U tijelo PDF dokumenta korisnik može dodati sigurnosne značajke, nevidljive objekte, promijeniti logičku strukturu dokumenta ili zaštititi dokument od nedopuštenog pristupa i uređivanja. Kako bi se identificirali objekti u PDF dokumentu, koristi se alat **PDF-PARSER** koji ne prikazuje, već parsira elemente. +U tijelo PDF dokumenta korisnik može dodati sigurnosne značajke, nevidljive objekte, promijeniti logičku strukturu dokumenta ili zaštititi dokument od nedopuštenog pristupa i uređivanja. Kako bi se identificirali objekti u PDF dokumentu, koristi se alat **PDF-PARSER** koji ne prikazuje, već parsira elemente. Na slici je prikazan izlaz alata PDF-PARSER za naš dokument.
 {{ :racfor_wiki:seminari:image_2023-01-07_000053565.png?600 |}} {{ :racfor_wiki:seminari:image_2023-01-07_000053565.png?600 |}}
 Slika je preuzeta iz [4]. Slika je preuzeta iz [4].
  
-Na prethodnoj slici vidimo da objekt "Obj 12" sadrži referencu na objekt "Obj 13" s JavaScriptom i tokom. Kada se naredbom //pdftk// provjeri sadržaj toka, može se vidjeti kod skriven u JavaScriptu, koji, kada se prepiše u HTML, jasno prikazuje skriveni //payload// koji bi bio preuzet na računalo.+Na prethodnoj slici vidimo da objekt "Obj 12" sadrži referencu na objekt "Obj 13" s JavaScriptom i tokom. Kada se naredbom //pdftk// provjeri sadržaj toka, može se vidjeti kod skriven u JavaScriptu, koji, kada se prepiše u HTML, jasno prikazuje skriveni //payload// koji bi bio preuzet na računalo, što je prikazano na slici ispod.
 {{ :racfor_wiki:seminari:image_2023-01-07_000703768.png?600 |}} {{ :racfor_wiki:seminari:image_2023-01-07_000703768.png?600 |}}
 Slika je preuzeta iz [4]. Slika je preuzeta iz [4].
Redak 63: Redak 65:
 ==== Zaključak ==== ==== Zaključak ====
 Maliciozne PDF datoteke smatraju se jednom od najvećih prijetnji sigurnosti računalnih sustava. Zbog svoje fleksibilne strukture, vrlo je lako generirati netočne i maliciozne PDF datoteke. Takve datoteke mogu zaraziti cijelo računalo malicioznim kodom ako ih otvorimo čitačem ili drugom aplikacijom koja izvršava kod u PDF datoteci.  Maliciozne PDF datoteke smatraju se jednom od najvećih prijetnji sigurnosti računalnih sustava. Zbog svoje fleksibilne strukture, vrlo je lako generirati netočne i maliciozne PDF datoteke. Takve datoteke mogu zaraziti cijelo računalo malicioznim kodom ako ih otvorimo čitačem ili drugom aplikacijom koja izvršava kod u PDF datoteci. 
-==== Sažetak ==== 
-U ovom radu predstavljena je sigurnosna analiza PDF formata. Opisan je PDF format te objašnjeni osnovni dijelovi njegove dokumentacije. Objašnjena je struktura PDF dokumenta i vrste podataka koje se mogu koristiti. Predstavljeni su načini za generiranje netočnog PDF dokumenta. Na kraju, predstavljen je eksperiment koji opisuje alate za sigurno pretraživanje PDF dokumenta u svrhu pronalaženja malicioznog koda. 
 ==== Literatura ==== ==== Literatura ====
  
-[1] [https://github.com/corkami/docs/blob/master/PDF/PDF.md] +[1] https://github.com/corkami/docs/blob/master/PDF/PDF.md 
-[2] [https://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art019] + 
-[3] [https://resources.infosecinstitute.com/topic/pdf-file-format-basic-structure/] +[2] https://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art019 
-[4] [[https://github.com/filipi86/MalwareAnalysis-in-PDF | Filipi Pires: Malware Analysis – Dissecting PDF file]] + 
-[5] [https://opensource.adobe.com/dc-acrobat-sdk-docs/standards/pdfstandards/pdf/PDF32000_2008.pdf]+[3] https://resources.infosecinstitute.com/topic/pdf-file-format-basic-structure/ 
 + 
 +[4] https://github.com/filipi86/MalwareAnalysis-in-PDF | Filipi Pires: Malware Analysis – Dissecting PDF file 
 + 
 +[5] https://opensource.adobe.com/dc-acrobat-sdk-docs/standards/pdfstandards/pdf/PDF32000_2008.pdf
  
racfor_wiki/seminari/sigurnosna_analiza_pdf_formata.1673047838.txt.gz · Zadnja izmjena: 2024/12/05 12:23 (vanjsko uređivanje)
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0