Kto lepszy - wirus czy antywirus?

Definicja: Wirus komputerowy to program, który poprzez powielenie własnego kodu i umieszczenie go w określonych miejscach na dysku lub w pamięci operacyjnej może powodować niekontrolowane przez użytkownika działania, poczynając od demonstracji (takich jak tworzenie komunikatów i dźwięków) przez niszczenie plików aż do prób fizycznego uszkadzania sprzętu. Antywirus komputerowy to program, który ma na celu wykrycie i zidentyfikowanie wirusa komputerowego oraz w miarę możliwości jego likwidację.

Definicja: Wirus komputerowy to program, który poprzez powielenie własnego kodu i umieszczenie go w określonych miejscach na dysku lub w pamięci operacyjnej może powodować niekontrolowane przez użytkownika działania, poczynając od demonstracji (takich jak tworzenie komunikatów i dźwięków) przez niszczenie plików aż do prób fizycznego uszkadzania sprzętu. Antywirus komputerowy to program, który ma na celu wykrycie i zidentyfikowanie wirusa komputerowego oraz w miarę możliwości jego likwidację.

Wirusy w swoich założeniach mają stanowić ochronę przed nielegalnym kopiowaniem oprogramowania. Są one zjawiskiem stosunkowo nowym, a brak specjalistycznej literatury powoduje, że wiedza o nich jest znikoma i oparta z reguły na opowieściach użytkowników, którzy się z nimi zetknęli. Utarło się wobec tego błędne przekonanie, że do stworzenia wirusa potrzebna jest solidna wiedza. Okazuje się jednak, że nawet początkujący programista ma minimum wiedzy niezbędnej do napisania programu samoreplikującego, chociaż niekoniecznie groźnego w działaniu. Co gorsza, w Stanach Zjednoczonych planuje się w tym roku wydanie książki zawierającej kody źródłowe wszystkich znanych autorowi wirusów komputerowych. Inicjatywa ta spotkała się ze zdecydowanym protestem firm komputerowych. Kij ma bowiem dwa końce. Z jednej strony książka pozwoli szerokim rzeszom użytkowników na pogłębianie wiedzy o wirusach i ułatwi im podejmowanie środków profilaktycznych, z drugiej strony stanie się podręcznikiem dla hackerów. Autorowi zasugerowano modyfikację kodów w takim zakresie, aby zachowując ducha idei nie powodowały szkód w środowisku w którym mogłyby działać.

Skuteczność

Wykrycie większości wirusów jest w zasadzie możliwe już poprzez skrupulatną obserwację wielkości plików bez stosowania programów antywirusowych. Najbardziej niebezpieczne są niewykrywalne gołym okiem i potrafią podjąć walkę z każdym programem antywirusowym. Oczywiście takiego wirusa może stworzyć tylko specjalista najwyższej klasy. O skuteczności programu antywirusowego decyduje umiejętność prowadzenia równej walki z nowo powstającymi wirusami. Zmusza to autora do ciągłego ulepszania programu. Jeszcze nie tak dawno celem działania wirusa były pliki użytkownika. Mając najnowszą wersję programu antywirusowego mógł on niczego się nie obawiać. Niestety, ostatnio pojawiły się wirusy, których celem nie jest końcowy użytkownik, a... program antywirusowy! Twórcy wirusów za swoje podstawowe zadanie uznali walkę z programami antywirusowymi. Czekają więc na pojawienie się najnowszej wersji programu, będąc z reguły ich licencjonowanymi użytkownikami! Następnie szukają w nim słabych miejsc po to, aby nowo utworzony wirus nie tylko się przed nim ukrył, ale także spróbował go zaatakować. Z kolei autorzy programów antywirusowych muszą mieć świadomość, że informacja dostarczana przez system nie musi być prawdziwa, ale może być celowo zmieniona przez nieznanego wroga. Przykładowo, gdyby ich program "wierzył" w dane zawarte np. w sektorze zerowym nigdy nie mógłby odnaleźć wirusa, nie mówiąc o jego usunięciu! Stawia to kolejne wyzwanie autorom programów antywirusowych, którym znajomość systemu na podstawie jedynie oficjalnej dokumentacji nie na wiele może się przydać.

Utrata zaufania

Skuteczną metodą stosowaną przez wirusy w walce przeciwko programom antywirusowym jest nadszarpnięcie reputacji przeciwnika. Pierwsza z nich polega na spowodowaniu zawieszenia systemu podczas ich ładowania lub działania. Wystarczy jedynie, by wirus unieruchomił program antywirusowy zmieniając w nim kilka bajtów, aby użytkownik nigdy więcej po niego nie sięgnął. Druga, bardziej pracochłonna, polega na sprowokowaniu nieprawidłowości działania programu antywirusowego. Użytkownik może wtedy zwątpić w jego skuteczność.

Zabić strażnika przed atakiem

