Skenery - detaily

SouborovΘ skenery

Prvnφ a nejstarÜφ metodou je hledßnφ vir∙ podle °et∞zc∙ (tj. podle sekvence bajt∙ obsa₧en²ch ve viru). Je to n∞co podobnΘho, jako kdy₧ hledßte nap°. v Microsoft Wordu n∞jak² kus textu (stisknete CTRL-F a...). Skenery vyu₧φvajφcφ tuto metodu vÜak nemaΦkajφ ₧ßdnΘ CTRL-F, ale hledajφ tyto kusy v souborech. NejstarÜφ antiviry hledaly °ete₧ce v cel²ch souborech, co₧ mohlo v²razn∞ zpomalit rychlost skenovßnφ. Ty inteligentn∞jÜφ "projely" n∞kolik prvnφch bajt∙ souboru a zjistily si nap°.: adresu vstupnφho bodu (entry-point) a °et∞zec hledaly a₧ tam. ╪et∞zec musφ b²t peΦliv∞ vybrßn a musφ b²t dostateΦn∞ dlouh². Pokud by tomu tak nebylo, mohl by °et∞zec zp∙sobovat faleÜnΘ poplachy (nap°. dφky tomu, ₧e stejn² °et∞zec se vyskytuje n∞kde jinde, ale ne v "rukßch" viru). Nap°. m∙j jednoduch² antivirus AntiTiny99 (viz. strßnka Download/Univerzßlnφ antiviry/BlackJack) pou₧φvß °et∞zec, kter² je dlouh² 16 bajt∙ (tj. Üestnßct znak∙). Tφm, ₧e tento °et∞zec hledßm pouze v prvnφch 16 bajtech souboru m∙₧u zcela vylouΦit p°φpad, kdy antivirus ohlasφ faleÜn² poplach.

S p°φchodem k≤dovan²ch vir∙ vÜak nastal problΘm. Nap°. virus Pojer.1919 vypadß v ka₧dΘm souboru (exemplß°i) odliÜn∞, pouze malß Φßst jeho t∞la mß poka₧dΘ stejn² (konstantnφ) vzhled v ka₧dΘm jeho exemplß°i. Tato stßle konstatnφ Φßst se naz²vß dek≤dovacφ smyΦka (decryptor). Pouze na tΘto Φßsti lze aplikovat hledßnφ podle °et∞zce (kterΘ jsou dopln∞ny u₧ i o v∞ci typu ??, *).

╪et∞zce nelze vyu₧φt na hledßnφ polymorfnφch vir∙ (ty nemajφ na "povrchu" ₧ßdnou Φßst t∞la konstatnφ). Na detekci takov²ch vir∙ se p∙vodn∞ pou₧φvaly algoritmy, kterΘ dokßzaly zjistit, zda se jednß o dek≤dovacφ smyΦku viru Φi ne. Detekce pomocφ algoritm∙ vÜak m∞la jednu nev²hodu - v∞tÜinou platilo: jeden polymorfnφ virus=jeden algoritmus. P°i dneÜnφm poΦtu polymorfnφch vir∙ by byl takov² antivirus vyu₧φvajφcφ tuto techniku dosti dlouh² (a antivirov²m odbornφk∙m by to dalo dost prßce).

