Igiho stránka o virech
Novinky
Kniha o virech
1.Pomoc
Testy
Odkazy
Download
AV-Konference
Akce
Autor
Assembler

Programovací jazyk nejnižší úrovně. Program je zapisován přímo pomocí instrukcí procesoru (jejich zkratek) a může tak maximálně využít vlastností počítače. Převážná většina počítačových virů je vytvořena právě v tomto jazyce. Termín assembler také označuje překladač zmíněného jazyka do kódu proveditelného procesorem. S příchodem OS Windows 9x/2000/NT se ke slovu dostávají i vyšší programovací jazyky (C++, Delphi, Visual Basic atd.).

Autoexec.bat - soubor

Textový soubor obsahující seznam příkazů, které operační systém provede automaticky při svém startu. Lze jej mimo jiné využít k automatickému spouštění antivirové kontroly, stejně jako k automatickému zavirování počítače hned po startu (v případě napadení programu, který je z tohoto souboru spuštěn).

BIOS - "Basic Input Output System"

Pod operačním systémem (MS-DOS, Windows 9x) se nachází ještě jedna vrstva programů tvořících tzv. BIOS. Tyto programy jsou tak důležité, že jsou uloženy v paměti ROM. BIOS transformuje požadavky od programů na sekvence pro řízení hardwaru (disky, tiskárny, monitory...).

CARO (Computer Anti-Virus Researchers Organisation)

