петак, 5. јул 2013.

Pakiranje - nova glavobolja

Pišući o tehnikama reverznog inženjeringa, pomenula sam statičke i dinamičke tehnike.  Takođe, bilo je riječi o detekciji na bazi potpisa   i različitim načinima izrade malicioznog koda koji uključuju metode „prikrivanja“ zle namjere unutar samog koda – polimorfizam.

I dok se polimorfizam bazira na enkripciji malicioznog koda, što komplikuje njegovo otkrivanje , pakiranje ide korak dalje: dodaje se nekoliko slojeva, nivoa, kompresije i enkripcije istovremeno. Ovakve tehnike mogu biti otkrivene i rekonstruisane samo dinamičkom analizom – izvršavanjem programa u testnim uslovima u realnom vremenu, i analizom rezultata.

Dolazeći do algoritma pakiranja, reverznim inženjeringom, AV stručnjaci razvijaju AV-engine, mehanizam koji će prepoznati pakirani maliciozni kod, i „otpakovati“ ga istom rutinom, unazad. I onesposobiti.
Djeluje jednostavno, ali danas je ovo jedan od najvećih izazova AV industrije. Veliki procenat (oko 80%)  malvera je još uvijek „zapakovan“ , postoji preko 200 familija tzv. „pakera „ (rutina za pakiranje) i do 2000 varijanti svake familije ( izvještaj Simanteka za 2008, danas sigurno i više).
Jasno je, da bi se napravio algoritam za raspakivanje mora biti potpuno poznat algoritam pakiranja, a vrijeme otkrivanja tog algoritma za jedan „paker“ je od šest sati do šest mjeseci.

Dakle, kao što sam rekla, radi se o više slojeva pakovanja, pri čemu je nepoznato koliko, a svaki sloj koristi svoj algoritam. Osim što se koristi polimorfizam, na djelu je često i metamorfizam – pa se na kraju enkriptuje i čitav sadržaj.
Pojednostavljeno, to izgleda ovako: Maliciozni softver  analizira vlastiti kod, i dijeli ga u blokove. Svaki od blokova mutira nezavisno, instukcije se zamjenjuju semantički identičnim, ali je rezultat drugačiji, jer se blokovi „ispremještaju“. Kao rezultat toga, pokretanje istog virusa na različitim mjestima daće različit izgled koda (ukoliko bi analizirali statički), pa je dinamička analiza jedini način da se razotkriju ovakvi algoritmi.







Izazovi AV industrije su svakim danom sve veći. Po podacima Simanteka iz 2008, AV industrija je dobijala preko 25.000 semplova malicioznog softvera dnevno. Jasno je da prvobitni pristup sa čuvanjem i distribucijom baza potpisa ne može „pokriti“ problem. Dinamička analiza i algoritmi za otkrivanje zahtijevaju od AV stručnjaka da razmišljaju kao kreatori virusa, i da izučavaju iste metode i tehnike kako bi ih mogli primjeniti u borbi pritiv malicioznog softvera, i spriječiti razvoj ove visokoprofitne i visoko kriminalne oblasti andergraund ekonomije.

U nastavku je link na studiju o OmniUnpack metodi dinamičke analize i raspakivanja, koja daje detaljan opis onog što sam ovdje načela – LINK ,

A takođe i još jedna studija o dinamičkoj analizi - LINK

среда, 3. јул 2013.

Nastavak istorije: Doba sajber kriminala


Teško je odrediti vrijeme, ali otprilike krajem prvog desetljeća ovog vijeka, oko 2006. počinje nova era u eksploataciji ranjivosti računarskih sistema.
Glavni motiv napada postaje novac, i napadi na računarske sisteme širom svijeta postaju noćna mora, kako za AV industriju, tako i za proizvođače operativnih sistema i legalnog softvera, ali i za kompanije.

