Wirusy komputerowe

O wirusach komputerowych napisano już wiele.

O wirusach komputerowych napisano już wiele. Dlatego też nie będziemy zbyt wiele miejsca poświęcać ogólnym uwagom na ich temat. Ponieważ ten artykuł stanowi wstęp do problematyki ochrony przed wirusami komputerowymi, najpierw zrelacjonujemy wydarzenie opisane w listopadowym numerze czasopisma „ Computer Shopper".

Word Association Inc., firma wydawców i publicystów w dziedzinie najnowszych technologii, kupiła w Hongkongu kartę VGA razem z driverami i oprogramowaniem demonstracyjnym. Zainstalowali ją i cieszyli się, że dobrze się będzie z nią pracować. Jednak od razu pojawiły się problemy. Cały czas docho -dziło do niewyjaśnionych zacięć klawiatury, cięgle na ekranie pojawiały się zagadkowe czarne dziury, programy zaczynały nagle pracować dużo wolniej, system często padał. Zaczęto wymieniać klawiatury, karty podstawowe, karty VGA, ale nic nie pomagało. Nie udało się w ogóle zainstalować . Firma poprosiła o pomoc Microsoft, lecz z początku również specjaliści z tej firmy nie mogli sobie poradzić. Podobna sytuacja powstała przy nowej instalacji MS Word. Znowu wezwano Microsoft. I dopiero wtedy (po dziesięciu dniach opisanych wyżej zakłóceń) udzielono im właściwej odpowiedzi: „Macie wirusa. Skontaktujcie się z Computer Virus Industry Association, St. Clara (tzn. ze znanym prawie wszystkim użytkownikom komputerów panem McĄffee), skąd dostaniecie odpowiednie programy". Redaktorzy przez Bulletin Board System otrzymali program SCAN i zaczęli szukać. oczywiście był: Jerusalem B, znany już od ponad 4 lat na całym świecie.

Temu, by sytuacji takich, jak opisana powyżej, było możliwie najmniej, ma służyć ten artykuł, poświęcony zachowaniu się i klasyfikacji wirusów. Przeglądowa klasyfikacja jest potrzebna, bo na przykład wirusjerusalem B ma kilka nazw, o czym nie każdy użytkownik wie.

dwie fazy aktywności. Mowa tu o fazie utajonej, kiedy wirus komputerowy się nie objawia bądź się tylko rozmnaża, i o fazie akcji, gdy rzuca bombę zegarową. Podział ten nie jest i nie może być ostry. Wiele wirusów już od początku zarówno się rozmnaża, jak rusza do akcji. Należą do nich np. C648 i DARK AYENGER.

Definicja formalna

Wirus komputerowy jest to, formalnie rzecz biorąc, taki program, który może zakażać inne programy (albo dyskietki) w ten sposób, że do zaatakowanego programu (dyskietki) dopisuje swoją (czasem zmodyfikowaną) kopię, która ma również zdolność dalszego rozmnażania się.

Przy zakażaniu programu (dyskietki) wirusy mogą się szerzyć tranzytywnie, tj. od jednego programu do drugiego, co -w porównaniu z innymi formami wandalizmu komputerowego - czyni je nie-bezpieczniejszymi. Zakażone programy albo ich kopie mogą się szerzyć za pośrednictwem dyskietek, a czasem i sieci komputerowych. Wobec sposobu wymiany programów na dyskietkach, tak zwykłego u użytkowników komputerów osobistych, liczba programów zakażonych jest duża, a niekiedy dochodzi i do „epidemii". Szerzeniu się wirusów komputerowych bardzo sprzyja „kolektywne używanie" komputerów osobistych, popularne zarówno w Czecho-Słowacji, jak i w Polsce.

W sposób uproszczony proces zakażania zbiorów zawierających programy można opisać następująco:

1. Kod zakażonego programu zostaje zmieniony tak, aby wirus otrzymał sterowanie jako pierwszy, przed programem gospodarzem, a to albo za pomocą instrukcji skokowej na miejscu pierwszej instrukcji programu gospodarza (w wypadku zbioru typu COM w systemie MS-DOS), albo przez zmianę informacji w nagłówku zbioru (w wypadku zbioru typu EXE). Teoretycznie jest możliwe, że wirus wyszuka odpowiednie miejsce w programie, w które włoży instrukcję skoku. Nie chodzi tu