Organizace CARO vznikla v roce 1991 a založili ji pánové Fridrik Skulason (Virus Bulletin, Alan Solomon (S&S International) a Vesselin Bontchev (Univerzita v Hanburgu). Rozhodly se totiž, že pojmenování nových virů bude mít jistá pravidla. Základní pojmenování by mělo vypadat takto:

Family_Name.Group_Name.Major_Variant.Minor_Variant[:Modifier]
Musejí být používany pouze alfanumerické znaky [A-Za-z0-9_$%&!'`#-], mezery se mají vytvářet podtržítkem (_). Např.: Dark_Avenger. Jednotlivé části pojmenování viru musí být dlouhé maximálně 20 znaků. Nesmí být používány názvy firem, jména atd..... Nejblíže k pojmenování CARO má jednoznačně antivirus F-Prot, na druhém konci pak stojí PC-Cillin.

CMOS

Pamět CMOS obsahuje velmi důležité informace o periferiích a částech počítače. Její obsah je zálohován baterií. Virus může údaje v této paměti poškodit a tak znemožnit start počítače. Náprava je velice jednoduchá, PC v takovém případě vypíše něco ve smyslu "CMOS checksum error". Přesto je umožněn vstup do setupu biosu, kde stačí např. obnovit a uložit defaultní hodnoty. Po dalším restartu PC bude již vše v pořádku.

Config.sys - soubor

Textový soubor obsahující konfigurační pokyny pro operační systém. Zde se také nacházejí příkazy pro zavádění potřebných ovladačů. Config.sys má podobný účel jako Autoexec.bat, který se však zavádí po startu počítače později.

CRC - kontrolní součet

Číselná hodnota vypočítaná podle daného algoritmu na základě obsahu souboru (případně libovolných dat). Případná změna výchozích dat se projeví jiným výsledkem kontrolního součtu. Ve své původní podobě se jedná o prostý součet všech bajtů souboru; téměř všechny programy však používají nejrůznější modifikace tohoto algoritmu s cílem zvýšit spolehlivost a snížit napodobitelnost tohoto součtu. Kontrolní součty bývají používány pro přesnou identifikaci viru a jsou též důležitou součástí kontroly integrity.

Debugger

Ladící prostředek (program) určený k vyhledávání chyb při vývoji programu. Umožňuje mimo jiné sledovat vykonávání programu po jednotlivých instrukcích, což jej činí neocenitelným pomocníkem při analýze počítačových virů. Mnoho virů (přesněji jejich autorů) je si této slabiny vědomo, proto používají programové konstrukce, které mají takové sledování (trasování) programu zkomplikovat.

Dekryptor

Úsek kódu viru, který zajišťuje převedení zakódované části viru do původní, spustitelné podoby. Nejčastěji se vyskytuje na začátku viru. Může, ale nemusí mít konstantní podobu v různých generacích téhož viru.

Dropper

Dropper je program, který byl navržen s cílem instalovat virus do systému. Podstatné je, že virus je v tomto programu obsažen tak, že nemůže být detekován virovými skenery. Jinými slovy, dropper není program infikovaný virem a velmi často jsou jako droppery používány trojské koně. Dropper může svou funkci splnit tím, že virus instaluje do paměti a nebo přímo infikuje nějakou proveditelnou jednotku při instalaci viru.

EICAR (European Institute for Computer Anti-virus Research) a jejich "Standard Anti-Virus Test File"

Na následující sekvenci znaků (68 bajtů) se dohodlo před jistou dobou několik antivirových firem. V dnešní době dokážou tuto sekvenci znaků vyhledat prakticky všechny rozumné antivirové programy. O co jde ? Antivirové programy detekují tuto sekvenci znaků podobně, jako by šlo o skutečný virus (ve skutečnosti je to zcela neškodný, spustitelný program). Má to význam hlavně v situaci, kdy si chce uživatel ověřit, zda je jeho antivirus opravdu schopen detekovat v systému viry. V některých případech se totiž může stát, že i když se antivirus tváří jako zcela funkční, ve skutečnosti je zcela nefunkční - není schopen detekovat viry (příčinou může být např. kolize s jiným antivirem v paměti apod.). Pokud tedy následující sekvenci znaků vložíte do souboru s příponou COM (např. EICAR.COM) a Váš antivirus na něm začne "řvát" podobně, jako by šlo o skutečný virus, je vše v pořádku. Pokud antivirus mlčí, může jít o výše uvedený stav (kolize s jiným programem v paměti apod.) a vy nejste dokonale chráněny před útokem virů !!! Následuje zmiňovaná sekvence znaků (pokud ji nechtete vkládat do souboru, využijte již hotový EICAR.COM). Ještě jedna důležitá informace na závěr: NEJDE O SKUTEČNÝ VIRUS, SEKVENCE JE ZCELA NEŠKODNÁ A LZE JI BEZ OBAV SPUSTIT (pokud se nachází v souboru s příponou COM či EXE) !!!

 X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Emulace kódu

Postup, při kterém nejsou jednotlivé instrukce programu prováděny přímo procesorem, ale jsou zpracovnávány speciálním programem. Takto lze kromě jiného velmi bezpečně sledovat provádění kódu a jeho vliv na počítač (s možností zabránit nebo změnit provedení nevhodné instrukce); toto nebezpečí je ovšem vykoupeno poměrně značným zpomalením takto emulovaného kódu oproti přirozenému zpracování procesorem. Více o tomto můžete najít zde.

Falešný poplach

Situace, kdy antivirový program označí zdravý soubor či jinou oblast za napadenou virem. K tomu může dojít díky náhodné podobnosti kódu neškodného programu s částí skutečného viru; falešné poplachy se vyskytují například u programů, které se nechovají (obdobně jako viry) k systému zcela korektně. Rozhodnutí o tom, zda je soubor skutečně napaden, nebo se jedná o falešný poplach je nejlépe přenechat odborníkům. Příliš vysoké procento falešných poplachů může jinak účinný antivir znehodnotit.

Fronta instrukcí procesoru (prefetch queue)

V době vykonávání jedné instrukce procesorem je několik následujících instrukcí již načteno v procesoru, kde čekají ve "frontě" na své dokončení. Změna těchto instrukcí v operační paměti již nemá na jejich provádění vliv, což může způsobit na pohled nepochopitelné chování programu. Délka této fronty instrukcí (tj. počet a velikost instrukcí, které jsou v této frontě uloženy) se u různých typů procesorů liší.

Germ virus

Jako germ virus se označuje virus ve své nulté generaci. Germ virus vzniká například po jeho kompilaci ze zdrojového kódu (ASM) do spustitelného tvaru (COM,EXE) (po vyléčení má soubor délku 0). Germem je třeba i tříbajtový COM soubor napadený virem testujícím délku své oběti a který se normálně takto krátkým souborům vyhýbá. Obdobně může být germem i COM virus přeložený ze zdrojáku do EXE tvaru. Zde je to však technicky dost obtížné odlišit, zda se jedná o Dropper či Germ.

Hoax

Hoax je emailová zpráva, která většinou upozorňuje na velmi nebezpečné, ve skutečnosti neexistující viry. Nezkušený uživatel pošle tuto zprávu dalším lidem, aby je upozornil před nebezpečím (které ve skutečnosti neexistuje...). Je opravdu hrozné, že se hoax někdy šíří rychleji než skutečný virus :( Pro detailní informace doporučuji navštívit www.hoax.cz.

Identifikace viru

Identifikací viru se většinou rozumí spolehlivé rozpoznání viru včetně jeho přesného určení. Takováto přesná identifikace má význam pro uživatele, který může lépe zjistit na čem je, tak pro vlastní antivir, který může poměrně bezpečně provádět další akce, jako je například léčení.

Instrukce

Instrukce jsou elementární příkazy pro práci procesoru.

Intended virus

Obvykle jsou takto označovány viry, které by měly dělat něco, co ve skutečnosti dělají špatně, nebo vůbec. Můžou za to samotní autoři virů, kteří se často snaží vytvořit něco, na co nemají.

In the Wild (ItW) - "viry v divočině"

Nejrozšířenější viry z pohledu počtu míst, odkud je jich šíření hlášeno. "In the Wild" viry lze najít v tzv. Wildlistu. Wildlist je seznam nejrozšířenějších virů (In The Wild), který je vydáván pravidelně každý měsíc (viz. www.wildlist.org). Wildlist je zpracováván centrálně a přispívají do něj pozorovatelé z různých koutů světa (kolem 50 lidí), obvykle jde o lidi z AV společností.

Operační systém (OS - operating system)

Operační systém je software (program) umožňující uživateli komunikovat s počítačem/"železem" (hardware).

Sekvence - Signatura - Řetězec - String

Skupina bajtů vyskytujících se v tělech virů, podle kterých je skener hledá.

Trasování

Stav, kdy je kód prováděn po jednotlivých strojových instrukcích, přičemž po každé instrukci je možno analyzovat její vliv na stav počítače. Trasování programu lze provádět ručně (např. pomocí debugeru), nebo automaticky (tak to dělají některé antiviry).

Trigger

Anglický termín pro spouštěcí podmínku, jejíž splnění má za následek provedení nějaké speciální, často škodlivé, činnosti viru (do té doby se vir snažil být co nejméně nápadný). Typickým příkladem takové podmínky je dosažení nějakého data.

Zdrojový text programu - "Zdroják"

Výchozí tvar programu, kde jsou jednotlivé požadované činnosti popsány v textové formě pomocí smluvených konvencí daného programovacího jazyka. Zdrojový text nemůže být přímo spuštěn. Nejprve musí být překladačem převeden do binární podoby.

Přerušení (Interrupt)

Následující část se týka především operačního systému MS-DOS. Situace ve Windows 9x/NT/2000 je jiná.

Přerušení

Přerušení je nástroj, pomocí kterého se dostane virus k prostředkům BIOSu a DOSu. Bez těchto prostředků by se virus neuměl množit ani škodit.
Přerušením (Interrupt) nazveme hardwarový signál, který vede k přerušení běhu programu vykonávaného procesorem a přesměrování běhu procesoru na program obsluhující přerušení. Po ukončení tohoto programu následuje obnovení původního stavu a pokračování přerušeného programu.
Přerušení můžeme rozdělit na přerušení vyvolané hardwarem (nemaskovatelné signálem NMI, maskovatelné signálem INTR) a softwarem (instrukce INT, chyba běhu programu). Softwarová přerušení jsou na úrovni BIOSu, DOSu a uživatelských programů.
Viry pracují s přerušeními vyvolanými instrukcí INT (je jich 256, t.j. 0-255). Při tomto přerušení následuje skok na místo, kde je obslužný program. Adresa pro obslužný program se nachází v paměti RAM, kde je tzv. tabulka přerušovacích vektorů (adres obslužných programů).
Tabulka začíná od adresy 0000:0000 a má velikost 4*256 bytů. Na 1 vektor (adresu) potřebujeme 4 byty (2 na segment a 2 na offset).

Přesměrování přerušení (hook interrupt)

Jak víme, přerušení jsou uložené v tabulce, která je v paměti RAM. Pokud změníme některý vektor (adresu) přerušení v tabulce stane se toto: Po vykonání příslušného přerušení bude následovat odskok do jiné oblasti paměti. Takto se můžeme postarat o to, aby se na místo původního obslužného programu vykonal náš program a po skončení našeho programu následuje skok na původní obslužný program (hook interrupt).
Tohoto hojně využívají viry (ale i jiné rezidentní programy). Virus je uložený v paměti a některé z přerušení má přesměrované tak, že ukazuje do těla viru. Jestliže nějaká činnost vyvolá přerušení (např. prohlížení, čtení, zavádění programu), dochází k aktivaci viru a ten může infikovat program (prohlížený, čtený, zaváděný) nebo způsobit škodu.

Disk a vše o něm

Na pevném disku nebo na disketě je uloženo mnoho rozdílných druhů údajů. Tyto údaje jsou uloženy jistým způsobem, který je určený fyzickou strukturou diskety (disku) a vlastnostmi operačního systému.
Mezi těmito údaji můžou být uloženy i viry.

Povrchy, stopy, cylindry

Pevný disk tvoří několik ploten nad sebou, v disketě se nachází tato plotna pouze jedna. Na každé straně těchto ploten se nachází hlava, která čte a zapisuje údaje z daného povrchu plotny. Plotny se otáčejí a hlavička se pohybuje ve směru střed-okraj plotny. Místo, kde se můžou zapisovat údaje tvoří soustředné kružnice na plotně (podobně jako na gramofonové desce).
Soustředné kružnice na povrchu plotny nazýváme stopy (tracks). Stopy pod sebou na jednotlivých plotnách vytvářejí cylinder, válec. Stopy i cylindry jsou číslované. Stopa 0 je vnější kružnice, poslední stopa je vnitřní kružnice.

Cylinder 0 je tvořený všemi stopami 0 na jednotlivých plotnách (ve všech vrstvách):

    povrch 0 (hlava 0) - horní strana 1.plotny,
    povrch 1 (hlava 1) - dolní strana 1.plotny,
    povrch 2 (hlava 2) - horní strana 2.plotny,

Stopy mají příliš velkou kapacitu na to, aby se pracovalo přímo s nimi. Proto je každá stopa rozdělená na menší části - sektory.

Formátování

Proces, při kterém se vytvoří důležité oblasti na disku. Disk se rozdělí na systémovou oblast (místo pro boot sektor, FAT a hlavní adresář) a údajovou oblast (zde jsou naše programy atd.). Aby bylo možné formátovat (příkaz FORMAT), musí existovat Partition table, kterou je nutné vytvořit již předtím pomoci programu FDISK. Viry můžeme najít v systémové (boot viry) i v údajové oblasti (souborové viry, makroviry...).
Formátováním zlikvidujeme viry uložené v boot sektoru a viry souborové (popř. makroviry apod.). Nezbavíme se však virů, uložených v Partition table (MBR). Těch se zbavíme dosovským příkazem FDISK /MBR, který přepíše zavaděč v Partition tabulce obecně platným kódem.

Logické sektory

Jestliže pracujeme z diskem na nízké úrovní (tzv. na úrovni BIOSu), používáme adresování místa na disku pomocí čísla válce (cylinder), povrchu (hlava - head) a sektoru (sector). Jde o trojrozměrné adresování. Pro Dos je tato adresace nepohodlná a proto používá jinou adresaci, jednorozměrnou - tzv. logické sektorování. Logické sektory začínají od 0 !.

Clustery (Cluster - Klastr)

Pokud chceme přečíst z disku jeden byte stane se toto: Z disku se nepřečte pouze požadovaný byte, ale přečte se celý sektor, kde je tento byte uložený. Sektor je nejmenší skupina údajů, s kterou disk pracuje. Pro pevný disk je sektor příliš malé množství údajů. Proto se združuje více sektorů a vytvářejí se tzv. clustery (česky "klastry").
Pokud se na disku přiděluje místo souboru, přiděluje se po klastrech. Pevný disk má většinou klastr veliký 4, 8, 16 KB. Pokud máme klastr 8 KB, a chceme na disk uložit soubor dlouhý 1 KB, zůstane 7 KB nevyužito (tzv. slack). Teoreticky může být v této mezeře uložen virus.
Clustery jsou taky číslované, ale číslování začíná od 2 (stopy od 0, sektory od 1). Systémová oblast (boot sektor, FAT, hlavní adresář) není pod číslování klastrů zahrnutá. Velikost klastrů může být ovlivněna použitým souborovým systémem (FAT, FAT32, NTFS apod.).

Struktura dat na disku


Partition Table (Tabulka rozdělení disku) - MBR (Master Boot Record)

Operační systém Windows (popř. DOS) nám poskytuje možnost rozdělit pevný disk na několik částí (logických disků). Tyto části se pak jeví jako disky D: E: ... Rozdělení pevného disku se provádí pomocí programu FDISK. Jen jedna část disku může být označena jako aktivní. Z této části se nahrává operační systém při startu počítače.
Údaje o rozdělení pevného disku jsou uložené v prvním sektoru na pevném disku, tvoří tzv. Partition Table (MBR). Poškozením partition tabulky se může stát pro uživatele disk nepřístupný. Je jasné, že často se v takovém případě jedná o poškození virem.
Kromě partition tabulky se v partition sektoru nachází i krátký, tzv. zaváděcí program. Tento program se spouští vždy po startu počítače (při tzv. bootování). Tento program skočí na zaváděcí program v boot sektoru aktivní partie. Mnoho virů využívá tuto oblast.

Boot sektor

Boot sektor se nachází na začátku diskety. V případě pevného disku je boot sektor na začátku části OS Windows/DOS pevného disku.
Nachází se zde krátký program, jehož úkolem je začít proces zavádění operačního systému.
Boot sektor se vytváří při logickém formátování.

FAT - File Allocation Table (souborový systém)

Jak víme, každý soubor na disku má k dispozici několik klastrů. Pokud však chceme na disk uložit nový soubor, začnou být problémy: kde je volné místo ? Asi by nebylo dobré prohlédnout systematicky celý pevný disk a hledat při tom volné místo. Proto je na začátku disku uložena tabulka, ve které jsou informace o všech klastech na disku. Mluvíme o FAT (File Allocation Table - tabulka obsazení disku). Pro každý klastr je vyhrazena jedna položka ve FAT. V položce FAT je informace, zda je klastr volný, obsazený nebo chybný. Ve FAT ale není informace, kterému souboru patří daný klastr (tato informace je uložena v každém adresáři společně s dalšími informacemi o souborech).
Které klastry patří danému souboru lze zjistit podle FAT následovně: Funguje to tak, že v položce FAT pro daný klastr je uvedeno číslo dalšího klastru patřícího k danému souboru. V posledně jmenovaném klastru je číslo dalšího klastru ... až dojdeme na konec, kde je kód (end of file - konec souboru) pro konec souboru. Z toho vyplývá, že ve FAT jsou jakési řetězce čísel klastrů, patřící pro každý soubor.

V jednotlivých položkách tabulky FAT bývají zapsané tyto údaje (hexadecimálně):

    0000 Volný klastr při přidělování.
    0002 - FFEF Obsazený klastr, uvedené číslo je číslo dalšího klastru.
    FFF0 - FFF6 Klastr je rezervovaný, není možné ho obsadit.
    FFF7 Chybný klastr, není možné ho obsadit.
    FFF8 - FFFF Znak pro poslední klastr souboru.

Je zřejmé, že FAT tabulku má v oblibě hodně virů. Jestliže je totiž boot virus delší a nevejte se do jednoho sektoru, musí umístit část svého těla někam jinam na disk. Proto není nic divného, že tuto oblast označí ve FAT jako chybnou (FFF7). Adresářový virus (DIR-2) zase změní ukazatel počátečního sektoru souboru tak, aby ukazoval na první klastr viru.
Některé viry poškozujou FAT (např. přehodí dvě položky - swap, nebo zde zapíšou nesmysly apod.). Nebezpečné je, jestliže se poškodí položky pro údajový soubor (na programu to poznáme lehce, nebeží...). Takto se nám do textu může vložit např. kus jiného programu. Poškozený soubor se může dostat i na záložní kopie (které jistě každý z vás dělá), bez toho aby jsme si toho všimli. Tohle prováděl (dnes již mrtev) například velmi nebezpečný virus Nomenclatura.
Na disku jsou uložené dvě kopie FAT hned za sebou. Je to proto, protože ztráta údajů z této tabulky by byla velmi nepříjemná. Jestliže je nějaká oblast FAT tabulky nečitelná, provádí se pokus o čtení z druhé kopie tabulky.

Mluvil jsem pouze o souborovém systému FAT. Samozřejmě existují i další, jako FAT32, NTFS, Ext2 apod.

Hlavní adresář (Root Directory)

Snad každý uživatel PC zná pojem adresář. Hlavní adresář má však jiné postavení. Místo pro něj je předem vyčleněno a proto obsahuje jen omezený počet položek.
V hlavním adresáři mohou být soubory, podadresáře nebo "volume label" - název disku. V adresáři je mnoho údajů o jednotlivých souborech (např. i počáteční klastr souborů). Každá položka v adresáři má 32 bytů. Rozdělení bytů:

    8 - jméno,
    3 - rozšíření (přípona),
    1 - atributy,
    10 - rezervované pro systém (využívá virus Dir-2),
    2 - datum,
    2 - čas,
    2 - první záznam ve FAT tabulce (počáteční klastr),
    4 - velikost souboru.

První znak jména souboru může mýt i svůj zvláštní význam:
"0" na prvním místě znamená, že jsme na konci aktivních adresářových záznamů.
"." je symbol pro údaj o adresáři (pro aktuální podadresář a nadřazený adresář).
Znak sigma (e5h) indikuje, že soubor byl smazán. Pokud se pokoušíme obnovit vymazaný soubor (např. příkaz Undelete), na místo tohoto znaku se nám objeví otazník, který nahradíme znakem.
Vymazání souboru pod Dosem totiž není fyzické vymazání souboru. Po vykonání příkazu pro smazání souboru (např. i v NC, DN, M602 apod.) se přepíše pouze první znak jména souboru znakem e5h, vynulují se první byty v příslušných položkách FAT. Pokud nejsou tyto klastry používané jinými soubory, je možné smazaný soubor obnovit.

Opět jsem mluvil pouze o souborovém systému FAT. U ostatních se mohou údaje lišit.

Zpět