|
|||
![]() 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.). ![]() 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). ![]() 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...). ![]()
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. ![]() 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. ![]() 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. ![]() Čí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. ![]() 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. ![]() Ú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 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. ![]()
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* ![]() 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. ![]() 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. ![]() 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ší. ![]() 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 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. ![]() 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 jsou elementární příkazy pro práci procesoru. ![]() 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í. ![]() 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 je software (program) umožňující uživateli komunikovat s počítačem/"železem" (hardware). ![]() Skupina bajtů vyskytujících se v tělech virů, podle kterých je skener hledá. ![]() 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). ![]() 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. ![]() 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í 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. ![]()
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). 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. ![]()
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).
Cylinder 0 je tvořený všemi stopami 0 na jednotlivých plotnách (ve všech
vrstvách):
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. ![]()
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...). ![]() 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 !. ![]()
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"). Struktura dat na disku![]() ![]()
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. ![]()
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. ![]()
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).
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. ![]()
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.
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. |
|||
|