Istota wirusa komputerowego

Wirusem komputerowym jest kod, który na skutek braku ochrony zasobów w systemach jednoprogramowych komputerów osobistych dokonuje niepożądane zmiany w środowisku systemu, w sposób zaprogramowany przez jego twórcę, uszkadzając dane, oprogramowanie bądź modyfikując sposób działania urządzeń itp. Upraszczając, wirus jest to obcy fragment kodu, dołączony do programu. Jego wykonanie po uruchomieniu danej aplikacji powoduje odszukanie w systemie innych, niezainfekowanych programów i dodanie do nich sekwencji kodu wirusa. W taki sposób wirus może zarażać coraz to większe ilości oprogramowania w komputerze, a zarażone programy, mogą być przenoszone na nośnikach lub przesyłane dalej siecią, niszcząc zasoby programowe w innych komputerach. Celem ataku wirusa może stać się sektor rozruchowy dysku lub dyskietki. Skutki spowodowane przez wirusy posiadają znamiona przestępstw polegających na naruszeniu osobistych dóbr, które chronione są prawem. Ogólnie przyjętym jest, że dyskietki zawierające oprogramowanie produkowane fabrycznie wolne są od wirusów komputerowych. Lecz i w takich przypadkach znane są sytuacje złośliwego zawirusowania fabrycznych nośników przez zawiedzionych pracowników bądź jako zemsta na swoim szefie. Ochrona przed wirusami polega, prócz unikania nośników z oprogramowaniem niepewnego pochodzenia, na ciągłej kontroli systemu plików przy pomocy programów antywirusowych. Stuprocentową gwarancję zniszczenia wirusów daje tylko format dysku twardego, niszczący jednak jego całą zawartość. Dlatego też zawsze należy zadbać o przechowywanie zapasowych kopii ważnych danych znajdujących na dysku komputera. Programem antywirusowym jest aplikacja, której zadaniem jest wyszukiwanie, rozpoznawanie oraz niszczenie wirusów w systemie komputerowym.

Pochodzenie wirusów komputerowych

Wirus komputerowy jak każdy inny program zostaje napisany przez programistę. Nie jest możliwa sytuacja, aby wirus powstał samoistnie. Aby zwalczać wirusy, należy przede wszystkim poznać ich budowę oraz sposób działania. Posiadanie wiedzy, w jaki sposób działa wirus, jak się rozmnaża oraz dokonuje zniszczeć w systemie, umożliwia stworzenie programu-szczepionki przeciw niemu. Ogromna większość wirusów napisana jest w asemblerze, który będąc niskopoziomowym językiem umożliwia w niewielkiej ilości kodu źródłowego zawarcie stosunkowo dużej funkcjonalności, co powoduje, iż program jest optymalny i potrafi najgłębiej wniknąć w strukturę systemową. Naturalnie powstają też wirusy w innych językach programowania, jak Turbo Pascal czy C, lecz z racji na wysoki poziom tych języków, wirusy te są dość prymitywne, i stosunkowo mało agresywne, więc można pominąć ich istnienie.

Można rzec, że pośród wirusów powstał określony sposób standaryzacji zachowań. Jeżeli zostanie odkryty jakiś nieznany wirus to po szybkiej analizie jego kodu źródłowego możemy wnioskować, że:

  • jest szyfrowany lub nie
  • zaraża poprzez doklejenie się na początku, końcu, wewnątrz, sprzęgając się modyfikując tablicę FAT, lub nadpisując nosiciela
  • na początku plików COM umieszcza miejsce skoku do swego kodu (przykładowo: JMP adres_skoku)
  • zaraża inne pliki bądź dyski (sektor bootujący)
  • oznacza zainfekowane pliki wstawiając sygnaturę: wewnątrz, modyfikując datę lub czas, bądź oznaczając je w inny sposób
  • pomijając inne szczegółowe działania danego wirusa oraz fakt, czy wirus odporny jest na analizę, można stworzyć szczepionkę postępując w następujący sposób:
    • pobieramy 16 bądź więcej bajtów z kodu wirusa, aby zidentyfikować go w zainfekowanych plikach / dyskach (jeżeli nie jest on zaszyfrowany zmienną procedurą)
    • ustalamy długość infekującą danego wirusa (w przypadku wirusów plikowych)
    • ustalamy, co dany wirus zmienia podczas infekcji pliku / dysku oraz gdzie przechowywane są te informacje