o typową infekcję, jest bowiem możliwe, że instrukcja zostanie włożona niewłaściwie, skutkiem czego wirus nie zostanie w ogóle skierowany do wykonania.

2. Po przekazaniu sterowania wirus wyszukuje nowy program i zapisuje swoją kopię w tym właśnie nie zakażonym dotychczas programie, w większości wypadków - na końcu programu, rzadziej - na początku. Jeśli zapisuje się na końcu programu, koryguje wstępny kod nowego gospodarza tak, aby sam otrzymał sterowanie jako pierwszy, a pierwotny kod wstępny umieszcza na swoim ciele. Zdarzają się jednak wypadki, kiedy wirus dopisuje się do innej części, np. do strefy pamięci.

3. Tak przebiegająca infekcja jest specyficzna dla każdego wirusa atakującego pliki. Wirusy mogą jednak -oprócz części rozmnażającej się - zawierać także część destruktywną, nazy-waną"koniem trojańskim albo bomby zegarową.

W komputerach osobistych, np. z systemem operacyjnym DOS, znajdujemy

i drugą kategorię wirusów, a mianowicie tzw. wirusy atakujące boot sector, tj takie wirusy, które napadają na wprowa dzające obszary zewnętrznych nośników magnetycznych: dyskietek i dysków twardych. Koncepcja takiego wirusa opiera się na założeniu, że wstępny lystem inicjujący (BIOS) przeprowadza z tych właśnie obszarów wprowadzenie

systemu operacyjnego do pamięci kom putera. Jeśli sektor inicjujący dyskietki

albo dysku twardego (boot sector), i odpowiednio - tablica partycji (partition table) dysku twardego, zawiera kod wirusa, do pamięci jest wprowadzany wirus, który zostaje tam jako „rezydent". Wirus ten wykoleja następnie system operacyjny. Infekcja w większości wypadków szerzy się nie za pośrednictwem plików, lecz za pośrednictwem sektorów wprowadzających dysków elastycznych.

Większość wirusów zakaża boot sector, natomiast wirus MARIJUANA - tablicę partycji. Jest skrajnie niebezpieczny, ponieważ pierwotną tablicę zachowuje niedokładnie, tak że można ją łatwo przepisać w owej zmienionej postaci. W takim wypadku trzeba się w pewnym stopniu liczyć ze strata danych; często natomiast trzeba przeprowadzić tzw. low-level format (format niskiego poziomu) twardego dysku. Byłem świadkiem sytuacji, gdy użytkownik z powodu wirusa MARIJUANA stracił całyXENDC. '

Konie trojańskie

Końmi trojańskimi nazywamy programy, które oprócz funkcji użytecznej mają ukrytą część, którą można zaktywizować po spełnieniu określonego warunku (zazwyczaj jest on związany z określoną datą: 1 kwietnia, piątek trzynastego, Nowy Rok, różne rocznice i okoliczności - zależy to od inwencji twórcy). Ta ukryta część z reguły wykonuje czynność o charakterze destrukcyjnym (modyfikowanie danych, wymazanie pliku, przeformatowanie dysku itd.).

Jeśli zwyczajny program zostanie zakażony wirusem, staje się nie tylko dalszym jego szerzycielem, ale i potencjalnym koniem trojańskim, którego niebezpieczeństwo jest równe niebezpieczeństwu wirusa.

Komputery osobiste i MS DOS - doskonałe środowisko

System operacyjny MS DOS stanowi ze względu na praktycznie zerową kontrolę idealną glebę do rozwoju i szerzenia się wirusów komputerowych. Wirus nie jest bynajmniej programem, który by wykorzystywał błędy w systemie operacyjnym. Dla aktywności wirusa wystarczy stosunkowo mała część operacji, które są stale, codziennie wykonywane na każdym komputerze - zapis i odczytanie z dysku, przeglądanie treści katagów, użycie np. przerwania TSR(Termi-nate i Stay Resident).