Proto se Φasem objevila technika zvanß "emulßtor k≤du". Emulßtor k≤du tvo°φ i zßklad pro aktivnφ heuristickou anal²zu (o tom ale a₧ dßle). Emulßtor k≤du v podstat∞ "spouÜtφ" soubory, kterΘ jsou urΦeny k testu. VÜe vÜak probφhß v tzv. "virtußlnφm prost°edφ", kde je vÜe jen ve "virtußlnφ podob∞" (tj. "virtußlnφ disketa", "virtußlnφ pam∞¥" atd.). Po "virtußlnφm spuÜt∞nφ souboru" sleduje emulßtor registry procesoru (CPU) a postupuje zkrz soubor tak, jako kdyby byl doopravdy spuÜt∞n. V podstat∞ emulßtor vykonß i Φinnost p°φpadnΘho viru - proemuluje dek≤dovacφ smyΦku (decryptor) a dostane se tak p°φmo k "vnit°nostem" viru, kde u₧ m∙₧e skener pokojn∞ vyhledßvat podle sekvencφ (dφky tomu, ₧e se emulace dostala pod "povrch"-"k∙₧i" viru, kde ji₧ je t∞lo viru prakticky konstantnφ). Pokud jsou b∞hem emulace sbφrßny informace o aktivitßch programu (nap°. proces p°esm∞rovßnφ vektor∙ p°eruÜenφ...), m∙₧e b²t do akce zapojena i aktivnφ heuristickß anal²za, kterß na zßklad∞ zφskan²ch informacφ vyhodnotφ, zda se ne/jednß o virus. Jeliko₧ emulace programu probφhß pomaleji ne₧ p°i skuteΦnΘm spuÜt∞nφ programu, mß emulßtor tzv. TimeOut - tj. Φas (Φi poΦet instrukcφ), po kterΘm (po kter²ch) se chod emulßtoru na aktußlnφm souboru zastavφ.

ProblΘm vÜak nastal s p°φchodem Windows 9x/NT a soubor∙ PE EXE. Ty majφ zcela odliÜnou strukturu, vÜe je slo₧it∞jÜφ, delÜφ atd. Snad jeÜt∞ ₧ßdn² antivirus nevyu₧φvß emulßtor k≤du v PE EXE (dφky zmi≥ovanΘ rozsßhlosti). Pokud se setkßme s heuristikou, kterß dokß₧e detekovat neznßmΘ viry v PE EXE, v∞tÜinou se jednß o pasivnφ heuristiku, nebo n∞co, co se heuristice jen blφ₧φ (nap°. sledovßnφ, zda majφ sekce v PE EXE p°φznaky ke Φtenφ i zßpisu, kam sm∞°uje entry-point apod.). Prvnφ antiviry, kterΘ vyu₧φvajφ emulßtor i v p°φpad∞ k≤du v PE EXE ji₧ existujφ. Podle informacφ mezi n∞ pat°φ nap°φklad: RAV, AVP, NOD32. Tyto antiviry vÜak musφ °eÜit dalÜφ problΘm, kter² vytvß°ejφ viry, vyu₧φvajφcφ tzv. EPO techniku (Entrypoint Obscuring). Jde o to, ₧e virus nemodifikuje entry-point, ani na zaΦßtek k≤du nevklßdß n∞jakou instrukci skoku (JMP), ale sna₧φ se "zaÜφt" n∞kam nakonec. Virus se postarß nap°φklad o to, aby byl spuÜt∞n a₧ po zavolßnφ urΦitΘ API funkce p∙vodnφm programem. Pokud si virus zajistφ, aby byl spuÜt∞n p°i volßnφ funkce ExitProcess API, m∙₧e si b²t jist², ₧e se bude aktivovat a₧ na konci celΘho "mechanismu". Idea EPO techniky je jasnß: znesnadnit antivir∙m detekci. Emulßtor k≤du toti₧ v∞tÜinou testuje pouze zaΦßtek programu (prvnφ instrukce) a na anal²zu mß vyΦlen∞nou velice krßtkou dobu. Nenφ tedy pravd∞podobnΘ, ₧e by se dopracovala a₧ k volßnφ slu₧by ExitProcess a virus tak objevila.