Sposoby zabezpieczania się przed wirusami

Najskuteczniejszym sposobem ochrony przed wirusami jest profilaktyka polegająca na nie kopiowaniu oraz nie przenoszeniu oprogramowania z niepewnych źródeł. Najwięcej wirusów przenoszonych jest przez nielegalne rozpowszechnianie oprogramowania. Jeżeli istnieje konieczność korzystania z oprogramowania przenoszonego z innych komputerów należy zainstalować rezydentną aplikację monitorującą. Narzędzie to analizuje każdy nośnik umieszczony w komputerze, każdy kopiowany bądź uruchamiany program, nadzoruje newralgiczne elementy systemu jak tablicę przerwań, czy próby niewłaściwego przydzielania pamięci. Bardziej rozbudowane aplikacje umożliwiają określenie, jakim wirusem zarażony został dysk bądź plik. Wykorzystują w tym celu pliki sum kontrolnych bądź bazy sygnatur (wzorców) wirusów, potrafią też nadzorować pliki wysyłane przez sieć. Zaletą tych aplikacji jest to, iż potrafią one odnaleźć i zniszczyć wirusa zanim on dokona jakichkolwiek zmian w systemie, natomiast wadą to, że są one mocno zasobożerne i w dużym stopniu spowalniają działanie systemu i odwołanie do napędów. Jeżeli użytkownik nie posiada takiego narzędzia, to w batalii przeciw wirusom pomocnym może okazać się nierezydentny skaner, który uruchamiany, co jakiś czas, skanuje powierzchnię całego dysku. Tego typu aplikacje są bardzo szybkie w działaniu i oprócz odkrycia obecności wirusa, potrafią go obezwładnić lub zniszczyć. Jednak narzędzia te okazują się przydatne dopiero wtedy, gdy system bądź program został zarażony już wirusem. Aplikacje tego typu mogą walczyć z wirusami, lecz nie zapobiegają infekcjom systemu. Jeżeli istnieje możliwość skorzystania z obu typów narzędzi, należy to zrobić. Aby stawić czoła twórcom wirusów oraz ułatwić życie normalnym użytkownikom komputerów eksperci do walki z wirusami przystąpili do pisania pakietów antywirusowych. W dzisiejszych czasach na rynku dostępnych jest sporo tego typu narzędzi, AVP, TBVAW, WEB, AVSCAN. Najbardziej popularnymi jednak są aplikacje: VSAFE, będący rezydentnym monitorem dołączanym do każdej dystrybucji MS-DOS, a także skaner antywirusowy MKS_VIR. Program VSAFE to rezydentny monitor, potrafiący kontrolować sektory startowe dyskietek oraz dysków i aplikacje rezydentne, potrafi również zabezpieczyć dysk twardy przed niskopoziomowym sformatowaniem oraz pliki aplikacji przed modyfikacjami. Narzędzie VSAFE analizuje uruchamiane aplikacje, wykrywając wirusy przez używanie sygnatur lub sum kontrolnych. Jednak z racje tego, że większość zaawansowanych technicznie wirusów potrafi bez problemu go obezwładnić, bądź całkowicie skasować z pamięci, stosowanie go jest jednak wątpliwe. MKS_VIR to program polskiej produkcji, przystosowany do niszczenia lokalnych wirusów. Posiada on zdolność wykrywania mikrobów wykorzystujących biblioteki MtE, TPE oraz wirusów tworzonych przy pomocy generatorów, jak IVP czy G2. Wirusy polimorficzne program MKS_VIR wykrywa za pomocą kontrolowanego uruchomienia oraz interpretacji ich kodu. Autor aplikacji, Marek Sell zaimplementował w nim mechanizmy, które umożliwiają wykrywanie oraz usuwanie wirusów dyskowych, jak i wirusów makr Excel'a i Word'a. Program wykorzystuje również sumy kontrolne w celu znalezienia nieznanych w chwili tworzenia oprogramowania wirusów.

