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

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 



Нема коментара:

Постави коментар