Obecnie powiększa się liczba użytkowników PC, którzy mają minimalną albo zgoła żadną znajomość MS DOS-u i komputerów w ogólności. Ta kategoria użytkowników stanowi grupę najwyższego ryzyka.

To, co zostało powiedziane o MS DOS-ie, pozostaje ważne dla systemów operacyjnych z podobną architekturą i podobnym sposobem użytkowania, jak ma PC, tzn. np. Macintosh, Commodore, AMIGA itd.

Systemy operacyjne o większej liczbie użytkowników i sieci komputerowe

W systemach operacyjnych o większej liczbie użytkowników, jąk np, UNIX, i w sieciowych systemach operacyjnych dla lokalnych sieci komputerowych LAN (np. Novell-Net-Wape) pozycja wirusa komputerowego jest wystarczająco nie sprzyjająca z punktu widzenia możliwości infekowania pozostałych plików, a to dzięki temu, że w systemach tych istnieją zasadniczo silniejsze środki ochrony danych. Z drugiej strony jednak wyraźnie spadają możliwości kontroli indywidualnej. Przy zastosowaniu w trybie superużytkownika jest najmniej aktywna także i ochrona zapewniana przez środki systemu operacyjnego. Jeśli programowi wirusowemu uda się „pracować" w trybie superużytkownika, system operacyjny o większej liczbie użytkowników stanowi dla niego równie doskonałe środowisko, jak MS DOS. W sieciach komputerowych LAN, w których stosuje się takie samie wyposażenie w programy użytkowe, jak pod systemem operacyjnym MS DOS, łatwo może dochodzić do infekcji także wtedy, gdy są ściągane programy rezydujące przez serwer systemowy. Jeśli ten serwer pracuje równocześnie jako stacja robocza (tzw. nondedicated node) i jeśli jest przezeń załadowany zakażony program, wirus ma dużo łatwiejszą sytuację, niż gdyby został wprowadzony ze zwykłej stacji roboczej użytkownika.

Całą sytuację komplikują jeszcze przerwania, które występują w sieciowym systemie operacyjnym i w wirusie (przykładem może być konflikt przerwań u wirusa Yankee Doodle i Novell NetWare).

Także rozległe sieci komputerowe (WAN) nie są zabezpieczone przed wtargnięciem wirusów komputerowych. W listopadzie roku 1988 doszło do znanego rozpowszechnienia się wirusa w sieci komputerowej Internet.

Jak właściwie zachowuje sie wirus?

Wirusy komputerowe mają na ogół dwie fazy aktywności. Mowa tu o fazie utajonej, kiedy wirus komputerowy się nie objawia bądź się tylko rozmnaża, i o fazie akcji gdy rzuca bombę zegarową. Podział ten nie jest i nie moze być ostry. Wiele wirusów już od poczatku zarówno się rozmnaża, jak rusza do akcji. Należą do nich np. C648 i DARK AVENGER.

Akcja nie musi być zawsze destrukcyjna - np. jeden z najbardziej rozpowszechnionych wirusów CR1701 (Let-terfall) działa w ten sposób, że z ekranu zaczynają wypadać litery, a Jankee Doo-dle gra ok. godz. 17 melodię. Jeden z dowcipnych wirusów na komputerze 11 z systemem operacyjnym UNK znajmiał użytkownikowi nazwy plików, które zostały rzekomo przez niego zniszczone. Na szczęście wirus ten ograniczał się do werbalnego pognębienia użytkownika. Jednak większość wirusów podczas akcji dokonuje czynności bardzo nieprzyjemnej. Na PC może na przykład dojść do zniszczenia FAT, wymazania zbiorów, oznaczania sektorów zdrowych jako uszkodzonych, modyfikacji danych użytkownika (wyobraźmy sobie na przykład skutki, jakie mogłaby mieć w bankowości zamiana cyfry 1 na 9 i odwrotnie; zwłaszcza że wirus, który to robi, już istnieje - jest to tzw. wirus DBASE, który zmienia pola cyfrowi, w zbiorach z sufiksem DBF), przepisy wania boot sectora i MASTER BOOK RI-CORD, formatowania dysku, a nawet uszkodzeń sprzętowych. Na przykład zdarza się wysyłanie kodu LF (przesu nięcie o rządek) do drukarki, co staje siv przyczyną gniecenia i darcia papieru a może i złamania igły. Może także dojść do rozregulowania głowic twardego dysku, a nawet zniszczenia karty EGA wskutek wysyłania błędnych sygnałów. Również faza utajona może się przejawiać bardzo różnie. Niektóre wirusy, np. wymienione już - DARK AVENGER albo C648, są niebezpieczne od razu od początku i zakażają prawie wszystko, co im stanie na drodze. Ta faza może mieć różną długość, a faza akcji najczęściej zaczyna się po spełnieniu określonego warunku (najczęściej związanego z datą - np. piątek trzynastego, 1 kwietnia; istnieją nawet wirusy, które od tych właściwości wzięły nazwy: APRIL1ST i FRIDAY 13TH).