Postępowanie w przypadku braku programu antywirusowego:

  • należy nadać wszelkim plikom w komputerze flagę read-only (tylko do odczytu), gdyż większość bardziej prymitywnych wirusów ma problemy z plikami read-only
  • nazwy folderów powinny mieć rozszerzenie, gdyż wirusy nierezydujące, które skanują dysk najczęściej nie zobaczą takiego katalogu
  • podejrzaną aplikację należy uruchamiać w folderze, gdzie brak jest innych programów mogących stać się celem ataku; prosty wirus, nierezydujący w pamięci nie potrafi przeszukiwać całego dysku często infekuje programy znajdujące się aktualnym katalogu
  • jeśli BIOS komputera pozwala włączyć funkcję VIRUS PROTECTION bądź podobną, chroniącą sektor rozruchowy dysku twardego, należy to zrobić

Postępowanie w przypadku infekcji wirusem typu "Stealth"

  • należy uruchomić system z czystego dysku bootującego, aby zobaczyć, które pliki zmieniły swą długość, atrybuty bądź datę modyfikacji
  • jeżeli nie istnieje dyskietka awaryjna, można skopiować zarażone pliki na dyskietkę, zabezpieczając ją przed zapisaniem; o ile zwiększenie długości zainfekowanych plików będzie wykrywalne dla wirusa, to zawartość zarażonego zbioru będzie miała doklejony kod wirusa; powodem takiej sytuacji będzie fakt, że wirus nie będzie mógł odkazić zarażonego pliku, by ukryć fakt zakażenia
  • jeśli wirus nie jest typu "Stealth", tylko jest wirusem towarzyszącym, każdy zarażony plik EXE będzie miał swego odpowiednika w postaci pliku COM
  • jeśli konstrukcja wirusa "Stealth" jest dość prymitywna, to można wyleczyć pliki wykonywalne robiąc ich kopie zmieniając rozszerzenie np.: z COM na CO_ lub z EXE na EX_

Postępowanie w przypadku zainfekowania wirusem napisanym w języku wysokiego poziomu (np.: Turbo Pascal lub C)

Wirusy tworzone w języku C lub Pascal posiadają duże gabaryty oraz bardzo słabe procedury ukrywające ich obecność. Wirusy te z reguły są nieryzdentne, bardzo wolne oraz awaryjne w swym działaniu. Jedyną zaletą tego typu wirusów jest to, że ich analiza jest stosunkowo trudna, więc wirusa takiego typu łatwo jest zlokalizować, lecz trudniej zniszczyć. Wirusy tworzone w językach wysokiego poziomu najczęściej posiadają następujący schemat infekcji:

  • przenoszą początkowy fragment zainfekowanego programu na koniec
  • umieszczają się początku zarażonego programu

Uruchomienie zarażonego programu przebywa w następujących etapach:

  • uruchomienie wirusa oraz infekcja programów
  • odkażenie nosiciela
  • uruchomienie nosiciela
  • zakażenie nosiciela

Wiadomo już więc, jak pozbyć się wirusa, wystarczy zaraz po uruchomieniu zainfekowanego programu zablokować możliwość zapisu do dysków bądź plików COM lub EXE, a wirus zniszczy się sam. Za pomocą narzędzia VSAFE, który dołączany jest do każdej dystrybucji MS-DOS, można walczyć z nieznanymi wirusami. Sposób zastosowania tego narzędzia jest następujący:

  • uruchomić VSAFE.COM
  • wcisnąć kombinację klawiszy ALT-V i wyłączyć funkcje 3,4,8 A, a następnie klawisz ESC
  • uruchomić zainfekowany program
  • wcisnąć kombinację klawiszy ALT-V i włączyć funkcję 3 A, a następnie klawisz ESC
  • wyjść z programu
  • narzędzie VSAFE poinformuje o próbach zapisu, na pytanie o zapis należy odpowiedzieć przecząco
  • po zakończeniu pytań, plik jest wyleczony

Przykłady wirusów

Michał Anioł (Virus Michelangelo), silnie nagłośniony przez media wirus komputerowy, działający na zasadzie bomby zegarowej, który miał uaktywnić się i dokonać zniszczeń 6 marca 1992, czyli w 517 rocznicę narodzin Michała Anioła. W ogromnej większości przypadków został jednak zlokalizowany oraz zniszczony przed nastaniem tego dnia. Pojawienie się tego wirusa korzystnie wpłynęło na sprzedaż oprogramowania antywirusowego.

