offline
- Pridružio: 26 Avg 2005
- Poruke: 231
- Gde živiš: Beograd
|
Kako rade antivirusi
1. Uvod
Već više od 2 desetljeća, računalni virusi su prisutni na sceni, gdje predstavljaju stalnu i realnu prijetnju svim vrstama računalnih sustava diljem svijeta. Vrlo često, virusi su povezani s velikim financijskim gubicima, poglavito kad je riječ o infekcijama računalnih mreža velikih poduzeća, iako dotični virusi možda i nisu bili napisani u cilju izazivanja štete, a mnogi koji i jesu, ne rade kako treba. Međutim, kako su virusi dizajnirani da utječu ili potpuno onemuguće rad korisničkih programa, te se šire računalnim mrežama, na skoro svim platformama, a u posljednje vrijeme masovno internetom, oni često osim izravne štete uzrokuju i onu neizravnu, koja se opisuje pojmom izgubljene dobiti, točnije, izgubljenog vremena na čišćenju zaraženih sustava, te njihovom ponovnom vraćanju u normalan rad. Kako se popularno s razlogom kaže da je vrijeme novac, zaista je lako zaključiti zbog čega će jedno veliko poduzeće sa tisućama zaraženih kompjutera, koje je potrebno dovesti u normalan rad, izgubiti velike količine profita. Mnogo češće su neizravne štete puno veće od onih izravnih. Dodatno, izvršavanje virusnog, često nepoznatog koda, na osjetljivim računalnim sustavima (banke, bolnice, znanstveni centri, vojska itd.) dovodi do pitanja ispravnosti rada namjenskih aplikacija i podataka vezanih uz njih, što često vodi do potpunog reinstaliranja platforme i aplikacija na svim računalima takvog jednog sustava, te do vraćanja podataka iz nezaraženih backup izvora, ukoliko takvi postoje.
Iako je ova prijetnja svakim danom sve veća, što zbog većeg broja računala, što zbog njihovog boljeg i raznovrsnijeg povezivanja, tehnologija koja joj se odlučila suprostaviti, te ima za cilj obranu računalnih sustava od virusa, nažalost nije dovoljno prihvaćena kod korisnika. S jedne strane, mnogi ne znaju, niti žele znati kako antivirusni programi rade, jer se time "ne trebaju opterećivati", a s druge strane, antivirusni sustavi se često shvaćaju kao skupi programi koji ne donose nikakav profit. Kao rezultat, antivirusni programi, ako i jesu instalirani, vrlo su često nepravilno iskonfigurirani ili se o njima ne vodi računa.
Kratica AV, u užem smislu znači "antivirus", dok u širem opisuje industriju, proizvode, te usluge koji se bave zaštitom računala od virusa.
2. Povijest
Mnogi rani virusi su rijetko napravili više od nekoliko infekcija, te su na taj način sami od sebe odumrli. Razlog takvom "neuspjehu" je vrlo slaba povezanost računala međusobno, te nisu imali kvalitetan medij kojim bi se širili međusobno. Tada je otkrivanje i uklanjanje sa zaraženih strojeva bilo mnogo jednostavnije nego danas. Vrlo kratko nakon pojave prvih virusa, pojavile su se i prve inačice jednostavnih antivirusnih alata. Prvi AV skeneri nisu bili u stanju dezinficirati zaražene sustave, već su jednostavno služili za provjeru datoteka. U to vrijeme, većina virusa bila je distribuirana preko floppy diskova, jer velikih računalnih mreža (internet) nije niti bilo.
Međutim, promjene koje su nastale pojavom velikih računalnih mreža, a poglavito interneta, dovele su do pojave novih vrsta virusa i brzine njihovog širenja. Na primjer, do 1992. godine, broj boot sector virusa i file-infecting virusa bio je podjednak. 1992., broj file-infecting virusa počeo se smanjivati, a boot sector virusa povećavati. Taj trend je nastavljen do 1995. godine, kada većina računala prelazi na Windows platformu, a pogotovo nakon prelaska na Windows 95, sustav koji je mogao obavijestiti korisnika o promjenama u boot-sektoru, što je poslužilo vrlo jednostavnoj detekciji boot sector virusa. Također, s pojavom Microsoftovog paketa Office, autorima virusa postalo je jasno da postoji puno bolja podloga za širenje njihovih uradaka. Mogućnost ove platforme da pomoću više programa koristi iste informacije, dovela je do nastanka velikog broja nove vrste - macro virusa. Ovi virusi vrlo su jednostavni za pisanje u Visual Basicu, te se iznimno lako šire među korisnicima Microsoftovih uredskih aplikacija Word, Excel, PowerPoint i Access. Dodatno, macro virusi su prvi koji su bili u stanju raditi na više platformi (npr. virus napisan za Windowse ne može raditi na Macintosh platformi).
Rani virusi su zahtijevali ljudski faktor da bi se mogli širiti. Korisnici su bili ti koji su im omogućavali širenje, najčešće iz neznanja, tj. nesvjesnosti njihovog prisustva, dijeljenjem datoteka, floppyja i sl. među sobom. Nakon početka automatiziranja mnogih procesa (macro naredbe u Office paketima), ljudska "pomoć" širenju virusa više nije bila toliko neophodna. Danas, samim otvaranjem zaraženog e-maila, moguće je pokrenuti virus, bez ikakvog znanja o njegovom prisustvu, čak štoviše, danas iznimno popularni crvi dolaze putem interneta na računalo bez ikakve ljudske prisutnosti.
Paralelno s razvojem i usavršavanjem virusa, razvijali su se i usavršavali alati za borbu protiv njih. AV programi su nešto poput patrolnog policajca na cesti, koji promatra ponašanje prolaznika i pokušava pretpostaviti nečije loše namjere. I policijski službenik i AV skener traže određene "uzorke" ponašanja, te kreću u akciju ukoliko to ponašanje prijeđe prag prihvatljivosti. No, kao i policijski službenici, i AV skeneri ponekad donose krive zaključke. Jednostavno, nije moguće znati namjeru svakog bita koda koji uđe u računalo, i nije zgodno testirati svaki bit koda prije njegovog izvršavanja, jer bi to ozrokovalo ogroman pad performansi sustava i onemogućilo izvršavanje legitimnih programa. Najviše što AV skener može učiniti je tražiti uzorke ponašanja, bazirane na svojoj bazi podataka, a koji su se u prošlosti pokazali kao "lošima".
Prvi antivirusni alati radili su na principu da je određeni "alat" napisan za određeni virus, te su dakle korisnici najprije trebali otkriti o kojem se virusu radi (što nije bilo teško jer ih je bio vrlo mali broj), te tada nabaviti odgovarajući alat i popraviti što se popraviti može.
Virusi iz toga vremena su ubacivali svoj kod na određena predvidljiva mjesta u programu. AV skeneri su tražili taj kod (tj. specifični string znakova), te ukoliko bi kod bio pronađen, on bi se brisao, te bi se program pokušao dovesti u prijašnje stanje. Ukoliko to nije bilo moguće, AV bi korisniku savjetovao brisanje programa i njegovu reinstalaciju.
Kako je broj virusa počeo naglo rasti, antivirusne kuće su shvatile da izdavanje specifičnih alata za specifične viruse neće objektivno biti moguće u dogledno vrijeme, te je bilo potrebno pronaći nov način za traženje virusa, koji će se sastojati u univerzalnom programu koji će tražiti sve viruse prema određenim predefiniranim uzorcima. Nova generacija AV programa tako se sastojala od dvije komponente: antivirusnog skenera i baze podataka sa uzorcima stringova. Te dvije komponente u potpunosti ovise jedna o drugoj. Mnogi tadašnji antivirusni alati nisu polučivali dobre rezultate, jer nisu bili u stanju pronaći sve poznate viruse, a osim toga, postojao je tada nerješiv problem otkrivanja novih, nepoznatih virusa, kojih nije bilo u bazi s uzorcima.
Dvije su stvari dovele do revolucije antivirusne tehnologije. 1993. godine, Joe Wells počinje kolekcionirati viruse i stvara "biblioteku" virusa koju naziva "WildList", te ju daje na uvid i korištenje antivirusnim kućama, koje do tog trenutka nisu imale standardiziranu bazu virusa, već se je svaka oslanjala na svoje vlastite podatke. Njegova lista je podijelila viruse u dvije skupine; prva, u koju pripadaju aktivni virusi, tj. oni za koje se zna da trenutno postoje kao aktivni na računalima diljem svijeta, nazvana je in the wild, a druga skupina bi bila ona koji više nisu aktvini, tj. "izumrli" su jer su "istrijebljeni" sa svih aktivnih računala u svijetu (in the zoo). Također, lista je omogućila da se standardiziraju imena virusa.
Druga važna stvar koja se dogodila bila je početak komercijalnog testiranja i davanja certifikata AV produktima od strane NCSA (National Computer Security Association), kasnije znane kao ICSA.net, pa TruSecure Corporation. Antivirusne kuće su slale svoje produkte na testiranje, i time su bile prisiljene da na objektivan način dokažu kvalitetu svojih proizvoda.
3. Ustrojstvo AV programa
Nemoguće je sa sigurnošću znati za svaki program koji se pokreće na računalu da li je legitiman ili pak virus. Kad bi AV skeneri mogli znati sa 100%-tnom sigurnošću da li neki program pripada jednoj ili drugoj skupini, njegov kod bi bilo moguće ugraditi u sam operativni sustav, te ne bi bilo potrebe za dodatnim AV programima. Također, nemoguće je da AV skener provjerava svaku datoteku koja se izvršava u cijelosti, jer bi za tako nešto bilo potrebno jako mnogo sistemskih resursa računala, te bi takvo okruženje bilo gotovo neupotrebljivo. Stoga, AV programi djeluju unutar nekih ograničenja koje im nameće sam operativni sustav. U cilju efektivnog rada, bez velikog utjecaja na ostale programe koji se izvršavaju na računalu, AV programi se koriste raznim trikovima kako bi spriječili virusnu infekciju, pronašli i dezinficirali zaražene datoteke, a pritom zadržali koliko-toliko nedirnutu brzinu izvođenja ostatka sustava.
4 su osnovne metode kojima se AV programi koriste u svojem radu:
◊ Detekcija - traženje već poznatih virusa
◊ Prevencija - praćenje promjena, i pokušaja mijenjanja datoteka, boot sektora itd
◊ Heuristika - traženje dosad nepoznatih virusa, koristeći određena "pravila ponašanja"
◊ Praćenje stanja svih sistema koji su povezani na središnji sustav izvještavanja (ovo će biti objašnjeno kasnije)
Antivirusni program (engine) i njegova baza podataka sa poznatim uzorcima virusa rade zajedno u cilju detekcije virusa koji ulaze u sistem. Engine je uobičajeno predstavljen kao korisničko sučelje, te pruža osnovni set funkcija i kontrola za podešavanje rada antivirusnog sustava. Sastoji se od mnogo složenih algoritma za traženje uzoraka, CPU emulatora, te raznih formi programske logike. Engine određuje koje će datoteke skenirati, koje funkcije pokretati, te kako djelovati u slučaju kada posumnja da je u određenoj datoteci pronađen virusni kod. Ipak, sam engine ne zna apsolutno ništa o virusima, i gotovo je bespomoćan bez baze podataka sa uzorcima virusa (signature database).
Baza podataka s uzorcima sadrži "otiske prstiju" desetaka tisuća virusa. Kako se novi virusi pojavljuju sve brže, od iznimnog značaja je da se baza podataka stalno nadopunjuje novim podacima. Tako je 1995. godine kao generalna preporuka važila da se baze nadopunjuju barem jednom mjesečno, dok je danas taj rok oko jednom tjedno, a za kritične sustave i svakodnevno. Danas se svi antivirusni programi mogu lagano i brzo obnoviti putem interneta, a mnogi taj posao maksimalno pojednostavnjuju automatizacijom.
Baza s uzorcima, osim egzaktnih stringova, sadrži i neka pravila koja antivirusni programi koriste za heurističko skeniranje. Naime, ukoliko se pojavi novi virus, koji ne postoji još u bazi uzoraka, antivirus ga ne može pronaći, osim prema već spomenutim "pravilima ponašanja", tj. ako utvrdi da bi se određena datoteka prilikom izvršavanja ponašala prema nedopuštenim pravilima, bit će klasificirana kao "sumnjiva". Ovakvo skeniranje je mnogo sporije nego ono koje samo traži poznate stringove, te mu učinkovitost znatno varira od proizvoda do proizvoda. Mnogo proizvoda nam daje na izbor koliko želimo "duboku" heurističku analizu - što je ona "dublja", to je više pravila obuhvaćeno njome, a samim time i proces sporiji, ali mogućnost detekcije nepoznatog virusa veća.
Skeniranje datoteka moguće je u tri načina rada - nakon pokretanja sustava, stalno, ili na zahtjev. Najučinkovitije skeniranje je konstantno, tj. u pozadini se stalno izvršava antivirusni program koji skenira sve procese koji se izvode na računalu. Međutim, ovo može dosta usporiti sistem, ovisno o njegovoj brzini, te postavkama i karakteristikama samog AV programa, ali i o vrsti posla na računalu. Pritom, AV programi koriste i dosta sistemske memorije, kako bi testirali određene sekcije koda datoteka koje se provjeravaju. Dakle, potrebno je pronaći "zlatnu sredinu", tj. AV program mora omogućiti zaštitu računala, a pritom korisnik mora moći nesmetano koristiti sve sistemske resurse, ili barem veliku većinu.
Rani virusi su prilikom inficiranja programa, svoj kod ubacivali na određeno mjesto u prorgamu, tako da je pri skeniranju bilo dovoljno potražiti to mjesto i vidjeti da li na njemu postoji virusni kod, izbjegavajući skeniranje datoteke od vrha do dna i tako drastično štedeći vrijeme. Danas, to više nije u potpunosti slučaj, pa je ponekad potrebno pregledati cijelu datoteku. Tako mnogi AV programi imaju implementiranu mogućnost da koriste pregled kompletnih datoteka, što znatno usporava izvođnje operacija.
Postoji mogućnost da prilikom skeniranja legalnog programa, AV naiđe na kod koji se sasvim slučajno poklapa sa nekim iz baze uzoraka, ili pak sa "pravilom o ponašanju", pa prijavi "čistu" datoteku kao zaraženu. Nažalost, lažnih alarma ima uvijek, no u posljednje vrijeme su ipak sve rijeđi, jer programeri koriste sve bolje rutine za njihovo izbjegavanje.
Nastankom novih, kompleksnijih virusa, skeniranje koristeći isključivo baze sa uzorcima postaje sve nepouzdanije. Neki virusi čak niti nemaju karakterističan kod po kojem bi se mogli bespogrešno prepoznati. Ima virusa koji nastoje ubaciti svoj kod u područja programa koja su već prije bila skenirana, ili pak smještaju svoje fileove u direktorije ili dateoteke koje se uobičajeno ne skeniraju (npr. .cab datoteke). Zatim, virusi koriste promjenjive enkripcije koda, mijenjaju formu, te mutiraju, sve u pokušaju da se što bolje sakriju od AV programa.
U mnoge antivirusne programe danas je ugrađena metoda provjere checksum-e, kao dodatna sigurnosna opcija za traženje nepoznatih virusa. Ovim putem se provjeravaju datoteke, te se traži da li su se mijenjale od vremena posljednje provjere. Prilikom provjere, checksum-e provjerenih datoteka se zapisuju u posebnu bazu podataka. Ukoliko promjene veličine datoteke nema, znači da nije došlo do njezine infekcije u tom periodu. Ako se promjena dogodila, ona može biti legitimna, ali može biti i virus. Da bi AV otkrio o čemu je riječ, poduzimaju se dodatne radnje nad takvim datotekama (skeniranje, obavještavanje korisnika itd, ovisno o postavkama).
Zatim, AV se koriste u svojem radu brute-force dekripcijom enkriptiranih virusa, jer mnogo je virusa danas enkriptirano, koji se prilikom infekcije automatski enkodiraju na drugačiji način, što dovodi do drugačijeg "otiska prstiju", i tako enkriptirani virus se ne poklapa sa svojim uzorkom u AV bazi uzoraka. Ukoliko se pronađe algoritam za dekripciju, on se pohranjuje u bazi uzoraka zajedno sa uzorkom.
Emulacijom programa AV se koriste najčešće za otkrivanje polimorfnih virusa. Program kojeg se provjerava, emulira se u simuliranom orkuženju operativnog sustava, tj. antivirus nastoji simulacijom izvođenja dotičnog programa procijeniti što bi se dogodilo ako se program zaista i pokrene. Tada na snagu stupaju već spomenuta "pravila ponašanja", te ukoliko se prijeđe prag tolerancije, datoteka se smatra sumnjivom ili zaraženom.
Heuristička analiza datoteka, iako vrlo korisna za otkrivanje novih, nepoznatih virusa, ima lošu stranu što nikada ne može biti 100% pouzdana. Neki produkti se hvale sa 80%-tnom pouzdanošću otkrivanja virusa bez poznavanja njihovih uzoraka. Drugi problem je taj što ovakvo skeniranje traži i dosta procesorskog vremena, a u slučaju većih i kompliciranijih datoteka i mnogo sistemske memorije, pogotovo kod emuliranja izvršavanja programa.
Prilikom heurističkog skena, skeniranoj datoteci se dodijeljuju "bodovi", koji označavaju da li je datoteka bila "pozitivna" na određenom testu "pravila ponašanja". Što više bodova skupi, to je na više testova bila "pozitivna", te se ukoliko prijeđe pretpostavljenu granicu, smatra sumnjivom (niža granica) ili zaraženom (viša granica). Pritom se provjeravaju datoteke samo na uobičajenim mjestima na kojima se virusi u njima najčešće nalaze, jer datoteke mogu biti ogromne veličine, te njihovo komplteno provjeravanje bi trajalo iznimno dugo. Npr. video datoteka od par gigabajta se skenira za tren, jer se pretraži samo njezin malen dio (obično je riječ o početku datoteke, prvih nekoliko linija koda), dok bi njezino kompletno skeniranje trajalo minutama (sa današnjim uobičajenim brzinama računala). Navedena metoda se naziva statičkim skeniranjem.
Za razliku od statičkog skeniranja, kod dinamičkog se program još dodatno emulira, a ono se obično poduzima samo ukoliko je "broj bodova" u statičkom skenu bio relativno velik. U virtualnom okruženju pokreće se kod sumnjive datoteke i prati ponašanje simuliranog sustava. Jasno je da će ovakvo izvođenje operacija zahtijevati prilične sistemske resurse računala, no to je cijena koja se mora platiti ukoliko se želi relativno moćno traženje nepoznatih virusa. Valja primjetiti da se dinamički sken ne poduzima ukoliko je u statičkom datoteka prošla dobro, tj. sa malim "brojem bodova", što je u biti dvosjekli mač - štedi se iznimno puno sistemskih resursa, međutim, neki virusi mogu ostati neotkriveni bez dinamičke heurističke analize. Napomenimo samo, kako ni dinamička analiza nije svemoguća, te poneki maliciozni program može i pored nje proći neotkriven, ovisno o njegovim "namjerama".
4. "Imuni sustavi"
Više od jednog desetljeća, pisci antivirusnih programa pokušavaju smisliti sustav koji će biti otporan na viruse i u slučaju inficiranja sam sebe "izliječiti", bez intervencije korisnika. Pri tome su se istraživači dosjetili da bi mogli pokušati "kopirati" ljudski imunološki sustav, tj. njegovu osnovnu funkcijsku strukturu. Sustav koji su zamislili sastoji se od praćenja stanja, te u slučaju infekcije bilo kojeg njegovog dijela, pokušaja automatskog "izliječenja", te samo u slučaju neuspjeha, pozvalo bi se korsnika na intervenciju. Trenutno u svijetu antivirusa postoje određena rješenja koja manje ili više uspješno prate i pretvaraju u djelo ovu zamisao. Pa, objasnimo pobliže o čemu je riječ.
Izolirano računalo, tj. ono koje nije spojeno na računalnu mrežu, nakon zaraze virusom, nema velike šanse za "samoizliječenje", jer mu nedostaje osnovno sredstvo za borbu protiv virusa - poznavanje njega samog, dakle, ukoliko je virus prošao neopaženo jer nije prepoznat, niti u vremenu koje predstoji, samo od sebe dotično računalo neće "naučiti" ništa novo o virusu. S druge pak strane, računalo koje je povezano u mrežu, već ima dosta veće šanse, jer u slučaju infekcije može lako "pozvati pomoć" od strane računala koja nisu zaražena.
Kada smo spomenuli 4 osnovna načina na koji AV programi pokušavaju spriječiti zarazu računala, naveli smo i "praćenje stanja svih sistema koji su povezani na središnji sustav izvještavanja", ali nismo ništa pobliže rekli o tome. Sustav o kojem je riječ, tj. "sustav izvještavanja", zapravo prati stanje svih svojih dijelova, na način da ima jedan ili više centralnih servera koji služe kao "mozak" sustava, a svaka radna stanica (nazovimo tako ostala računala sustava, mada oni mogu biti bilo što), "vrti" na sebi klijentski dio antivirusne aplikacije, koji prati "zdravstveno" stanje na toj stanici. Centralni server može biti lociran unutar LAN mreže, ali može biti i server u laboratoriju proizvođača antivirusnog sustava.
Ukoliko sustav praćenja "zdravstvenog" stanja određene radne stanice posumnja u prisutnost virusa, kojeg ne pronalazi u svojoj bazi uzoraka, on tada pravi kopiju sumnjivog programa, te ju šalje centralnom serveru na analizu. Nakon primitka sumnjive datoteke, server ju proslijeđuje testnom računalu. Na tom računalu, u kontroliranim uvjetima, nepoznati i sumnjiv kod se može bez opasnosti pokrenuti, jer je to računalo namijenjeno isključivo za potrebe takvog testiranja, te je ono izdvojeno od ostalih, i komunicirati može jedino sa centralnim serverom, i to pod određenim i vrlo strogim uvjetima.
Testno računalo tada pokreće cijeli niz specijaliziranih koraka, da bi što je moguće bolje poručilo ponašanje sumnjivog programa u praksi, tj. u stvarnim uvjetima izvođenja. Cilj cijele ove priče na testnom računalu je da ono pokuša (ukoliko je zaista riječ o virusu) izdvojiti njegov uzorak, te pronaći način za njegovo uklanjanje sa sustava. Kao rezultat analize, testno računalo šalje natrag centralnom serveru, uzorak virusa i metodu za njegovo uklanjanje sa zaraženih računala. Centralni server dalje distribuira svim klijentskim računalima nadopunu baze sa uzorcima, te "lijek", tj. program ili što je već potrebno za čišćenje zaraženih računala, koji se automatski izvršava bez potrebe za korisničkom intervencijom.
Međutim, ukoliko testni sustav nije u mogućnosti pronaći način za čišćenje zaraženih računala, tada centralni server šalje virus programerima koji su i inače zaduženi za analizu virusa na daljnju "ručnu" obradu, i to je jedini slučaj kada bi ovakav sustav trebao zatražiti intervenciju korisnika.
Iako je zamisao vrlo dobra, mnogo je još otvorenih pitanja koja valja riješiti prije nego se ovakvi sustavi počnu masovno primjenjivati u praksi, te da im pouzdanost bude na zadovoljavajućoj razini. No, optimističnija predviđanja nekih AV proizvođača ukazuju na to, da će u dogledno vrijeme biti moguće ostvariti ovakav sustav na bazi cijelog interneta, kada bi se na klijentskim računalima pokretale aplikacije za praćenje sustava, a ulogu centralnih servera i testnih računala bi obavljala moćna računala u laboratorijima AV proizvođača. Koliko će se od cijele ove zamisli na kraju zaista i ostvariti, ostaje da se vidi, no prema nekim ukazateljima, imuni sustavi imaju budućnost.
Tekst by Ivan Toman
http://www.inet.hr/~ivtoman/antivirusi.htm
|