Zakażanie i rozmnażanie

Wirus rozmnaża się zwykle przez zakażenie programu tak, że przepisuje jego początek na swe ciało, które się dopisuje na końcu programu. Jednak tego twierdzenia, chociaż sprawdza się ono dla 80% znanych* dotychczas wirusów atakujących pliki (wirusy atakujące boot sector tworzą osobną grupę), nie należy uważać za sztywne. Niektóre wirusy przepisują w całości kod programu gospodarza i niszczą jego funkcję podstawową (chodzi o wirusy przepisujące, które są bardzo rzadkie, np. wirus zwany 405; wirusy te można bardzo łatwo wykryć właśnie z tego powodu, że utrata przez program jego funkcji zasadniczej jest widoczna przy jego pierwszym wywołaniu), a czasem na początek programu wprowadzają swe ciało, a kod gospodarza zapisują na koniec - albo też umieszczają się w sektorze pamięci.

Sytuacja z wirusami atakującymi boot sector jest inna. Te wirusy w większości przepisują boot sector i jego część oryginalną zapisują w sektorze, który oznaczają jako uszkodzony. Istnieją jednak i inne możliwości chowania oryginalnego sektora inicjującego, np. na nie używaną ścieżkę czterdziestą. Jest ciekawe i zrozumiałe, że ciała wirusów atakujących boot sector zawierają z reguły takie same komunikaty, jak oryginalny boot sector, tzn. „Non-system disk or disk error", „Disk boot failure" itd.

Po zakażeniu wirus zwykle umieszcza wewnątrz programu zakażonego albo w spisie w katalogu swój identyfikator, za pomocą którego „zapamiętuje" zakażony program, a to dlatego, aby uniknąć przypadkowego powtórnego zakażenia tego samego programu (np. C648 zmienia czas modyfikacji o 62 sekundy, Yankee Doodle wpisuje identyfikację bezpośrednio do programu).

Fakt, że program zawiera identyfikator wirusa, nie stanowi ochrony przed innymi wirusami. W trakcie eksperymentów osiągnąłem sytuację, że siedem różnych wirusów, którymi zakażony był program, było jednocześnie aktywnych. Identyfikator jest mimo to jednym z najlepszych środków zapobiegających zakażeniu programu tym samym wirusem po raz drugi (musi tu jednak wchodzić w rachubę wirus który skutecznie zakaża program tylko jeden raz, wyjątkiem jest wirus Jerusalem/PLO, który zakaża zbiory typu EXE więcej niż jeden raz).

Mutacje

