offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Glupi AV...
Dobrodosli na citanje mog drugog kvazi-naucnog-vise-sarkasticnog clanka
U ovom 'broju' cemo pricati o tome kako se trenutno nadmudruju AV programi i njihovi direktni neprijatelji - maliciozni programi.
Ovi drugi trenutno vode, i to iz manje-vise idiotsko-glupih razloga koji mogu da se rese sa par linija koda u AV programu.
Istorija nadmudrivanja izmedju 'nasih' i 'njihovih'
I bese virus...
Neznam odakle bih stvarno poceo pricu, ali najverovatnije bi trebalo da pocnem od vremena pre pojave heuristike.
Ono po cemu su AV programi u pocetku prepoznavali viruse su bili tekstualni podaci u virusima, uglavnom poruke koje su virusi ispisivali na ekran.
Maltene svaki pisac virusa je patio od kompleksa potpisivanja, tj. da pokaze da je on novi King of the Hill, i maltene po pravilu su ostavljali poruke u telima virusa.
Ona sacica njih koja nije patila od tog kompleksa, nije bila bas puno uspesnija - kao i svaki program, i virus se sastoji od gomile naredbi poredjanih jedna za drugom.
Ukoliko za nesto dokazete da je virus, onda pogledate koja grupa naredbi (koda) je specificna za taj virus, i to se proglasi njegovim potpisom.
Skeniranje se sastojalo od trazenja potpisa u fajlovima na disku.
Rezultat utakmice je trenutno 1:1.
Pisci virusa su onda poceli da razmisljaju o tome kako da njihovi virusi ne ostavljaju potpise.
Radjaju se dve ideje:
- virus treba da mutira tako da svaki put ima drugaciji potpis
- virus treba da bude sakriven u 'kovertu', i da odatle izleti tek kada se koverta nadje u memoriji
Oba principa se koriste do dana danasnjeg, doduse izdeljeni na vise nacina izvodjenja.
Heuristika teoretski moze da se izbori protiv oba principa, ali je to u praksi jako tesko.
Sta je heuristika?
Zamislite virtuelnu masinu u kojoj vas AV program simulira okruzenje u kome virusu dozvoli da se startuje. On prati rad nepoznatog mu programa, i dize uzbunu onog momenta kada program u virtuelnoj masini proba da nadje zirtvu koju bi zarazio.
Ovo se zove sandboxing (u parkovima je to ogradjeno polje sa peskom u kome se deca igraju).
Sandboxing je spor proces, uz to i nesiguran, posto ne mora da znaci da ce virus odmah pokusati da se razmnozi. Mozda ce cekati odredjeni datum...
Drugi vid heuristike je slican reversnom inzenjeringu. AV program pokusava da 'prouci' kod virusa, i da nadje bilo koje tragove koda koji sluzi za malicioznu akciju (u to doba se radilo samo o inficiranju drugih fajlova).
Modul za heuristiku je znaci trebao samo da ima mogucnost prepoznavanja svih tehnika razmnozavanja.
Ovakva heuristika se isto zaobilazi, i to postoje razradjeni nacini kojima AV programi jos nisu nasli leka.
Sandboxing je dosta sigurniji, ali smo gore vec spomenuli da je uzasno spor, cak iako u sandboxu simulirate ubrzano brojanje vremena.
Sandboxing ostaje vredan kao postupak za laboratorijska istrazivanja, da bi se utvrdilo da li je nesto uopste maliciozno, pa tek onda krenuti u analizu i nalazenje potpisa.
Rezultat utakmice je trenutno 2:1 za starije (dobra heuristika trazi jaku masinu i dosta vremena, za kucne kompove morate plasirati oslabljenu heuristiku)
Sto se tice envelopa koje smo spominjali, to otprilike funkcionise ovako:
Napravili ste virus (ili imate primerak vec postojeceg) i zelite da duze vreme ostane neotkriven.
Jedan od scenarija je da napravite program koji ce u sebi sadrzati vas virus (pricam virus, a odnosi se na celokupan malware). Jedino vas program zna kako je taj virus tu kodiran.
Time smo se resili heuristike, koja nece moci da prepozna maliciozan kod.
Vas program izbacuje malware i aktivira ga. Oba ova procesa su sami po sebi bezopasni, opasan je samo aktiviran virus.
Ukoliko se cela stvar desi u memoriji, onda ce vas program koji je kontejner za virus, ostati virtuelno neumesan u celokupnu spletku, tj. AV programi nece na njega sumnjati.
Vas virus ce inficirati druge programe, a koverta ce da cuci u cosku, i da ceka sledecu priliku za akciju.
U laboratoriju ce po svoj prilici da stigne virus, ali koverta nece posto na nju niko ne sumnja (barem nece u pocetku), tako da ste svom virusu podarili dug i uspesan zivot.
Koverte mogu biti razlicitih mogucnosti. Neke ce samo da urade kompresiju i enkripciju tovara, neke ce da ga mutiraju, tako da svaki izbacen tovar ima razlicit potpis... Mogucnosti su neiscrpne.
Ovde na red dolazi jedna stvar koja me i dana danasnjeg nervira:
Cak i kada AV program ima potpis tovara, cak iako ga prepozna odmah cim bude istovaren, jos uvek ne mogu da nadju iz koje je koverte izbacen.
Kovertu ce da prepoznaju tek ako imaju i njen potpis.
Windows omogucava da se prati stvaranje i promene svih fajlova na sistemu. Kada covek zeli, moze da napravi program koji ce da prati sve procese na sistemu i da zabelezi svaki poziv za stvaranjem fajla.
Ovo pricam kao poznavaoc materije, ne pricam napamet.
Najprostije posmatranje (monitoring) je omoguceno ako se program poveze (hook) na doznake o novim fajlovima na sistemu. Na ovaj nacin AV programi saznaju u kom folderu se pojavio novi fajl.
Ovaj nacin ne omogucava da se sazna ko je stvorio fajl.
Osim ove doznake (event), Windows generise doznake za sve operacije koje sluze za najrazlicitije vidove stvaranja novog sadrzaja (bio on binarni fajl, tekst ili nesto trece, da li se formira u memoriji kao stream, ili negde na HD-u...).
Posmatranjem tih ostalih eventa se moze doci do zakljucka ko je 'roditelj' spornog tovara. time mozete da 'zigosete' kovertu kao opasnu.
Zasto se to ne koristi (barem ja jos uvek ne vidim efekte koje bi ovakvo posmatranje trebalo da proizvede), meni nije jasno.
Ili toliko opterecuje sistem da bi bilo suvise zamarajuce za sistem, ili se jos niko nije prihvatio posla.
Jutros sam citao o patentiranoj komponenti (programska komponenta koju programer moze da umetne u svoj program) koja belezi bukvalno sve ove promene na sistemu.
Cene su nenormalne, uverite se i sami:
http://www.alfasp.com/products.html - pogledajte Alfa file monitor
Da li su stvarno samo oni sposobni da naprave tako nesto, pa to naplacuju kao da je od zlata, ili to imaju i AV programi, ali cela tehnologija nema efekta.
Ovo za mene ostaje misterija, ali i dalje mislim da AV programi iz meni nepoznatih razloga ovo jednostavno ne zele da implementiraju (zavera protiv nas obicnih smrtnika?).
Pod pojmom 'koverte' sam strpao exe-pakere, exe-protectore, exe-cryptore, morphing-engine, obfruskatore koda...
Zacudili bi ste se koliko tih razlicitih 'koverti' postoje, i koliko se lako nalaze na netu, i vecina su besplatne.
Oni koji su procitali MyCity AV test, videli su da smo poseban naglasak stavili na neke jako cesto koriscene 'koverte', konkretno, na par exe-packera i exe-protectora.
Najveci deo AV programa sa testa nije umeo da izadje na kraj sa preko 70% 'koverti', a 'tamo napolju' ima jos 10 puta vise 'koverti' nego sto smo mi testirali.
Bruka i sramota, jer ako sam ja mogao da ih nadjem, i da za vecinu nadjem informacije kako da 'izvucem tovar iz koverte', onda su to mogle da urade i AV kompanije.
Ovo sto sledi je statistika upotrebljenih 'koverti' za viruse koje smo imali na MC AV testu (oko 20.000 malicioznih fajlova):
Ime packera | Broj pojavljivanja u fajlovima (napomena: pojedini fajlovi su bili visestruko pakovani)
PkLite 51
ASPack 348
UPX 1109
PE_Patch 115
FSG 72
Neolite 13
Petite 45
PE-Crypt.Wonk 5
DoomPack 7
Ezip 3
PE-Diminisher 10
Yoda 5
Morphine 8
PE-Crypt.Stone 3
Exe32Pack 4
ExeStealth 2
PECompact 69
PE_Patch.Mutex 105
PEBundle 10
PECrypt32.Kila 3
WWPack32 10
Rapid 1
JDPack 4
TeLock 49
DBPE 2
ASProtect 26
Pex 4
PE-Pack 10
BitArts 3
Edit 15
PE_Patch.PECompact 146
PecBundle 7
Com2Exe 1044
PESpin 2
Shrinker 2
Bat2Exec 28
ExePack 89
Clipper 1
LzExe 23
AIN 2
Apack 3
Diet 7
Tinyprog 1
Rjcrush 3
UPD 4
PackCrypt 3
PackLite 4
BitArts.Cruncher 2
Crypt.BWG 7
VGCrypt 2
PE_Patch.Pex 81
PCShrink 2
PKLite32 43
Crypt.Quarantine 2
EXE_Patch 1
BitArts.Fusion 2
PECRC 1
Crypt.Cryptcom 7
LzCom 2
BJFnt 1
VisualDialogScript 2
Crypt.THC 3
Com2Txt.Dandler 1
Batlite 2
Exe2Com.tECC 4
Crypt.IBBM 4
PaquetBuilder 1
CodeCrypt 2
RarPSW 1
EXE-Package 9
Splasher 3
UPC 5
Cexe 1
Mmpo 1
MEW 1
AVL 1
PELock 2
Crypt.Dismember 2
DebugScript 24
Crypt.CC286 2
SCRNCH 1
AVPACK 1
CryptCOM.b 12
ICE 1
CPAV 1
Crypt.Deeper 1
Crypt.Bom 1
CryptGeneric 1
Expert 1
Com2NE 3
Com100 19
Exe2NE 3
PE_Patch.Ginra 9
PE_Patch.Morphine 5
Zamislite AV program koji ne prepoznaje samo prvih deset packera sa liste, pa ce vam biti jasno koliko ce taj virusa propustiti, cak iako ima njihove potpise.
Osim ovih vrsta koverti, postoje jos i druge grupe.
U ovoj grupi su se svi programi raspakovali u memoriji, i tamo pokretani. Koriste se uglavnom za viruse.
Za trojance se koriste druge vrste koverti, posto njih trebaju da izbace i na HD, ne samo u memoriju.
Takvi programi obicno sebe upisuju na listu programa koja treba da se startuje sa sledecim startovanjem Windowsa, i uglavnom uspevaju da dobiju prioritet tako da se startuju pre AV programa.
Ni to mi ne ulazi u glavu, zasto im je omoguceno da se startuju pre AV programa. Zanimljivo je da Adaware i SpyBot uspevaju da zadrze prioritet u vecini slucajeva (napomena: oni nisu AV programi).
Kada se startuju, oni izbace tovar i aktiviraju ga. AV program se startuje tek posle toga, pa vec bude kasno.
Tovar obicno bude izbacen svaki put pod drugim imenom, tj. fajl tovara se uvek drugacije zove. I obicno izbace par kopija tovara u jednom naletu, tako da brane jedna drugu.
AV program ubije jedan tovar, drugi ga 'ozivi' (naredi koverti da izbaci drugi tovar). AV program po pravilu nikada ne stigne da ubije kovertu jer se mlati sa tovarima.
Ili, tovari toliko dobro stite kovertu da joj AV program ne moze nista.
Jedino resenje je Safe Mode, ili Remote ciscenje (upravo sam sada tako krstio postupak kada izvadite HD na kojima je zaraza, ubacite ga u drugi komp, i tamo ga ocistite).
Da stvar bude losija, vecina AV programa imaju ocajno malo uspeha u otkrivanju koverti.
Da stvar bude jos losija, uz sve vecu popularnost rootkitova, koverte se jos bolje sakrivaju.
Rootkit je naziv za program ili drugu vrstu tehnologije, koja na sistemu uspesno sakriva neki program, a moze da sakriva i druge parametre.
Moze recimo da sakrije da je nekom fajlu promenjena velicina (inficiran je pa su dodati bajtovi), datum zadnje izmene fajla itd...
Rootkitovi su u svakom slucaju omrazeni, bilo da se koriste u lose ili dobre svrhe (recimo AV program sakriva svoje fajlove da ne bi bili kompromitovani).
Jednu od tehnologija zastite egzistencije koju koriste trojanci, AV programi nisu iskoristili jos uvek (a nije mi jasno zasto) - menjanje imena procesa AV programa.
Nije vam jasno zasto bi AV program menjao svoje ime, tj. ime procesa (ono sto vidite u Task Manageru)?
Pa vecina trojanaca (kojima nije bitna velicina fajla, tj. ne teze da budu toliko mali kao virusi) imaju spisak vecine procesa koje imaju AV programi.
Ubijanje procesa je decija igra za bilo kog programera, jer je dobro dokumentovana.
Kada bi AV program uvek imao drugo ime procesa, 'liste za streljanje' koje imaju trojanci bi bile beskorisne.
Da spomenem samo da neki AV programi vec deset i vise godina imaju jedno te isto ime procesa, pa ih teoretski mogu ubiti i 10 godina stari trojanci.
Cemu ovolika tromost u razvoju AV programa?
Zasto jos nisu implementirali stvari koje su tako ocigledne, i tako cesto koriscene od strane malwarea da bi se AV program zaobisao ili onesposobio?
Na trzistu postoje par programa koji debelo obracaju paznju na stvari o kojima sam vam ovde pricao, ali ni jedan od njih ne prelazi granicu od 80% u resavanju problema koje sam ovde spomenuo.
Rezultat utakmice na kraju ovog teksta:
2:0 za mene
Napomena: ovaj tekst nije pisan da posluzi kao strucno/tehnicko stivo, vec cisto kao uvid u situaciju. U cilju prilagodjavanja teksta manje upucenim citaocima, vecinu tehnicki izraza sam zamenio lakse shvatljivim izrazima. Vecina stvari su zakljuci izvedenih iz licnog iskustva, tako da ne moraju da oslikavaju stvarno stanje. Svi oni koji zele da me iskritikuju zbog 'nestrucnosti teksta', zelim samo da ima kazem da tekst ni nije bio namenjen strucnjacima, posto njima nije ni potreban, vec onima koji o ovim stvarima nisu ni culi, ili nisu imali ideju da postoje. Tacka
|