StarÜφ heuristickΘ anal²zy byly oznaΦovßny za pasivnφ. Prvnφ z nich byla pou₧ita v antivirech F-PROT a TBAV. V podstat∞ Ülo o to, ₧e pasivnφ heuristika projφ₧d∞la pouze po "povrchu" souboru a hledala typickΘ p°φznaky pro virus. Pokud bylo takov²ch p°φznak∙ (flags) nalezeno dostateΦnΘ mno₧stvφ, byl takov² soubor pova₧ovßn za napaden². P°φznaky byly op∞t hledßny, podle krßtk²ch °et∞zc∙, kterΘ byly pro virus typickΘ (nap°. volßnφ n∞jakΘ slu₧by INT 21h apod.). Nev²hodou bylo, ₧e pasivnφ heuristika nedokßzala proniknout pod "povrch" (pod "k∙₧i") viru a tak nezabφrala na slo₧it∞jÜφ viry. Navφc Ülo taky neaktivnφ heuristiku snadno oklamat. Pokud antivirus pova₧oval za p°φznak t°eba souhrn instrukcφ: mov ah,40; int 21h (v hex. soustav∞: B440CD21) pak bylo mo₧nΘ pasivnφ heuristiku oklamat souhrnem instrukcφ, kterΘ vyjad°ujφ dohromady totΘ₧: mov ah,3f; inc ah; int 21h (B43FFEC4CD21).

Skenovßnφ pam∞ti

Skenovßnφ pam∞ti mß velmi spoleΦnΘho se skenovßnφm soubor∙ (viz. v²Üe). V pam∞ti jsou toti₧ hledßny stejnΘ °et∞zce jako v souboru. Skener pam∞ti se zam∞°uje pouze na viry vytφ₧enß mφsta v pam∞ti. Antivirus se v∞tÜinou sna₧φ vyhnout vlastnφmu k≤du (kter² je taktΘ₧ v pam∞ti). Pokud by se tak nestalo, mohl by hlßsit faleÜn² poplach. N∞kdy tato situace nastane, pokud po sob∞ spustφte dva antiviry, nebo kdy₧ b∞₧φ n∞jak² rezidentnφ skener, ke kterΘmu spustφte nerezidentnφ skener (on-demand) konkurenΦnφ firmy. AntivirovΘ programy by si m∞li po sob∞ pam∞¥ d∙kladn∞ uklidit (obzvlßÜt∞ mφsta, kam si ulo₧ily °et∞zce, podle kter²ch viry v pam∞ti/souborech/oblastech hledaly). FaleÜn² poplach m∙₧e nastat i pokud nap°. kopφrujete infikovanΘ soubory a pak spustφte test pam∞ti n∞jakΘho antiviru. Skenovßnφ pam∞ti je v podstat∞ dosti jednoduchß zßle₧itost. Hledß se jen sekvence - ₧ßdnß emulace. N∞kdy jsou faleÜnΘ poplachy na dennφm po°ßdku. Nutno podotknout, ₧e t°eba antivirus AVP pou₧φvß odliÜnou techniku pro hledßnφ vir∙ v pam∞ti, kterΘ pojem "faleÜn² poplach" nic ne°φkß. Prßv∞ s tφmto antivirem souvisφ i deaktivace aktivnφho viru v operaΦnφ pam∞ti. V podstat∞ je to takovß ptßkovina pro lφnΘ u₧ivatele, kte°φ necht∞jφ bootovat z ΦistΘ systΘmovΘ diskety. Proces p°i kterΘm dojde k deaktivaci dosud aktivnφho viru v operaΦnφ pam∞ti je celkem jednoduch²: jde o to, ₧e antivirus opravφ adresy p°esm∞rovan²ch p°eruÜenφ (kterΘ ukazujφ na virus) na p∙vodnφ hodnoty. P∙vodnφ adresy p°eruÜenφ m∙₧e zφskat p°φmo v t∞le viru (proΦ ? bli₧Üφ info zde) nebo musφ antivirus tyto adresy znßt. P°φmΘ odkazy na obsluhu p°eruÜenφ m∙₧e antivirus vyu₧φt i k anti-stealth technikßm (bli₧Üφ info zde).


K napsßnφ tohoto Φlßnku m∞ inspirovalo p°eΦt∞nφ ezinu Asterix 2. Thanx ju, Flush.