Upload
hoangtuong
View
222
Download
0
Embed Size (px)
Citation preview
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
ZAVRŠNI RAD br. 3903
ANALIZA ZLONAMJERNIH PROGRAMA
Laura Dabelić
Zagreb, srpanj 2015.
iii
iv
SADRŢAJ
1. Uvod ......................................................................................................... 1
2. Sigurnosne prijetnje ................................................................................ 2
2.1. Trojanski konj .................................................................................. 2
2.2. Programi koji instaliraju reklame ..................................................... 3
2.3. Raspodijeljeni napad uskraćivanjem usluge ................................... 3
2.4. Računalni crvi ................................................................................. 4
2.5. Špijunski programi .......................................................................... 5
2.6. Računalni virusi .............................................................................. 5
2.7. Zlonamjerni program koji izbjegava njegovo otkrivanje .................. 6
2.8. Metoda koja zloupotrebljava ranjivosti sustava ............................... 6
2.9. Logička bomba ............................................................................... 6
2.10. Zastrašivanje .................................................................................. 7
2.11. Zlonamjerni programi koji šalju neţeljenu elektroničku poštu ......... 7
3. Alati za statičku i dinamičku analizu zlonamjernih programa ............. 8
3.1. Alat za statičku analizu dinamičkih biblioteka ................................. 8
3.2. 32-bitni program za ispravljanje pogrešaka .................................... 8
3.3. Program za otkrivanje pakiranja ..................................................... 8
3.4. Programi za pregledavanje PE datoteka ........................................ 9
3.5. Program za praćenje aktivnosti procesa ......................................... 9
3.6. Program za praćenje sustava u stvarnom vremenu ........................ 9
3.7. Alat za praćenje stanja registara ..................................................... 9
3.8. Alat za obradu PE datoteka .......................................................... 10
3.9. Alat za analizu znakovnih nizova .................................................. 10
3.10. Alat za pakiranje ........................................................................... 10
3.11. Internetska usluga za analizu zlonamjernih programa .................. 10
3.12. Alat za virtualizaciju ...................................................................... 10
4. Postupci statičke analize ...................................................................... 12
4.1. Provjera antivirusnim programima ................................................ 12
4.2. Pronalaţenje jedinstvenog ključa .................................................. 12
4.3. Provjera znakovnih nizova ............................................................ 13
v
4.4. Pakiranje i raspakiravanje ............................................................. 14
4.5. Kodne biblioteke i vrste povezivanja ............................................. 16
4.5.1. Statičko povezivanje ........................................................... 17
4.5.2. Dinamičko povezivanje ....................................................... 17
4.5.3. Često korištene dinamičke biblioteke ................................. 18
4.6. PE format datoteke ....................................................................... 19
5. Postupci dinamičke analize .................................................................. 21
5.1. Pokretanje dinamičkih biblioteka ................................................... 21
5.2. Promjene uzrokovane zarazom zlonamjernim programom ........... 22
5.2.1. Promjene registara ............................................................. 23
5.2.2. Promjene datotečnog sustava ............................................ 23
5.2.3. Promjene aktivnosti procesa .............................................. 24
5.2.4. Promjene mreţne aktivnosti ............................................... 24
5.3. Mamci ........................................................................................... 25
6. Virtualno okruženje za ispitivanje ........................................................ 27
6.1. Virtualni stroj ................................................................................. 27
6.2. Metode protiv virtualnih strojeva ................................................... 28
7. Statička analiza proizvoljno odabranog zlonamjernog programa .... 30
7.1. Provjera antivirusnim programima ................................................ 30
7.2. Analiza zaglavlja PE datoteke ...................................................... 33
7.3. Provjera znakovnih nizova ............................................................ 34
7.4. Provjera pakiranja ......................................................................... 36
7.5. Analiza dinamičkih biblioteka ........................................................ 36
8. Dinamička analiza proizvoljno odabranog zlonamjernog
programa ................................................................................................ 39
8.1. Pripremanje sustava za analizu .................................................... 39
8.2. Pokretanje zlonamjernog programa .............................................. 40
8.3. Analiza sustava nakon zaraze ...................................................... 44
9. Zaključak ................................................................................................ 47
Literatura ..................................................................................................... 48
1
1.Uvod
Razvoj novih i raznolikih korisnih programa uvijek je pratio razvoj
zlonamjernih programa. Sve veće korištenje Interneta i sve bolja umreţenost
korisnika omogućili su idealno okruţenje za njihovo širenje i povećali količinu
štete koju oni mogu proizvesti. Zato se pojavila potreba za zaštitom sustava
od utjecaja zlonamjernih programa koji svakih nekoliko mjeseci mutiraju.
Novije inačice zlonamjernih programa se stalno prate i dokumentiraju.
Stranice kao što su malwaredomainlist i virustotal svakodnevno se
dopunjavaju informacijama o novim zlonamjernima programima. U skladu s
tim razvijaju se i nova aţuriranja za antivirusne programe. U procesu
unaprjeĎivanja antivirusnih programa vaţnu ulogu ima analiza zlonamjernih
programa (engl. malware analysis). Osim toga, analiza zlonamjernih
programa vrlo je bitna nakon nekog sigurnosnog incidenta u sustavu jer
moţe dati odgovore na pitanja kao što su:
Kako je zlonamjerni program dospio u sustav?
Kakva je njegova funkcionalnost i kakvu štetu moţe prouzročiti?
Kako ga se moţe ukloniti iz sustava?
Koje posljedice na sustav će ostaviti sigurnosni incident?
Kako se moţe zaštititi sustav od sličnih prijetnji?
Autori zlonamjernih programa su domišljati, strpljivi i uporni tako da
prilikom analize treba biti spreman na mnoge metode prikrivanja kojima se
oni sluţe kako bi zamaskirali stvarnu prirodu programa koje su napisali.
Jedan od najboljih primjera su tzv. "laţni antivirusni programi" i općenito
programi koji "glume" korisne programe. TakoĎer, neki zlonamjerni programi
već imaju ugraĎene metode kojima mogu prepoznati da ih se analizira unutar
virtualnog stroja i na temelju toga promijeniti svoje ponašanje kako bi ih se
teţe otkrilo (engl. anti virtual machine techniques) [1]. Zato se često kaţe da
je analiza zlonamjernih programa "igra mačke i miša".
2
2. Sigurnosne prijetnje
Vrsta sigurnosne prijetnje ovisi o vrsti zlonamjernog programa s kojim je
korisnik došao u doticaj. Zlonamjerni programi se mogu podijeliti u nekoliko
kategorija.
2.1. Trojanski konj
Jedan od onih zlonamjernih programa koji se pretvaraju da su korisni
programi ima naziv trojanski konj (engl. Trojan horse). Oni nemaju
mogućnost samoumnoţavanja nego skidaju dodatne zlonamjerne programe
s Interneta i instaliraju ih bez korisnikovog znanja ili koriste neku drugu
metodu kako bi korisnikov sustav učinili ranjivijim za nove sigurnosne
prijetnje. Po vrsti sigurnosnih prijetnji, trojanski konji se mogu podijeliti u
sljedeće podkategorije:
KraĎa lozinki - Ova vrsta trojanskih konja specijalizirana je za kraĎu svih
vrsta lozinki. Svi korisnikovi unosi s tipkovnice se biljeţe i šalju autoru
trojanskog konja. Zbog toga se za ovu podkategoriju koristi engleski naziv
keylogger. To su lozinke bankovnih računa, lozinke za račune mreţnih igara
ili lozinke za servise instant poruka.
Trojan-Ransom - Onemogućavaju korisniku pristup do njegovih podataka
metodama kao što su kriptiranje ili pakiranje. Autor zlonamjernog programa
od korisnika traţi odreĎenu svotu novaca u zamjenu za ponovno
omogućavanje pristupa podacima. Kako je to zapravo "otkupnina" za
korisnikove podatke, odatle je nastao engleski naziv ransomware.
Trojan-Backdoor - Omogućavaju autoru zlonamjernog programa kontrolu
nad korisnikovim računalom. Zato je naziv ove podkategorije i RAT (engl.
Remote Access Trojan). Ova podkategorija korisnikovo računalo moţe
pretvoriti u posrednika u mreţi (engl. proxy) korištenjem koje autor
zlonamjernog programa moţe zadrţati anonimnost.
3
Trojan-ArcBomb - Ova podkategorija osmišljena je za usporavanje ili
onemogućavanje posluţitelja elektroničke pošte. Velike datoteke ili velike
količine datoteka pakiraju se u mali "paket" koji kad se otvori postane tako
velik da posluţitelj mora odvojiti jako veliku količinu procesorskog vremena i
diskovnog prostora kako bi ga obradio.
2.2 Programi koji instaliraju reklame
Ova kategorija zlonamjernih programa zapravo ne nanosi toliku štetu
korisniku koliko ga ometa prikazivanjem mnoštva reklama. Većina njih će
zaraziti Internet preglednik (engl. browser) i "zatrpati" dijelove teksta stranice
koju je korisnik posjetio reklamama. Zato korisnik ponekad misli da su
reklame na toj stranici, ali zapravo potječu od njegovog zaraţenog
preglednika. TakoĎer, korisnik će u svom pregledniku moţda vidjeti i neke
dodatke sa reklamama koje će ga upozoravati da njegovo računalo radi
neispravno. Neki zlonamjerni programi iz ove kategorije mijenjaju početnu
stranicu preglednika i otvaraju nove kartice preglednika (engl. pop-up
windows) sa reklamama. Zbog toga se za njih koristi engleski naziv adware.
2.3. Raspodijeljeni napad uskraćivanjem usluge
Ova vrsta sigurnosne prijetnje ima cilj onesposobiti internetsku uslugu tako
da je "zatrpa" prometom iz mnogo izvora (engl. Distributed Denial of Service)
[4]. Napadači izgrade mreţu zaraţenih računala (engl. botnets). Zloćudni
programi kojima se zaraze računala šire se putem sumnjivih stranica,
elektroničke pošte i društvenih mreţa. Zaraţena računala moguće je
kontrolirati izdaleka i bez znanja vlasnika te oni sluţe kao "vojska" za
odašiljanje napada. Generira se "poplava" prometa. To moţe biti slanje
velikog broja zahtjeva za spajanje koji uvelike premašuje broj zahtjeva koje
Internet posluţitelj moţe obraditi. Drugi način je odašiljanje velikog broja
slučajnih podataka kako bi se iscrpila posluţiteljeva širina pojasa (engl.
bandwidth). Treći način je slanje velikog broja TCP ili UDP fragmenata tako
4
da se onesposobe tokovi. Četvrti način je usmjeriti napad na točno odreĎeni
dio aplikacije. Na ovaj način napad je teţe otkriti i moţe biti uspješan čak i
ako je u njega bilo uključeno malo zaraţenih računala.
Na internetskom crnom trţištu postoje specijalizirana prodajna mjesta
gdje se moţe kupiti raspodijeljeni napad uskraćivanjem usluge [4]. Ovo
koriste oni koji ţele "ušutkati" autore neke web stranice s čijim sadrţajem se
ne slaţu ili pokvariti nekome internetsko poslovanje. Shema mreţe zaraţenih
računala dana je na slici 2.1:
Slika 2.1. - Mreţa zaraţenih računala
2.4. Računalni crvi
Crvi (engl. worms) su zlonamjerni programi koji posjeduju sposobnost
samoumnoţavanja. Crv šalje kopije samog sebe kroz mreţu i tako zagušuje
promet. Velik broj crva se širi elektroničkom poštom (koja najčešće sadrţi
zaraţenu poveznicu) i posjeduju funkcije koje im omogućuju da se prošire
elektroničkom poštom na svaku adresu u pretincu elektroničke pošte
zaraţenog korisnika. Osim njih, postoje i crvi koji se šire izravno putem
5
Interneta. Ova vrsta crva traţi otvorena vrata (engl. port) u sustavu kako bi se
mogli širiti na druge sustave. Za širenje koriste sigurnosne propuste
zaraţenih sustava.
2.5. Špijunski programi
Često se povezuju s programima koji instaliraju reklame jer imaju neke
sličnosti u ponašanju kao što je promjena početne stranice korisnikovog web
preglednika i dodavanje nepotrebnih i neţeljenih dodataka pregledniku.
Prikupljaju korisnikove osobne podatke i šalju ih autoru zlonamjernog
programa. Ovi programi koriste računalne resurse i širinu pojasa jer šalju
korisnikove podatke autoru putem korisnikove internetske veze. Posljedica
ovakvog ponašanja je usporen rad sustava i nestabilnost koja moţe dovesti
do "rušenja" korisnikovog sustava. Ponekad dolaze uz licencu nekog drugog
programa i tada se korisnika upozorava da će špijunski program (engl.
spyware) takoĎer biti instaliran, meĎutim to je obično tekst pisan "sitnim
slovima" koji korisnici najčešće nikad ne pročitaju.
2.6. Računalni virusi
Često se koristi naziv "virus" za sve zlonamjerne programe, meĎutim to nije
ispravno [5]. Računalni virusi su jedna od kategorija zlonamjernih programa.
Imaju sposobnost samoumnoţavanja i "nakače" se na program ili sektor na
disku. Ne postoji platfroma za koju je nemoguće napisati virus. Virusi se
mogu podijeliti u nekoliko podkategorija:
Virusi inicijalizacijskog sektora - Ovi virusi su meĎu najstarijima jer su se
pojavili veoma rano, dok su se računala tek počela razvijati. Oni dodaju svoj
kod u inicijalizacijski sektor na disku (engl. boot sector) i učitavaju se u
memoriju svaki put kada se sustav inicijalizira (engl. boot).
Virusi datoteka - Ovo je najčešći tip virusa. Oni dodaju svoj kod u izvodivu
datoteku (engl. executable) koja potom moţe proširiti zarazu na druge
6
izvodive datoteke. Neki virusi dodaju svoj kod na početak izvodive datoteke
(engl. prependers), neki dodaju svoj kod na kraj izvodive datoteke (engl.
appenders), a neki umetnu svoj kod u prazna mjesta u izvodivoj datoteci
(engl. space-fillers). Ovisno o tome nalazi li se virus u memoriji, zarazit će
datoteke odmah ili će pronaći pogodne datoteke koje će zatim proširiti
zarazu.
Virus-Multipartite - Mogu zaraziti i datoteke i inicijalizacijski sektor
2.7. Zlonamjerni program koji izbjegava njegovo otkrivanje
Sluţe za sakrivanje zlonamjernog programa kako bi ga se teţe otkrilo i
uklonilo. Modificiraju korisnikov operacijski sustav tako da zlonamjerni
program ostaje skriven od korisnika i antivirusne zaštite. Mogu učiniti proces
zlonamjernog programa nevidljivim na listi procesa ili učiniti njegove datoteke
nemogućima za čitanje. Neki sadrţe metode protiv uklanjanja. Primjerice,
proces zlonamjernog programa ima još nekoliko procesa koji ga "čuvaju" i
kada god korisnik "ubije" glavni proces, pomoćni procesi (engl. watchdogs)
ga uvijek iznova vrate.
2.8. Metoda koja zloupotrebljava ranjivosti sustava
Kako joj i samo ime kaţe, metoda koristi sigurnosne propuste u operacijskom
sustavu (engl. exploit). Zato se za sustave stalno izdaju nove sigurnosne
zakrpe (engl. security patch) koje nastoje popuniti rupe u obrani i zaštititi
sustav od nedozvoljenog pristupa.
2.9. Logička bomba
Ova kategorija zlonamjernih programa pokreće se kao reakcija na odreĎeni
dogaĎaj kao što je pokretanje aplikacije ili dosezanje odreĎenog datuma i
vremena. Koriste se u kombinaciji s drugim, već spomenutim kategorijama
zlonamjernih programa kao što su trojanski konji i špijunski programi.
7
Primjerice, logičke bombe kombinirane sa špijunskim programima će
aktivirati špijunski program samo onda kada korisnik posjeti neku stranicu na
kojoj mora unijeti svoje osobne podatke i lozinku. Kada se logička bomba
pokreće pri dosezanju odreĎenog datuma i vremena naziva se još i
vremenska bomba (engl. time bomb).
2.10. Zastrašivanje
Svrha ove kategorije zlonamjernih programa je da preplaše korisnika kako bi
autoru zlonamjernog programa dao novce (engl scareware). Često ima
korisničko sučelje kojim oponaša izgled antivirusnog programa i šalje poruke
upozorenja da je korisnikov sustav zaraţen. Zlonamjerni program zakoči
korisnikovo računalo ili kriptira sve podatke na njemu tako da ono postaje
nesposobno za ikakav koristan rad. Korisnik moţe dobiti ponovni pristup
svojim podacima samo ako uplati odreĎeni iznos novca na za to predviĎen
račun.
2.11. Zlonamjerni programi koji šalju neželjenu elektroničku poštu
Kako im samo ime kaţe, ova kategorija zlonamjernih programa šalje mnogo
elektroničke pošte koja sadrţi druge zlonamjerne programe ili poveznice na
zaraţene stranice. Često koriste ranjive internetske resurse kao što su
otvoreni posluţitelji (engl. open proxy) ili otvoreni SMTP posluţitelji
elektroničke pošte (engl. open mail relay).
8
3. Alati za statičku i dinamičku analizu
zlonamjernih programa
3.1. Alat za statičku analizu dinamičkih biblioteka
Sluţi za statičku analizu dinamičkih biblioteka (engl. Dynamic Link Lybrary) i
uvezenih (engl. imported) funkcija i naziva se Dependency Walker [3].
Analizira sve 32-bitne ili 64-bitne module i gradi prikaz u obliku hijerarhijskog
stabla dinamičkih biblioteka koje će biti učitane u memoriju nakon pokretanja
programa. Za svaki pronaĎeni modul ispisuje se lista funkcija koje je taj
modul koristio i koje od tih funkcija su pozivali i drugi moduli.
3.2. 32-bitni program za ispravljanje pogrešaka
32-bitni program za ispravljanje pogrešaka (engl. debugger) strojnog koda
koji se naziva Ollydbg. Omogućuje praćenje stanja registara, prepoznavanje
procedura, poziva aplikacijskog programskog sučelja, prekidača, tablica,
konstanti i znakovnih nizova. Poseban naglasak je na binarnoj analizi koda.
Moţe analizirati zloćudni program dok je pokrenut i učitavati izvodive
programe i dinamičke biblioteke izravno.
3.3. Program za otkrivanje pakiranja
Program za otkrivanje pakiranih datoteka i njihovo raspakiravanje kako bi se
one mogle dalje analizirati naziva PEiD [3] . Prepoznaje više od 600 digitalnih
potpisa (engl. signatures) u PE datotekama. Moţe otkriti tip programa za
pakiranje (engl. packer) ili kompilatora koji je izgradio aplikaciju što uvelike
olakšava analizu. Posjeduje dodatak Krypto ANALyzer (KANAL) koji moţe
prepoznati kriptografske funkcije.
9
3.4. Programi za pregledavanje PE datoteka
Alati za pregledavanje PE datoteka naziva PEView i PE Explorer [1].
Omogućavaju pregled PE zaglavlja, individualnih odjeljaka datoteke te
tablica uvezenih i izvezenih funkcija.
3.5. Program za praćenje aktivnosti procesa
NadograĎena i naprednija verzija Windowsovog programa Task Manager
koja se naziva Process Explorer [3]. Koristi se kod dinamičke analize i pruţa
uvid u procese koji su aktivni u sustavu. Prikazuje hijerarhijski pregled svih
aktivnih procesa i njihovih svojstava. Omogućuje pokretanje, provjeravanje,
zaustavljanje i ubijanje procesa te putanju slike procesa (engl. image path)
na disku. TakoĎer, omogućava i praćenje iskoristivosti procesora (engl.
CPU).
3.6. Program za praćenje sustava u stvarnom vremenu
Alat za dinamičku analizu koristan za prikupljanje informacija o sustavu u
stvarnom vremenu naziva Process Monitor [3]. Prikazuje sve aktivnosti
datotečnog sustava, registara, svih aktivnih procesa i mreţnih akcija. Prati
svaki pokušaj dohvaćanja Windows registara pa čak i neuspjele pokušaje
čitanja i pisanja u njih. Ima mogućnost filtriranja sadrţaja po ključevima,
imenima, procesima i slično što olakšava analizu i čini je preglednijom.
3.7. Alat za praćenje stanja registara
Omogućava snimanje stanja registara u dva vremenski odvojena trenutka te
njihovo usporeĎivanje. Naziva se Regshot [3]. Pogodan za uočavanje
promjena na sustavu prije i nakon zaraze zlonamjernim programom.
Otvorenog je koda tako da ga se stalno razvija i dopunjuje.
10
3.8. Alat za obradu PE datoteka
Alat za statičku analizu koji sluţi za rad s PE datotekama i naziva se
Resource Hacker [1]. Moguće je pregledavati, dodavati, brisati i izdvajati
dijelove PE datoteke koji su zanimljivi za analizu. Moguće je pregledavati
kritične dijelove zlonamjernog programa izdvojeno bez da ga se pokreće.
3.9. Alat za analizu znakovnih nizova
Alat za statičku analizu koji sluţi za brzi pregled svih znakovnih nizova
programa [1]. Prema ispisu koji će alat Strings generirati moţe se vidjeti je li
zlonamjerni program pakiran.
3.10. Alat za pakiranje
Najpopularniji alat za pakiranje (engl. Universal Packer for eXecutables).
Sluţi za raspakiravanje koda zlonamjernog programa u svrhu daljnje analize.
3.11. Internetska usluga za analizu zlonamjernih programa
Internetska usluga koja skenira zlonamjerne programe pomoću brojnih
antivirusnih programa VirusTotal. Moguće je poslati zlonamjerni program ili
MD5 ključ na analizu i generirat će se izvješće s podacima koje su prikupili
svi antivirusni programi tijekom skeniranja.
3.12. Alat za virtualizaciju
Alat za virtualizaciju i automatizaciju programske potpore naziva VMware
Player. Sluţi kao izolirana okolina za virtualni stroj na kojemu se provodi
analiza koja osigurava da ostatak sustava neće biti ugroţen kada zloćudni
program bude pokrenut u svrhu dinamičke analize. TakoĎer, sluţi za
11
simulaciju virtualne mreţe tako da zlonamjerni program ima dojam da je
spojen na Internet.
12
4. Postupci statičke analize
Statička analiza je jedan od dva osnovna pristupa analize zlonamjernih
programa. To je najčešće prvi korak kada se počinje analizirati zlonamjerni
program. Prilikom statičke analize zlonamjerni program se promatra bez
prethodnog pokretanja. Mogu se prikupiti podaci o tome je li program zaista
zlonamjeran i njegovoj funkcionalnosti. U kasnijim, naprednijim fazama
statičke analize, učitava se strojni kod programa i promatraju se njegove
naredbe kako bi se otkrilo što program zapravo radi.
4.1. Provjera antivirusnim programima
Na samom početku analize, dobro je program koji se analizira provjeriti
antivirusnim programima koji su ga moţda već uspjeli identificirati. To je
dobro samo za početak jer antivirusni programi se oslanjaju na provjeru
podataka o zlonamjernim programima iz svojih baza ili na temelju analize
ponašanja programa. TakoĎer, autori zlonamjernih programa mogu lako
promijeniti prepoznatljive dijelove koda (engl. signatures) kako bi ih
antivirusni programi teţe otkrili [1].
Nakon provjere sa nekoliko dostupnih antivirusnih programa, program koji
se analizira treba poslati na stranicu kao što je virustotal koja će ga provjeriti
sa nekoliko antivirusnih analizatora i ispisati izvješće u kojemu je vidljivo
koliko antivirusnih analizatora je prepoznalo zlonamjerni program, ime
zlonamjernog programa i dodatne informacije o zlonamjernom programu
ukoliko su one dostupne.
4.2. Pronalaženje jedinstvenog ključa
Još jedna metoda po kojoj se moţe identificirati zlonamjerni program jest
provjeravanje njegovog jedinstvenog ključa (engl. hash). Jedinstveni ključ je
vrijednost koja se generira pomoću za to predviĎenog programa i koja je
jedinstvena za svaki program jer formula pomoću koje se on dobiva
13
osigurava da je jako mala vjerojatnost da će dva programa imati isti
jedinstveni ključ [1]. Najčešće korišteni algoritmi za dobivanje vrijednosti
jedinstvenog ključa su MD5 (engl. The Message-Digest Algorithm 5) i SHA-1
(engl. Secure Hash Algorithm 1). Program koji moţe izračunati vrijednost
jedinstvenog ključa je md5deep. Kad se dobije jedinstveni ključ zlonamjernog
programa, moţe se provjeriti na Internetu je li već negdje dokumentiran.
4.3. Provjera znakovnih nizova
Sljedeći korak statičke analize je provjera znakovnih nizova (engl. strings) u
zlonamjernom programu. Svaki program će sadrţavati znakovne nizove.
Primjerice, ako ispisuje neku poruku, kopira podatke na odreĎenu lokaciju ili
se spaja na odreĎenu adresu na Internetu. Pretraţujući znakovne nizove
moţe se dobiti uvid u neke funkcionalnosti zlonamjernog programa.
Znakovnim nizom se smatra bilo koji niz znakova u ASCII ili Unicode formatu
koji je dulji od tri znaka. Prilikom pretrage za znakovnim nizovima, programi
za pretragu ignoriraju format znakovnih nizova i kontekst pa se stoga u ispisu
znaju naći i znakovni nizovi koji to zapravo nisu. Umjesto toga, ti ispisani
nizovi mogu predstavljati memorijske adrese, naredbe procesora ili neke
druge podatke koje program koristi [1]. Osoba koja provodi analizu mora
sama razlučiti "prave" znakovne nizove od "laţnih". Na sreću, "laţni"
znakovni nizovi se vrlo lako prepoznaju tako da to ne predstavlja prevelik
problem.
Program kojim je moguće brzo i jednostavno pretraţiti znakovne nizove u
bilo kojoj izvršnoj datoteci je Strings. Za primjer je napravljen ispis svih
znakovnih nizova pomoću programa Strings za izvršnu datoteku GP5.exe.
Ispis je vidljiv na slici 4.1.
Vidljivo je da prvih nekoliko redova zauzimaju upravo "laţni" znakovni
nizovi koji na prvi pogled nemaju nikakvog smisla. MeĎutim, preostali
znakovni nizovi predstavljaju nazive pojedinih kontrola na grafičkom sučelju
analiziranog programa Guitar Pro 5.
14
Slika 4.1. - Ispis znakovnih nizova za izvršnu datoteku GP5.exe
4.4. Pakiranje i raspakiravanje
Zlonamjerni programi često koriste metodu pakiranja (engl. packing) kako bi
prikrili svoju pravu namjenu i ponašanje [1]. Pakirani kod je teţe otkriti u
sustavu i analizirati jer se prikazuje manjim nego što zapravo jest. Zbog toga
se mogućnosti statičke analize ovakvog programa veoma smanjuju.
Zlonamjerni program podvrgava se procesu kompresije pomoću posebnih
programa za pakiranje (engl. packers). Prilikom pokretanja pokreće se i mali
"program omotač" (engl. wrapper program) koji vrši dekompresiju pakiranog
programa i pokreće ga nakon što se raspakira. Prilikom statičke analize
moţe se analizirati samo taj "program omotač". Shema programa prije i
nakon pakiranja dana je na slici 4.2.
Za prikupljanje više informacija o pakiranom programu, potrebno ga je
raspakirati. Neki programi za pakiranje kriptiraju izvorni izvodivi kod
programa ili koriste neke tehnike protiv reverznog inţenjeringa (engl. anti-
reverse-engineering techniques). Neke od tih tehnika su tehnike protiv
ispravljanja pogrešaka (engl. anti-debugging) i tehnike protiv virtualnih
strojeva (engl. anti-VM) [1].
15
Slika 4.2. - Program prije i nakon pakiranja [1]
Kako bi se odrţala izvorna funkcionalnost programa, program za
pakiranje mora pohraniti informacije o uvozu programa koji se pakira (engl.
import information). Zato je kod rasprakiravanja programa vaţno
rekonstruirati dio vezan za uvoz. Shema raspakiravanja vidljiva je na slici 4.3:
Slika 4.3. - Raspakiravanje i premještanje polazišne točke koda [1]
Programe koji nisu pakirani u memoriju učitava operacijski sustav. Kod
pakiranih programa prvo se u memoriju učita spojni modul (engl. stub) za
raspakiravanje koji zatim raspakira dani program. Polazišna točka koda
izvodivog programa (engl. code entry point) pokazuje na spojni modul za
raspakiravanje, a ne na njezino mjesto u izvornom kodu [1]. Izvorni kod
16
programa spremljen je u jednom od posebnih, dodatnih odjeljaka datoteke.
Spojni modul raspakiravanje izvodi tri koraka:
Raspakirava izvorni kod izvodivog programa u memoriju
UreĎuje sve uvoze izvornog izvodivog programa
Premješta polazišnu točku koda na njezino prvotno mjesto koje se
naziva OEP (engl. original entry point)
Naredba koja premješta polazišnu točku koda na njezino prvotno mjesto
naziva se tail jump. To je naredba skoka koja je najjednostavniji i
najpopularniji način da se izvede premještanje. S obzirom na njeno često
korištenje, autori zlonamjernih programa ponekad je pokušavaju prikriti
korištenjem naredbe ret ili call. Još jedan način prikrivanja jest korištenjem
funkcija operacijskog sustava kao što su NtContinue ili ZwContinue.
UreĎivanje uvoza izvornog izvodivog programa znači rekonstrukciju tablice
uvezenih funkcija [1]. Kao što je vidljivo na slici 4.3, raspakirani program još
uvijek ima spojni modul za raspakiravanje i još neke dijelove koda koje je
dodao program za pakiranje. Kao posljedica raspakiravanja, PE zaglavlje
raspakiranog programa takoĎer će biti rekonstruirano i razlikovat će se od
onoga u izvornom programu.
4.5. Kodne biblioteke i vrste povezivanja
MeĎu najvaţnijim informacijama koje se mogu prikupiti tijekom statičke
analize su uvezene (engl. import) funkcije. Te funkcije sadrţe kodne
biblioteke (engl. code libraries) koje sadrţe funkcionalnost koju koristi velik
broj programa. Kodne biblioteke uključuju se u program povezivanjem (engl.
linking) tako da se ista funkcionalnost ne mora uvijek iznova implementirati u
svakom programu. Povezivanje moţe biti statičko i dinamičko.
17
4.5.1. Statičko povezivanje
Statičko povezivanje je vrsta povezivanja koje češće koriste zlonamjerni
programi, a kod korisnih programa je mnogo rjeĎe. Kod statičkog
povezivanja, kod kojeg sadrţi kodna biblioteka se kopira u kod izvodivog
programa. Rezultat ovog povezivanja jest da izvodivi program postaje veći.
Prilikom analize koda u kojemu je korišteno statičko povezivanje nemoguće
je razlikovati izvorni kod izvodivog programa od koda koji se u njega kopirao
iz kodne biblioteke. Zbog ovih svojstava, statičko povezivanje često koriste
zlonamjerni programi koji su pakirani. Njihovi izvodivi programi koriste
povezivanje s kodnim bibliotekama samo kada je odreĎena funkcija
potrebna. Neke funkcije nisu navedene u zaglavlju datoteke (engl. header).
MeĎu najviše korištenima su LoadLibrary, GetProcAddress,
LdrGetProcAddress i LdrLoadDll. [1] Ove funkcije omogućavaju programu
pristup bilo kojoj funkciji u bilo kojoj kodnoj biblioteci u operacijskom sustavu.
Stoga je prilikom statičke analize teţe prepoznati koje sve funkcije je
zlonamjerni program koristio.
4.5.2. Dinamičko povezivanje
Dinamičko povezivanje je najčešće korištena vrsta povezivanja. Kad su
kodne biblioteke povezane, operacijski sustav traţi kodne biblioteke koje mu
trebaju dok se program učitava. Kad se pozove funkcija iz odreĎene kodne
biblioteke, ta funkcija se izvodi unutar same biblioteke. Kodne biblioteke koje
su dinamičkim povezivanjem uključene u program nazivaju se dinamičke
biblioteke (engl. Dynamic Link Library). Funkcija se kod dinamičkog
povezivanja moţe pozvati prilikom učitavanja ili prilikom pokretanja
programa.
Informacije o tome koje kodne biblioteke će biti učitane i koje funkcije će
program koristiti naleze se u PE (engl. portable executable) zaglavlju
datoteke [1]. To je struktura podataka koja sadrţi informacije potrebne
18
operacijskom sustavu da izvede kod odreĎenog programa kao što su veličina
stoga i količina raspoloţive memorije.
4.5.3. Često korištene dinamičke bibilioteke
Dinamičke biblioteke mogu dati puno informacija o funkcionalnosti programa.
Neke dinamičke biblioteke se koriste u jezgrenom načinu rada operacijskog
sustava i korisnik nema izravan pristup njima. Ukoliko se prilikom analize
uoče neke funkcije iz jezgrenog načina rada, moţe se posumnjati da je
program zlonamjeran. Često korištene dinamičke biblioteke i njihova
funkcionalnost prikazani su u tablici 4.1:
Advapi32.dll Sadrţi napredne elemente aplikacijskog programskog
sučelja
Authui.dll Korisničko sučelje za autentifikaciju
Comctl32.dll Poziva funkcije iz User32.dll i Gdi32.dll. Sluţi za
implementaciju standardnih elemenata Windows
korisničkog sučelja kao što su dijaloški prozori, statusne
trake itd.
Comdlg32.dll Sluţi za upravljanje dijaloškim prozorima
Crypt32.dll Sadrţi kriptografske funkcije
Kernel32.dll Vrlo često korištena dinamička biblioteka koji sadrţi
funkcije za manipulaciju memorijom, podacima i
računalnim resursima
Advapi32.dll Omogućava pristup jezgrenim komponentama kao što su
registry i Service Manager
User32.dll Sadrţi elemente korisničkog sučelja kao što su gumbi,
statusne trake i komponente za komunikaciju sa
korisnikom
Gdi32.dll Sadrţi elemente za prikazivanje grafike
Ntdll.dll Ova dinamička biblioteka je sučelje prema jezgri
19
operacijskog sustava. Izvodivi programi je nikada ne
uključuju izravno, nego neizravno preko Kernel32.dll.
Često je koriste zlonamjerni programi jer moţe posluţiti za
skrivanje funkcionalnosti ili manipuliranje procesima
Ole32.dll Sadrţi funckcije za povezivanje objekata
Rprcrt4.dll Koristi se za povezivanje na Internet i mreţnu
komunikaciju
Shell32.dll Sadrţi funkcije koje se koriste prilikom otvaranja datoteka i
web stranica
Shlwapi.dll Sadrţi funkcije za internetske adrese, unos u registre i
postavke boja
Shscrap.dll Ne koristi se više u operacijskim sustavima od Windows
Vista nadalje jer su je često koristili zlonamjerni programi.
Implementirala je podršku za .shs datoteke koje su mogle
sadrţavati izvodivi kod zlonamjernog programa.
WSock32.dll Dinamička biblioteka odgovorna za spajanje na mreţu i
funkcionalnosti vezane uz mreţu
Ws2_32.dll Ima istu funkcionalnost kao i WSock32.dll
Wininet.dll Sadrţi napredne mreţne funkcije koje implementiraju
protokole kao što su HTTP, FTP i NTP
Tablica 4.1. - Često korištene dinamičke biblioteke
4.6. PE format datoteke
Kao što je već rečeno, Windows izvodive datoteke koriste PE format.
Informacije koje se mogu naći u PE zaglavlju su informacije o kodu, vrsta
aplikacije, potrebne funkcije biblioteka, prostor koji treba biti dostupan na
disku, informacije o svakoj biblioteci koja će biti učitana te informacije o
svakoj funkciji koju će program koristiti. Imena funkcija mogu pomoći prilikom
otkrivanja što program zapravo radi. Najčešći dijelovi PE datoteke dani su u
tablici 4.2:
20
.text Sadrţi izvodivi kod programa
.rdata Sadrţi podatke samo za čitanje (engl. read only). Ovdje se nalaze
informacije o uvozu (engl. import) i izvozu (engl. export).
.data Sadrţi globalne podatke kojima se moţe pristupiti iz bilo kojeg
dijela programa
.idata Sadrţi informacije o uvezenim funkcijama
.edata Sadrţi informacije o izvezenim funkcijama
.pdata Postoji samo kod 64-bitnih datoteka i sadrţi informacije za
upravljanje iznimkama
.rsrc Pohranjuje resurse koji su potrebni izvodivom programu
.reloc Sadrţi informacije za premještanje datoteka iz knjiţnica
Tablica 4.2. - Dijelovi PE datoteke
Pregledavajući dijelove PE datoteke takoĎer je moguće uočiti ako je
program pakiran. U tom slučaju, za neke dijelove PE datoteke veličina sirovih
podataka bit će jednaka nuli što znači da oni (prividno) ne zauzimaju nikakav
prostor na disku. TakoĎer, prema podatku o virtualnoj veličini moguće je
vidjeti da će se alocirati memorijski prostor za .text segment i da će program
za pakiranje raspakirati zlonamjerni program na taj alocirani memorijski
prostor.
Daljnjim pregledavanjem moguće je prikupiti informacije o ikonama koje
program sadrţi, izbornicima koji se pojavljuju u različitim prozorima
programa, dijaloškim prozorima, znakovnim nizovima te informacije o inačici
programa i imenu tvrtke koja je izdala program. Zlonamjerni programi, a
ponekad i zdravi programi ponekad ovdje znaju spremati ugraĎene programe
ili pogonske programe (engl. driver) koji se raspakiravaju prije nego se
program pokrene. Korištenjem nekih alata kao što je Resource Hacker,
moţemo izdvojiti taj ugraĎeni program ili pogonski program za zasebnu
analizu.
21
5. Postupci dinamičke analize
Dinamička analiza je sljedeći korak prilikom analize zlonamjernog programa
kada su već iscrpljene sve mogućnosti statičke analize i kad se saznalo sve
što se tom vrstom analize moţe saznati. Prilikom dinamičke analize promatra
se ponašanje zlonamjernog programa koji se izvodi na zaraţenom
operacijskom sustavu ili se promatra stanje operacijskog sustava nakon
zaraze zlonamjernim programom. Ova vrsta analize omogućuje uvid u pravu
funkcionalnost zlonamjernog programa s obzirom da se sve funkcije koje su
uočene statičkom analizom ne moraju nuţno izvesti. Preporuča se prvo
provesti statičku analizu jer izvoĎenje dinamičke analize moţe ugroziti mreţu
i operacijski sustav. Ograničenje dinamičke analize je u tome što se ne mora
nuţno izvesti sav kod zlonamjernog programa. Rješenje ovog problema je u
tome da se zlonamjerni program pokuša "natjerati" da izvede sve svoje
funkcije kako bi se njegova funkcionalnost mogla u potpunosti ispitati [1].
5.1. Pokretanje dinamičkih biblioteka
Glavni uvjet da bi se uspješno provela dinamičku analizu jest da se
pokrene zlonamjerni program ili dinamička biblioteka. Kod izvodivih datoteka
pokretanje se moţe jednostavno izvesti dvostrukim klikom ili iz komandne
linije dok je pokretanje dinamičkih biblioteka nešto sloţenije s obzirom da
operacijski sustav ne poznaje način kako ih automatski pokrenuti. Zbog toga
postoji program rundll32.exe koji sluţi za pokretanje funkcija smještenih u
dinamičkim bibliotekama. Sintaksa za pokretanje dinamičkih biblioteka je
sljedeća:
C:\> run32dll.exe imeDinamičkeBiblioteke.dll Export argumenti
Export argumenti predstavljaju argumente za izvoz. To mora biti ime
funkcije ili broj funkcije (engl. ordinal) iz tablice izvezenih funkcija (engl.
22
export table). Tablica izvezenih funkcija moţe se pregledati nekima od alata
za statičku analizu kao što su PEView ili PE Explorer. Ako se pokreće
dinamička biblioteka pomoću broja funkcije, tada se ispred broja stavlja znak
#. Primjer takvog pokretanja bio bi:
C:\> run32dll.exe imeDinamičkeBiblioteke.dll #ordinal
Osim što se moţe pregledati PE datoteka da bi se vidjela imena izvezenih
funkcija i njihovi brojevi, moţe se modificirati zaglavlje PE datoteke i
"pretvoriti" dinamičku biblioteku u izvodivi program promjenom ekstenzije. U
ovom slučaju, zlonamjerni program bi se mogao srušiti ili neočekivano
ponašati tako da ova metoda nije uvijek djelotvorna.
Ponekad se zlonamjerne dinamičke biblioteke moraju instalirati kao usluge
[1]. U tom slučaju potrebno je navesti ime usluge u komandnoj liniji. U
sljedećem retku treba navesti naredbu net start kako bi se usluga pokrenula
na operacijskom sustavu Windows:
C:\> run32dll.exe imeDinamičkeBiblioteke.dll, InstallService ImeUsluge
C:\> net start ImeUsluge
Ako se analizirajući funkcije koje dinamička biblioteka sadrţi naiĎe na
funkciju ServiceMain, a pritom se ne pronaĎu funkcije Install ili InstallService,
to znači da će biti potrebno instalirati uslugu ručno.
5.2. Promjene uzrokovane zarazom zlonamjernim programom
Promatrajući ponašanje zlonamjernog programa i nastale promjene na
sustavu u stvarnom vremenu, moţe se uočiti koje sve promjene su nastupile
nakon zaraze. Ponekad je bolje koristiti opcije filtriranja koje mnogi od alata
za dinamičku analizu posjeduju jer s obzirom da se u operacijskom sustavu
23
često odvija nekoliko desetaka tisuća dogaĎaja, u tome se ponekad teško
snaći. Promjene koje zlonamjerni program izvodi na sustavu mogu se
podijeliti u nekoliko osnovnih kategorija:
5.2.1. Promjene registara
Pregledavajući operacije nad registrima moguće je uočiti promjene poput
dodavanja ili brisanja odreĎenih registarskih ključeva ili podključeva. Jedan
od najčešćih registara koje zlonamjerni programi mijenjaju jest
HKLM\Software\Microsoft\Windows\CurrentVersion\Run zbog toga što se
tamo podešava da se program pokrene zajedno sa operacijskim sustavom.
Primjerice, ako se uoči da su registri napunjeni neţeljenim podacima koji
sluţe usporavanju cijelog sustava ili ako se prikazuju nasumične poruke o
pogreškama, moţe se posumnjati da je u pitanju zaraza špijunskim
programom. TakoĎer, registri mogu biti napunjeni zlonamjernim unosima koji
uzrokuju često "rušenje" sustava u obliku tako zvanog „plavog zaslona“ (engl.
blue screen error). Još jedan od registara koje zlonamjerni programi često
mijenjaju jest HKEY_CLASSES_ROOT jer se tamo odreĎuju ekstenzije
datoteka koje operacijski sustav pokreće.
5.2.2. Promjene datotečnog sustava
Pretraţivanjem datotečnog sustava moguće je uočiti datoteke koje je
zlonamjerni program stvorio, direktorije koje je dodao ili konfiguracijske
datoteke koje koristi. Neki zlonamjerni programi mijenjaju metapodatke poput
vremena stvaranja datoteke, vremena zadnjeg modificiranja datoteke ili ime
proizvoĎača programa. Ovo posljednje je česta metoda prikrivanja
zlonamjernih programa kojom se pokušavaju prikazati kao legalni, korisni
programi. Neki zlonamjerni programi mogu mijenjati podatke vezane uz
dopuštenja tko se smije sluţiti operacijskim sustavom i tko ima pristup
odreĎenim podacima operacijskog sustava.
24
5.2.3. Promjene aktivnosti procesa
Analizom aktivnosti procesa moguće je uočiti koliko dodatnih procesa je
zlonamjerni program pokrenuo i koja je njihova svrha. Neki zlonamjerni
programi se znaju "maskirati" tako da imaju isti naziv kao neki korisni proces
koji je neophodan za ispravan rad operacijskog sustava. Imaju isto ime kao
korisni proces, samo su smješteni drugdje na disku. Ovaj postupak naziva se
metoda zamjene procesa (engl. process replacement) [1]. Zlonamjerni
program "prepiše" kod svoje izvodive datoteke preko koda izvornog, korisnog
procesa. To je moguće otkriti tako da se usporedi slika procesa iz memorije
sa slikom procesa na disku koje će se u slučaju metode zamjene procesa
razlikovati. Neki zlonamjerni programi imaju pomoćne procese koji ih "čuvaju"
svaki put kada ih se pokuša ubiti (engl. watchdogs). Tih pomoćnih procesa
obično ima nekoliko pa svaki put kad se ubije proces zlonamjernog
programa, oni će ga uvijek iznova vratiti.
5.2.4. Promjene mrežne aktivnosti
Analizom mreţne aktivnosti i mreţnog prometa moguće je uočiti vrata na
kojima sluša zlonamjerni program, na koje adrese se pokušavao spojiti,
podatke koje je pokušavao poslati i slično. Zlonamjerni program moţe slati
ukradene podatke autoru putem mreţe ili pakete sa mnoštvom nepotrebnih
podataka u svrhu raspodijeljenog napada uskraćivanjem usluge [4]. Moţe
preusmjeravati korisnikov preglednik na neţeljene stranice ili slati neţeljenu
elektroničku poštu bez njegovog znanja. U neţeljenoj elektroničkoj pošti
često su sadrţane poveznice na zlonamjerne stranice ili drugi tipovi
zlonamjernih programa.
Prilikom analize zlonamjernog programa unutar izolirane okoline virtualnog
stroja, potrebno je "laţirati" mreţu kako bi zlonamjerni program dobio dojam
da je spojen na Internet. Potrebno je imati alat koji će sluţiti kao posluţitelj i
25
koji će zlonamjernom programu slati odgovore na njegove mreţne upite kako
je slučaj i kod spajanja na pravu mreţu.
5.3. Mamci
Za analizu zlonamjernog mreţnog prometa još se koriste sustavi poznati kao
mamci (engl. Honeypots). Ti sustavi sluţe kao "zamka" za zlonamjerne
programe. Ponekad ih se koristi da bi se "uhvatilo" najnovije inačice
zlonamjernih programa u svrhu njihove analize i dokumentiranja. Mamac se
sastoji od računala ili podataka koji izgledaju kao da su dio korisnikove
mreţe, ali su zapravo promatrani i izolirani. Oni stvaraju privid da sadrţavaju
informacije koje bi napadačima mogle biti zanimljive. Neki mamci se koriste
za otkrivanje programa koji šalju neţeljenu elektroničku poštu. Oni su
prerušeni kao primjerice otvoreni posluţitelji (engl. open proxy) ili otvoreni
SMTP posluţitelji elektroničke pošte (engl. open mail relay) kojima bilo tko
moţe pristupiti i mogu otkriti IP adresu napadača ili adrese elektroničke pošte
koje se koriste kao mete za testne poruke. Testnim porukama nastoji se
otkriti otvorene SMTP posluţitelje. Kako izgleda mamac vidljivo je na slici
5.1:
Slika 5.1. – Dijagram mamca
26
Prema načinu korištenja, mamci se mogu podijeliti na dvije skupine:
Produkcijki (engl. Production honeypots) - Jednostavni su za korištenje,
"hvataju" samo ograničen promet i koriste ih velike tvrtke.
Istraživački (engl. Research honeypots) - Koriste se za prikupljanje
informacija o namjerama i taktikama zajednice autora zlonamjernih programa
(engl. blackhat community). Kompleksniji su i teţe ih je odrţavati pa ih stoga
koriste vojne i vladine organizacije.
27
6. Virtualno okruženje za ispitivanje
Prilikom analize zlonamjernih programa postoji rizik da se računalo osobe
koja analizira zarazi zlonamjernim programom. TakoĎer, moguće je da se
zlonamjerni program putem mreţe proširi i na druga računala. Kako bi se to
izbjeglo, analiza se provodi unutar sigurnog i izoliranog okruţenja virtualnog
stroja. Ovaj rizik vrijedi posebice za dinamičku analizu kada se zlonamjerni
program pokrene i promatra se njegovo ponašanje na zaraţenom sustavu i
promjene koje nastaju pri tome.
Alternativno, moguće je provesti analizu na stvarnim računalima koja u tom
slučaju moraju biti odspojena s Interneta (engl. air-gapped networks) [1].
Dobra strana ovog pristupa jest što se zlonamjerni program moţe pokrenuti u
stvarnom okruţenju bez rizika za druga računala i ostatak mreţe. Nedostatak
je nepostojanje internetske veze s obzirom da zlonamjerni programi često
traţe spajanje na Internet kako bi skidali nove zlonamjerne programe,
komunicirali s autorom zlonamjernog programa, dohvaćali aţuriranja i slično.
6.1. Virtualni stroj
Shema virtualnog okruţenja za ispitivanje zlonamjernih programa dana je na
slici 6.1:
Slika 6.1. - Shema virtualnog okruţenja za ispitivanje zlonamjernih programa
28
Virtualni stroj je računalo unutar računala. Jedan virtualni stroj sadrţi
operacijski sustav Windows 7 i on će sluţiti kao "nosioc" zlonamjernog
programa koji će na njemu biti promatran. Drugi virtualni stroj sadrţi Remnux
koji sluţi kao posluţitelj unutar virtualne mreţe. Zlonamjerni program mora
imati dojam da je zaista spojen na Internet pa Remnux pruţa odgovore na
upite zlonamjernog programa prilikom simuliranja standardnih internetskih
protokola. Primjerice, zlonamjerni program se često spaja na HTTP
posluţitelj kako bi skinuo nove zlonamjerne programe. Potrebno je
zlonamjernom programu omogućiti pristup sustavu domenskih imena (engl.
Domain Name System) kako bi se ova aktivnost mogla pratiti. Zlonamjerni
program mora moći pristupiti DNS posluţitelju zbog IP adrese. Od verzije 4
nadalje, Remnux je dostupan kao OVF format (engl. Open Virtualization
Format) koji je izraĎen upravo za pokretanje unutar virtualnog stroja.
6.2. Metode protiv virtualnih strojeva
Mogući problem kod analize u virtualnom stroju jest što ponekad zlonamjerni
programi detektiraju da ih se analizira unutar virtualnog stroja i zbog toga se
počnu drugačije ponašati ili se uopće ne ţele pokrenuti. Metode protiv
virtualnih strojeva koriste zlonamjerni programi koji su jako rašireni i koji
ciljaju na velik broj potencijalnih ţrtava. Kategorije zlonamjernih programa
koje koriste te metode su primjerice špijunski programi i programi koji koriste
zastrašivanje. Razlog tome je što mamci često koriste virtualne strojeve.
MeĎutim, s obzirom da sve veći broj korisnika koristi virtualne strojeve u
svrhu koja nije analiza zlonamjernih programa nego jednostavno testiranje
nekih promjena na operacijskom sustavu u sigurnom okruţenju ili testiranje
kako će operacijski sustav reagirati na odreĎene programe, metode protiv
virtualnih strojeva sve su rjeĎe korištene.
U izgradnji virtualnog okruţenja koristi se VMware player. S obzirom na
njegovu veliku popularnost meĎu korisnicima i analitičarima zlonamjernih
programa, postoji nekoliko tehnika koje koriste zlonamjerni programi kako bi
29
otkrili sadrţi li zaraţeno računalo Vmware player i u skladu s time promijenili
svoje ponašanje.
Zlonamjerni program moţe pretraţiti zaraţeni operacijski sustav u potrazi
za datotekama, vrijednostima registara i procesima koji bi mogli upućivati na
prisutnost VMware playera na operacijskom sustavu.
Jedna metoda kojom se moţe "zavarati" zlonamjerni program jest da se
svim kritičnim podacima koji upućuju na prisutnost VMware playera
promijene imena tako da zlonamjerni program prilikom traţenja
odgovarajućeg naziva ne pronaĎe niti jedan znakovni niz koji sadrţi u sebi
naziv "VMware".
Druga metoda jest da se otvori kod zlonamjernog programa pomoću
nekog alata za analizu strojnog koda i promijeni se naredba koja provjerava
prisutnost VMware playera. Kad se pronaĎe naredba koja obavlja provjeru,
moţe se promijeniti u primjerice naredbu NOP te se ona tako nikada neće
izvršiti. Najčešće naredbe koje zlonamjerni programi koriste u ovu svrhu i
koje je potrebno mijenjati u programu za analizu strojnog koda su:
sidt
sgdt
sldt
smsw
str
cpuid
Treća metoda jest uklanjanje VMware Tools alata sa operacijskog sustava.
VMware Tools nisu nuţni za ispravno funkcioniranje virtualnog stroja nego
samo omogućavaju korisniku lakše korištenje vritualnog stroja i lakše
rukovanje njegovim sučeljem. VMware Tools ostavljaju trag u obliku aktivnog
procesa VMwareTray.exe kojega zlonamjerni program moţe otkriti
pretraţujući listu aktivnih procesa. Kada se VMware Tools ukloni sa
operacijskog sustava, proces VMwareTray.exe se više neće pokretati.
30
7. Statička analiza proizvoljno odabranog
zlonamjernog programa
Zlonamjerni program koji je odabran za analizu jest trojanski konj ZeuS.
Najčešće se koristi za kraĎu povjerljivih podataka kao što su lozinke
bankovnih računa korisnika. Jedan od najčešćih načina njegovog širenja je
putem neţeljene elektroničke pošte. Korisnik moţe primiti elektroničku poštu
koja izgleda kao da je od nekih poznatih tvrtki kao što je Facebook,
MySpace, Microsoft ili IRS. Poruka elektroničke pošte upozorava korisnika
na probleme s njihovim financijskim informacijama, mreţnim računom ili
programom i upućuje ga se na poveznicu u poruci. Poveznica sadrţi
zlonamjernu internetsku adresu koja zarazi korisnika nakon što je posjeti.
7.1. Provjera antivirusnim programima
Za početak, zlonamjerni izvodivi program (exe datoteka) poslana je na
stranicu Virustotal na analizu. Odmah se pojavila informacija da je
zlonamjerni program već prije bio analiziran, datum zadnje analize i datum
prve analize. To je vidljivo na slici 7.1:
Slika 7.1 - podaci o prethodnim analizama zlonamjernog programa
31
Vidljive su ponuĎene opcije da se pogleda zadnja analiza ili da se
zlonamjerni program podvrgne ponovnom analiziranju (engl reanalyse). S
obzirom da su trenutni podaci zastarjeli, odabrana je opcija ponovnog
analiziranja. Rezultat je vidljiv na slici 7.2:
Slika 7.2. - Rezultati ponovne analize promatranog zlonamjernog programa
Vidljivo je da zlonamjerni program ima jako velik omjer detekcije (engl.
Detection ratio). To znači da je dobro dokumentiran i da ga je 51 antivirusni
program od raspoloţivih 57 prepoznao. Ako se prijeĎe mišem preko ikone u
desnom kutu, moţe se pročitati da program ima reputaciju -100 na ljestvici
od -100 do 100. To potvrĎuje da je zlonamjeran. Vidljiv je početak popisa
antivirusnih programa koji su ga prepoznali. Nastavak tog popisa vidljiv je na
slici 7.3:
32
Slika 7.3. - Ostatak popisa antivirusnih programa i rezultati njihove analize
Većina antivirusnih programa prepoznala je ovaj zlonamjerni program kao
trojanski konj ZeuS. Neke od veoma korisnih informacija koje je moguće
dobiti na stranici Virustotal su i sva dosad dokumentirana imena ovog
zlonamjernog programa te podaci o PE zaglavlju i dinamičkim bibliotekama
koje će biti potvrĎene daljnjom statičkom analizom pomoću drugih alata.
Virustotal je takoĎer ispisao i vrijednost jedinstvenog md5 ključa ovog
zlonamjernog programa. Za provjeru da to zaista jest taj ključ, zlonamjerni
program podvrgnut je analizi pomoću programa za izračun vrijednosti
jedinstvenog ključa md5deep. Očekivano, dobiven je isti rezultat kao i na
stranici Virustotal i to je vidljivo na slici 7.4:
33
Slika 7.4. - Rezultat analize programom md5deep
7.2. Analiza zaglavlja PE datoteke
Sada kada je potvrĎeno da je ovaj zlonamjerni program uistinu ZeuS, moţe
se pregledati zaglavlje PE datoteke kako je prikazano na slici 7.5:
Slika 7.5. – Zaglavlje PE datoteke zlonamjernog programa
Na slici se moţe vidjeti datum kada je zlonamjerni program preveden.
Datum prevoĎenja je 24.03.2011. MeĎutim, analiza sa stranice Virustotal
pokazala je da je ovaj zlonamjerni program prvi put bio analiziran
26.05.2014. S obzirom da je vremenski razmak izmeĎu ova dva dogaĎaja
pune 3 godine, moţe se posumnjati da je ovaj datum prevoĎenja moţda
laţiran. Nadalje, moţe se pročitati da se radi o izvodivom programu koji je
moguće pokretati na računalima Intel 386 i kasnijima. To se moţe saznati iz
podatka IMAGE_FILE_MACHINE_I386.
34
7.3. Provjera znakovnih nizova
Sljedeći korak je provjera znakovnih nizova pomoću programa Strings.
Nakon pokretanja programa i analize ispis je bio preusmjeren u datoteku
Stringovi.txt radi lakšeg snalaţenja. Već na prvi pogled vidljivo je dosta
znakovnih nizova u ispisu što daje naslutiti da program vjerojatno nije
pakiran. Analizom znakovnih nizova moţe se dobiti okvirna slika toga što bi
zlonamjerni program trebao raditi. Naravno, dobar dio ispisa čine "laţni"
znakovni nizovi koji to zapravo nisu nego su vjerojatno memorijske adrese,
instrukcije procesora ili neki drugi podaci. MeĎutim, detaljnijom analizom
dolazi se do znakovnih nizova koji su korisni za analizu kao što je vidljivo na
slici 7.6.
Vide se nazivi nekih dinamičkih biblioteka koje zlonamjerni program koristi
i nazivi nekih zanimljivih funkcija. Microsoft vodi dobru dokumentaciju za
svaku od njih pa je moguće potraţiti opis svake od njih. Primjerice, po
funkcijama PR_OpenTCPSocket, PR_Close, PR_Read i PR_Write vidi se
da ovaj zlonamjerni program otvara novu TCP priključnicu (engl. socket) i da
moţe vršiti akcije zatvaranja, čitanja i pisanja nad deskriptorom datoteke
(engl. file descriptor).
Slika 7.6 - Dio ispisa znakovnih nizova programom Strings
35
Nadalje, vide se neke funkcije koje koriste Windows GDI+ API koji
omogućuje programima korištenje grafike i formatiranog teksta:
GdiplusStartup, GdiplusShutdown, GdiplusDisposeImage itd. Vidljive su
i neke funkcije koje sluţe za stvaranje konteksta i korištenje operacija za
crtanje: CreatecompatibleDC i CreateCompatibleBitmap. Ovo upućuje da
zlonamjerni program koristi neko grafičko sučelje. Daljnjim pregledavanjem
ispisa u datoteci Stringovi.txt nailazi se na blok "laţnih" znakovnih nizova, no
zatim opet dolazi blok zanimljivih funkcija koje upućuju da zlonamjerni
program koristi spajanje na Internet. To je vidljivo na slici 7.7. Vide se dijelovi
komunikacije sa posluţiteljem: HTTP/1.1, GET, HTTP/1. te još znakovnih
nizova koji upućuju na mreţnu aktivnost: Connection i Proxy-Connection.
Ovo upućuje da bi zlonamjerni program mogao komunicirati sa svojim
autorom kako bi mu slao podatke, dobivao naredbe ili dohvaćao aţuriranja.
Prisutne su i funkcije za manipulaciju procesima i funkcijama:
GetProcAddress, LoadLibraryA, NtCreateThread, NtCreateUserProcess,
RtlUserThreadStart.
Slika 7.7. - Nastavak ispisa znakovnih nizova programom Strings
Nakon toga ponovno u datoteci Stringovi.txt slijedi blok "laţnih"
znakovnih nizova i konačno na samom kraju datoteke ponovno se nailazi na
36
blok zanimljivih funkcija. Prisutna je biblioteka CRYPT32.dll i funkcije
CryptUnprotectedData, CertCloseStore, CertOpenSystemStoreW što
upućuje da zlonamjerni program koristi neki oblik kriptiranja. Vidljive su i
funkcije koje prate korisnikove poruke: GetMessageW, GetUpdateRgn,
GetClipboardData, PeekMessagew, GetCursorPos, GetMessagePos.
Ovo upućuje da zlonamjerni program vjerojatno ima svrhu špijuniranja
korisnika u svrhu kraĎe njegovih povjerljivih informacija.
7.4. Provjera pakiranja
S obzirom da je uočeno mnogo znakovnih nizova, pretpostavljeno je da ovaj
zlonamjerni program nije pakiran. To je moguće provjeriti ako se otvori
zlonamjerni program alatima za statičku analizu PE zaglavlja. Alat PE
Explorer otkrio je da zlonamjerni program nije pakrian niti jednim od najčešće
korištenih programa za pakiranje kao što se moţe vidjeti na slici 7.8:
Slika 7.8. – Detekcija da zlonamjerni program nije pakiran
7.5. Analiza dinamičkih biblioteka
Sljedeći korak analize je pregled dinamičkih biblioteka i funkcija koje one
sadrţe. Neke od tih funkcija mogle su se vidjeti u ispisu znakovnih nizova
programa Strings pa ih se ovdje neće iznova navoditi. Analizom pomoću
alata Dependency Walker, vidljivo je da zlonamjerni program pomoću
37
dinamičke biblioteke WS2_32.DLL moţe stvoriti novu mreţnu priključnicu i
da koristi funkcije za spajanje na mreţu. To je prikazano na slici 7.9:
Slika 7.9. – Funkcije dinamičke biblioteke WS2_32.DLL
Sljedeća dinamička biblioteka koja je posebno zanimljiva je
SECUR32.DLL. Njen prikaz pomoću alata Dependency Walker dan je na slici
7.10.
Slika 7.10. - Funkcije dinamičke biblioteke SECUR32.DLL
38
Kako je vidljivo sa gornje slike, funkcije iz ove dinamičke biblioteke
vezane su uz korisnikove podatke, lozinke te općenito autentifikaciju i zaštitu
sustava. To upućuje da je ovo vrlo vjerojatno špijunski program koji se tim
funkcijama sluţi za kraĎu korisnikovih povjerljivih podataka.
39
8. Dinamička analiza proizvoljno odabranog
zlonamjernog programa
Nakon što su sve mogućnosti statičke analize iscrpljene, kreće se s
provoĎenjem dinamičke analize zlonamjernog programa ZeuS. Bit će
pokrenut unutar virtualnog stroja koji je spojen u virtualnu mreţu sa drugim
virtualnim strojem na kojemu se nalazi Remnux koji sadrţi alate za laţiranje
mreţe te alate za analizu mreţnog prometa.
8.1. Pripremanje sustava za analizu
Prije pokretanja zlonamjernog programa podešena je simulacija internetskih
usluga primjenom alata fakedns i httpd start ugraĎenih u Remnux. Na
Remnuxu je takoĎer pokrenut alat Wireshark. Na virtualnom stroju koji će biti
zaraţen, pokrenuto je praćenje procesa alatima Process Monitor i Process
Explorer te je početno stanje sustava prije zaraze snimljeno alatom Regshot
kako je prikazano na slici 8.1:
Slika 8.1. – Prvi snimak sustava, prije zaraze
Pokrenut je Wireshark na sučelju eth0 i odmah je vidljiv ARP zahtjev
upućen na IP adresu virtualnog stroja na kojemu je Remnux i koji simulira
internetske usluge. To je vidljivo na slici 8.2.
40
Slika 8.2. – ARP zahtjev za IP adresom virtualnog stroja sa Remnuxom
Prije pokretanja, postavljen je filter na proces zlonamjernog programa u
alatu Process Monitor i pokrenut je alat Process Explorer.
8.2. Pokretanje zlonamjernog programa
Odmah nakon pokretanja, moţe se vidjeti aktivnost procesa zlonamjernog
programa ZeuS u alatu Process Monitor. To je prikazano na slici 8.3. Zbog
postavljenog filtera vidljiva je samo aktivnost zlonamjernog programa koji se
analizira.
Slika 8.3. – Prikaz aktivnosti procesa zlonamjernog programa
41
Nakon nekoliko sekundi, zlonamjerni program je izbrisao svoju izvodivu
datoteku iz direktorija na disku virtualnog stroja na kojemu je bio pokrenut.
Vidljive su aktivnosti poput stvaranja registarskih ključeva, stvaranje nove
dretve, učitavanja slike procesa u memoriju te otvaranja i zatvaranja
datoteka. U alatu Process Explorer vidljivo je da je stvoren novi proces
naziva epyc.exe. Ako se na njega klikne, odabere opcija Properties i potom
opcija Image, vidljivo je da je proces roditelj zlonamjerni program ZeuS. To
prikazuje slika 8.4.
Slika 8.4. – Proces epyc.exe kojeg je stvorio zlonamjerni program
Ako se klikne na gumb Verify pored imena procesa roditelja, vidljivo je da
proces nema potvrĎeni potpis što takoĎer upućuje na to da je zlonamjeran.
Ako se odabere kartica TCP/IP u izborniku Properties, mogu se vidjeti dvije
TCP veze kako prikazuje slika 8.5.
42
Slika 8.5. – Dvije TCP veze koje je pokrenuo zlonamjerni program
Ako se izvodiva datoteka epyc.exe pošalje na analizu na stranicu
Virustotal, analiza očekivano potvrĎuje da je to takoĎer komponenta
zlonamjernog programa ZeuS. Rezultati analize vidljivi su na slici 8.6.
Ponovno je vidljiv velik omjer detekcije što znači da je ovaj zlonamjerni
program dobro dokumentiran.
Slika 8.6. – Analiza ZeuS komponente epyc.exe
43
TCP veze su takoĎer vidljive i analizom mreţnog prometa u programu
Wireshark na slici 8.7. Vidljiv je i pokušaj spajanja na posluţitelja. Ako se
označi taj HTTP zahtjev, u donjem dijelu prozora alata Wireshark vidljive su
dodatne informacije o njemu.
Slika 8.7. – HTTP zahtjev za spajanjem na posluţitelja
Na slici je crveno označena adresa na koju se zlonamjerni program pokušao
spojiti. Ako se ova adresa pretraţi u internetskom pregledniku, vidljivo je da
ona pripada zlonamjernom programu ZeuS. Stranica koja sluţi za praćenje
posluţitelja ovog zlonamjernog programa naziva se ZeuS Tracker. Rezultati
o ovoj adresi koje je ispisala ta stranica vidljivi su na slici 8.8.
Slika 8.8. – Adresa za kojom je poslan HTTP zahtjev
44
TakoĎer, vidljiv je i jedan rezlutat u kojemu se navodi isti MD5 ključ koji je
dobiven prilikom statičke analize programom md5deep. To prikazuje slika
8.9.
Slika 8.9. – MD5 ključ koji je isti kao onaj koji je dobiven statičkom analizom
8.3. Analiza sustava nakon zaraze
Sljedeći korak analize jest snimanje sustava nakon zaraze alatom Regshot
kako prikazuje slika 8.10.
Slika 8.10. – Drugi snimak sustava, nakon zaraze
Ako se usporedi broj ključeva i broj vrijednosti sa slike 8.10. sa brojem
ključeva i brojem vrijednosti sa slike 8.1. (kada sustav nije bio zaraţen),
vidljivo je da ih sada ima više. Detaljnije informacije o tome dobivaju se
klikom na gumb Compare kojim se vrši usporedba dva snimka sustava i
rezultat dobivene usporedbe ispisuje se u tekstualnoj datoteci. Rezultati
usporedbe pokazuju da je zlonamjerni program dodao 14 ključeva i 45
45
vrijednosti te promijenio 28 vrijednosti. Dodani ključevi vidljivi su na slici
8.11.
Slika 8.11. – Ključevi koje je zlonamjerni program dodao
Sa slike je vidljivo da su ključevi vezani uz elektroničku poštu i preglednik
Internet Explorer. Dodane vrijednosti vidljive su na slici 8.12.
Slika 8.12. – Vrijednosti koje je zlonamjerni program dodao
46
MeĎu dodanim vrijednostima vidljivo je da je zlonamjerni program mijenjao
posavke vatrozida vezane uz TCP i UDP veze. Vidljive su i vrijednosti
vezane uz izvodivu datoteke epyc.exe koju je zlonamjerni program stvorio
nakon pokretanja.
47
9. Zaključak
Zlonamjerni programi najčešće imaju glavnu ulogu u izazivanju
sigurnosnih incidenata operacijskog sustava ili mreţe. Analiza zlonamjernih
programa proces je koji zahtijeva godine učenja i prakse. Svaki zlonamjerni
program je različit te se zbog toga prilikom analize nikako ne smije sluţiti
samo jednim pristupom. Ako se osoba koja analizira zlonamjerni program
naĎe u „slijepoj ulici“, potrebno je primijeniti neki drugi alat ili metodu analize.
Provodeći statičku, a potom i dinamičku analizu moţe se saznati mnoštvo
informacija o funkcijama i ponašanju zlonamjernog programa. Te informacije
mogu se iskoristiti za uklanjanje sigurnosne prijetnje iz sustava i
unaprjeĎenje mjera zaštite protiv sličnih sigurnosnih incidenata.
48
LITERATURA
[1] M. Sikorski i A. Honig. Practical Malware Analysis: The Hands- On
Guide To Dissecting Malicious Software. San Francisco: no starch press,
2012
[2] Mamci. URL http://en.wikipedia.org/wiki/Honeypot_(computing)
[3] Fakultet elektrotehnike i računarstva. Projekt iz područja računalne
sigurnosti, 2014 URL
http://os2.zemris.fer.hr/ns/malware/2014_15_ProjectMalware/Home/MainPag
e.html
[4] Raspodijeljeni napad uskraćivanjem usluge. URL
http://www.digitalattackmap.com/understanding-ddos/
[5] T. Christiansen. What's The plural of Virus, 1999 URL
http://linuxmafia.com/~rick/faq/plural-of-virus.html
[6] Microsoft Security. Spyware and Adware – Unwanted Software.
Published: October 23, 2006. URL http://malware.wikia.com/wiki/Spyware
[7] M. H. Ligh, S. Adair, B. Hartstein i M. Richard. Malware Analyst's
Cookbook and DVD: Tools and Techniques for Fighting Malicious Code.
Indianapolis: Whiley Publishing, Inc, 2011
Analiza zlonamjernih programa
Sažetak
Analiza zlonamjernih programa vaţan je pojam u području računalne
sigurnosti. Opisane su sigurnosne prijetnje koje uzrokuju zlonamjerni
programi i postojeće kategorije zlonamjernih programa. Nabrojani su i
ukratko opisani dostupni alati za analizu zlonamjernih programa. Opisani su
postupci statičke i dinamičke analize zlonamjernog programa te izolirano
okruţenje virtualnog stroja u kojemu se analiza provodi. Provedena je
statička i dinamička analiza nad proizvoljno izabranim zlonamjernim
programom.
Ključne riječi: zlonamjerni program, statička analiza, dinamička analiza,
virtualni stroj
Malware analysis
Abstract
Malware analysis is an important term in computer security. Security threats
caused by malware are described along with existing categories of malware.
Available malware analysis tools are listed and briefly described. Methods of
static and dynamic analysis are described along with isolated environment of
the virtual machine in which analysis is carried out. Static and dynamic
analysis of arbitrarily chosen malware are carried out.
Keywords: malware, static analysis, dynamic analysis, virtual machine