Cuckoo sandbox
Sadržaj |
Uvod
Takvi sustavi repliciraju barem minimalne funkcionalnosti potrebne za testiranje određenog programa ili neke određene izmjene na sustavu za koje korisnik nije siguran kako će se ponašati ili želi saznati dodatne informacije o samom ponašanju sustava tokom neke svoje interakcije. Kod sandbox sustava mogu se izvršavati, isprobavati i testirati razne aplikacije, web adrese,mijenjati određene postavke ali na način da ih se izolira, odnosno da im se onemogući pristup ili mijenjanje računala na uglavnom štetan način. Može se ograničiti pristup određenim resursima računala poput memorije računala, tvrdom disku ili nekoj drugoj komponenti koja bi mogla biti ugrožena. Osim samih računala „sandboxing“ štiti i servere te njihove podatke koji bi inače mogli biti ugroženi i oštećeni. Zaštićeni su i sustavi za distribuciju programskog koda koji bi mogli biti povezani sa samim programom ili sustavom.
Osim računalnim resursima, pomoću sandbox sustava moguće je onemogućiti pristup određenom poslužitelju, podacima sa vanjskih, ne provjerenih medija gdje se vrlo često nalaze i prenose zloćudni kodovi te mreži čime se mogu spriječiti napadi iz nekih vanjskih sustava. Određuje se razina pristupa dijelovima na računalu odnosno svakom programu se dodjeljuje virtualni prostor unutar kojeg može djelovati na ograničen način.
--Ihontic 10:50, 20. siječnja 2015. (CET)
Korištenje
Sandbox alati se najčešće koriste u sigurnosnim tvrtkama gdje je to neizostavan alat svakodnevnog poslovanja. Tim alatima poduzeća mogu testirati i izolirati neki netestirane promjene u kodu ili cjelokupno novi kod odnosno program te na temelju ishoda i raznih izvješća i praćenja detaljno razaznati što taj kod radi, kako se ponaša sustav i što se događa sa cjelokupnom okolinom. Isto tako ukoliko poduzeće primi neki kod od vanjsko suradnika, moguće je taj kod testirati i detaljno provjeriti. Sandbox sustavi su korisni takvim poduzećima ali i pojedincima jer mogu isprobavat i testirat software bez da naštete svojem sustavu što može biti vrlo pogubno. Također ti sustavi uvelike pomažu prilikom izrade određenih zaštita, poboljšanja i zakrpa na programima ali i cjelokupnim sustavima.
--Ihontic 10:50, 20. siječnja 2015. (CET)
Princip
Princip sandbox alata se često koristi kod programera na način da svoj kod, aplikaciju testiraju u svojem zaštićenom okruženju te pritom ispituju sve moguće scenarije, testiraju što se događa sa sustavom i aplikacijom te nakon što utvrde da je aplikacija sigurna i da funkcionira na način koji bi trebala, svoj kod prosljeđuju dalje svom timu ili na daljnji razvoj.
Cuckoo Sandbox
Cuckoo Sandbox je open source sistem izrađen od strane Cuckoo Foundation-a za automatsku dinamičku analizu malware-a, exploita, dokumenata, linkova i sumnjivih datoteka. Kako bi to postigao koristi razne komponente koje nadgledaju ponašanje zlonamjernih procesa prilikom izvršavanja u izoliranom okruženju. Cuckoo je dobar po tome što se sa njim može radit dinamička analiza, odnosno eventualni maliciozni kod se prati i pokreče u realnom vremenu i okruženju a zatim se kasnije može odradit i statička analiza.
Cuckoo je napisan u programskom jeziku Python te se vrti na u virtualnom okruženju odnosno VirtualBox-u. Cuckoo je odličan alata no sami postupak dizanja i podešavanja okruženja nije previše „user-friendly“. Instalacija se ne vrši kroz gotov paket nego ručno sa mnogo detaljnih postupaka i koraka na Linux operacijskom sustavu te korištenjem virtualizacijskih softvera i Python-a. Nešto više o samoj instalacije spomenuto je kasnije.
Preporučeno okruženje je GNU/Linux(najbolje Ubuntu) kao glavni host uređaj i Windows XP Service Pack 3 kao sustav koji se pokreće unutar virtualnog uređaja, tj kao gost. Osim navedene preporuke po službenoj dokumentaciji, Cuckoo se može pravilo pokrenut i na Mac OS X kao host i Vista ili Widnows 7 kao gost.
Prilikom pokretanja i analiziranja datoteka, Cuckoo prikuplja opsežne rezultate analize prikazujući pritom što ta datoteka odnosno zloćudni kod radi prilikom izvršavanja na izoliranom Windows sustavu. Prilikom analize, Cuckoo može prikupiti i generirati mnoge korisne podatke i rezultate te obavljati mnoge funkcije poput:
- Spremanje datoteke koje su se kreirale, brisale i preuzele prilikom izvršavanja malware-a
- Nadgledanje win32 API poziva i funkcija
- Nadgledanje i izvješćivanje o memoriji procesa od malware koji je pokrenut
- Kreiranje snimke, traga mrežnog prometa u PCAP formatu
- Izrađivanjeslike ekrana Windows-a snimljene tokom izvršavanja malware-a
- Spremljen potpuni „memory dump“ računala
- Primanje datoteka sa udaljenih URL-ova i njihovo analiziranje
Kako bi svi rezultati bili pregledniji, lakši za pregledavanje i dostupniji korisniku, Cuckoo može rezultate procesirati i kreirati različite oblike izvješća kao što su:
- JSON izvješće
- HTML izvješće
- MAEC izvješće
- MongoDB
- HPFeeds
Sam Cuckoo može analizirati sljedeće datoteke:
- Izvršne Windows datoteke
- DLL datoteke
- PDF dokumente
- Microsoft Office dokument
- URL-ove HTML datoteke
- PHP skripte
- CPL datoteke
- Visual Basic(VB) skripte
- ZIP datoteke
- Java JAR
- Python datoteke
--Dhrgar 10:48, 20. siječnja 2015. (CET)
Kratka povijest
Cuckoo Sandbox započeo je na „Google Summer of Code“ projektu 2010. godine unutar „The Honeynet Project“-a. Kreator samog Cuckoo Sandbox-a je Claudio Guarnieri koji je još uvijek glavni razvojni programer i voditelj samog projekta no od tada do danas je doživio veliki napredak i poboljšanja. Prvo beta izdanje programa objavljeno je u 5. mjesecu 2011. godine kad je i prvi put distribuiran. U 11. mjesecu 2011. godine puštena je u javnost verzija 0.2 kao prva stabilna verzija Cuckoo programa. Početko 2012. Cuucko objavljuje i Malwr.com koji predstavlja javnu,online pokrenutu verziju Cuckoo Sandbox-a sa potpuno integriranim korisničkim sučeljem gdje korisnici mogu predati neku datoteku na analizu i dobiti detaljno izvješće kao povratnu informaciju.
--Thop 08:39, 20. siječnja 2015. (CET)
Kako radi
Cuckoo započinje tako da kreira čistu snimku sustava te zatim kada se pokrenu određeni programi nadgleda, snima i istražuje promjene koje se događaju na sustavu uspoređujući pritom rezultate i otkriva sve maliciozne aktivnosti analiziranog sustava. Zahvaljujući svojem modularnom dizajnu Cuckoo može raditi kao samostalna aplikacija ali i biti integriran u neke druge okoline. Prilikom svake analize automatski se pokreće se nova izolirana virtualna mašina. Infrastruktura samog alata je sastavljena od glavnog host uređaja, odnosno Linux OS-a na kojem je instaliran Cuckoo i svi potrebni dodaci. Osim glavnog, host uređaja potreban je i “gost” odnosno guest mašina koja može biti virtualna mašina te u njoj određeni operacijski sustav ili fizički drugo računalo no takav način konfiguracije nije preporučljiv zbog mogućeg štetnog djelovanja na fizičku mašinu.
Glavi host uređaj izvršava glavne komponente sandbox-a koje rade cjelokupnu analizu dok su gostujuće, virtualne mašine izolirana okruženja gdje se zloćudni uzorak sigurno pokreće i analizira.
Slika 1: Arhitektura Cuckoo Sandbox-a(izvor)
--Thop 08:39, 20. siječnja 2015. (CET)
Instalacija
Instalacija Cuckoo Sandboxa
Instalacija Cuckoo Sandboxa je dosta komplicirana i zahtjeva podosta vremena jer u slučaju da preskočite ikoji korak vjerovatno neće raditi i izgubiti ćete puno vremena za popravljanje problema kao u našem slučaju. Pa počnimo!
Na početku ažuriramo linux i ažuriramo sve pakete koji trebaju biti ažurirani sa naredbama:
sudo apt-get update
sudo apt-get upgrade
Nakon ažuriranja trebamo instalirati okruženje u kojem će Cuckoo Sandbox raditi. Trebao python i toolkit za bazu podataka koje koristi sandbox.
sudo apt-get python
sudo apt-get install python-sqlalchemy python-bson
Prema službenoj dokumentaciji Cuckoo Sandboxa sada instaliramo zavisnosti koje koriste Python i Cuckoo. Ove zavisnosti su nam potrebne kako bi koristili većinu Cuckoo-vih značajki:
- Dpkt
- Jinja2
- Magic
- Pydeep
- Pymongo
- Yara i Yara Python
- Libvirt
- Bottlepy
- Django
- Pefile
- Chardet
sudo apt-get install python-dpkt python-jinja2 python-magic python-pymongo python-gridfs python-libvirt python-bottle python-pefile python-chardet
Kako bi instalirali ostale zavisnosti trebamo PIP na našem okruženju pa ga instaliramo sa
sudo apt-get install python-pip
sudo pip install cybox
Sada imamo PIP pa možemo instalirati ostale zavisnosti sa:
sudo pip install jinja2 pymongo bottle pefile django chardet
Nakon ovoga idemo instalirati virtualbox i tcpdump te postaviti direktorij gdje će spremati logove.
sudo apt-get install virtualbox
sudo apt-get install tcpdump
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
Sada možemo kreirati Cuckoo korisnika na linuxu sa
sudo adduser cuckoo
sudo usermod -G vboxusers cuckoo
Nakon kreiranja usera instaliramo SSDEEP
sudo apt-get install ssdeep
sudo apt-get install python-pyrex # required for pyssdeep installation
sudo apt-get install subversion
sudo apt-get install libfuzzy-dev
sudo svn checkout http://pyssdeep.googlecode.com/svn/trunk/ pyssdeep
cd pyssdeep
sudo python setup.py build
sudo python setup.py install
Pa trebamo Mongo
sudo apt-get install python-pymongo
sudo apt-get install mongodb
YARA
sudo apt-get install g++
sudo apt-get install libpcre3 libpcre3-dev
sudo wget http://yara-project.googlecode.com/files/yara-1.6.tar.gz
sudo tar -xvzf yara-1.6.tar.gz
sudo cd yara-1.6
sudo ./configure
sudo make
sudo make check
sudo make install
I Python Support
sudo wget http://yara-project.googlecode.com/files/yara-python-1.6.tar.gz
sudo tar -xvzf yara-python-1.6.tar.gz
sudo cd yara-python-1.6
sudo python setup.py build
sudo python setup.py install
Sada nakon instalacije svih potrebnih paketa možemo instalirati Cuckoo Sandbox. Odite na http://cuckoosandbox.org/download.html skinite zadnji verziju i ekstraktajte ju na desktop.
Sada treba složiti virtualnu mašinu koja će pokretati našeg hosta tj. Windows XP operativni sustav. Nakon virtualke treba konfigurirati vezu između sandboxa i hosta, ovo je najvažniji dio same instalacije i kod ovog dijela smo naišli na najviše problema.
Prvo instaliramo Windows XP u virtual box. Instalacija izgleda isto kao i instalacija na normalnom računalu pa to nećemo objašnjavati ovdje. Jedina trebate zapamtiti ime koje ste postavili za virtualnu mašinu na kojoj se nalazi Windows u našem slučaju se zove “cuckoo1” kao što ćete vidjeti u config datotekama u nastavku. Nakon što smo instalirali Windowse trebamo na njih skinuti Python i Python Image Library koji je potreban za snimanje ekrana.
Python možete pronaći na: https://www.python.org/getit/
Python Image Library na: http://www.pythonware.com/products/pil/
Sada možemo skinuti i programe koje trebamo kako bi “pokretali” malware kao PDF čitače.
OBAVEZNO: ugasiti ažuriranje Windowsa, ugasiti vatrozid, ugasiti obavijesti te onemogućiti servise koji se automatski pokreću pokretanjem Windowsa.
Još nam nedostaje agent.py tj. program koji obavlja svu komunikaciju između virtualne mašine i sandboxa. Agent se nalazi u direktoriju od Cuckoo Sandboxa unutar foldera agent.
Agenta trebate prebaciti na Windows kako god želite. Možete koristeći shared folder između virtualne mašine i ubuntua ili možete samo postaviti agenta na file hosting stranicu i skinuti ga direktno preko Internet Explorera u Windowsu. Nakon što je agent skinut postavite ga na radnu površinu i pokrenite ga ako vidite sljedeći ekran onda ste instalirali sve pravilno u virtual boxu.
Sada ugasite Windowse kako bi mogli postaviti adapter za internet preko kojega će virtualna mašina ići na internet. Adapter koji će virtualna mašina korisiti će biti hostonly i kreira se na sljedeći način(ovdje trebate ime vaše virtualne mašine):
vboxmanage hostonlyif create
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
vboxmanage modifyvm 'cuckoo1' --hostonlyadapter1 vboxnet0
vboxmanage modifyvm 'cuckoo1’' --nic1 hostonly
Nakon što smo kreirali adapter naša mašina neće biti spojena na internet jer mora imati statičnu ip adresu. Naše postavke za ip adresu su bile sljedeće.
Sada je konfiguracija virtualne mašine gotova i možemo napraviti snapshot koji će Cuckoo Sandbox svaki put pokretati kada mi pokrenemo našu analizu.
Još trebamo forwardati pakete kroz server kako bi internet radio. Koristeći sljedeće naredbe:
sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
Nakon konfiguracije virtualne mašine dolazimo do konfiguracije Cuckoo Sandboxa. Moramo izmjeniti ili provjeriti sljedeće datoteke koje se nalaze u direktoriju od sandboxa u folderu naziva conf
- auxiliary.conf
- cuckoo.conf
- kvm.conf
- virtualbox.conf
U nastavku ću prikazati koje smo dijelove config datoteka izmjenili kako bi osposobili Cuckoo Sandbox.
auxiliary.conf [sniffer]
#
Enable or disable the use of an external sniffer (tcpdump) [yes/no]. enabled = yes
#
Specify the path to your local installation of tcpdump. Make sure this
#
path is correct. tcpdump = /usr/sbin/tcpdump
#
Specify the network interface name on which tcpdump should monitor the
#
traffic. Make sure the interface is active. interface = vboxnet0
#
Specify a Berkeley packet filter to pass to tcpdump.
#
bpf = not arp
Provjerite putanju za tcpdump koristeći naredbu:
locate tcpdump
cuckoo.conf [cuckoo]
#
Enable or disable startup version check. When enabled, Cuckoo will connect
#
to a remote location to verify whether the running version is the latest
#
one available. version_check = off
#
Specify the name of the machinery module to use, this module will
#
define the interaction between Cuckoo and your virtualization software
#
of choice. machinery = virtualbox
#
Enable creation of memory dump of the analysis machine before shutting
#
down. Even if turned off, this functionality can also be enabled at
#
submission. Currently available for: VirtualBox and libvirt modules (KVM). memory_dump = on [resultserver]
#
The Result Server is used to receive in real time the behavioral logs
#
produced by the analyzer.
#
Specify the IP address of the host. The analysis machines should be able
#
to contact the host through such address, so make sure it's valid.
#
NOTE: if you set resultserver IP to 0.0.0.0 you have to set the option
#
`resultserver_ip` for all your virtual machines in machinery configuration. ip = 192.168.56.1
Ovdje treba ugasiti provjeru verzije, provjeriti ako je odabran virtual box kao software za virtualizaciju, uključiti memory_dump te postaviti ip servera koji postavljamo pod default gateway u Windowsima.
kvm.conf [kvm]
#
Specify a comma-separated list of available machines to be used. For each
#
specified ID you have to define a dedicated section containing the details
#
on the respective machine. (E.g. cuckoo1,cuckoo2,cuckoo3) machines = cuckoo1 [cuckoo1]
#
Specify the label name of the current machine as specified in your
#
libvirt configuration. label = cuckoo1
#
Specify the operating system platform used by current machine
#
[windows/darwin/linux]. platform = windows # Specify the IP address of the current virtual machine. Make sure that the # IP address is valid and that the host machine is able to reach it. If not, # the analysis will fail. You may want to configure your network settings in # /etc/libvirt/<hypervisor>/networks/ ip = 192.168.56.102
Ovdje postavljamo naziv naše virtualne mašine(cuckoo1) na sva mjesta gdje je to potrebno, provjeravamo ako je platforma postavljena na windows te odabiremo IP adresa naše virtualne mašine tj. ovaj ip upisujemo u statičku adresu Windowsa.
virtualbox.conf [virtualbox]
#
Specify which VirtualBox mode you want to run your machines on.
#
Can be "gui", "sdl" or "headless". Refer to VirtualBox's official
#
documentation to understand the differences. mode = gui
#
Path to the local installation of the VBoxManage utility. path = /usr/bin/VBoxManage
#
Specify a comma-separated list of available machines to be used. For each
#
specified ID you have to define a dedicated section containing the details
#
on the respective machine. (E.g. cuckoo1,cuckoo2,cuckoo3) machines = cuckoo1 [cuckoo1]
#
Specify the label name of the current machine as specified in your
#
VirtualBox configuration. label = cuckoo1
#
Specify the operating system platform used by current machine
#
[windows/darwin/linux]. platform = windows
#
Specify the IP address of the current virtual machine. Make sure that the
#
IP address is valid and that the host machine is able to reach it. If not,
#
the analysis will fail. ip = 192.168.56.102
Postavljamo mod virtual boxa na gui, provjeravamo ako je putanja do VBoxManage točna sa naredbom:
locate VBoxManage
Promjenimo sve nazive koje potrebno u naziv naše virtualne mašine(cuckoo1), provjerimo platformu te unesemo ip na koji će se virtual box spajati tj preko kojeg će ip-a ići svi podatci.
Nakon konfiguracije naš sustav za analizu izgleda ovako:
Sada smo napokon spremni pokrenuti i analizirati naš prvi file.
--Thop 09:15, 20. siječnja 2015. (CET) --Dhrgar 09:20, 20. siječnja 2015. (CET) --Ihontic 09:24, 20. siječnja 2015. (CET)
Pokretanje
U ovom dijelu objasnit ću i demonstrirat kako pokrenuti analizu malicioznog koda. Prikazat će se koraci na slikama koje smo uslikali kao slike zaslona, te naredbe koje smo koristili su bile unašanje u 3 različita terminala.
Prije nego što pojasnim kako se pokreče analiza, objasnit ću kako i od kud smo nabavili maliciozni kod. Prvo smo istražili na internetu koji su napoznatiji i najopasniji maliciozni kodovi. Nakon istraživanja, odabrali smo neke od tih jako poznatih i opasnih: Zeus, Conficker i CryptoLocker. Jednom kad smo odabrali neke od poznatijih, otvorili smo stranicu: https://malwr.com/ . Tamo smo potražili maliciozne kodove prema oznakama(pr. “zeus”, ”cryptolocker”, “conficker”). Nakon što smo pronašli željeni kod, skinuli smo tu datoteku i tada smo mogli pokrenuti analizu.
Prvi korak je da se koristi naredba za pokretanje virtualne mašine koja je potrebna Cuckoo Sandboxu:
sudo virtualbox
Nakon toga pokrečemo Cuckoo tako da pokrenemo ga uz pomoć naredbe:
sudo python cuckoo.py
Sada je Cuckoo spreman i čeka da mu se pošalje maliciozni kod na testiranje. Neki kod se prosljeđuje na analizu pomoću naredbe:
sudo python submit.py ime_koda
Nakon toga Cuckoo pokreće virtualnu mašinu i počinje analizirati maliciozni kod u njoj, a mi preko python agenta vidimo što se događa u pozadini. Cuckoo Sandbox također za to vrijeme snima sve što se događa i uz to radi snimke ekrana kad god se nešto novo pokrene ili dogodi. Osim snimki ekrana Cuckoo radi i detaljna izvješća koja se kasnije mogu pregledavati. Pokretanje detaljnih izvješća u web sučelju se pokreće naredbom:
sudo python web.py
Tada nam se u terminalu prikaže web adresa kojoj pristupamo do tog izvješća. To vidimo na slici ispod.
--Ihontic 10:49, 20. siječnja 2015. (CET)
Video koji prikazuje pokretanje Cuckoo Sandboxa
--Thop 09:36, 20. siječnja 2015. (CET)
Greške kod pokretanja
Ukoliko ste obavili cijelu instalaciju i resetirali računalo vjerovatno više neće funkcionirati Cuckoo Sandbox jer će vam javljati grešku kako IP na koji se želi povezati ne postoji. U ovom slučaju su moguća dva rješenja. Prvo je da niste pokrenuli virtualbox prije pokretana Cuckoo Sandboxa pa je samo potrebno virtulbox pokrenuti i ponovno pokušati pokrenuti Cuckoo Sandbox.
Drugo riješenje je ponovno postavljanje adaptera za virtualnu mašinu i forwardanje ipa koji su vam potrebni sa sljedećim naredbama:
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1 vboxmanage modifyvm 'cuckoo1' --hostonlyadapter1 vboxnet0 vboxmanage modifyvm 'cuckoo1' --nic1 hostonly
sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A POSTROUTING -t nat -j MASQUERADE
--Thop 08:39, 20. siječnja 2015. (CET)
Analize
Nakon što se pomoću Chuckoo Sandboxa pokrene određena datoteka za analizu te nakon što se analiza uspješno završi, pokreću se cuckoo web servisi pomoću web.py datoteke kako bi se pristupilo svojim rezultatima analize koji se spremaju u preglednom korisničkom sučelju. Rezultatima se pristupi tako da se u preglednik upiše adresa koja se ispiše u terminalu u Linux sustavu nakon završetka analize. U sučelju se nalazi popis svih uzoraka koji su testirani sa tog sustava te njihovi statusi.
Zeus
Kao primjer za analizu uzeto je nekoliko najpoznatijih zloćudnih programa. Prvi od njih je Zeus. Zeus je zloćudni kod iz porodice trojanskih konja koji se pokreću na WIndows operacijskim sustavima. Postoje razne inačice Zeus-a no najčešće služi za krađu informacija o bankovnim računima te za instalaciju CryptoLocker zloćudnog koda.
Odmah na početku izvješća prikazane su sve detaljne informacije o samoj datoteci koja je analizirana.
Na dnu tablice sa podacima o samoj datoteci nalazi se podatak koliko je antivirusnih programa detektiralo testirani sločudni kod. Zeus koji je ovdje testiran preuzet je sa malwr.com[1] stranice te se u stupcu VirusTotal vidi da ga otkriva većina antivirusnih programa odnosno 42/54 u ovom slučaju. Može se i posjetiti VirusTotal te detaljno pregledat koji antivirusni programi su ga detektirali.
Nakon informacija o datoteci, nalaze se snimke ekrana koje se snimaju prilikom svake promjene na uređaju na kojem se izvršava zloćudni kod. U ovom slučaju zloćudni kod je unutar PDF dokumenta koji se tokom analize pokrenuo. PDF dokument nudi korisniku još i opcije za “zaradu” upisivanjem svoje email adrese što je naravno dio štetnog djelovanja samog Zeus-a.
Nakon snimki ekrana, dolazimo do statičke analize. Kod polja statičke analize postoje četiri podsekcije:
- .text - Ova sekcija bi trebala sadržavati programski kod
- .rdata - Sadrži informacije o uvozu i izvozu informacija
- .data - Sekcija sadrži globalne podatke programa
- .rsrc - Ovdje se nalaze resursi potrebni od izvršnog programa poput slika, ikona i slično
U polju “Size of Raw Data” vidi koliko koji dio zauzima memorije na uređaju.
Kada pogledamo sekciju “Strings” vidimo puno nečitljivih stringova.
Kod importova vidimo koje su datoteke dodane kod pokretanja
Sve datoteka koje su importane možemo naći na internetu i možemo saznati za što se mogu koristiti.Uzet ćemo neke od importanih datoteka i objasniti što bi napadači mogli pokušati napraviti sa njima:
Library KERNEL32.dll:
- LoadLibrary and GetProcAddress - 2 datoteke koje se nalaze u KERNEL32.DLL se koriste kako bi program dobio pristup bilo kojoj funkciji u bilo kojoj biblioteci u sustavu.
- VirtualAlloc import nam pokazuje kako možda ubacuju nove procese.
- Koristeći IsDebuggerPresent se provjerava ako se program debagira i ako se to događa onda može promjeniti svoje ponašanje. Ovo se koristi kako bi se otežao posao programerima koji debagiraju viruse kako bi saznali kako rade.
Library OPENGL32.dll - nam govori kako ima grafičke sposobnosti tj. kako vjerovatno ima GUI
Library USER32.dll:
- CreateWindowExW i SetForegroundWindow - sa ovim datotekama napadač može kreirati novi prozor i povući ga ispred svih ostalih prozora.
Ovdje sam uzeo samo neke od mnogih datoteka koja se su se nalazile u importovima i kada bi detaljno proučili sve saznali bi puno više o malware-u.
Onda možemo pogledati sekciju Dropped Files gdje vidimo koje je datoteke program kreirao i ostavio na zaraženom računalu. Svaku od tih datoteka možemo pogledati na Virustotalu i daljnje analizirati koristeći podatke sa te stranice.
Onda imamo sekciju Behaviour gdje vidimo gdje se malware kreatao i koje je promjene radio u registru.
I u sekciji procesi vidimo koje je procese pokrenuo
Zanimljivost
Slučajno smo pokrenuli zeusa bez interneta i bez adobe readera pomoću kojega bi otvorio pdf pa je malware pokušao instalirati adobe reader koristeći search for programs on the web opciju koju Windows nudi
--Thop 08:24, 20. siječnja 2015. (CET)
CryptoLocker
Sljedeći malware koji je pokrenut i analiziran sa Cuckoo Sandbox-om je CryptoLocker. Ova vrsta zloćudnog koda napada Windows operacijske sustave uglavnom kada ga korisnici preuzmu putem email privitaka. Kad se aktivira, kriptiraju se određene datoteke spremljene lokalno koristeći RSA kriptografiju te je privatni ključ spremljen samo na serveru od zloćudnog koda.
Kod koji je ovdje analiziran je u obliku exe datoteke koja se sama pokreće prilikom analize. Kod početnih informacija o samoj datoteci koja je testirana vide se svi osnovni podaci toj datoteci te koliko antivirusnih programa je detektiralo ovaj zloćudni kod (47/56).
Zatim se u sekciji statičke analize nalaze podaci o verziji dateoteke, sekcije odnosno dijelovi od kojih je sastavljena datoteka te koliko prostora zauzimaju u memoriji. U sekciji uvoza, odnosno “Imports” vide se importovi od datoteke tj sve što se importa prilikom pokretanja datoteke.
U Libary KERNEL32.ddl nalazimo:
- CreateFileA import te još neke importove koji su povezani sa datotekama te daju naslutiti kako zloćudni kod radi nešto sa određenim datotekama na računalu.
- VirtualAlloc import pokazuje da datoteka alocira određeni dio memorije te ubacuje određene procese.
- CreateProcess znači da bi datoteka mogla kreirati neke nove procese sa svojim dretvama.
Nakon toga vide se i neki importovi poput GetStartupInfo pomoću kojih datoteka može prikupljati i neke informacije o računalu prilikom pokretanja.
Zatim se vidi kako program korisi i USER32 biblioteke. U ovom dijelu se može vidjeti što će možda aplikacija koristiti tokom izvođenja, tj dali će integrirati sa korisničkim sučeljem.
Tu se nalaze importovi poput:
- SetForegroundWindow kojim aplikacija dretve koje su kreirane u određenom prozoru stavlja u prednji plan.
- GetKeyState, GetFocus, GetCapture daju naslutiti da aplikacija prati korisnikove interakcije na sustavu.
Aplikacija koristi još i neke druge biblioteke poput GDI32 koja je povezana sa kreiranjem određenih grafičkih elemenata te WINSPOOL.DRV gdje aplikacija koristi importove za korištenje printera računala.
Svi importovi koji se koriste kogu se pronaći na službeinm dokumentacijama Microsoft-a te se lako može prilično detaljno analizirati što aplikacija radi ili može raditi.
U sekciji “Dropped Files” nalaze se datoteke koje je analizirani zloćudni koda kreirao. Kod trenutnog primjera vidi se da su kreirane 3 datoteke te odairom svake mogu se pregledati dodatni detalji:
- Kreirana jedna exe datoteka - CryptoLocker.bin
- XML dokument - FQF2494.tmp
- Jedna prazna datoteka - autoexec.bat
Zatim sljedi sekcija “Network Analysis” gdje se vidi promet koji je testirani kod ostvario. Testirani CryptoLocker poslao je mnogo DNS Request-a prema mnogobrojnim sumnjivim domenama U sekciji “Behavior Summary” može se vidjeti što je sve aplikacija radila po računalu korisnika. U konkretnom primjeru vidi se da se pristupalo podacima o pregledniku, coockie datotekama korisnika, povijesti pregledavanja interneta te još mnoge druge datoteke.
U sekciji “Mutexes vidi se da je aplikacija razne mutex objekte uglavnom povezane sa podacima o internet datotekama. Također velika aktivnost vidi se i u registrima Windows-a što znaćči da aplikacija pristupa određenim konfiguracijskim podacima računala.
Kod sekcije procesa vide se procesi koje je analizirani program pokrenuo. Odabirom određenog procesa vide se svi detalji što je koji proces radio, kojim datotekama je pristupao i kako se ponašao u memoriji.
Cuckoo je kreirao i snimke ekrana tokom izvođenja no na tim snimkama se ne vidi nikakva interakcija jer se zloćudni kod izvodi u pozadini.
Iz svega zaključenog, testirana datoteka sakuplja podatke sa sustava i podatke o korisniku tokom izvođenja. Također u velikoj mjeri čita privatne informacije sa korisnikovog preglednika i pokreće određene procese u pozadini.
--Dhrgar 10:50, 20. siječnja 2015. (CET)
Confiker
Ovaj maliciozni kod smo odabrali jer je dosta poznat, pa čak na nekim blogovima ga ubrajaju u top 5 najopasnijih. Postoji više verzija, ali sve verzije uglavnom isključe važne sistemske servise i sustave za sigurnost poput Windows Defendera. Također spriječava korisnika da posjeti određene web stranice, pogotovo one koje bi nam dopustile preuzimanje sigurnosnih zakrpa. Širi se pomoću razmjene podataka pomoću eksternih diskova i usb uređaja i sam sebe kopira u Windows system mapu. Na usb uređaj kopira datoteku koja kad se usb koristi omogućuje prikaz još jedne opcije kod samopokretanja(eng. Autoplay). Ako se klikne na tu dodatnu opciju, tada se crv širi i dalje. Conficker je poznat još i kao Downup, Downadup i Kido. To je maliciozni kod iz porodice crva koji traži mane u operacijskom sustavu Windows i pokušava izgraditi svoj botnet pomoću zaraženih računala. Ovaj maliciozni kod kombinirao je skoro sve napredne maliciozne kodove, pa ga je zbog toga bilo dosta teško ukloniti sa računala.
Na slici vidimo općenite informacije nakon završetka analiziranja. Prema VirusTotal-u ovaj maliciozni kod otkriva 43 od 46 antivirusnih programa.
Na sljedećim slikama se vide importovi koje je maliciozni kod izradio.
Library KERNEL32.dll. U ovom dijelu pronašao sam da koristi funkcije LoadLibraryA, GetProcAddress, VirtualAlloc i VirtualProtect. Te funkcije nam pokazaju da je maliciozni kod možda baratao sa zaštitama pozvanih procesa u virtualnom adresnom prostoru. Također postoji mogućnost da je ubacivao neke druge procese i poziva određene module u adresni prostor pozvanog procesa.
Library USER32.dll. Ovaj library se koristi standardne elemente grafičkog sučelja poput interfejsa, desktop pozadine, prozora i menija. To vidimo na slici da je otvoren novi prozor tijekom analize.
U ovom dijelu za oko su nam zapele dvije funkcije: GetWindowDC i GetDesktopWindow. Te funkcije dohvaćaju potrebne elemente za rad s prozorom koji je bio otvoren tijekom analize.
Library ADVAPI32.dll: koristi se za naprednije servise: pristup Windows registrima, uključivanje/ponovno pokretanje računala, rad sa Windows servisima, upravljanje korisničkim računima
Library MSVCRT.dll: između ostaloga omogućuje alokaciju memorije. Funkcija malloc služi za alociranje blokova u memoriji.
Library GDI32.dll: ovaj library se koristi za primitivne funkcije crtanja za prikaz na ekranu ili za ispis na printer. Trenutno najmanji problem.
Library SHELL32.dll: funkcije za pristup web stranicama.
--Ihontic 16:13, 20. siječnja 2015. (CET)
Zaključak
Nakon izrade cjelokupnog projekta, upoznavanja sa Sandbox sustavima, kako i što rade te čemu služe te upoznavanjem sa samim Cuckoo Sandbox sustavom možemo utvrditi da su sandbox sustavi neizostavan dio današnjeg razvoja i testiranja software-a. Sam Cuckoo Sandbox je jedan vrlo napredan sustav koji može analizirati gotovo sve vrste datoteka koje korisnik poželi te se može preporučit u naprednom testiranju i analiziranju zloćudnog koda. Iako je sam postupak instalacije, dizanja sustava i cjelokupnog okruženja prilično zahtjevan i kompliciran te zahtijeva određeno znanje Linux i Python okruženja, nakon cijelog tog postupka Cuckoo sam radi automatsku dinamičku analizu te sprema sve rezultate koje korisnik želi. Iako na tržištu postoje razni konkurentni alati za analizu, Cuckoo je specifičan po svojoj modularnosti te mogućnosti integracije u neke druge sustave te „real-time“ analize tako da korisnik može vidjeti što se događa sa sustavom na kojem je određena datoteka pokrenuta. Analiza koju smo proveli nad određenim štetnim datotekama pokazale su da zloćudni kodovi često ne pokazuju nikakve vizualne promjene na sustavu te korisnik često može imati zaraženo računalo bez da je o tome svjestan te analizirane datoteke pristupaju mnogobrojnim podacima korisnika te kreiraju razne procese. Iako većina poznatih antivirusnih zaštita otkrije zloćudne kodove, postoje još mnogobrojni malware-i koje je teško detektirati te stoga treba biti vrlo oprezan sa korištenjem računala, interneta i vanjskih medija.
Literatura
- [1]http://en.wikipedia.org/wiki/Sandbox_(computer_security)
- [2]http://www.cert.hr/sites/default/files/CCERT-PUBDOC-2009-03-259.pdf
- [3]http://en.wikipedia.org/wiki/Sandbox_(software_development)
- [4]http://www.cuckoosandbox.org/index.html
- [5]http://docs.cuckoosandbox.org/en/latest
- [6]http://www.howtogeek.com/169139/sandboxes-explained-how-theyre-already-protecting-you-and-how-to-sandbox-any-program
- [7]http://www.cis.hr/sigurosni-alati/okruzenje-za-proucavanje-malicioznih-programa.html
- [8]http://www.behindthefirewalls.com/2013/10/tatic-analysis-packed-malware-cuckoo.html
- [9]http://www.behindthefirewalls.com/2013/10/static-analysis-of-packed-malware.html