WIRUSY KOMPUTEROWE



Rozdział I - Wstęp


Nikt nie traktował poważnie wzmianki o możliwości istnienia wirusów komputerowych, która pojawiła się w czasopismach naukowych publikowanych w 1984 roku. Sytuację zmieniła dopiero pierwsza infekcja wirusowa na wielką skalę, która przeszła przez Stany Zjednoczone w 1986 roku. Infekcja spowodowana przez wirus Brain wywołała sensację w środkach masowego przekazu, ale nie została potraktowana jako pogwałcenie prawa. Społeczeństwo było szczerze zafascynowane nowym pomysłem wirusów komputerowych, lecz tylko niewiele osób widziało w pełni ich destrukcyjne możliwości. Dla wielu ludzi nie było nawet jasne, czy wirusy komputerowe pojawiły się przypadkowo, czy też zostały napisane rozmyślnie. Jeden czy dwóch cieszących się dobrą sławą ekspertów komputerowych, publicznie oświadczyło, iż istnienie wirusa komputerowego jest całkowicie niemożliwe, a nawet gdyby było możliwe, to nie potrwa zbyt długo. Jak mało oni wiedzieli! Do dzisiaj tysiące przedsiębiorstw ucierpiało z powodu zanieczyszczenia wirusami. Starsze wirusy (z rocznika 1986/87) na ekranie umieszczały głupie komunikaty, albo podskakującą piłkę, wiele nowych wirusów natomiast jest silnie niszczących, zaprogramowanych po to żeby zepsuć i zniszczyć zgromadzone dane. W miarę jak infekcje wirusowe rozszerzają się coraz bardziej, w alarmującym tempie rosną uszkodzenia danych. Zagrożenie wirusowe jest obecnie faktem, w większości krajów można nazwać je epidemią i wydaje się, że liczba wirusów podwaja się średnio, co 9 miesięcy. Wirusy komputerowe są tylko jedną z możliwych postaci ataku na system komputerowy; innymi popularnymi postaciami są konie trojańskie i bomby logiczne, lecz ponieważ często występują one łącznie, analiza ich jest ważna. Na przykład, wirus jest prawie zawsze wprowadzany do systemu komputerowego bez świadomego przyzwolenia właściciela systemu. Ukrywa się go w sektorze ładującym dysku elastycznego (dyskietki) lub dołącza do oficjalnego programu. Zainfekowana dyskietka i zainfekowany program są końmi trojańskimi użytymi do wprowadzenia ukradkiem do systemu komputerowego kodu (programu) wirusa. Podobnie, większość wirusów zawiera efekty uboczne, które będą wyzwolone tylko wtedy, gdy zostaną spełnione określone warunki. Mechanizm powodujący wyzwolenie jest, więc bombą logiczną.

Rozdział II - Różne informacje o wirusach komputerowych


Podrozdział 1 - Przegląd zagrożeń systemów komputerowych


KONIE TROJAŃSKIE

Koniem trojańskim nazwano program, wykonujący więcej czynności od wymienionych w jego specyfikacji. Ich skutki mogą być (i często są) złośliwe. Przykładem konia trojańskiego jest program ARC 513 znajdujący się w wielu biuletynach elektronicznych, który pozoruje ulepszoną wersję uznanego programu narzędziowego do upakowywania danych ARC. W rzeczywistości wymazuje on z pamięci pliki wyszczególnione do upakowania. Utworzoną wcześniej listę nazw znanych koni trojańskich nazwano "Parszywą Dwunastką". Na nieszczęście, zmiana nazwy programu lub napisanie programu nowego konia trojańskiego nie jest problemem, liczba pozycji na liście wzrosła gwałtownie i obecnie liczy setki nazw. Można ją znaleźć w wielu biuletynach elektronicznych, lecz nigdy nie należy sądzić, że jest listą kompletną. Niezależnie od faktu, że konie trojańskie są programami samoistnymi, nazwą tą również określa się wszelkie działania, które wprowadzają ukradkiem złośliwe kody do systemu komputerowego. Może to być dyskietka z kodem wirusa utajonym w sektorze ładującym lub program z wirusem dołączonym do niego.
KOŃ TROJAŃSKI - PRZYKŁAD l: PLIKI WSADOWE
Następujący krótki plik wsadowy, nazwany sugestywnie "SEX.BAT" jest przykładem bardzo prostego konia trojańskiego. Nie próbujcie jak on działa, bo wykasuje wszystkie pliki głównego katalogu na twardym dysku. Mimo to warto jest się z nim zapoznać:
DEL < SEX.BAT C: \*. *
Y
Ta sekwencja przekazuje polecenie DEL z konsoli do pliku SEX.BAT i zawiera również odpowiedź tak ("Y") na pytanie DOS-a "Czy jesteś pewien?" (ang. Are you sure?). Jeżeli ktoś zauważy na dyskietce plik o intrygującej nazwie SEX.BAT i po prostu wpisze "SEX", aby zobaczyć, co zawiera ten plik, stwierdzi, że wszystkie pliki w głównym katalogu dysku C (zwykle dysk twardy) zostały skasowane. Jest to przykład bardzo prostego konia trojańskiego; znacznie większe zniszczenia mogą być wywołane przez zręcznych, lecz złośliwych programistów.
KOŃ TROJAŃSKI - PRZYKŁAD 2: ANSI.SYS
Tradycyjny koń trojański jest programem, który dla wywołania zniszczeń wymaga celowego wykonania. Jednak konia trojańskiego można wyzwolić nieświadomie, wprost przez użycie polecenia DOS-a "TYPE" dla wyświetlenia zawartości pliku tekstowego, który zawiera wbudowane sekwencje unikowe (ang. escape sequences). Te sekwencje unikowe są przechwytywane przez program obsługi klawiatury ANSI.SYS, który w wielu komputerach osobistych jest ładowany poleceniem w pliku CONFIG.SYS i używany przez wiele zalegalizowanych programów. Autor konia trojańskiego może często przedefiniować jeden lub więcej klawiszy na klawiaturze. Przedefiniowanie "A" na "S" i "Q" na "W" może spowodować zamieszanie, ale przedefiniowanie "d" na "DEL *.DAT" będzie miało znacznie poważniejsze konsekwencje. Wykonanie tego jest bardzo proste. Jeżeli następująca sekwencja
ESC 100; "DEL *.DAT"; 13p
(gdzie ESC jest znakiem unikowym, szesnastkowo 1 B) jest włączona do pliku README, w którym, niczego nie podejrzewający użytkownik, jest zapraszany do TYPE, za każdym razem, gdy naciśnie "d" uderzenie klawisza zostanie rozwinięte przez ANSI.SYS do "DEL *.DAT" uzupełnione następnie powrotem karetki. Może być obmyślona znacznie bardziej przebiegła intryga, na przykład, zastępując "d" przez "FORMAT C:""i""n" przez "y" uzupełnione "ENTER". Jeżeli użytkownik naciśnie "d" w wierszu polecenia, to będzie ono rozwinięte do "FORMAT C:". Program FORMAT zakomunikuje użytkownikowi:

Warning! All data in drive C: will be lost.
Proceed (Y/N)?
(Uwaga! Wszystkie dane na dysku C: będą stracone.
Postępować (dalej) (T/N)?.

Gdy biedny użytkownik zobaczy taki komunikat, to Jego intuicyjną reakcją będzie naciśnięcie "n" tak szybko jak to możliwe; ANSI.SYS zastąpi je przez "y" istnieje wielkie prawdopodobieństwo zniszczenia danych przechowywanych na twardym dysku (istnieje jednak program narzędziowy, który umożliwia "odformatowanie" przypadkowo sformatowanego twardego dysku). Operatorzy biuletynów elektronicznych zwykle przeglądają wszystkie (polecenia) komunikaty sekwencji unikowych, w celu ochrony niczego nie podejrzewających czytelników komunikatów przed natknięciem się na ten rodzaj koni trojańskich, podczas gdy VAX/VMS MAIL zamienia znaki unikowe na znaki drukowalne, w celu zapobieżenia tego rodzaju atakom. Najłatwiejszym sposobem do przełamania ataku tego rodzaju na komputer osobisty jest usunięcie z pliku CONFIG.SYS dyrektywy
DEVICE = ANSI.SYS.
Wiele programów użytkowych nie używa obecnie unikowych sekwencji ANSI.SYS do wyjścia na ekran, lecz korzysta bezpośrednio z procedur BIOS-a. Dostępne są też sterowniki ANSI.SYS, które nie umożliwiają przedefiniowanie kodów klawiatury.

BOMBY LOGICZNE

Bomba logiczna jest programową instrukcją IF, która powoduje wykonanie pewnych kodów programowych, gdy spełnione są określone warunki. Mogą nimi być czas, obecność lub nieobecność danych takich jak nazwa itp. Hipotetycznym przykładem bomby logicznej może być złośliwie zmodyfikowana kopia arkusza kalkulacyjnego, która w każdy czwartek między godziną 10. i 11. przed południem zeruje określoną komórkę nie ujawniając jednak swej obecności. Skutki działania bomby mogą być bardzo kłopotliwe i trudne do wykrycia. Bomby logiczne często są znajdowane w bardziej wymyślnych przypadkach przestępstw komputerowych. Ciekawy wypadek dotyczył programisty obsługującego pakiet listy płac. Aby zagwarantować sobie ciągłe zatrudnienie zdecydował się on na wprowadzenie krótkiej sekwencji poleceń sprawdzających, czy jego nazwisko występuje w pliku listy płac. Jeżeli tak było nic się nie działo. Lecz gdyby go nie było (jako skutek zwolnienia z pracy) pliki miały być skasowane oraz miały nastąpić inne zniszczenia. Gdy został zwolniony z pracy bomba logiczna wyzwoliła niszczące działania. Dopiero po uzyskaniu obietnicy przywrócenia do pracy zgodził się wskazać bombę logiczną umieszczoną w programie. Nie był ścigany sądownie.


Rysunek 1 - Przebieg programu bomby logicznej

Inny przykład bomby logicznej wystąpił w IBM. O godzinie 7.30 przed południem dnia l kwietnia 1980 wszystkie IBM 4341 przerwały działanie. Zjawisko to może ewentualnie wskazywać na bombę logiczną wyzwoloną tego dnia, która została umieszczona w oprogramowaniu przez niezadowolonego pracownika. Bomby logiczne są często odkrywane w wirusach, w których wyzwolony jest ładunek użyteczny (który wywołuje efekty uboczne), gdy wystąpią określone warunki. Na przykład, wirus Coscade wytwarza swoje efekty uboczne tylko między 1 października 1988 i 31 grudnia 1988. Wirus Michelangelo zaśmieca dyski 6 marca każdego roku. Wirus Italian wprowadza skaczącą piłkę na ekran tylko wtedy, gdy dostęp do dysku następuje w ciągu jednosekundowego odstępu na każde 30 minut. Opóźnienie spowodowane przez bombę logiczną pozwala wirusowi rozprzestrzenić się niezauważalnie i pokazać swoje efekty uboczne, gdy już się szeroko rozwinął.

WIRUSY

Wirus komputerowy jako program komputerowy charakteryzuje się czterema cechami:
  1. Samoodtwarzaniem. Wirus wytwarza swoją własną kopię, rozprzestrzeniając się poprzez dyskietki, systemy i sieci komputerowe. Temu podobieństwu do swego biologicznego odpowiednika zawdzięczają wirusy swoją nazwę. Samoodtwarzanie jest unikalną cechą wirusa, która odróżnia je od innych programów komputerowych.
  2. Ścieżka wykonywalna. Aby wirus cokolwiek zrobił, musi być wykonany. Wirusy są projektowane w taki sposób, że może to nastąpić bez jakiegokolwiek udziału użytkownika: na przykład, użytkownik przypadkowo zainicjuje działanie komputera osobistego, gdy zainfekowana dyskietka znajduje się w kieszeni napędu dysku A: lub, gdy wykona zainfekowany program. Bardzo ważne jest zapamiętanie tej cechy w następujących okolicznościach:
    1. kiedy działamy w czasie ataku wirusa,
    2. kiedy formujemy strategię antywirusową,
    3. kiedy badamy zachowanie się wirusa.
  3. Efekty uboczne. Zwykle wirusy zawierają nie tylko kod samoodtwarzający; zawierają one także kod wytwarzający efekty uboczne zwane również "ładunkiem użytecznym". Są one realizowane, po spełnieniu wcześniej określonych warunków. Zaprogramowanie efektów ubocznych ładunku, tak aby były złośliwe jest łatwe. Niektóre wirusy nie zawierają żadnych efektów ubocznych.
  4. Maskowanie. Skuteczność rozprzestrzeniania się wirusa zależy od tego, jak długo może się on powtarzać niepostrzeżenie zanim zostanie zauważona jego obecność jako skutki uaktywnienia zjawisk ubocznych. Długowieczność powtarzania jest osiągana dwiema metodami maskowania: utajnianiem (szyfrowaniem) i przechwytywaniem przerwań.
Ta taktyka jest prawdopodobnie najbardziej fascynującą cechą wirusa, ponieważ godne uwagi jest podobieństwo sposobu ich działania do wirusów biologicznych (i bakterii). Po zainfekowaniu człowieka wirusem występuje czas opóźnienia zwany inkubacją, podczas którego nie wykazuje on żadnych oznak choroby, ale mimo to zakaża innych ludzi. Ponieważ nie ma żadnych rozpoznawalnych objawów zewnętrznych jego zaraźliwej choroby, inni ludzie nie mają powodu, aby ograniczyć z nim kontakty, które ułatwiają przenoszenie wirusa i jego rozszerzanie się. Godny uwagi jest fakt, że wirusy komputerowe i biologiczne, niezależnie od wyraźnie innej struktury, korzystają z bardzo podobnych technik dla zapewnienia sobie przetrwania. Analogia między właściwościami wirusa i właściwościami rakiety została podkreślona przez Freda Cohena. Rakieta zawiera nabój (konwencjonalny, chemiczny, nuklearny itp.) i środki przenoszenia tego naboju na odległość. Nabój jest odpowiednikiem ładunku użytecznego wirusa, podczas gdy mechanizm napędowy jest odpowiednikiem samopowtarzającego się kodu wirusa.


Rysunek 2 - Rakieta dostarczająca nabój (głowicę bojową)

ROBAKI

Robaki są podobne do wirusów, lecz powtarzają się w całości, wytwarzając swoje dokładne kopie bez potrzeby programu "niosącego". Robaki pojawiają się zwykle w sieciach komputerowych i komputerach wielodostępnych wykorzystując łączność między komputerami i między użytkownikami jako nośnik transmisji.
ROBAKI - PRZYKŁAD l: CHOINKA BOŻONARODZENIOWA NA VM IBM
Prawdopodobnie najbardziej znanym robakiem dużych komputerów był Christmas Tree worm, który rozpowszechnił się szeroko na BITNET, Europejskiej Akademickiej Sieci Badawczej (European Academic Research Network - EARN) i wewnętrznej sieci IBM. Został on wypuszczony 9 grudnia 1987 i, poza innymi efektami, sparaliżował światową sieć IBM 11 grudnia 1987. Christmas Tree został napisany w REXX i może rozprzestrzeniać się na instalacjach VM/CMS. Program jest kombinacją konia trojańskiego i łańcucha szczęścia (św. Antoniego). Gdy działa, rysuje na ekranie choinkę Bożonarodzeniową, rozsyła się do wszystkich korespondentów użytkownika wymienionych w jego plikach NAMES i NETLOG, a następnie się kasuje.


Rysunek 3 - Skutek działania robaka Choinki Bożonarodzeniowej

Kod źródłowy tego robaka jest opublikowany w książce R. Burgera Computer Viruses, A High Tech Diseas [6], jak również można go uzyskać z wielu innych źródeł. Robak pojawiał się jeszcze parę razy w obu wersjach oryginalnej i zmodyfikowanej.
ROBAKI - PRZYKŁAD 2: ROBAK INTERNETU NA UNIX-ach
Pewna liczba szeroko opisywanych ataków robaków nastąpiła na systemy UNIX-owe. Najszerzej opisanym atakiem był atak robaka Internet, który uderzył w sieć komputerową Internetu amerykańskiej agencji DARPA (Defence Advanced Research Projects Agency - Agencja do spraw projektów zaawansowanych badań zagadnień obronnych) dnia 2 listopada 1988. Robak został wprowadzony przez studenta Uniwersytetu Cornell Roberta T. Morisa do powszechnie dostępnego komputera w MIT (Massachusetts Institute of Technology) (prep.ai.mit.edu). Robak samoodtwarzał się wykorzystując liczne błędy w systemie operacyjnym UNIX działającym na sprzęcie VAX i Sun Microsystems, włączając w to błąd w sendmail (program poczty elektronicznej) i w fingernd (program do podawania szczegółów kto jest dołączony do sieci). Uniwersytet Stanforda, Masachusetts'ski Instytut Technologii, Uniwersytet Marylandu i Uniwersytet Berkley'a zostały zainfekowane w ciągu 5 godzin od wypuszczenia robaka. Instytut Badawczy NASA w Ames i Narodowe Laboratorium Lavrence Livermore zostały również zainfekowane, podobnie jak 6000 innych systemów komputerowych. Robak zawierał 4000 linii w języku "C" i gdy został zaanalizowany specjaliści usunęli błędy w sendmail i fingerd, co zapobiegało dalszemu rozpowszechnianiu się robaka. Z dekompilacji (rozbioru) wynikało, że robak nie był złośliwy, jednak doprowadzał do przeciążenia zainfekowanego systemu.


Podrozdział 2 - Jak wirus może przeniknąć do komputera


Sposób w jaki wirus przenika do komputera nie jest niczym cudownym. Metody wprowadzania go są dobrze znane i branie ich pod uwagę przy używaniu komputera osobistego (PCeta) jest pierwszym krokiem pomocniczym w zwalczaniu niebezpieczeństwa wirusowego. Najważniejszą rzeczą, o której należy pamiętać jest fakt, że jedyny sposób w jaki wirus może zainfekować (zakazić) komputer jest skutkiem wykonania programu wirusowego. Wirusy są pisane w taki sposób, aby fakt ich wykonywania był niejawny i następował bez świadomości (lub przyzwolenia) użytkownika. W praktyce oznacza to przypadkowe uruchomienie systemu operacyjnego komputera osobistego z zainfekowanej dyskietki (poprzez wykonanie zawartości sektora ładowania) lub wykonanie programu, do którego wirus został dołączony. Każdy środek, który może być wykorzystany do przechowywania i przekazywania danych jest potencjalnym nośnikiem dla wirusa. Wyłącznie od właściwości nośnika informacji zależy, jaki rodzaj wirusa jest zdolny przenieść. Niektóre działania użytkownika wnoszą duże ryzyko infekcji. Każdy środek, który może być wykorzystany do przenoszenia lub magazynowania programów wykonywalnych jest potencjalnym nośnikiem wirusów pasożytniczych i wieloczęściowych, zaś każdy środek, który może być użyty do zainicjowania komputera jest potencjalnym nośnikiem wirusów sektorów ładujących i wirusów wieloczęściowych. Komputer osobisty zostaje zakażony przez wirusy pasożytnicze i wieloczęściowe, gdy użytkownik wykonuje zainfekowany program. Komputer zostaje zainfekowany wirusami sektorów ładowania lub wieloczęściowymi, gdy użytkownik uruchamia go przy użyciu zakażonego nośnika.

DYSKI ELASTYCZNE

Dyskietki są najpowszechniejszym środkiem wymiany informacji. Są one używane do rozpowszechniania programów i wymiany informacji między komputerami osobistymi. Mogą pełnić funkcję nośników pasożytniczych wirusów, które ukrywają się w każdej wykonywalnej procedurze na dyskietce, wirusów sektorów ładowania, które kryją się w sektorze ładowania dyskietki lub wirusów wieloczęściowych, które mogą być ukryte w sektorze ładowania i w każdej wykonywalnej procedurze. Wykonanie zainfekowanego programu lub zainicjowanie pracy z zainfekowanej dyskietki nie wymaga świadomego działania ze strony użytkownika. Na przykład, komputer może zostać automatycznie zainfekowany, jeżeli jest uruchamiany z dyskietki zainfekowanej wirusem sektora ładowania. Należy pamiętać, że dyskietka nie powinna być dyskiem systemowym! Zainfekowanie może nastąpić całkiem łatwo, jeśli dyskietka systemowa jest pozostawiona na noc w komputerze, który jest następnie rano włączany. Komputer może również zostać zainfekowany, jeżeli nastąpi zwarcie w sieci zasilającej, gdy maszyna nie jest obsługiwana, z dyskietką systemową w kieszeni napędu dysku elastycznego. Gdy użytkownik wróci do komputera prawdopodobnie nie zauważy, że został on uruchomiony w czasie jego nieobecności.

WYMIENNE DYSKI SZTYWNE

Dyski sztywne wymienne stają się coraz bardziej popularne w systemach zabezpieczeń, w których urządzenia pamięci masowych są wyjmowane i zamykane, gdy komputer osobisty nie jest obsługiwany. Jednak, gdy są przenoszone od jednego komputera do drugiego, mogą stać się nośnikami, wirusów zarówno pasożytniczych jak i sektorów ładowania czy wieloczęściowych.

KASETY TAŚMY MAGNETYCZNEJ

Kasety z taśmą magnetyczną są normalnie używane do przechowywania kopii rezerwowych. Nie mogą one służyć do uruchomienia komputera i dlatego mogą być tylko nośnikami wirusów pasożytniczych i wieloczęściowych.

URZĄDZENIA MAGAZYNUJĄCE INNEGO RODZAJU

Wraz z komputerami osobistymi używa się urządzenia magazynujące innego rodzaju np.: napędy Bernoulliego, dyski optyczne, 1/2" taśma magnetyczna itp. Z zasady, jeżeli medium może być użyte do zastartowania komputera, to musi być traktowane jako nośnik wirusów sektora ładowania, wirusów wieloczęściowych, jak również wirusów pasożytniczych. Jeżeli medium nie może być użyte do uruchomienia systemu, to może być tylko nośnikiem wirusów pasożytniczych i wieloczęściowych.

SIECI

Sieci komputerowe sprzyjają szybkiej wymianie informacji. Mogą być także wspaniałym środkiem przenoszenia się wirusów i dlatego stanowią obecnie największe ryzyko dla bezpieczeństwa antywirusowego.

MODEMY

Modemy udostępniają komputerom osobistym środek łączności z innymi komputerami osobistymi, zwykle przez pośredniczące urządzenia magazynujące takie, jak: biuletyny elektroniczne czy serwery poczty elektronicznej. Jeżeli umożliwiają one ładowanie skrośne obrazów wykonywalnych, to mogą służyć jako nośniki wirusów pasożytniczych i wieloczęściowych. Wirusy sektorów ładowania nie mogą być przekazywane nieumyślnie przez modemy.


Podrozdział 3 - Struktura wirusa


Wirus jest rozmyślnie napisanym programem komputerowym, w którym można wyróżnić dwie części: kod samoodtwarzania (samoreplikacji) i "ładunek użyteczny" powodujący zjawiska uboczne. W typowym wirusie komputera osobistego, kod samoodtwarzający ma długość między 400 i 2000 bajtów, zaś wielkość ładunku użytecznego zależy od wywoływanych zjawisk ubocznych. Na ogół jest to kilkaset bajtów.

Tabela 1 - Struktura wirusa
Kod samoodtwarzaniaŁadunek użyteczny

Przed zainfekowaniem programu wykonywalnego większość wirusów próbuje określić, czy został on już kiedyś zainfekowany przez sprawdzenie istnienia sygnatury infekcji. Jeżeli sygnatura (zwana czasem "znaczkiem wirusa") występuje oznacza to, że program wykonywalny jest już zainfekowany i ponowna infekcja nie następuje. Sygnatura może mieć różne postacie. Niektóre wirusy używają sekwencji znaków, takich jak "sURIV" (VIRUs wspak) w określonej pozycji, niektóre badają wielkość pliku na podzielność przez określoną liczbę, inne testują, czy liczba sekund w polu daty pliku jest ustawiona na 62. Co najmniej jeden wirus (Jerusalem) nie sprawdza dokładnie swojej własnej sygnatury, co powoduje ponowną infekcję i dalej nieograniczony wzrost długości programu wykonywalnego. Zjawiska uboczne wywoływane przez wirusa są ograniczone jedynie wyobraźnią autora i mieszczą się w zakresie od złośliwych do poważnego wandalizmu.


Podrozdział 4 - Rodzaje wirusów


Wirusy można podzielić na pięć kategorii: wirusy sektora ładującego, wirusy pasożytnicze, wirusy wieloczęściowe, wirusy towarzyszące i wirusy sprzęgające. Granice między tymi kategoriami nie są wyraźne; na przykład wirusy towarzyszące i łączące mogą być uważane za szczególne przypadki wirusów pasożytniczych.

WIRUSY SEKTORA ŁADOWANIA

Wirusy sektora ładowania (ładującego, inicjującego) (ang. boot sector virus) zmieniają zawartość albo głównego sektora ładowania, albo sektora ładowania DOS-a, zależnie od rodzaju wirusa i dysku, zwykle zastępując właściwą zawartość swoją własną wersją. Oryginalna wersja modyfikowanego sektora jest na ogół przechowywana gdzie indziej na dysku tak, żeby wersja wirusowa była wykonywana pierwsza. Zwykle ładuje ona pozostałą część kodu do pamięci, poprzedzając wykonanie oryginalnej wersji sektora ładowania . W ten sposób wirus rezyduje na stałe w pamięci dopóki komputer jest wyłączony. Wirusy sektora ładowania są rozpowszechniane przez fizyczną wymianę każdego nośnika, który może być wykorzystany do uruchomienia systemu operacyjnego (w największej liczbie przypadków przez fizyczną wymianę dyskietek). Wskutek tego, rozpowszechniają się powoli. Znajdują one jednak programy - konie trojańskie, których funkcją jest tylko zainfekowanie sektora ładowania komputera osobistego i rozpoczęcie infekcji. Znane jako "kroplomierze" (ang. droppers) powodują rozpowszechnianie wirusów sektora ładowania przez biuletyny elektroniczne, co znacznie zwiększa zdolność rozprzestrzeniania się wirusów sektora ładowania i szybkość, z jaką wirus może przenosić się na duże odległości.


Rysunek 4 - Dyskietka niezainfekowana


Rysunek 5 - Dyskietka zainfekowana

Komputer osobisty zostaje zainfekowany wirusem sektora ładowania tylko wtedy, gdy użytkownik (przypadkowo) zainicjuje działanie systemu z zainfekowanego dysku. Całkowicie bezpieczne jest włożenie zainfekowanej dyskietki do kieszeni napędu i skopiowanie z niej danych (używając polecenia COPY). Komputer osobisty nie zostanie zainfekowany chyba, że jest uruchamiany, gdy zainfekowana dyskietka znajduje się w kieszeni napędu A. Jednak, nie powinno być użyte polecenie DISKCOPY, ponieważ jest to kopiowanie odwzorowujące, które również dobrze skopiuje kod wirusa. Przykładami wirusów sektora ładowania są: Brain (tylko sektor ładowania dyskietki), Italian (sektor ładowania DOS-a) i New Zealand (główny sektor ładowania). Mechanizm działania wirusa sektora ładowania wykorzystuje zwykle trzy różne składniki:
  1. Sektor ładowania - zastępowany przez wersję zainfekowaną; w ten sposób wirus uzyskuje dostęp.
  2. Jeden poprzednio nie wykorzystany sektor - dla zapamiętania oryginalnego sektora ładowania.
  3. Pewna liczba poprzednio nie wykorzystanych sektorów - gdzie jest przechowywana większość programu wirusowego.
Niektóre wirusy sektora ładowania nie zapamiętują nigdzie treści oryginalnego sektora ładującego (np. SVC 6.0). Metoda uzyskiwania nieużywanego sektora jest różna dla odmiennych wirusów. Niektóre wirusy, takie jak Form i Disk Killer szukają nieużywanej jednostki alokacji pliku - JAP-a (niepodzielonej jednostki przydziału, klastru) w tablicy rozmieszczenia plików (FAT) dysku i, po znalezieniu, etykietują go jako "uszkodzony". Zabezpiecza to przed przydzieleniem tych JAP - ów do plików i możliwego przepisania kasującego programu wirusa. Inne wirusy, takie jak New Zealand wykorzystują część twardego dysku, która normalnie nie jest używana przez system operacyjny (sektor 2, głowica 0 i następne). New Zealand zapamiętuje oryginalny sektor ładowania w sektorze 7, głowica 0, ścieżka 0 twardego dysku. Na dyskach elastycznych wirus przyjmuje inną strategię i magazynuje oryginalny sektor ładowania w sektorze 3, głowicy 0, co w obu przypadkach może spowodować rzeczywistą stratę danych na pewnych typach dysków. Inne przykłady rekwizycji obszaru obejmują użycie ścieżki 40 na dyskietce o pojemności 360K (Den Zuk) i zmniejszenie wielkości pierwszej partycji na twardym dysku (Tequila). Ważne jest aby jasno zdawać sobie sprawę, że wszystkie wirusy sektora ładowania modyfikują sektor ładowania w pewien sposób, i że jedyną rzeczą, którą należy zrobić jest poszukiwanie oznak zainfekowania. Miejsce, w którym magazynowana jest pozostała część kodu wirusa nie ma praktycznego znaczenia, z wyjątkiem, być może przypadku, gdy próbujemy odnaleźć sektor ładowania w celu skopiowania go z powrotem i "zdezinfekowania" dysku.

WIRUSY PASOŻYTNICZE

Wirusy pasożytnicze modyfikują zawartość plików COM i (lub) EXE. Dołączają się one do pliku pozostawiając nienaruszoną większość programu. Przebieg wykonywania zostaje odwrócony w taki sposób, aby program wirusa był wykonywany jako pierwszy. Po wykonaniu programu wirusa następuje wykonanie oryginalnego programu, w większości przypadków w zwykły sposób. Dodatkowy czas wykonania, związany z wirusem, jest zwykle niezauważony przez użytkownika. Niektóre wirusy dołączają się na końcu oryginalnego pliku, inne włączają się na początku, niektóre robią to w obu miejscach, a jeszcze inne włączają się w środku pliku. Wirusy pasożytnicze rozprzestrzeniają się za pośrednictwem każdego nośnika, który może być użyty do przechowywania lub przekazywania programu wykonywalnego, takiego jak: dyskietki, taśmy, sieci itp. Ogólnie infekcja się rozprzestrzenia, gdy zainfekowany program jest wykonywany. Jest szczególnie istotne, aby kod wirusa był wykonywany przed zainfekowanym programem. Wykonywanie wirusa ma ten sam poziom przywileju, co program oryginalny, i raz uruchomiony może dokonać wszystkiego: samoodtwarzania, zainstalowania się w pamięci, wykonywania efektów ubocznych itp. Większość wirusów pasożytniczych, jak Cascade rozprzestrzenia się podczas ładowania i wykonywania innego programu (niezainfekowanego). Taki wirus, rezydujący w pamięci, najpierw sprawdza czy już nie nastąpiła infekcja w programie. Jeżeli program nie jest jeszcze zainfekowany, to go zainfekuje. Jeżeli jest już zainfekowany, następna infekcja jest niepotrzebna (mimo to, niektóre wirusy pasożytnicze, jak Jerusalem, infekują wielokrotnie do nieskończoności). Wirusy pasożytnicze, które nie rezydują w pamięci, nie mogą się w niej same zainstalować, lecz rozpowszechniają się znajdując pierwszy niezainfekowany program na dysku i infekują go. Jednym z przykładów takiego wirusa jest Vienna.

WIRUSY WIELOCZĘŚCIOWE

Ciekawym odkryciem było pojawienie się wirusów mających cechy wykazujące właściwości wirusów zarówno sektora ładującego, jak i pasożytniczych. Takie wirusy jak Flip infekują pliki COM i EXE (jak wirusy pasożytnicze) równie dobrze jak główny sektor ładujący (jak wirusy sektora ładującego). Przez wykorzystanie "lepszego z dwóch światów" ich możliwości samoodtwarzania są znacznie większe niż wtedy, gdy używany jest tylko jeden sposób. Nie jest zaskoczeniem, że niewiele istniejących obecnie wirusów wieloczęściowych powoduje nieproporcjonalnie dużą liczbę infekcji. Wirusy wieloczęściowe rozprzestrzeniają się przez fizyczną wymianę wszelkich nośników, które mogą być użyte do inicjacji systemu (w największej liczbie przypadków przez fizyczną wymianę dyskietek), jak również przez wszystkie nośniki, które mogą być wykorzystane do przechowywania lub przekazywania procedur wykonywalnych, takie jak dyski, taśmy i sieci. Wirus staje się aktywny, gdy komputer osobisty jest inicjowany z zainfekowanego dysku lub gdy jest wykonywany zainfekowany program. Większość wirusów wieloczęściowych, takich jak Flip, jest w pełni wieloczęściowa, co oznacza, że komputer osobisty zainfekowany podczas inicjowania z zainfekowanego dysku, będzie infekował inne dyski, jak również procedury wykonywalne, podczas gdy komputer zainfekowany przy wykonywaniu zainfekowanego pliku, będzie infekował zarówno inne dyski jak i pliki wykonywalne. Niektóre wirusy wieloczęściowe są wieloczęściowymi tylko w części, na przykład, Spanish Telecom w plikach EXE i COM będzie infekował inne pliki EXE i COM, jak również sektory ładowania, ale ten sam wirus w sektorze ładowania będzie infekował tylko inne sektory ładowania. Szybkość rozpowszechniania się wirusów wieloczęściowych jest podobna do szybkości wirusów pasożytniczych, ponieważ mogą być łatwo załadowane do biuletynów elektronicznych i w ten sposób rozprzestrzeniać się prędko na duże odległości.

WIRUSY TOWARZYSZĄCE

Wirusy towarzyszące wykorzystują tę właściwość MS-DOS-a, że gdy w katalogu występują dwa programy o tej samej nazwie, to system operacyjny wykonuje plik COM przed plikiem EXE. Wirus towarzyszący tworzy plik COM o tej samej nazwie co plik EXE, który ma być zainfekowany, umieszczając w nim swój własny kod. Gdy użytkownik wczyta nazwę programu, system operacyjny wykona COM, co spowoduje wykonanie poleceń programu wirusowego i, w następstwie, załadowanie i wykonanie pliku EXE. Wirus nie powoduje żadnych zmian w zawartości "zainfekowanego" pliku EXE. Bardziej wyszukane wirusy towarzyszące etykietują towarzyszące pliki COM atrybutem DOS-a "hidden" (ukryty), co powoduje, że nie są one wykazywane w wydruku katalogu. Jest to jednak też gwoździem do trumny tych wirusów, ponieważ polecenie COPY DOS-a nie kopiuje plików ukrytych i w ten sposób wirus zaprzecza pierwszej zasadzie rozpowszechniania: kopiowania plików wykonywalnych przez użytkownika. Wirusy towarzyszące rozprzestrzeniają się przez każdy nośnik, który może być użyty do przechowywania i przenoszenia procedur wykonywalnych (ale trzeba uwzględnić zamieszczony wyżej komentarz o plikach ukrytych). Wirus uaktywnia się, gdy jeden z jego programów COM jest wykonywany. Niewątpliwe jest to, że w przyszłości wirusy towarzyszące stworzą największe zagrożenie.

WIRUSY SPRZĘGAJĄCE

Wirusy sprzęgające działają przez dołączenie wskaźnika pierwszego JAP-a katalogu zapisu każdego pliku wykonywalnego do pojedynczego JAP-a zawierającego kod wirusa. Oryginalny numer pierwszego JAP-a jest zachowywany w nieużywanej części zapisu katalogu. Wirusy sprzęgające są rozpowszechniane przez dowolny nośnik, który może być użyty do przechowywania lub przenoszenia procedur wykonywalnych. Komputer osobisty może zostać zainfekowany, gdy jest wykonywany zainfekowany program. Do sierpnia 1992, jedynym występującym na scenie wirusem sprzęgającym był Dir II, który pojawił się po raz pierwszy w połowie 1991 i od tego czasu znacząco się rozpowszechnił.


Podrozdział 5 - Zachowanie się wirusa po uzyskaniu kontroli


WIRUSY REZYDUJĄCE W PAMIĘCI

Wirusy rezydujące w pamięci (rezydentne) instaluje się w niej jako rezydentne programy usługowe (TSR - ang. Terminate and Stay Resident - zakończ i pozostaw w pamięci), skąd uzyskuje kontrole. Przejmują one jedno lub więcej przerwań i infekują inne obiekty, gdy spełnione są określone warunki (np. kiedy użytkownik usiłuje wykonać pewne programy użytkowe (Cascade) lub gdy użytkownik zwraca się do napędu (Brain). Wyłączenie zasilania komputera osobistego wymazuje wirus z pamięci; wznowienie z pamięci (uruchomienie programowe, gorące uruchomienie) klawiszami Ctrl-Alt-Del nie musi tego wykonać, ponieważ niektóre wirusy, takie jak Yale przejmują przerwanie Ctrl-Alt-Del i przetrwają uruchomienie programowe.

WIRUSY NIE REZYDUJĄCE W PAMIĘCI

Wirusy nie rezydujące w pamięci są aktywne jedynie wtedy, gdy jest wykonywany zainfekowany program użytkowy. Wykonują one całkowicie swój program na tym etapie i nie pozostają w pamięci. Inne procedury wykonywalne są z reguły infekowane jedynie wtedy, gdy wykonywany jest zainfekowany program (np. Vienna czy Datacrime). Mimo, że takie działanie wydaje się mniej infekującym niż dokonywane przez wirusy rezydentne, to zakażalność tymi wirusami jest w praktyce tak samo duża, jeśli nawet nie większa, niż wirusami rezydującymi w pamięci. Są one także trudne do zlokalizowania, ponieważ nie zmieniają tablicy przerwań i w niewielkim stopniu dostępny obszar pamięci, a ich infekujące zachowanie może być bardziej nieprzewidywalne.

WIRUSY HYBRYDOWE

Niektóre wirusy wykorzystują kombinację obu metod. Wirus Typo, na przykład, infekuje procedury wykonywalne po wywołaniu zainfekowanego programu, ale zostawia również po zainfekowaniu mały składnik TSR w pamięci. Sekcja TSR zawiera ładunek użyteczny, gdy część nierezydentna zawiera kod samoodtwarzania. W innych wirusach hybrydowych infekcje te mogą być rozmaicie alokowane.


Podrozdział 6 - Wirusy i kalendarz


Często się zdarza, że użytkownicy przypominają sobie o wirusach, gdy zbliża się dobrze znana data np. 6 marca (Michelangelo), albo piątek będący jednocześnie 13. dniem miesiąca; (Jerusalem). Ponieważ przybywa coraz więcej i więcej wirusów, "kalendarz wirusowy" wciąż się zapełnia. Częstą "radą" otrzymywaną w tych okolicznościach jest propozycja przesunięcia zegara systemu o jeden dzień do przodu. Jeden z najbardziej złośliwych przypadków zdarzył się użytkownikowi komputera osobistego, który przesunął do przodu zegar 12 grudnia 1991, aby uniknąć piątku 13. Następnie zapomniał cofnąć zegar i włączył swój komputer 5 marca, zamierzając przesunąć datę dla uniknięcia Michelangelo. Włączenie komputera wyzwoliło wirus i stracił twardy dysk.

Tabela 2 - Daty uaktywnienia niektórych wirusów
Nazwa wirusaData uaktywnieniaEfekt uboczny
5120po 1 czerwca 1992Obcina zainfekowane programy
4k22 wrześniaZawiesza komputer osobisty
Cascade1 października - 31 grudnia Wyświetla opadające litery
Cascade Format 1 października - 31 grudnia nie'93 Formatuje dysk
Casino 15 stycznia, kwietnia, sierpnia Niszczy FAT, jeśli gra przegrana
Christmas Japan25 grudniaWyświetla komunikat
Christmas Tree 19 grudniaWyświetla komunikat
Datacrime13 październikaFormatuje dysk/ wyświetla komunikat
Dec 24th24 grudniaWyświetla komunikat
Durban sobota, 14Zapisuje kasująco pierwsze 100 sektorów
Faust13 dzień miesiącaWyświetla komunikat, zawiesza komputer
Form18 dzień miesiącaWytwarza hałas przy naciśnięciu klawisza
Frogs Alley5 dzień miesiącaZapisuje kasująco FAT i katalog główny
Hybrid piątek, 13 po '91Formatuje dysk
Jerusalempiątek, 13Usuwa programy, gdy są wykonywane
Joshi5 styczniaWyświetla komunikat
July 13th13 lipcaNieznany
Kennedy6 czerwca, 18 i 22 listopada Wyświetla komunikat
Maltese Amoeba 1 listopada, 15 marca Zapisuje kasująco 120 sektorów
Michelangelo6 marcaFormatuje dysk
Monxla 13 dzień miesiącaNiszczy programy
PcVrsDsponiedziałek, 23 nie '90 Formatuje dysk
Pretoria16 czerwcaNiszczy katalog główny
South Africanpiątek, 13Usuwa programy, gdy są wykonywane
Suriv1 kwietniaWyświetla komunikat
Taiwan 8 dzień miesiącaZapisuje kasująco FAT
Tenbyte1 wrześniaPsuje dane zapisane na dysku
Thursday 1212 czwartekWyświetla komunikat
Traceback28 grudniaWyświetla opadające litery
Violator15 sierpniaNieznany
XA11 kwietniaZapisuje kasująco sektor ładowania


Rozdział III - Wnioski

Przestrzeganie zasad higieny jest na pewno najbardziej skutecznym sposobem zapobiegania atakowi wirusa. Każdy program wykonywalny, który jest uruchamiany na komputerze powinien być traktowany podejrzliwie. Zestaw podanych reguł powinien zmierzać do przeciwdziałania drogom i metodom wnikania wirusa i powinien zawierać następujące zalecenia:

Rozdział IV - Spisy

Spis ilustracji

Rysunek 1 -
Przebieg programu bomby logicznej
Rysunek 2 - Rakieta dostarczająca nabój (głowicę bojową)
Rysunek 3 - Skutek działania robaka Choinki Bożonarodzeniowej
Rysunek 4 - Dyskietka niezainfekowana
Rysunek 5 - Dyskietka zainfekowana

Spis tabel

Tabela 1 - Struktura wirusa
Tabela 2 - Daty uaktywnienia niektórych wirusów

Spis treści

Rozdział I - Wstęp
Rozdział II - Różne informacje o wirusach komputerowych
Podrozdział 1 - Przegląd zagrożeń systemów komputerowych
KONIE TROJAŃSKIE
BOMBY LOGICZNE
WIRUSY
ROBAKI
Podrozdział 2 - Jak wirus może przeniknąć do komputera
DYSKI ELASTYCZNE
WYMIENNE DYSKI SZTYWNE
KASETY TAŚMY MAGNETYCZNEJ
URZĄDZENIA MAGAZYNUJĄCE INNEGO RODZAJU
SIECI
MODEMY
Podrozdział 3 - Struktura wirusa
Podrozdział 4 - Rodzaje wirusów
WIRUSY SEKTORA ŁADOWANIA
WIRUSY PASOŻYTNICZE
WIRUSY WIELOCZĘŚCIOWE
WIRUSY TOWARZYSZĄCE
WIRUSY SPRZĘGAJĄCE
Podrozdział 5 - Zachowanie się wirusa po uzyskaniu kontroli
WIRUSY REZYDUJĄCE W PAMIĘCI
WIRUSY NIE REZYDUJĄCE W PAMIĘCI
WIRUSY HYBRYDOWE
Podrozdział 6 - Wirusy i kalendarz
Rozdział III - Wnioski