Wirusy komputerowe - podstawy


Wirusy bootsektora i plikowe

Wszystko zaczęło się od wirusa bootsektora - w roku 1986 wirus Pakistani Brain rozprzestrzenił się w ciągu roku na całym świecie, choć atakował tylko dyskietki, a nie twarde dyski. Wirusy bootsektora przypominają w działaniu system operacyjny. W chwili włączenia komputera BIOS z płyty głównej uruchamia niewielką procedurę startową z twardego dysku. Jest ona zapisana w MBR (master BOOT rekord, główny rekord startowy), na początku twardego dysku. Procedura startowa uruchamia z kolei kod startowy Windows lub innego systemu operacyjnego, znajdujący się w sektorze startowym aktywnej partycji.

Wirusy komputerowe - podstawy

Poszukiwanie śladów - sektor startowy dyskietki zainfekowanej wirusem Party.B w edytorze Norton DiskEditor.

Również każda dyskietka ma sektor startowy. Właśnie tam i/lub w głównym rekordzie startowym wirusy bootsektora zastępują kod startowy. W ten sposób szkodnik uruchamia się wcześniej, niż wszystkie inne programy i może zainfekować każdą włożoną do napędu dyskietkę. Następnie uruchamia normalny kod startowy systemu operacyjnego - użytkownik nic nie zauważa.

Droga infekcji, jaką musi pokonać wirus bootsektora, jest prosta. W chwili włączania komputera dyskietka znajduje się w napędzie i komputer próbuje wystartować z dyskietki. Ponieważ wirus bootsektora nie potrzebuje do rozmnażania żadnego pliku, wirus może znajdować się nawet na "czystej" dyskietce. Ponieważ z kolei wirusy boot-sektora mogą w ten sposób pozostawać niezauważone przez długi czas, należą do najbardziej opornych przedstawicieli swojego gatunku.

Dowolny program - tak zwany dropper - również może w chwili startu skopiować wirusa bootsektora na twardy dysk lub dyskietkę. W ten sposób funkcjonują nawet niektóre makrowirusy. Oprócz tego istnieją tak zwane wirusy multipartite, które łączą w sobie cechy wirusów bootsektora i wirusów plikowych.

Wirusy plikowe atakują wykonywalne pliki programów, do których kopiują swój własny kod. W chwili startu zmanipulowanego programu uruchamia się najpierw wirus, infekując inne programy lub wykonując swoją funkcję destrukcyjną. Na koniec pozwala uruchomić się oryginalnemu programowi.

Atak przez strumienie NTFS

Na początku września roku 2000 użytkownicy systemów Windows NT/2000 zetknęli się z zupełnie nowym rodzajem wirusa, wobec którego wszelkie stosowane dotychczas środki ochronne były bezsilne. W2K.Stream, bo tak nazywał się szkodnik, wykorzystywał specyficzną cechę systemu plików NTFS - podział plików na wiele strumieni.

W Windows 9x istnieje tylko jeden strumień, to jest sam kod programu. Natomiast Windows NT/2000 umożliwia podział pliku na wiele strumieni, do których dostęp możliwy jest przez ich specyficzne nazwy (nazwa_pliku:nazwa_strumienia). Postać strumieni mogą mieć niezależnie wykonywalne moduły programów, dane usługowe (prawa dostępu, dane szyfrowania, informacje o czasie edycji itd.). Ta cecha stanowi o wszechstronności systemu NTFS, ponieważ można utworzyć strumień danych odpowiedni do każdego rodzaju zadania.

W2K.Stream jest pierwszym znanym wirusem, który infekuje systemy plików NTFS, wykorzystując strumienie danych. W tym celu wirus wytwarza strumień o nazwie STR i kopiuje do niego pierwotną zawartość pliku. Następnie zastępuje główny strumień kodem wirusa. Jeżeli tak zainfekowany program zostanie później uruchomiony, wirus przejmuje nad nim kontrolę i rozpoczyna swoją replikację do innych strumieni danych. Na koniec wytwarza nowy proces dla pliku o nazwie STR i przekazuje kontrolę właściwemu kodowi programu.