Wskutek tego, że istnieje bardzo dużo dyskietek, zawierających nawet teksty źródłowe programów wirusowych (naj-' częściej klasycznego C648), wiele wirusów ma mnóstwo mutacji, które w mniejszym lub większym stopniu modyfikują zachowanie programu oryginalnego. Najwięcej mutacji ma prawdopodobnie C648 (infekuje zbiory COM, przedłuża ich długość o 648 bajtów, a wersja podstawowa niszczy mniej więcej jedną ósmą programów zakażonych) i C1701 (wypadające litery). Bardzo prymitywną mutacją wirusa C648 jest klon, który zamiast skoku na adres rutyny restartującej zapisuje tekst AIDS. Dotychczas nie są mi znane wypadki au-tomutacji wirusa (tzn. sytuacje, kiedy wirus po upływie określonego czasu albo po wystąpieniu określonego zdarzenia dokonuje korekty w swym kodzie i zmienia sam przez się swoje zachowanie). Stopniem pośrednim między klonem i automutacją jest przeszczepienie niższej wersji Yankee Doodle na wersję wyższą. Wirus Yankee Doodle jest bardzo inteligentny: to istne arcydzieło programistyczne, co oczywiście nie tłumaczy jego twórcy.

Przy tu liska dla wirusów

Środowiska, w których wirusy mogą trwale przebywać w takiej postaci, aby mogły efektywnie przejawiać swą aktywność, są oczywiście ograniczone. Są to programy (tj. zbiory typu COM i EXE), sektory inicjujące dyskietek i dysków, MASTER BOOT RECORD dysku twardego, teoretycznie - pamięć CMOS. Nie trzeba się obawiać tego, że zakazimy komputer wirusem ze zbiorów z danymi, chociaż teoretycznie taka możliwość istnieje. Wyjątkiem są zdrowe teksty programów kompilacyjnych, tzn. zbiory typu BAT; idzie tu raczej o możliwość, która dopełnia rachunku. Zapamiętajmy zatem następujące obszary:

- MASTER BOOT RECORD (obszar na dysku, gdzie jest partition table);

- BOOTSECTOR dysku twardego lub dyskietki;

-program obsługi urządzenia (driver);

- zbiory typu COM;

- zbiory typu EXE;

- części nakładkowe (overlaye) programów segmentowanych (zbiory typu OVL);

- zbiory typu BAT;

- źródłowe teksty programów (jeśli są

Z powyższych powodów te właśnie miejsca trzeba starannie kontrolować. Wirusy mogą swe ciało przechowywać także poza wymienionymi obszarami -zależy to od inwencji autora. W dalszej kolejności należy więc wytypować następujące obszary: — obszar pamięci

programu systemowego (C346 Lehigh);

- początek, koniec lub środek innego programu - wolne bloki w tabelach systemowych, np. FAT;

- sektory oznaczone jako uszkodzone;

- zbiór specjalny, któremu może być przyporządkowany atrybut HIDDEN (schowany);

- biblioteki podprogramów (możliwość teoretyczna);

- nie wykorzystane części sektorów zajętych przez inne programy (jeśli zbiór ma np. długość 10 bajtów, na końcu tego zbioru w już zajętym sektorze można umieścić dalsze 502 bajty wirusa -i ta możliwość jest jednak raczej czysto teoretyczna).

Do czego wirusy są zdolne, a do czego nie

Ponieważ w wielu artykułach prasowych opisywano katastrofalne zdarzenia wywołane przez wirusy komputerowe, zaczęły się pomału kształtować różne mity o wszechmocy wirusów, które stanowią ogromne niebezpieczeństwo dla użytkowników komputerów. Na pewnej wystawie komputerów i wyposażenia programowego nie udało mi się skopiować dyskietki. Podejrzewałem, że nie jest to z winy dyskietki, lecz mechaniki dysku elastycznego. Poprosiłem więc jednego z kolegów o to, bym mógł skopiować ją na jego komputerze. Odmówił mi jednak ze słowami: „Nie dam sobie sprowadzić żadnego wirusa". Daremnie tłumaczyłem mu, że przy fizycznym kopiowaniu dyskietki programem ściągniętym z jego twardego dysku mogą zostać zarażone tylko moje programy przez jego wirusy, a nigdy odwrotnie. Moje wysiłki były bezskuteczne.

Zdarzenie to jest typową ilustracją oddziaływania mitu. Jest szereg takich mitów o wirusach komputerowych. Przytaczam tylko niektóre z nich:

1. Mit: Można zakazić komputer wirusem przez kopiowanie cudzej dyskietki.

Prawda:

a) Komputer można zakazić, kiedy się do niego wczytuje program.

b) Komputer można zakazić, kiedy się do niego wprowadza system operacyjny.