Wydawałoby się, że najprostszą metodą wykrywania wirusa jest uruchomienie takiego programu antywirusowego, który będąc przez cały czas aktywny, stale kontroluje pracę komputera. Taki program rozprawi się z wirusem, zanim ten zdąży zaatakować. Jednak zwrot "będąc przez cały czas aktywny" nie oznacza "będąc przez cały czas w pamięci". Tę niejednoznaczność wykorzystali twórcy wirusów. Pierwszym działaniem wirusa atakującego rezydentny program antywirusowy (RPA) jest dezaktywacja fragmentu tego programu. Z reguły wystarcza, aby wirus przed zaatakowaniem systemu przekierunkował działanie funkcji testujących programu antywirusowego. Po "unieruchomieniu" tego fragmentu system użytkownika jest całkowicie bezbronny. Okazuje się jednak, że istnieją bardziej inteligentne RPA posiadające możliwość sprawdzenia tzw. "sum kontrolnych" swojego własnego kodu oraz porównywania fragmentów RPA w pamięci z fragmentami RPA na dysku. Gdyby wirus zastosował prosty mechanizm "podmiany" oryginalnej zawartości RPA w pamięci, to RPA podniesie alarm. Twórcy wirusów wymyślili na to nowy wariant ataku, znacznie bardziej wysublimowany. Zmiana fragmentu kodu RPA jest chwilowa i wirus odtwarza poprzednią zawartość zaraz po zakończonym udanym ataku. RPA sprawdza swoją zawartość... i jest ona zgodna z oczekiwaniami. Oczywiście istnieją już takie RPA, które mają możliwość testowania swojej zawartości w momentach, w których wirus może tego "nie zauważyć". Na przykład, wszystkie systemowe przerwania mogą być poprzedzone autotestem RPA. W takich przypadkach, najprostszym rozwiązaniem, które z powodzeniem stosują wirusy, jest całkowita dezaktywacja RPA.

Uderzyć i zniszczyć

Programami bardziej dla wirusów groźnymi są bezsprzecznie "skanery", poszukujące potencjalnego agresora w newralgicznych częściach dysku, pamięci oraz programów wykonywalnych. Techniki detekcji osiągnęły szczyty, gdyż skanery nie są ograniczone wielkością używanej pamięci, w przeciwieństwie do programów rezydentnych. Wykorzystują one niezliczoną ilość nieudokumentowanych funkcji systemowych, komunikują się bezpośrednio ze sprzętem, zaś w zdobywaniu informacji pomijają znaczną część systemu operacyjnego, aby uniknąć "podkładania" fałszywych danych. Twórcy wirusów szybko docenili wartość "skanerów" i rozpoczęli tworzenie nowych generacji wirusów. Pierwszą próbą samoobrony było szyfrowanie własnego kodu, z czym tylko nieliczne programy antywirusowe mogły sobie poradzić. Z czasem udoskonalono technikę szyfrowania wirusa. Teraz każda kopia wirusa wyglądała inaczej. Fachowcy rozwiązali jednak i ten problem. Okazało się, że istnieją niewielkie fragmenty kodu wirusa służące mu do samodeszyfracji, które mogą posłużyć programowi antywirusowemu za wzorzec. Następny krok wykonali twórcy wirusów, zmieniając jedyny stały fragment wirusa, na którym oparte było wyszukiwanie. Wirus nie posiadał już żadnego powtarzającego się fragmentu. Wtedy autorzy programów antywirusowych sięgnęli po najnowsze, opracowane w końcu lat osiemdziesiątych, algorytmy wyszukiwania - może nie tak szybkie jak algorytmy wyszukujące stałe fragmenty wirusa, ale bardziej skuteczne. Co jednak użytkownikowi po najlepszym nawet skanerze, jeśli przez nieuwagę uruchomi on, nie przeglądając dyskietki, zarażony program i umożliwi wirusowi bezpośredni atak. Wirus wyszuka wtedy katalog w którym mieści się ten "najlepszy na świecie" program antywirusowy i skasuje wszystkie pliki. Nie jest to jeszcze tak wielkie nieszczęście dla użytkownika, gdyż wcześniej czy później zorientuje się, że zniknął jego ulubiony program antywirusowy. Gorzej, gdy wirus usunie własną sygnaturę z plików swego przeciwnika i ten nie będzie w stanie go wykryć.

Profilaktyka

Następną grupą programów, z którymi toczą wojnę twórcy wirusów to programy profilaktyki antywirusowej (PPA). Bazują one na wychwytywaniu niestandardowych zmian w otaczającym je systemie. Ponieważ techniki, którymi się posługują są bardziej zaawansowane, do napisania ich potrzebna jest największa wiedza i doświadczenie. Nic więc dziwnego, że powstała cała grupa wirusów, których głównym zadaniem jest oszukanie tych programów. Jeśli bowiem nowy wirus nie jest przystosowany do walki z PPA to zostanie przez niego wykryty ze 100-procentową pewnością. Sam PPA posiada jednak wiele czułych punktów. Wszystkie pliki, w których PPA przechowuje istotne dla siebie informacje mogą być i są celem ataku wirusa. Dlatego też konieczne jest wspomaganie PPA przez dobry skaner wirusów. Współdziałanie programów antywirusowych, stosujących różne techniki szybkiego wykrywania wirusów, praktycznie uniemożliwia wtargnięcie napastnika, nawet jeśli jest przystosowany do walki z programami antywirusowymi. Tak więc odpowiedź na pytanie zawarte w tytule artykułu nie jest prosta. Wydaje się, że aktualnie lepszy jest "antywirus", ale "wirus" nie powiedział jeszcze ostatniego słowa. Ja osobiście mam nadzieję, że ten pobieżny przegląd może ułatwić wybór takiego programu antywirusowego, który przez różnorodność stosowanych technik wykrywania będzie w stanie zabezpieczyć komputer przed atakami. Czego wszytkim życzę.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200