Prvi pokušaji su bili potpuno neskrivenih namjera. 2006. pojavljuju se prvi "Rogue AV" programi , lažni "antivirusi" koji su se pokretali obično posjetom zaraženom sajtu. Tada se pokreće program koji se predstavlja kao antivirus, obavještava korisnika o navodnoj šteti na računaru od nekog virusa, i traži 10 - 100$ da se to otkloni. Prve verzije nisu pravile štetu na zaraženom računaru, osim iznude para, ali danas imamo lažne antiviruse koji pored toga zaista i pobrišu ili sakriju dio resursa.
2007. je godina pojave poznatih malvera ZeuS i Storm. Storm je pear-to-pear botnet čija je aktivnost spamovanje i zagušenje mreže. ZeuS je teško svrstati u pravu kategoriju, sa jedne strane je trojanac, ali i botnet. Danas se male ZeuS botnet mreže mogu kupiti ili iznajmiti. Trojan komponenta služi za krađu informacija, prvenstveno finansijskih. Pored ZeuSa, u posljednje vrijeme imamo još jednog poznatog "bankarskog" trojanca, SpyEye. Mobilne varijante ZeuS i SpyEye malvera su Zitmo i Spitmo.

U ovom istorijskom trenutku već se može pričati o velikim finansijskim dobicima kroz nelegalne radnje i korišćenje malicioznog softvera kroz računarske mreže i sisteme.

2008. je na neki način godina otrežnjenja i shvatanja da se borba protiv malicioznog softvera mora intenzivirati, i da su napadači prešli "ispred".  To je takođe godina ekspanzije botnet mreža.
2008. imamo Mebrot, Torpig i Koobface , platforme koje objedinjuju botnet i trojance i služe za krađu podataka.
Mebrot i Torpig su objašnjeni ranije , a Koobface ( anagram od Facebook) je dizajniran kao veb sajt koji je napadao korisnike mreže Fejsbuk i služio kao neka vrsta instal-servisa ( podraška za instaliranje ostalih malvera na zaraženi računar).
2009. Conflicker, slično kao Torpig, koristi dimenzionirane algoritme za kreiranje novih domena koji omogućuju nove "kontakte" sa žrtvama. Takođe, stvari se dodatno komplikuju, jer se uvodi koncept "pakiranja" .

Dakle, više nema nikakve sumnje da je zarada postala glavni motivator napadača, te da su gubici nastali djelovanjem malicioznog softvera veliki. Više nema nikakve sumnje da se radi o kriminalu.

Slike koje slijede najbolje opisuju dati istorijski pregled.



Izvor: IKARUS Security Software GmbH






Botnet

Botnet  (naziv nastao kombinovanjem riječi  roBOT i NETwork), predstavlja mrežu zaraženih računara kontrolisanu sa jednog mjesta ( bot master).  Vlasnici računara u botnet mreži najčešće nisu ni svjesni svoje “uloge”. Tu su se našli zbog slabe antivirus i firewall zaštite. Ovakve zlonamjerne konstrukcije najčešće se koriste za DoS napade, različite vrste spamovanja, “ click-fraud” , ali isto tako, prelaskom namjene malicioznog softvera iz sfere zabave u sferu zarade, botnet mreže su sve više instrument za krađu velikog broja finansijskih i ličnih informacija koje imaju vrijednost na tržištu.

Kao i mnoge stvari u nauci i tehnologiji koje su se vremenom “otele kontroli” i botnet mreže su počele kao potpuno benigna stvar. Ako definišemo da je Bot programčić koji je autonoman na nekoj mašini i izvršava zadatak u okviru mreže - prve botnet mreže  bile su zapravo IRC ( Internet Relay Chat).  I danas postoje servisi za “ćaskanje” koji su zapravo legalni botneti, NickServ – servis koji omogućuje sagovornike kao čvorove u komunikaciji i kanal između njih.

Problem nastaje sa početkom zloupotrebe IRC komunikacije, prvo kao mali IRC “ratovi”, a zatim i “preuzimanja” komunikacionih kanala većih razmjera, DoS napadi, i zloupotrebe IRC čvorova bez znanja njihovih vlasnika. IRC bot može da se nađe i na Internetu  http://www.eggheads.org/ , ova se stranica još uvijek održava  #lol.

Kako smo došli dovde? Istorija razvoja botneta izgleda u najkraćem otprilike ovako:
Rane ’90 – IRC botovi i automatizovano upravljanje IRC kanalima
1999. – 2000. – distribucija DDoS alata ( Trinoo, TFN2k, Stacheldraht)
1998. – 2000. – Trojanci - udaljena kontrola ( BackOrifice2k, SubSeven)
2001. – danas Crvi ( Worms) – širenje ( Code Red, Blaster, Saser)