2. Mit: Istnieją wirusy, które umieją się zapisywać także na zalepioną dyskietkę, tj. dyskietkę chronioną przed zapisem.

Prawda: Wirusy może się zapisać na zalepioną dyskietkę, jeśli został użyty przezroczysty środek zalepiający. W tym wypadku na dyskietkę można zapisać nie tylko wirusa, ale każdy program poprawnie napisany.

3. Mit: Wirusem można zakazić także za pośrednictwem zbioru danych, nie tylko z programu.

Prawda: Wirus musi przejąć sterowanie. Jeśli postaramy się o to, aby wirus wprowadzony do zbioru z danymi otrzymał sterowanie, będzie się można zarazić wirusem od takiego zbioru.

4. Mit: Nic mi się nie może stać, bo mam program antywirusowy.

Prawda: Jest to przewrotny mit. Po pierwsze, zależy, jaki mam program antywirusowy; po drugie jest prawdą, że choć mogę mieć dowolny program antywirusowy, może mi się jednak coś stać.

5. Mit: Wirusy rozmnażają się przede wszystkim w grach komputerowych.

Prawda: Wirusy rozmnażają się we wszystkich programach. Mit ten powstaje dlatego, że wiele wirusów zostaje przywleczonych z grami, oczywiście skopiowanymi nielegalnie.

6. Mit: Firmy sprzedające oprogramowanie chronią swe produkty przy pomocy wirusów komputerowych.

Prawda: Gdyby tak się zdarzyło, firma w cywilizowanym kraju byłaby ukarana tak wysoką grzywną, że prawdopodobnie zbankrutowałaby. Może się jednak zdarzyć, że się dostanie wirusa za pośrednictwem dyskietki z oryginalnym programem dostarczonym przez firmę. Nie wynika to jednak z zamiaru ochrony oprogramowania, ale z nieszczęśliwego wypadku. Można nawet kupić nowy komputer zakażony wirusem (zdarzyło się to jednemu z mych przyjaciół przy kupnie laptopa).

7. Mit: Mój komputer szwankuje na pewno z powodu wirusa.

Prawda:

a) Jest to częsta replika techników, kiedy się im powie, że nie działa wyjście równoległe.

b) Wirusy mogą dopaść komputera w różny sposób. Nie znaczy to, że zawsze, gdy komputer zachowuje się niestandardowo, przyczyną jest wirus.

8. Mit: Wirusy gnieżdżą się w pamięci CMOS, służącej do przechowywania informacji o konfiguracji w komputerach AT 286 i klas wyższych.

Prawda: Pamięć CMOS ma 64 bajty. Napiszmy więc wirusa o takiej długości, a właściwie krótszego. Prawdopodobnie BIOS, co najwyżej, przy zapisie do CMOS oznajmi bądź błędy konfiguracji, bądź błędy w sumie kontrolnej CMOS.

9. Mit: Wirus potrafi przeżyć w pamięci RAM wyłączenie i włączenie komputera.

Prawda:

a) Niektóre wirusy, które przechwytują przerwanie z klawiatury, są zdolne przeżyć „gorący" restart (CTRL + ALT + DEL).

b) Jeśli jest zainfekowany partition table albo boot sector twardego dysku (przez wirusy atakujące sektor inicjujący), albo COMMAND.COM (przez wirusy atakujące zbiory), przy wprowadzaniu systemu twardego dysku wirus zostaje znowu wprowadzony do pamięci operacyjnej.

Metody ochrony

Istnieje szereg metod ochronnych, które pozwolą użytkownikowi przynajmniej częściowo uzyskać spokój. Przytaczamy je niżej:

1. Czynności profilaktyczne, systematyczne kopiowanie ważnych części i plików

z twardego dysku oddzielne przechowywanie używanych i nowo zyskiwanych programów, używanie tzw. stref inkubacyjnych dla nowych programów, zwiększona kontrola zachowania się nowych programów itd.

2. Prawidłowe, najlepiej codzienne archiwizowanie.