Koń trojański (ang. Trojan horse), to złośliwe oprogramowanie ukryte we wnętrzu innej aplikacji. Przykładowo edytor tekstu może zawierać kod, którego działanie polega na wyszukaniu w edytowanym pliku pewnych słów-kluczy a następnie skopiowanie całego pliku do specjalnego miejsca, dostępnego tylko dla autora edytora. Inny przykład może stanowić program, który udaje usługę logowania użytkownika do systemu. Niczego niepodejrzewający użytkownik myśli, że podał błędne hasło, gdyż druga próba zalogowania przebiega pomyślnie, koń trojański jednak zdążył zarejestrować nazwę oraz hasło użytkownika, przechowując je w charakterystycznym dla siebie obszarze, a użytkownikowi wyświetlił informację o błędzie podczas logowania. Konie trojańskie są stosunkowo trudno wykrywalne i mogą stanowić poważne zagrożenie dla bezpieczeństwa systemów operacyjnych.

EnerKaz to wirus, który zaraża pliki Windows PE (ang. Portable Executable) znajdujące się w katalogach wykorzystywanych przez przeglądarkę Internet Explorer oraz program KazaA. KazaA jest aplikacją służącą internetowej wymianie plików. Wirus ten został stworzony przy pomocy języka Delphi 6. Jego rozmiar to 47,104 bajty. Głównym kanałem rozpowszechniania się wirusa jest aplikacja KazaA. Kod wirusa zawiera w sobie następujący tekst:

"HANTA-Vjoiner ,si que lo hice yo, ErGrone/GEDZAC los senoritos de PERU, en especial a Machado, que no tiene la educación necesariapara responder un E-Mail...y para los que se enojaron con CPL, jeje, paque ocupan Hotmail!!!, teniendo miles de mailbox gratis y con mas espacio.....Falla la Heuristica y contra una técnica antigua JoJOjOO-Escrito en Delphi 6."

Wirus może być usunięty dowolnym skanerem dostępnym on-line, np.: ActiveScan.

W97M/Blackout to robak rozprzestrzeniający się głównie przy pomocy kanału IRC. Typowym działaniem wirusa jest unieruchomienie opcji Shutdown w Menu Start w systemie Windows. Oprócz tego infekowane są wszystkie otwarte w danej chwili pliki programu MS Word czasami wyświetlając wiadomość na ekranie. Wirus ten, napisany w języku Visual Basic, pojawił się 5 lutego 2003 roku. Plik, który odpowiada za zakażenie zajmuje 3,038 bajtów. Blackout atakuje komputery pracujące pod kontrolą następujących systemów: Windows XP/2000/NT/Me/98/95. Robak rozprzestrzenia się głównie przy pomocy kanałów IRCa, wysyłając plik README.TXT poprzez użycie komendy DCC. W pliku tym zawarta jest kopia zainfekowanego kodu.

W97M/Blackout tworzy poniższe pliki umieszczając je na głównym poziomie dysku twardego:

  • BLACKOUT.VBS - narzędzie Panda Antywirus identyfikuje ten zbiór jako wirus VBS/Blackout
  • BLACKOUT.VXD - plik zawierający kod do zarażania dokumentów programu MS Word. Panda identyfikuje go jako W97/Blackout.Src
  • README.TXT - kopia zainfekowanego pliku MS Word, który wirus próbuje przesłać dalej przez kanał IRC
  • Jeżeli komputer posiada zainstalowaną aplikację do rozmów przez IRC, Blackout generuje wówczas nowy plik o nazwie SCRIPT.INI (którego Pandę wykrywa jako mIRC/Blackout), dzięki któremu wirus może rozprzestrzeniać się przy pomocy kanału IRC

Blackout tworzy w rejestrze systemowym następujące klucze:

  • HKLM Software Microsoft Windows CurrentVersion Run = Registry "blackout" "c:blackout.vbs"
  • HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer NoClose "1"

Wirusa usuwają niemal wszystkie dostępne on-line skanery jak np.: ActiveScan.