Specißlnφ techniky vir∙

  • Retro viry - odvetnΘ viry
    Hlavnφm heslem t∞chto vir∙ je: nejlepÜφ obrana je ·tok. A to taky dodr₧ujφ. Sna₧φ se obejφt a jeÜt∞ lΘpe znemo₧nit prßci antivirov²m program∙m. Proto je ma₧ou, vypφnajφ rezidentnφ ochrany apod. Pozornost si zaslou₧φ virus Tequila, kter² odstra≥uje kontrolnφ souΦty p°idanΘ pomocφ Viruscanu p°φmo ze soubor∙.

  • NeviditelnΘ viry - Stealth viruses (Sub-Stealth viruses)
    Stealth virus je rezidentnφ virus, kter² se pokouÜφ vyhnout detekci skrytφm projev∙ svΘ p°φtomnosti v infikovan²ch souborech. Aby toto dosßhl, virus zachycuje systΘmovß volßnφ, kterß prov∞°ujφ obsah nebo atributy infikovan²ch soubor∙. V²sledky t∞chto volßnφ musφ b²t zm∞n∞ny tak, aby odpovφdaly p∙vodnφmu stavu souboru. Toho je schopen pouze tehdy, je-li rezidentnφ v pam∞ti.
    Nßzev t∞chto vir∙ je odvozen od anglickΘho slova stealth, co₧ znamenß lstivou Φinnost, vykonßvanou potajmu, kradmo apod. Lze tedy ji₧ z tohoto nßzvu leccos soudit o povaze t∞chto vir∙. Tφmto slovem lze toti₧ odznaΦit ony specißlnφ techniky, kterΘ t∞mto vir∙m zaruΦujφ velmi obtφ₧nou detekci jak u₧ivatelem, tak i antivirov²mi programy. V∞tÜina v²zkumnφk∙ na poli boje proti vir∙m souhlasφ s tφm, ₧e viry typu stealth majφ nßsledujφcφ charakteristiky:
    1. Virus skr²vß jakoukoliv zm∞nu provediteln²ch komponent v systΘmu, jako je nap°. zm∞na dΘlky souboru, nebo zm∞na boot sektoru, nebo tabulky rozd∞lenφ disku, jednß-li se o virus rezidentnφ v pam∞ti nebo o zm∞nu velikosti pam∞ti.
    2. Virus je schopen dezinfikovat programy "za letu". Nap°. kdy₧ je naka₧en² program naΦφtßn do pam∞ti, je tento program dezinfikovßn. Tato technika umo₧≥uje, ₧e i po pou₧itφ antivirovΘho software nenφ znßmo nic o p°φtomnosti viru.
    3. Viry typu stealth ve v∞tÜin∞ p°φpad∙ (ale nenφ to pravidlem) infikujφ programy v okam₧iku, kdy jsou otevφrßny, krom∞ klasickΘ mo₧nosti infekce v okam₧iku, kdy jsou spuÜt∞ny. V²sledkem toho, ₧e proveditelnΘ programy jsou rovn∞₧ infikovßny p°i otev°enφ, je velmi rychlΘ rozÜφ°enφ viru po celΘm systΘmu.
    Prvnφ charakteristika, ₧e virus skr²vß jakoukoliv zm∞nu provediteln²ch systΘmov²ch komponent, jej Φinφ velmi t∞₧ko detekovateln²m pro u₧ivatele poΦφtaΦe. Jestli₧e mßte d∙vod domnφvat se, ₧e se ve vaÜem poΦφtaΦi vyskytuje virus typu stealth nebo sub-stealth, vypn∞te cel² systΘm a nov∞ jej zave∩te z nenaka₧enΘ, proti zßpisu chrßn∞nΘ, systΘmovΘ diskety. Potom se pokuste spustit Φistou kopii vaÜeho antivirovΘho software z diskety, chrßn∞nΘ proti zßpisu. Proto₧e virus u₧ nenφ v pam∞ti, nenφ u₧ zde ₧ßdnΘ nebezpeΦφ rozÜφ°enφ nßkazy. Navφc je nynφ mo₧nΘ rozeznat na systΘmovΘm pevnΘm disku jakoukoliv zm∞nu v dΘlce souboru Φi jinou zm∞nu provediteln²ch systΘmov²ch komponent, signalizujφcφ infekci virem.
    Viry typu sub-stealth pak nazφvßme ty viry, kterΘ vykazujφ t°eba jen jednu z v²Üe uveden²ch vlastnostφ. P°esto je t°eba z hlediska ·plnosti je ji₧ °adit do tΘto skupiny, nebo¥ stejn∞ jako typickΘ viry typu stealth p°edstavujφ pro antivirovΘ programy v₧dy urΦit² problΘm.

  • K≤dovanΘ viry - Crypted viruses
    Prvotnφm ·Φelem k≤dovßnφ bylo znep°ehlednit vlastnφ k≤d viru a ztφ₧it tak jeho anal²zu (kterß je nutnß k vytvo°enφ antivirovΘho programu). Navφc je tφmto postupem zkomplikovßno uzdravenφ napadenΘho programu, proto₧e obsah zaΦßtku programu je takΘ zak≤dovßn. TakovΘ k≤dovßnφ b²vß Φasto realizovßno tak, ₧e vlastnφ k≤d viru je v programu ulo₧en - zak≤dovßn n∞jak²m jednoduch²m algoritmem (oblφbenΘ je provedenφ operace XOR s ka₧d²m bajtem k≤du viru) a p°ed vlastnφm virem se nachßzφ krßtkß dek≤dovacφ smyΦka, kterß zajistφ jeho transformaci do p∙vodnφ podoby.
    Takto zak≤dovan² vir mß tΘm∞r konstantnφ podobu (TΘm∞r proto, ₧e stejn∞ jako b∞₧nΘ viry si pot°ebuje do svΘho t∞la zapsat n∞kolik prom∞nn²ch hodnot, kterΘ mohou b²t v ka₧dΘ generaci jinΘ; p°evß₧nß Φßst viru vÜak z∙stßvß nem∞nnß.)
    Nov∞jÜφ viry zaΦaly vyu₧φvat k≤dovßnφ s prom∞nnou hodnotou k dosa₧enφ toto, aby ka₧d² exemplß° viru byl z velkΘ Φßsti odliÜn²; shodnß z∙stßvß pouze dek≤dovacφ smyΦka na zaΦßtku programu. To sice znaΦn∞ zkomplikovalo vyhledßvßnφ n∞kter²m antivirov²m program∙m pou₧φvajφcφm charakteristickΘ sekvence, ale neustßle je relativn∞ snadnΘ urΦit k≤dovacφ hodnoty a program dek≤dovat. Navφc lze stßle pou₧φt v₧dy stejn∞ vypadajφcφ dek≤dovacφ smyΦku k identifikaci viru.
    Nßstupce tΘto technologie p°edstavujφ polymorfnφ viry (viz. nφ₧e), kterΘ pou₧φvajφ pom∞rn∞ komplikovan²ch metod k tomu, aby i dek≤dovacφ smyΦka mohla mφt prom∞nlivou podobu.

  • Polymorfnφ (mutaΦnφ) viry - Polymorphic viruses
    Polymorfnφ viry jsou v jistΘm pohledu podobnΘ stealth vir∙m. Toti₧ v tom, ₧e je velmi obtφ₧nΘ je detekovat antivirov²mi prost°edky. TΘto stejnΘ skuteΦnosti vÜak polymorfnφ viry dosahujφ jin²mi prost°edky ne₧ viry typu stealth.
    Polymorfnφ virus vytvß°φ b∞hem replikace kopie, kterΘ jsou funkΦn∞ ekvivalentnφ, ale jednotlivΘ replikace se od sebe tΘm∞° ·pln∞ liÜi - majφ podstatn∞ odliÜnΘ °etezce byte.
    Aby toho virus dosßhl, musφ nßhodn∞ vklßdat p°ebyteΦnΘ instrukce, zam∞≥ovat po°adφ nezßvisl²ch instrukcφ a nebo volit z mnoha r∙zn²ch k≤dovacφch schΘmat. Tato prom∞nlivost (polymorfnost) viru jej Φinφ obtφ₧n∞ detekovateln²m, identifikovateln²m a odstraniteln²m, p°edevÜφm skenovacφmi metodami.
    DalÜφ metoda, kterß je velmi Φasto pou₧φvßna polymofnφmi viry (ale i jin²mi viry) je metoda komplexnφho zak≤dovßnφ. Komplikovan∞jÜφ polymorfnφ viry pou₧φvajφ metodu komplexnφho zak≤dovßnφ kombinovanou s vklßdßnφm NOP instrukcφ (No Operation), instrukcφ pro zavedenφ nepou₧φvan²ch registr∙, r∙zn²ch instrukcφ se stejn²m ·Φinkem atd.
    Zak≤dovan² virus mß v₧dy dv∞ Φßsti: dek≤dovaΦ, malou Φßst, kterß rozk≤dovßvß virus a pak t∞lo zak≤dovanΘho viru. Kdy₧ je virus spuÜt∞n, nejprve se spustφ dek≤dovaΦ, kter² rozk≤duje t∞lo viru. Pak m∙₧e b²t spuÜt∞no t∞lo viru, to se replikuje nebo stßvß rezidentnφm. Toto t∞lo viru bude zahrnovat k≤dovaΦ, kter² pracuje b∞hem replikace. Prom∞nnΘ zak≤dovßvacφ viry jsou pro studium mnohem obtφ₧n∞jÜφ, proto₧e programßtor musφ nejprve dek≤dovat jejich k≤d.
    Navφc, je-li toti₧ virus zak≤dovßn, nenφ mo₧no jej vyhledat b∞₧nou skupinou antivirov²ch program∙, kterΘ naz²vßme kontrolnφ (nebo skenovacφ), a kterΘ pro detekci vir∙ pou₧φvajφ metodu porovnßvßnφ vir∙ s urΦitou databankou tak zvan²ch charakteristick²ch °et∞zc∙ (signatur) vir∙. Samoz°ejm∞, ₧e Φφm je zak≤dovßnφ slo₧it∞jÜφ a komplexn∞jÜφ, tφm je detekce viru obtφ₧n∞jÜφ i ostatnφmi typy antivirov²ch prost°edk∙.
    V praxi probφhß zak≤dovßvßnφ nejr∙zn∞jÜφmi zp∙soby. Jednφm z nich je vzφt prost∞ "nßhodnΘ" Φφslo, jako je t°eba hodnota sekundovΘho pole v systΘmovΘm Φasu, kdy dojde k infekci, a provΘst jednoduchΘ zak≤dovßnφ hodnoty ka₧dΘho byte ve virovΘm k≤du. Pouze krßtk² kousek na zaΦßtku (rovn∞₧ polymorfnφ) je ponechßn pro dek≤dovßnφ zbytku viru, kdy₧ p°ijde Φas, aby se virus aktivoval. Zak≤dovßnφ se m∙₧e ale takΘ dφt jin²mi zp∙soby: zak≤dovßnφ pravidelnΘho poΦtu, ale libovoln²ch byte, nebo zak≤dovßnφ k≤du jako celku, a nikoliv byte po byte.
    To znamenß, ₧e je tu v₧dy alespo≥ p∙l tuctu mo₧nostφ, jak dojφt ke stejnΘmu konci. Tomu napomßhß skuteΦnost, ₧e mnohΘ programovacφ funkce jsou komutativnφ, tedy nezßle₧φ na po°adφ, ve kterΘm jsou tyto funkce uvedeny. To znamenß, ₧e jen velmi malΘ kousky k≤du, kousky p°φliÜ malΘ na to, aby mohly b²t pou₧ity jako signaturov² °et∞zec, mohou b²t znovu obnoveny r∙zn²mi zp∙soby po ka₧dΘ, kdy₧ virus infikuje nov² soubor.
    P°edch∙dcem t∞chto vir∙ byly tzv. sebezak≤dovßvßcφ virovΘ programy. Existujφ i starÜφ a omezenΘ "sebezak≤dovßvacφ" virovΘ programy, kterΘ jsou °azeny do skupiny vir∙ polymorfnφch. Tyto sebezak≤dovßvacφ viry m∞ly omezen² poΦet "variant" i kdy₧ nap°. z tΘto skupiny nejlepÜφ virus Whale dosßhl a₧ 40 r∙zn²ch forem.
    Technikou vyu₧φvanou t∞mito viry byla volba mezi r∙zn²mi zak≤dovßvacφmi schΘmaty, kterΘ vy₧adujφ r∙znΘ dek≤dovacφ programy: pouze jeden z t∞chto program∙ mohl b²t jasn∞ viditeln² v danΘ replikace viru. Virov² skener by tedy pro detekci takovΘho viru pot°eboval mnoho charakteristick²ch °∞tezc∙ (jede pro ka₧dou mo₧nou metodu dek≤dovßnφ).

    Podrobn∞jÜφ informace lze zφskat v kapitole "
    konstrukce polymorfnφch vir∙".

    P°φklad souboru p°ed zavirovßnφm...
    ...a po zavirovßnφ virem OneHalf.3544. VÜimn∞te si deseti krßtk²ch programk∙, kterΘ jsou nßhodn∞ rozneseny p°ed samotn²m virem. Tyto progrßmky jsou navzßjem propojeny skoky, a dohromady tvo°φ dek≤dovacφ rutinu. Na zmatenφ antivir∙ jsou tyto krßtkΘ progrßmky plnΘ nic ned∞lajφcφch instrukcφ jako: nop, stc, clc, sti, cs:, ss:, ds:, cld, std, cmc.

  • Metamorfnφ viry
    Velmi zajφmavß skupina... V napadnutΘm souboru se toti₧ nenachßzφ virus v klasickΘm smyslu. Napaden² soubor toti₧ obsahuje jen kompilßtor, spoleΦn∞ se zdrojov²m pseudok≤dem viru. P°i spuÜt∞nφ infikovanΘho souboru vytvo°φ kompilßtor v pam∞ti novou, poka₧dΘ odliÜnou kopii viru. Kompilßtor neobsahuje ₧ßdnΘ podez°elΘ instrukce a virus je proto nedetekovateln² heuristickou anal²zou. Statick² zdrojov² pseudok≤d viru je v infikovanΘm souboru zak≤dovßn a odk≤dovßvß se pr∙b∞₧n∞ b∞hem kompilace. Po kompilaci se op∞t zak≤duje, ale s jin²m klφΦem.
    Tato skupina je p°edevÜφm zastoupena rodinou slovensk²ch vir∙ TMC.

    Pro sestavenφ jsem vyu₧il Φlßnek od Miroslava Trnky z ESETu (NOD Antivirus). O sestavenφ se zaslou₧il MGL.

  • Tunelujφcφ viry
    Nejznßm∞jÜφ technikou, kterou se virus brßnφ je znßmß pod pojmem tunelovßnφ. To spoΦφvß ve schopnosti vyhledßvat p∙vodnφ adresy systΘmov²ch, nejΦast∞ji diskov²ch slu₧eb a ty pak pou₧φvat p°i prßci s disky ve snaze obejφt p°φpadn² antivirov² software. Ten toti₧ m∙₧e, obdobn∞ jako viry, obsahovat rezidentnφ Φßst, kterß je nainstalovßna v pam∞ti, mß p°evzaty adresy systΘmov²ch slu₧eb a monitoruje d∞nφ v systΘmu a sna₧φ se zabrßnit neoprßvn∞n²m nebo podez°el²m akcφm.
    Jin² zp∙sob aktivnφho boje proti antivirov²m program∙m spoΦφvß p°φmo v manipulaci s jeho rezidentnφ Φßstφ. N∞kterΘ antiviry toti₧ komunikujφ se sv²mi rezidentnφmi hlφdaΦi pomocφ n∞kolika snadno p°φstupn²ch slu₧eb (kterΘ jsou nadto v mnoha pramenech dokumentovßny) a obsahujφ i funkci "doΦasnΘ deaktivace" hlφdaΦe. Pro vir tedy nenφ nic sna₧Üφho, ne₧ se dotßzat (jak jinak, ne₧ pomocφ zmφn∞n²ch slu₧eb) na p°φtomnost takov²chto rezidentnφch hlφdaΦ∙ v pam∞ti, a pakli₧e tyto ·slu₧n∞ odpovφ "ano, jsem tady", pomocφ znßmΘ slu₧by je deaktivovat.
    Vir m∙₧e takΘ obsahovat Φßst k≤du, kterß manipuluje s datov²mi soubory antivir∙ (to vÜak jsou spφÜe retroviry), nejΦast∞ji s databßzφ sekvencφ vir∙ nebo kontrolnφch souΦt∙. Jejich zm∞nou nebo smazßnφm m∙₧e dosßhnout toho, ₧e z∙stane p°i antivirovΘ kontrole neodhalen.

  • RychlΘ / PomalΘ infektory (Fast / Slow Infectors)
    • Fast infector
      Tφmto termφnem jsou oznaΦovßny ty rezidentnφ viry, kterΘ neinfikujφ pouze soubory, kterΘ jsou spouÜt∞ny, ale i ty programy, se kter²mi je manipulovßno jin²m zp∙sobem (jsou kopφrovßny, pohlφ₧eny, archivovßny apod.). Existuje mnoho variant, kterΘ se liÜφ tφm, p°i jak²ch Φinnostech jsou programy infikovßny, avÜak v podstat∞ vÜechny jsou stejn∞ nebezpeΦnΘ, jak jednoduchß byla p∙vodnφ myÜlenka. Mimo jinΘ toti₧ tento mechanismus zp∙sobφ, ₧e nap°φklad antivirov² program, kter² neznß dan² vir a kter² p°i kontrole prohlΘdne vÜechny spustitelnΘ soubory na disku, roznese infekci do vÜech t∞chto soubor∙ !

    • Slow infector
      Je do jistΘ mφry opakem p°edchozφho. Tento mechanismus vybere k napadenφ pouze takov² program, do kterΘho je prßv∞ zapisovßno. Tφm se sice radikßln∞ omezφ pole p∙sobnosti, na druhΘ stran∞ je obtφ₧n∞jÜφ takov² vir odhalit, nebo¥ modifikuje programy, u kter²ch modifikaci oΦekßvßme (proto₧e jsme do nich sami zapisovali).

  • Obrana viru proti krokovßnφ k≤du
    ╚ast²m jevem, se kter²m se lze v t∞le viru setkat, je pou₧φvßnφ technik, kterΘ zt∞₧ujφ trasovßnφ a anal²zu k≤du. K tomu jsou vyu₧φvßny mΘn∞ znßmΘ vlastnosti poΦφtaΦe a procesoru a takovΘ programovΘ konstrukce, kterΘ kolidujφ s pou₧itφm ladφcφch prost°edk∙, pou₧φvan²ch p°i anal²ze viru.
    T∞chto postup∙ je celß °ada a nenφ mo₧nΘ (ani ·ΦelnΘ) pokouÜet se o jejich ·pln² v²Φet, proto vßs seznßmφme jen s vybran²mi zßstupci.
    Proti trasovßnφ k≤du debuggerem se viry brßnφ nap°φklad vklßdßnφm Φasov∞ zßvislΘho k≤du. To znamenß, ₧e program p°edpoklßdß, ₧e se n∞jakß Φßst k≤du provede v urΦitΘm, velmi krßtkΘm ΦasovΘm intervalu. Pokud je program trasovßn ruΦn∞, instrukci po instrukci, je tato doba pochopiteln∞ nesrovnateln∞ delÜφ a vykonßvßnφ programu se pak m∙₧e ubφrat zcela odliÜnou v∞tvφ.
    Jin²m p°φkladem je k≤d, v pr∙b∞hu jeho₧ provßd∞nφ nelze zapisovat do zßsobnφku (co₧ je Φinnost, bez kterΘ se debugger za b∞₧n²ch okolnostφ neobejde). Pokud se n∞kdo takov² k≤d pokusφ neuvß₧en∞ protrasovat v debuggeru, pravd∞podobn∞ na prvnφ pokus neusp∞je.
    DalÜφm pom∞rn∞ ·Φinn²m trikem bylo vyu₧itφ fronty p°edzpracovan²ch instrukcφ v procesoru (prefetch queue). Jejφm d∙sledkem je to, ₧e zm∞na v pam∞ti, kterß se t²kß instrukce ji₧ naΦtenΘ v procesoru, nemß na provßd∞nφ tΘto operace vliv (procesor tedy provede p∙vodnφ, nezm∞n∞nou instrukci). To ovÜem platφ, pouze pokud je k≤d korektn∞ vykonßvßn. V p°φpad∞ trasovßnφ dochßzφ mezi vykonßnφm ka₧dΘ instrukce sledovanΘho programu k provedenφ mnoha jin²ch Φinnostφ, v d∙sledku Φeho₧ je fronta procesoru vyprßzdn∞na a pozd∞ji je do nφ naΦtena ji₧ pozm∞n∞nß instrukce. Tento jev lze ve virech obΦas zpozorovat, paradoxn∞ vÜak Φast∞ji nenφ pou₧it ·mysln∞ k obelst∞nφ debuggeru, ale zp∙sobuje chybnou Φinnost viru. Tento efekt se toti₧ neprojevoval na star²ch poΦφtaΦφch vybaven²ch procesory 8088 (a op∞t by u₧ nem∞l fungovat na procesorech Pentium), co₧ m∞lo za nßsledek, ₧e n∞kterΘ viry napsanΘ pro tyto procesory p°estaly na nov∞jÜφch typech fungovat.

    Zdroj: Praktickß sebeobrana proti vir∙m - Petr Odehnal, Petr ZahradnφΦek - GRADA

    Zdroj: O poΦφtaΦov²ch virech ... a jak na n∞ ? - (c)1996 Ing.Ji°φ MrnuÜtφk, AEC s.r.o.