Ovo je stara izmjena dokumenta!
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 od klijenta do poslužitelja. SSL je originalna inačica protokola, a kasnije je preimenovan u TLS. Generalno gledano protokol je vrlo siguran za enkripciju prometa, no ranjiv je napadima kao što su Man in the middle i Heartbleed.
Ključne riječi: SSL; TSL; komunikacija; sigurnost; napad
Portable Executable (PE) izvršni je format datoteka u operacijskom sustavu Windows. To uključuje aplikacije (.exe datoteke), dinamički povezane biblioteke (DLL) i druge tipove izvršnih datoteka. PE format temelji se na COFF (Common Object File Format) formatu datoteka.
Jedna od glavnih značajki PE formata je njegova podrška za povezivanje dinamičkim bibliotekama. To omogućuje programima da koriste funkcije iz drugih biblioteka bez da ih moraju sadržavati unutar svog izvornog koda. Time se smanjuje veličina izvršne datoteke i omogućuje višestruka upotreba istih biblioteka u različitim aplikacijama.
PE formatom određuje se na koji se način u memoriju računala puni izvršni program. Pritom punilac operacijskog sustava (loader) parsira format datoteke, određuje adrese i smješta podatke u memoriju, učitava zavisne datoteke, biblioteke i funkcije, postavlja početnu točku izvršavanja na početnu adresu programa i po završetku izvođenja programa, oslobađa nepotrebne resurse iz memorije. Upravo zato što se početna adresa u radnoj memoriji na koju se program smješta izračunava pri svakom izvođenju, format se i zove „prijenosnim“ (portable u PE).
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. Najbitnije polje u njemu je nazvano e_lfanew
na offsetu 0x3C
i upućuje loadera na adresu na kojoj počinje PE format.
typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number WORD e_cblp; WORD e_cp; WORD e_crlc; WORD e_cparhdr; WORD e_minalloc; WORD e_maxalloc; WORD e_ss; WORD e_sp; WORD e_csum; WORD e_ip; WORD e_cs; WORD e_lfarlc; WORD e_ovno; WORD e_res[4]; WORD e_oemid; WORD e_oeminfo; WORD e_res2[10]; LONG e_lfanew; // File address of new exe header } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
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 jedan drugi maliciozni program.
Potom slijedi COFF/PE/NT zaglavlje, koje započinje potpisom „PE\0\0“ duljine 4 bajta za kojim slijedi zaglavlje image datoteke.
typedef struct _IMAGE_FILE_HEADER { WORD Machine; WORD NumberOfSections; DWORD TimeDateStamp; DWORD PointerToSymbolTable; DWORD NumberOfSymbols; WORD SizeOfOptionalHeader; WORD Characteristics; } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
Kako se formatom određuje raspored i struktura podataka unutar datoteke, PE format sadrži i određene metapodatke, od kojih je Machine
prvi kojeg susrećemo u ovoj analizi. On može imati nekoliko vrijednosti, od kojih su značajne:
0x8664
za AMDx640x01c0
za ARM0x014C
za Intel i386 (x86) arhitekture skupa instrukcija (ISA).
U TimeDateStampu
nalazi se vrijeme nastanka datoteke u Unix formatu. Značajna su i polja NumberOfSections
te SizeOfOptionalHeader
.