Slijede razlike između dviju inačica stranice.
Starije izmjene na obje strane Starija izmjena Novija izmjena | Starija izmjena | ||
racfor_wiki:seminari:analiza_pe_formata_izvrsne_datoteke [2023/01/13 10:29] fk49810 PE Uvod, MZ struct |
racfor_wiki:seminari:analiza_pe_formata_izvrsne_datoteke [2024/12/05 12:24] (trenutno) |
||
---|---|---|---|
Redak 4: | Redak 4: | ||
===== Sažetak ===== | ===== Sažetak ===== | ||
- | Većina komunikacije preko Interneta odvija se preko SSL/TSL protokola. SSL (Secure Sockets Layer) sprječava pristup do web-a onima kojima to nije namijenjeno. Najviše se koristi u Internet trgovini gdje je potrebno na siguran način proslijediti podatke o kartici | + | Portable Executable |
- | Ključne riječi: | + | Ključne riječi: |
Redak 20: | Redak 20: | ||
===== Format PE datoteke ===== | ===== Format PE datoteke ===== | ||
- | PE format zapravo je sadržan u jednom drugom formatu izvršne datoteke kao njen „payload“. MZ format nastao je za MS-DOS i nazvan je po Marku Zbykowskom, svom autoru. Kao i mnogi formati datoteka, započinje takozvanim „čarobnim brojem“ koji se sastoji od bajtova 0x4D 0x5A („MZ“). Time započinje MZ, također zvano i DOS zaglavlje, ukupne veličine 64 bajtova. | + | PE format zapravo je sadržan u jednom drugom formatu izvršne datoteke kao njen „payload“. MZ format nastao je za MS-DOS i nazvan je po Marku Zbykowskom, svom autoru. Kao i mnogi formati datoteka, započinje takozvanim „čarobnim brojem“ koji se sastoji od bajtova |
< | < | ||
WORD | WORD | ||
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
- | WORD | + | WORD |
LONG | LONG | ||
} IMAGE_DOS_HEADER, | } IMAGE_DOS_HEADER, | ||
- | Prikaz MZ zaglavlja | + | Nakon toga slijedi MS-DOS stub, tj. kratki tekst koji se ispisuje na standardnom toku pri pokretanju programa na nepodržanim operacijskim sustavima, defaultno “This program cannot be run in DOS mode.”, ali moguće ju je promijeniti prilikom prevođenja. |
+ | Iako većina literature navodi da iza ovog slijedi PE zaglavlje, zapravo slijedi opcionalno, „Rich“ zaglavlje, koje se npr, dodaje pri prevođenju programa Visual Studiom. Ono se sastoji od teksta kodiranim XOR kodom, stringa „Rich“ i 32-bitnog stringa koji se koristio u XOR kodiranju. Taj dio datoteke može biti u potpunosti prazan bez da utječe na izvođenje programa, a zato što je i malo poznat, koristio se u Olympic Destroyer napadu u kojem je promijenjeno Rich zaglavlje tako da nalikuje na [[https:// | ||
+ | Potom slijedi COFF/PE/NT zaglavlje, koje započinje potpisom „PE\0\0“ duljine 4 bajta za kojim slijedi zaglavlje image datoteke. | ||
+ | < | ||
+ | WORD Machine; | ||
+ | WORD NumberOfSections; | ||
+ | DWORD | ||
+ | DWORD | ||
+ | DWORD | ||
+ | WORD SizeOfOptionalHeader; | ||
+ | WORD Characteristics; | ||
+ | } IMAGE_FILE_HEADER, | ||
+ | Kako se formatom određuje raspored i struktura podataka unutar datoteke, PE format sadrži i određene metapodatke, | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | arhitekture skupa instrukcija (ISA). | ||
+ | U '' | ||
+ | |||
+ | Iza slijedi Optional Header s čarobnim brojevima '' | ||
+ | |||
+ | Slijedi '' | ||
+ | * veličine zaglavlja = 0x28 bajtova | ||
+ | * imena sekcije – može biti bilo što (8 bajtova), najčešće .text, .CODE, .data, .DATA, .rdata, ... | ||
+ | * fizičkog offseta do podataka ( PointerToRawData ) | ||
+ | * veličine podataka na disku ( SizeOfRawData ) | ||
+ | * relativne virtualne adrese ( SectionRVA ) | ||
+ | * virtualne veličina ( VirtualSize ) – veličina u memoriji | ||
+ | * karakteristika, | ||
===== Relativna virtualna adresa i fizički offset ===== | ===== Relativna virtualna adresa i fizički offset ===== | ||
+ | U prethodnom poglavlju spominjale su se relativne adrese. Pri izvršenju programa upravitelj memorijom (barem na Windowsima) koristi virtualnu memoriju koja je sloj apstrakcije između programa i radne memorije, što se ostvaruje straničenjem. Virutalna memorija omogućava višestruke adresne prostore, kako bi svaki program mogao pristupiti „istoj“ adresi, iako se nalaze u različitim dijelovima memorije. | ||
+ | Stranice omogućavaju dodjelu diskretne veličine memorije (najčešće 4 kB) procesu. Time se definiraju pojmovi: | ||
+ | * **fizički offset** - adresa podatka u datoteci na disku | ||
+ | * **virtualna adresa (VA)** - adresa u memoriji dodijeljenoj procesu, " | ||
+ | * **relativna virtualna adresa (RVA)** - relativna u odnosu na baznu adresu, većina vrijednosti u zaglavljima su u obliku RVA | ||
+ | Pretvorba adresa radi se na sljedeći način: VA = RVA + '' | ||
+ | RVA = '' | ||
+ | Pritom se u memoriju stranice i sekcije unose poravnate na '' | ||
===== Direktoriji ===== | ===== Direktoriji ===== | ||
+ | Podatkovni direktoriji parovi su (adresa, veličina) u obliku tablica koji se učitavaju u memoriju. Najčešći i najvažniji direktoriji su Export, Import, Resource, Relocation te TLS. | ||
+ | Export | ||
+ | Export direktorij najčešće je prisutan u DLL datotekama. U tom slučaju u njima se nalaze funkcije dostupne imenom i rednim brojem. Radi se o tri tablice: adresnoj tablici, tablici s pokazivačima na imena te tablici rednih brojeva. | ||
+ | Import | ||
+ | Import direktorij sastoji se od tablica u kojima se opisuju dodatne ovisnosti koje trebaju programu za izvođenje, najčešće skupine biblioteka i njihovih programskih sučelja. Svaki zapis opisuje jednu biblioteku i pokazuje na listu funkcija koje se uključuju iz njega. | ||
- | ===== Resursi | + | ===== Pakiranje |
+ | Pakiranje je postupak pri kojem se u izvršnu datoteku " | ||
- | ===== Overlay ===== | ||
- | ===== Mogućnost skrivanja informacija | + | ===== Zaključak |
+ | Portable Executable (PE) format se često koristi u računalnoj forenzici za analizu izvršnih datoteka i DLL-ova koji su povezani sa sigurnosnim rizicima i incidentima. Forenzičari koriste različite alate i tehnike za analizu PE datoteka kako bi identificirali potencijalne tragove koji mogu pomoći u istraživanju incidenta. | ||
- | ===== Zaključak ===== | + | Pritom se najčešće za PE format radi analiza malware-a, budući da su obično napisani u obliku izvršne datoteke. Za statičku analizu koriste se PE parseri, a u dinamičkoj analizi nadziru se ponašanja kao stvaranje novih procesa, mijenjanje registra ili povezivanje s vanjskim serverima. Osim kao izvršne datoteke, maliciozni programi se često kriju u DLL-ovima, budući da im operacijski sustav vjeruje i daje više privilegije pri izvođenju. |
===== Literatura ===== | ===== Literatura ===== | ||
- | [1] [[https://dl.acm.org/doi/pdf/10.1145/1161366.1161375| Wang W., Farid H.: Exposing Digital Forgeries in Video by Detecting Double MPEG Compression]] | + | [1] [[https://learn.microsoft.com/en-us/windows/win32/debug/pe-format| Microsoft: PE format]] |
- | + | ||
- | [2] [[http:// | + | |
- | + | ||
- | [3] [[https:// | + | |
+ | [2] [[https:// | ||
+ | [3] Sikorski, M., Honig, A.: Practical malware analysis |