Suštinski,  kao što sam rekla na početku, botnet je samo mreža zaraženih računara, hostova, na kojima „čuče“ maliciozni programi zvani botovi. Njima upravlja pomoću udaljene kontrole neka organizacija ili pojedinac, sajber kriminalci. Komunikacija je dvosmjerna od mastera prema hostu i nazad kroz komunikacioni kanal koji se zove C&C ( Control and Communication Chanell) , i može biti izveden u različitim topologijama. Kad govorimo u brojkama, postoje podaci da je danas u botnet mreže na svijetu uključeno preko 12 miliona računara (ne računajući novi trend, mobilne mreže), a ova kriminalna infrastruktura se može "iznajmiti" za manje od sto dolara.

Ono što je pravi problem je: kako se kreiraju i održavaju botnet mreže, zašto se kreiraju i kako se to sve zajedno može izbjeći ili ublažiti.
Samo kreiranje svodi se na to da se zarazi što više računara. Kako jedan host može postati bot? Na jako puno načina: nekad su „crvi“ bili najpopularniji, jer su se brzo širili mrežom, a danas je najčešći način zaraze „drive-by-download“ , Sql-injection, Cross-site-scripting , zapravo bilo koji danas poznati način propagacije virusa. U svakom slučaju, cilj je da žrtva instalira bot-program na svoju mašinu i „stupi u službu“  botnet mreže.
Kontrola nad ovim mrežama vrši se koristeći karakteristike samog C&C kanala ( Fast Flux, domain flux, push/pull/P2P).
Razlog kreiranja botnet mreža danas je isključivo zarada, i tu se ne treba zavaravati. Radi se o kriminalnim radnjama.

Osim pomenutih IRC botneta imamo i naprednije varijante HTTP botnete i P2P botnete. HTTP botneti koriste ranjivosti DNS servera i tako „švercuju“ maliciozni kod na host koji žele da zaraze ( npr. domain flux). P2P botneti se baziraju na prostom pretraživanju mreže, otkrivanju ključeva za pojedine proksije i „ulazak“ u mrežu. Dalje, kad se ima port i IP adresa,  sve je na nivou pear-to-pear komunikacije. Najpoznatija P2P botnet mreža je Storm.

