Slijede razlike između dviju inačica stranice.
Novija izmjena | Starija izmjena | ||
racfor_wiki:seminari:sigurnosna_analiza_pdf_formata [2023/01/05 20:47] ip51131 stvoreno |
racfor_wiki:seminari:sigurnosna_analiza_pdf_formata [2024/12/05 12:24] (trenutno) |
||
---|---|---|---|
Redak 1: | Redak 1: | ||
- | ===== Sažetak ===== | + | ===== 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 ==== | ||
+ | Trenutno je prisutan velik broj kibernetičkih prijetnji, a većina njih temelji se na malicioznom kodu. Maliciozni kod, ili // | ||
- | ===== Poglavlje 1 ===== | + | ==== Opis i dokumentacija PDF formata |
- | ===== Poglavlje 2 ===== | + | PDF (//Portable Document Format//) datotečni je format koji se koristi za prikaz dokumenata koji sadrže tekstualne, multimedijske i razne druge elemente. Najčešća je funkcija PDF formata prikaz teksta, ali njegova uporaba toliko je raznovrsna da može odrađivati i malo // |
- | ===== Zaključak ===== | + | * Zaglavlja (header) |
- | ===== Literatura ===== | + | * Tijela (body) |
+ | * " | ||
+ | * //Trailer// dokumenta | ||
- | [1] [[https://dl.acm.org/doi/pdf/10.1145/ | + | === Zaglavlje === |
+ | Zaglavlje čini prvi oktet PDF dokumenta i precizira korištenu verziju formata. | ||
+ | Na sljedećoj slici nalazi se primjer zaglavlja PDF dokumenta* verzije | ||
+ | {{ : | ||
+ | *Primjer korišten u ovom seminaru preuzet je [[https://www.africau.edu/images/default/sample.pdf|ovdje]]. | ||
- | [2] [[http://clem.dii.unisi.it/~vipp/website_resources/publications/conferences/2014_ICASSP_GironiFBPB_A_Video_Forensic_Technique_For_Detecting_Frame_Deletion_And_Insertion.pdf | A. Gironi, M. Fontani, T. Bianchi, A. Piva, M. Barni: A VIDEO FORENSIC TECHNIQUE FOR DETECTING FRAME DELETION AND INSERTION ]] | + | Znak na početku zaglavlja, %, predstavlja komentar u PDF dokumentu - u ovom primjeru može se vidjeti da su prve dvije linije PDF dokumenta komentari. |
+ | === Tijelo === | ||
+ | U tijelu PDF dokumenta nalaze se tekstualni i multimedijski objekti - točnije - objekti prikazani korisniku. | ||
+ | === 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 " | ||
+ | Kako bismo ju demistificirali, | ||
+ | === Trailer === | ||
+ | //Trailer// specificira način na koji čitač dokumenta treba naći tablicu križnih referenci i ostale objekte u dokumentu. Svaki PDF dokument čita se od kraja označenog s " | ||
+ | Veličina (Size) specificira broj zapisa u tablici križnih referenci, korijen (Root) označava referentni objekt za //katalog dokumenta//, | ||
+ | ==== Tipovi podataka ==== | ||
+ | PDF dokument sadrži 8 vrsti objekata: bool, broj, niz znakova, ime, niz, rječnik, tok i null objekt. | ||
+ | Objekti specifični za PDF - poput imena i toka - bit će objašnjeni u ovom radu. **Ime** je niz ASCII znakova iz intervala 0x21 do 0x7E maksimalne veličine od 127 okteta. Svakom imenu mora se dodati prefiks "/ /". **Tok** je predstavljen nizom okteta neograničene veličine, zbog čega se slike i veliki blokovi podataka obično prikazuju kroz tokove. | ||
+ | === Indirektni objekti === | ||
+ | Svaki objekt u PDF-u može se označiti kao // | ||
- | [3] [[https://www.forensicfocus.com/articles/forensics-bitcoin/]] | + | ==== 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 //stablo stranica//, koje je deklarirano indirektnom referencom u //katalogu 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: | ||
+ | * tip (/Type) - označava vrstu objekta. U ovom slučaju, tip je katalog. | ||
+ | * verzija (/Version) - verzija PDF specifikacije | ||
+ | * proširenja (/ | ||
+ | * stranice (/Pages) - indirektna referenca na korijen stabla stranica | ||
+ | * odredišta (/Dests) - indirektna referenca na korijen imenovanih odredišta | ||
+ | * obrisi (/Outlines) - indirektna referenca na korijen hijerarhije obrisa | ||
+ | * dretve (/Threads) - indirektna referenca na niz dretvenih rječnika koji predstavljaju predmete u dokumentu | ||
+ | * metapodaci (/Metadata) - indirektna referenca na tok koji sadrži metapodatke dokumenta | ||
+ | i ostali. | ||
+ | === Stablo 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 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. | ||
+ | ====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 "/ | ||
+ | {{ : | ||
+ | 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. Na slici je prikazan izlaz alata PDF-PARSER za naš dokument. | ||
+ | {{ : | ||
+ | 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, | ||
+ | {{ : | ||
+ | Slika je preuzeta iz [4]. | ||
+ | |||
+ | ==== 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. | ||
+ | ==== Literatura ==== | ||
+ | |||
+ | [1] https:// | ||
+ | |||
+ | [2] https:// | ||
+ | |||
+ | [3] https:// | ||
+ | |||
+ | [4] https:// | ||
+ | |||
+ | [5] https:// | ||