3. Rewizja (analiza) nowych programów dostępnymi środkami, ich stosowanie w znanym środowisku, stosowanie sum kontrolnych przy przekazywaniu programów, sprawdzanie sectorów inicjujących dyskietek i dysku twardego, kontrola zawartości zbiorów systemowych (zwłaszcza COMMAND.COM, a ponadto IO.SYS i MSDOS.SYS lub ich ekwiwalentów) itd. Do tej dziedziny moglibyśmy włączyć także kontrolę zawartości dyskietek z nowymi programami za pomocą polidetektorów.

4. Stosowanie kontrolnych programów rezydujących do ochrony dysku twardego i zakazanie określonych akcji za pomocą kontroli przerwania (można używać także kombinowanych metod sprzętowo-pro-gramowych za pomocą rozmaitych dodatkowych kart).

5. Wykorzystanie specyficznych własności różnych wirusów w celu ich okpienia (np. „szczepienie" programu identyfikatorem zakażenia albo immunizacja specjalnym kodem, który wyjawia zmianę przy wywołaniu programu).

6. Dezaktywizacja, a zwłaszcza usuniecie wirusa w zakażonych programach za pomocą rozmaitych programów korekcyjnych, zwanych „leczącymi", aż do całkowitego wymazania zakażonego programu -pod warunkiem, że mamy sprawdzoną kopię nie zarażoną.

Żadna z tych metod nie jest stuprocentowo pewna i bardzo dobrze jest je kombinować.

Klasyfikacja wirusów komputerowych

Koncepcje klasyfikacji wirusów komputerowych nie są dotychczas jeszcze w pełni uświadamiane. Jest jednak jasne, że oznaczanie wirusa nazwą (która często odnosi się do konkretnego objawu danego wirusa,np. Letterfall - wypadanie liter, albo miejsca jego pierwszego wystąpienia, np. Lehidh) może być zrozumiałe dla ekspertów, a nic nie mówi prostemu użytkownikowi komputera, ponieważ nie wiąże się w żaden sposób z działaniem wirusa. Spróbujmy zatem wirusy podzielić i znaleźć wygodną metodę klasyfikacyjną.

Możemy posługiwać się najróżniejszymi kryteriami. Wirusy można dzielić na przepisujące i nie przepisujące, destruktywne i raczej żartobliwe. Takie cechy mogą być przedmiotem klasyfikacji dodatkowej, ale nie ostają się jako samodzielne czy główne. Najlepsza wydaje się klasyfikacja na wirusy atakujące obszar inicjujący na dysku - „boot-sektorowe" oraz wirusy atakujące programy -„plikowe", z koniecznym podziałem szcze-gółowszym w zależności od tego, czy chodzi o zbiory typu COM, EXE, wirusy rezydujące itd. Do tej podstawowej klasyfikacji należy jeszcze dodać długość wirusa, określającą, o ile przedłuża on program przeznaczony do wykonania. W wypadku wirusów atakujących boot sector liczba ta mogłaby oznaczać ilość sektorów albo klasterów, które zajmuje dany wirus na dysku.

Określenie długości nie musi być zawsze jednoznaczne - niektóre wirusy się wyrównują na granicy akapitów (tzn. adres MOD16 musi się równać zeru), tak że zwiększenie długości może się wahać w przedziale xxx, xxx 15. Równocześnie jako dodatkowy element klasyfikacyjny mogłaby być użyta nazwa wirusa i jego główne objawy; dla wirusów rezydujących trzeba by przytoczyć liczbę przerwań, które przechwytuje dany wirus, a wreszcie identyfikator wirusa. Wzorcowe oznaczenie dla wirusa DARK AVENGER wyglądałoby rftstępująco: CERV1800+, Dark Avenger, szybkie zakażenie + niszczenie sektorów»21, Eddie lives, gdzie:

C-zakażapliktypuCOM,'

E - zakaża plik typu EXE, R-wirus rezydujący

V - zmienna długość kontynuacji programu, 1800 - liczba bajtów, wskazująca na maksymalne możliwe zwiększenie długości, + - zwraca uwagę na zmienność zwiększo-

nej długości,Dark Avenger - nazwa nieformalna,szybkie zakażenie + niszczenie sektorów -

główne objawy,21 -wybiera przerwanie 21,Eddie lives - na ciele wirusa występuje ten

tekst.

Przeciwko tej klasyfikacji można by zgłosić pewne zastrzeżenia. Zwłaszcza długość zbioru można by dokładniej wyrazić tak, że przy przedłużeniu o zmienną długość zmiana byłaby wyrażana na podstawie zwiększenia długości określonego wzorca, którym mógłby się stać na przykład program COMMAND.COM. Mimo to zdecydowałem się na pierwszy wariant, a to głównie z tego powodu, że długość różnych wersji programu COMMAND.COM jest różna, a także dlatego, że niektóre wirusy nie zakażają go, inne zaś atakują w istocie tylko COMMAND.COM, ale nie zwiększają jego długości (Lehigh). Innym wariantem mogłoby być ustanawianie rzeczywistej długości wirusa na podstawie programu disas-semblowanego, kiedy wyrównywane bajty byłyby ignorowane. Taka metodyka byłaby ważna szczególnie dla autorów różnych programów antywirusowych, zwłaszcza zaś tych, które naprawiają program wykonywany, tj. programów „leczących".

Podział wirusów na rezydujące i nie ma swe podstawy. U obu tych rodzajów rozmaite są drogi szerzenia się infekcji. Wirusy nie rezydujące uzyskują sterowanie w momencie załadowania zakażonego programu i wyszukują swe ofiary za pomocą zmiennych środowiskowych: PATH, COM-ijPEt itd., np. posługując się funkcjami DOS-u findSrst, findnext. Następnie przekazują do wykonania program zakażony. W odróżnieniu od nich instalacja i praca wirusów rezydujących przebiega w inny sposób. Wirus się instaluje w pamięci, przechwytuje dla siebie określone przerwanie i stara się zamaskować swe umiejscowienie w pamięci tak, aby był jak najmniej widoczny dla narzędzi typu SMAP albo Memory Map w PCSHELL itd. Bardzo często zdarza się skopiowanie do wyższych adresów pamięci i przepisanie bajtu 413H (pojemność pamięci). W ten sposób komputer zostaje „okradziony" o określoną część pojemności swej pamięci, która się staje schroniskiem dla wirusa. Wirus przestawia określone wektory przerwania na siebie i zakażenie przebiega dalej przez sterowanie przerwaniami. Jeśli dojdzie do przerwania, które wirus ma nakierowane na siebie, wirus rezydujący otrzymuje sterowanie i steruje według typu przerwania. Zwykłe jest zakażenie wywoływanych programów (przerwanie 21, funkcja 4B), kiedy wywoływany wirus zakaża wywoływany program (większość wirusów rezydujących ma mechanizmy, które umożliwiają stwierdzenie, czy wirus jest już zainstalowany w pamięci jako rezydujący; takim mechanizmem jest na przykład nastawienie nie istniejącego przerwania).

Wirusem skrajnie zakaźnym jest wspomniany wyżej DARK AVENGER, który na przykład używa funkcji close, a ponadto infekuje zbiory typu COM i typu EXE, które są kopiowane. Trzeba jednak podkreślić, że samo to, iż wirus jest rezydujący, nie określa jeszcze sposobu wyszukiwania przez niego ofiary.

Dla użytkownika, który się styka z wirusem, ważna jest znajomość konkretnego (w gorszym wypadku - destruktywnego) zachowania się wirusa. Ta cecha nie może być dostateczną podstawą dla systematycznej klasyfikacji, dlatego też w metodyce klasyfikacji bywa używana jako dodatkowa. Elementami klasyfikacyjnymi mogą też być informacje o tym, czy wirus podejmuje próby zapisu na dyskietkę przeznaczoną tylko do odczytywania (tzn. czy nastawia własny critical error handler); czy jest zaszyfrowany na dysku; czy zakaża obiekt tylko raz, czy więcej razy; czy umie ustawić z powrotem czas ostatniej modyfikacji itd. Załączone tabele pokazują rezultat próby takiej klasyfikacji.