Dakle, šta se preduzima? U analizi i suzbijanju botnet mreža, najvažnija tačka je prepoznati, a zatim i sprečiti, da dođe do „susreta“ botmastera i hosta žrtve ( AV stručnjaci to nazvaše rendez vous, pa recite da IKT ljudi nisu duhoviti i šarmantni) . To se radi različitim mehanizmima detekcije napada, i zaštitama na različitim komunikacionim nivoima ( prvenstveno preko ACL's - liste pristupa, na mrežnom nivou, HTTP i DNS)
Za detekcije mreže koje imaju za cilj pronalaženje botneta i potencijalnih botneta  (Bot Miner) danas je razvijeno nekoliko metoda, od kojih su najpoznatije A-Plane Monitor ( ko šta radi? ) i C-Plane Monitor ( ko razgovara sa kim? )

Predlozi za čitanje:

Your Botnet isMy Botnet: Analysis of a Botnet Takeover, Brett Stone-Gross, Marco Cova, Lorenzo Cavallaro, Bob Gilbert, Martin Szydlowski,Richard Kemmerer, Christopher Kruegel, and Giovanni VignaUniversity of California, Santa Barbara

Behavioral Clustering of HTTP-Based Malware and Signature Generation Using Malicious Network Traces
Roberto Perdiscia; Wenke Leea, Nick Feamstera, College of Computing, Georgia Institute of Technology, Atlanta,

Mining the Network Behavior of Bots, Lorenzo Cavallaro, Christopher Kruegel, and Giovanni Vigna, Department of Computer Science, University of California, Santa Barbara, July 16, 2009

уторак, 2. јул 2013.

Reverzni inženjering

 
                               
 

Reverzni inženjering u programiranju je najjednostavnije rečeno rekonstrukcija koda ako imamo samo izvršnu (.exe) verziju. Zašto je to potrebno?

Većina koda se isporučuje upravo u izvršnim verzijama, da bi se zaštitila autorska prava s jedne, i da bi se program zaštitio od zlonamjernih izmjena koda sa druge strane.
Međutim, napadači se služe metodama reverznog inženjeringa da bi rekonstruisali izvorni kod, a zatim u njega ubacili maliciozne komponente.

Da bi držali korak sa njima, odnosno predupredili njihove akcije, inženjeri u AV industriji bave se analiziranjem reverznog inženjeringa i načinima kako u kod ubaciti ometajuće elemente, koji će onemogućiti proces deasembliranja (code obfuscation).

Proces reverznog inženjeringa počinje sa deasembliranjem, što je proces prevođenja mašinskog koda ( u kome je izvršni fajl) u asembler (program višeg nivoa nego mašinski, koji se obraća procesoru, ali daleko nižeg nivoa od programskih jezika).

Svaki procesor ima svoj asembler, s obzirom na arhitekturu. Prevođenje mašinskog koda u asembler je jedan-na-jedan mapiranje, ali je asembler mnogo "čitljiviji" , odnosno lakši za razumijevanje.
Sretala sam ljude kojima je i mašinski jezik bio čitljiv, i koji su programirali direktno u "mašincu", ali to pripada ranijim periodima razvoja računarstva, i teško da danas neko razvija te vještine. Asemblerski jezik takođe zahtijeva ne samo poznavanje jezika, već i dobro poznavanje arhitekture računara, budući da se direktno obraća procesoru, memorijskoj lokaciji, registru.

Deasembliranje se vrši instrukcija po instrukcija, grana po grana (ovo je sad jako pojednostavljeno rečeno, ali to je suština). Važno je da se tačno razumije ponašanje programa bez njegovog izvršavanja. Ovo je zapravo dosta težak posao.
Ali da zakomplikujem još malo. Deasembliranje može biti statičko i dinamičko.
Statičko obrađuje čitav izvršni fajl odjednom, kao cjelinu, ali bez njegovog izvršavanja.
Dinamičko podrazumijeva izvršavanje dijelova programa sa zadanim ulazima, i rekonstrukcija na osnovu ponašanja. Ovaj vid deasembliranja više se koristio kod pronalaženja i otklanjanja grešaka ("debugging"), ali razvoj malicioznog softvera posljednjih godina nadilazi domete statičkih analiza, pa dinamičke postaju sve važnije. O tome u posebnoj temi.

Dva su glavna algoritma korištena za statičko deasembliranje: "Linear sweep" i " Recursive traversal".
Prvi se radi linearno, instrukcija po instrukcija, podrazumijevajući da kad se jedna instrukcija završi, naredna počinje. Slabost ovog algoritma je što sve interpretira kao kod, nije u mogućnosti da uoči problematičnu sekvencu. Rekurzivna metoda je tačnija, zasniva se na kontroli toka i prepoznavanju grananja i skokova u programu, pri čemu se svaka grana zasebno analizira.

Upravo ta grananja i skokovi se koriste pri formiranju izvršnog koda koji će biti nemoguće ( ili vrlo teško) deasemblirati. Tipična tehnika za takvo "zamajavanje koda" je "Branch functions" , koristi se upravo da "zbuni" proces ispitivanja toka programa i uzrokuje greške u deasembliranju.

Da budem potpuno iskrena, ovo je samo malo zagrebana površina ozbiljne, opširne i raznolike materije. Nisam smjela da se upustim u priču o arhitekturi procesora, asemblerskim instrukcijama ni funkcijama grananja, jer je to svako za sebe posebna velika oblast.

Preporuka za dalje čitanje:

1. Obfuscation of Executable Code to Improve Resistance to Static Disassembly
Cullen Linn,  Saumya Debray,Department of Computer ScienceUniversity of Arizona - link

2. N-version Disassembly: Differential Testing of x86 Disassemblers
Roberto Paleari, Lorenzo Martignoni‡ Giampaolo Fresi Roglia, Danilo Bruschi - link




Šta su potpisi u AV terminologiji - "malware signatures"


Prikupljanje uzoraka malicioznih kodova i dalje je glavna metodologija u razvoju detekcionih sistema za prepoznavanje virusa. Radi se o ogromnim bazama, McAfee je, na primjer, 2012. imao u svojim bazama preko 110 miliona uzoraka. Desetine hiljada potencijalnih malver kodova prijavljuju im se svakodnevno.

Naravno, bilo bi nemoguće čuvati u bazama čitave kodove, a skeniranje sa takvim uzorcima bi potpuno zagušilo sistem. Zato se kreira jedinstvena sekvenca na osnovu kompletnog sadržaja koda koja se zove potpis (signature). Ovo se obično radi heš funkcijom nad cijelim sadržajem koja kao rezultat daje znatno kraću sekvencu koja jednoznačno određuje sadržaj.

Heš funkcija H(M) korištena u kriptografiji treba da ima sljedeće osobine:
  • Kompresija - izlazna sekvenca mora biti kratka
  • Efikasnost - izračunavanje H(M) za neki sadržaj M se računa lako
  • Jednosmjerna je - Ako je poznato S kao rezultat heširanja H(M) , praktično je nemoguće naći M takvo da je H(M)=S
  • Otpornost na kolizije: 
    • za zadato M i H(M) nemogće je naći N≠M takvo da je H(N) = H(M)
    • nemoguće je naći N i M , N≠M takve da je  H(N) = H(M)
    • zapravo, postoji puno kolizija, ali ih je nemoguće pronaći
  • Efekat lavine - Promjena u jednom bitu sadržaja izaziva promjenu otprilike polovine izlaznih bitova
Najpopularnije heš funkcije su MD5 ,sa 128 bitnim izlazom, (tek nedavno otkrivene prve kolizije), i SHA-1, 160-bitni izlaz, koji kao standard koristi vlada SAD. Postoji još mnogo heš funkcija, ove su najčešće. Takođe, nije svaka heš funkcija kriptološka.

Mnogi od potpisa već su ugrađeni u operativne sisteme. To se posebno odnosi na potpise "dobrog" softvera,  pa tako imamo dodatnu zaštitu pri instalaciji drajvera i slično, naime, operativni sistem će nas upozoriti ako pokušavamo da instaliramo nešto što nema legitimni sertifikat, odnosno čiji potpis ne postoji u bazi sertifikovanog.

Budući da se broj novih, jedinstvenih kodova virusa povećava iz dana u dan, baze podataka potpisa se enormno povećavaju. Problem distributera AV proizvoda je: Kako distribuirati tolike količine heš potpisa desetinama miliona korisnika, nekoliko puta na dan?

Jedno od novih rješenja je korištenje string potpisa ("string signatures") , gdje se zapravo jednom kratkom kontinualnom sekvencom bajtova iz malicioznog koda  referencira na više virusa u okviru jedne familije.
Tako da, iako je string potpis veći od heš potpisa, generalno zauzima se manje mjesta u bazama, jer referencira na više virusa odjednom, familiju, te jedan string potpis zauzima puno manje prostora nego svi heševi koje zamjenjuje.
U početku su se ovi potpisi kreirali manuelno, jer je automatski bilo teško odrediti koja je to sekvenca bajtova iz koda virusa sa najmanjom vjerovatnoćom greške, odnosno njenog pojavljivanja u nekom goodware kodu.
Symantec je razvio Hancock - sistem za automatsko generisanje string potpisa sa zanemarivo malim stepenom greške i maksimalnim pokrivanjem familija virusa.


Preporuka za čitanje:
Automatic Generation of String Signatures for Malware Detection
Kent Griffin, Scott Schneider, Xin Hu, and Tzi-cker Chiueh
Symantec Research Laboratories - LINK

Borba protiv virusa - Kako rade antivirus programi

U prethodnim postovima dala sam pregled i istorijat razvoja malicioznog softvera. Iako se jednom rječju zove virusima, a industrija koja se protiv toga bori anti-virus  (AV) industrija, misli se na čitav korpus softvera koji narušava sigurnost računarskog sistema i proizvodi štetu. Tako da, kad u nastavku teksta budem koristila riječ "virus", odnosi se na ukupan zlonamjerni softver.

Često se pored izraza malware u literaturi može pronaći i relativno nov izraz - goodware
Goodware je zapravo onaj "dobri" softver, programi koji nisu pisani sa namjerom da bilo šta naruše ili unište, ali AV industrija mora da vodi računa i o njima, naime, koliko je loše da se u pretraživanju koje radi antivirus program ispusti i ne prepozna neki zlonamjerni softver, isto je tako nepoželjno da se neki dobar, legitiman softver greškom proglasi virusom i obriše.
Zato AV kompanije održavaju baze podataka i za  malware i za goodware. Naravno, u ovim bazama se ne drže kompletni kodovi, već se prave baze potpisa, sekvenci koje, (gotovo potpuno) jedinstveno, određuju sadržaj koda.

Šta to sve rade AV kompanije, i šta radimo instaliranjem i ažuriranjem AV proizvoda?

Glavni ciljevi borbe protiv virusa su:

  • Razumjeti ponašanje zlonamjernog koda
    • šta mu je cilj, postoji li monetizacija, da li se kradu povjerljivi podaci, da li se šalju spamovi ili onemogućuje pristup...
  • identifikovati (razviti automatske metode) i klasifikovati familije malicioznog koda
    • ovo je bitno jer se radi o jako velikom broju malicioznih programa dosad, koji svakodnevno raste
  • generisati (razviti automatske metode) efektivne modele detektovanja malicioznog koda
    • ovo je zapravo ono što nama stiže kao proizvod i što rade prodavci AV softvera: generišu se potpisi svih dosad poznatih virusa i šalju korisnicima, takođe uz metode prevazilaženja problema ( očisti, obriši, stavi u karantin...). 
AV kompanije ( koje su zapravo ujedno i veliki naučnoistraživački centri), rade na velikom zajedničkom projektu koji obuhvata:

Sakupljanje uzoraka malicioznog koda ( malware samples)
Kompanije koriste različite metode da bi se prikupili podaci od korisnika širom svijeta. Svakim detektovanim "sumnjivim" softverom na računaru šalje se informacija i proizvođaču antivirusa. Honeypots (neka vrsta računarskog sistema koji su mamac) su podešeni da izvršavaju različite vrste rizičnih operacija, posjećuju milione sajtova, da bi provjerili postojanje i širenje zlonamjernih softvera.

Analiza uzoraka
  1.  Statička analiza
Ovom metodom uzorci se raščlanjuju i ispituju njihove osobine bez izvršavanja programa. To obično zahtijeva neki od postupaka reverznog inženjeringa, koji opet može biti manuelni ( kad se analizira specifičan uzorak) ili automatski ( kod velikog broja sličnih uzoraka poznate strukture) . Ovdje ne postoji nešto što se zove "najbolji pristup" . Ponekad se radi o specifičnom napadu, posebno projektovanom za specifični cilj, i tada se cijela analiza radi potpuno manuelno, što može potrajati dugo.
U jednom od narednih postova ukratko ću opisati ovaj proces.
Istina je da zapravo ne postoji automatizovan način koji će pomoći da se razumije i objasni ponašanje malicioznog softvera.
  1. Dinamička analiza
Nasuprot statičkoj, ovdje se kod analizira tako što se izvršava. Dinamička analiza je limitirana, možemo posmatrati samo efekte koda. Limitirajući faktor je i oprema koja se koristi. Međutim, metode dinamičke analize se sve više razvijaju, budući da se kreatori malicioznih kodova sve više služe metodama koje se ne mogu rekonstruisati statičkom analizom

Izvođenje i generalizacija ponašanja malicioznog koda
Vrlo je važno dobro definisati ponašanje virusa, da bi se mogla projektovati zaštita i predvidjeti potencijalna šteta. Ove analize se rade na nivou mreže i nivou hosta, prate se "pravila ponašanja", koja su vrlo važna heuristički dobijena informacija za kreiranje sistema detekcije. Takođe, važno je pravilno rekonstruisati ponašanje malvera u kontekstu uticaja na sistem, jer pri njegovom uklanjanju sa zaraženog računara najčešće nije dovoljno samo obrisati binarnu sekvencu koda, već i pronaći zaostale akcije virusa po sistemu (upisi neželjenog sadržaja u registre, skriveni pozivi servisa i procesa), i vratiti sistem u stanje prije napada.

Generisanje i razvijanje modela detekcije
Na osnovu svega prethodnog razvijaju se modeli detekcije malicioznog koda koji sadrže uzorke, potpise, pravila ponašanja itd. i koji se stalno usavršavaju da bi se broj grešaka smanjio, i da bi se što brže reagovalo na nove viruse

Sve ovo je vrlo težak posao. Istina je da ne postoji konačan skup informacija o malicioznom softveru. Ne postoji ni nešto takvo što bi se moglo nazvati "generalno pravilo za ponašanje malicioznog koda" .
Jedino pravilo je da nema pravila. Štaviše, ne postoji ni definicija samog "zlonamjernog ponašanja" . Šta je to  protiv čega se zaista treba boriti, gdje su granice? Ponekad je i slanje SMS poruke ili mejla zlonamjerno, a da se ni po čemu drugom ne razlikuje od dobronamjernih akcija te vrste.
U onom što je poznati kontekst ipak mogu da se konstatuju neke istine. Jedna od njih je da se radi o stalnoj igri mačke i miša, pri čemu AV industrija još uvijek "juri" za napadačima.
Ono što je evidentno je da napadači zapravo imaju svu slobodu da rade neometano i dovoljno vremena. Onaj ko se štiti mora da zaštiti svaki "ćošak", a onome koji napada je dovoljno da pronađe malu pukotinu.

Dodatni problem je i dizajn savremenih virusa, i relativna nesvjesnost korisnika, koji zapravo svojom neopreznošću nenamjerno, dodatno pomažu napadačima, i nerjetko zapravo "autorizuju" zlonamjernu akciju.


Preporuka za čitanje:

Behavioral Clustering of HTTP-Based Malware and Signature Generation Using Malicious Network Traces,
Roberto Perdisci, Wenke Lee and Nick Feamster, link

Exploring Multiple Execution Paths for Malware Analysis,
Andreas Moser, Christopher Kruegel, and Engin Kirda, Secure Systems Lab
Technical University Vienna, link 



понедељак, 1. јул 2013.

Polimorfizam

Polimorfizam je metoda izrade malicioznog softvera koristeći enkripciju. Tačnije "payload", dio koda koji je zapravo maliciozna komponenta, je enkriptovan. Prvom pojavom polimorfnog koda smatra se lansiranje virusa Chameleon, 1991. godine, ali ozbiljniji prodor ovakvih virusa vezuje se za period od 2006. nadalje.

Osnovne karakteristike polimorfnih virusa su:

  •  mijenjaju izgled nakon svake infekcije
  •  "payload" je enkriptovan
  •  koriste različit ključ za svaku infekciju
  •  čine statičku analizu stringova praktično nemogućom
  •  enkripcijske rutine su takođe promjenjive (da bi se otežala detekcija)

Dakle, način na koji polimorfizam djeluje je da se  "payload" enkriptuje sa ključem koji se nanovo različito generiše pri svakoj infekciji (najčešće, mada postoje i neki drugi scenariji) , što čini statičku analizu vrlo komplikovanom. Na početku, teško je uopšte deasemblirati enkriptovanu sekvencu, prvo se mora tražiti način za dekripciju, a tek kad se pronađe rutina za dekriptovanje može se pristupiti statičkoj analizi.

Posebno stanje polimorfizma je metamorfizam, gdje se zapravo mijenja čitav virus a ne samo payload, i gdje se, pojednostavljeno rečeno kreira semantički identična, ali potpuno različita verzija koda za svaku aktivnost.

Da bi se izašlo na kraj sa ovim izazovima, AV industrija ulaže velike napore u otkrivanje načina kako se zapravo "inficira" kod , kako se unose ti zbunjujući i obmanjujući dijelovi koda koji naizgled ne mijenjaju semantiku programa ("code obfuscation"), da bi ih lakše pronalazili i detektovali.

Za sve ovo, važno je, pored enkripcije i dekripcije vladati i tehnikama asembliranja i deasembliranja.