Robaki

Robaki nie zarażają obcego kodu w celu samoreplikacji. Ich zadaniem jest raczej samoistne rozprzestrzenianie się w sieciach, co odróżnia je od wirusów i trojanów.

Znani przedstawiciele tego rodzaju to W32/Klez-H, W32/ExploreZip, W32?Ska (znany również jako Happy99), czy W32/PrettyPark. Przedrostek W32 oznacza, że chodzi o 32-bitowe programy do Windows 9x i NT.

Na początku czerwca 1999 rozprzestrzeniał się tego rodzaju robak o nazwie ExploreZip lub ZippedFiles, atakując systemy Windows 9x. Ofiara otrzymywała e-mail w języku angielskim z osobistym adresem i plikiem .exe o nazwie ZippedFiles w załączniku. Wyglądał on jak normalne archiwum zip, które można otworzyć podwójnym kliknięciem. Jednak w tym przypadku podwójne kliknięcie aktywowało robaka. Robak wyświetlał komunikat błędu z informacją, że archiwum jest uszkodzone, jednocześnie kopiując w tle plik o nazwie explore.exe do katalogu systemowego Windows i zmieniając plik win.ini. W ten sposób robak uaktywnia się przy każdym starcie systemu. Następnie czeka na uruchomienie Outlooka, przeszukuje odebraną pocztę i wysyła odpowiedź do wszystkich nadawców. Wykorzystuje przy tym imię do sformułowania spersonalizowanego adresu i obiecuje szybką odpowiedź na otrzymany list. Do tego czasu adresat winien przejrzeć załączone archiwum zip - i już kolejny komputer jest zainfekowany.

Szkody, które może wyrządzić ExploreZip, są ogromne. Robak przeszukuje starannie wszystkie dostępne napędy, również w sieci, w poszukiwaniu plików źródłowych różnych języków programowania. Przeszukuje też dokumenty Worda, Excela i PowerPointa, a następnie zmienia informację o długości pliku na 0. Utrudnia to znacznie - w przeciwieństwie do zwykłego usunięcia - odtworzenie danych.

Tryumfalny pochód robaków internetowych

Wirusy komputerowe - podstawy

Tak działa W2K.Stream - wirus zastępuje główny strumień pliku własnym kodem.

Od czasu robaka Code Red ogromne "sukcesy" odnoszą te robaki, które do rozprzestrzeniania się wykorzystują znane luki zabezpieczeń Windows. Dzieje się tak nadal, mimo iż Microsoft tworzy odpowiednie łaty zamykające dziury.

Dla przykładu, 18 września 2001 pojawił się W32/Nimda, wyjątkowo agresywny robak. Wykorzystał on dwie znane luki zabezpieczeń programu Internet Explorer i serwera Internet Information Server w celu rozprzestrzeniania się w 32-bitowych systemach Windows. Zmanipulowany nagłówek MIME maili w formacie HTML powodował, że już podgląd otrzymanej wiadomości w programie Outlook (Express) powodował uruchomienie zainfekowanego załącznika readme.exe. Raz uruchomiony robak rozsyłał się za pomocą własnego serwera SMTP do kolejnych ofiar. Adresy pocztowe robak pozyskiwał ze stron HTML lub poprzez MAPI ze skrzynek odbiorczych klientów pocztowych.

Nimda atakuje również Microsoft Internet Information Server, skanując porty w poszukiwaniu niezabezpieczonych komputerów w Internecie. Jeżeli robak znajdzie taki komputer, instaluje na stronie internetowej skrypt Javy, który przy odwiedzinach tak spreparowanej strony ładuje na komputer lokalny i uruchamia plik readme.eml. Skuteczną obroną przed atakiem jest wyłączenie skryptów Javy i funkcji pobierania w przeglądarce.