Stary znajomy… wirus

Walka z różnorodnymi “szkodnikami” to obiecnie jeden z głównych problemów użytkowników komputerów. Szacuje się, że ok. 90% osób korzystających z komputera miało do czynienia z wirusem. Zniszczenia powodowane przez te “bakcyle” są coraz poważniejsze, a straty liczy się już w miliardach dolarów. Pierwsze wirusy nie wyrządzały jednak takich szkód jak te najnowsze. Jeszcze kilka lat temu infekcje dotyczyły głównie komputerów osobistych. Obecnie atakowanych jest coraz więcej dużych serwerów komercyjnych.

Bakcyl pod lupą

Wirus komputerowy to program, który kopiuje się i rozprzestrzenia samodzielnie (na dyskietkach lub w plikach), a raz uruchomiony nie może być w żaden sposób kontrolowany, nawet przez swojego autora. Bardzo ważnym fragmentem kodu wirusa jest mechanizm rozprzestrzeniania (stanowi on główny czynnik wyróżniający typy “szkodników” – patrz: tabela na $(LC90620: Stary znajomy… wirus)$). Przykładowo wirus plikowy czy makrowirus musi umieć znaleźć zbiory, które następnie zarazi, a wirus bootsektora atakuje jedynie sektory startowe dyskietek i dysków twardych. Wirusy plikowe są tak skonstruowane, że potrafią infekować tylko określone typy zbiorów, jak na przykład dokumenty Worda lub zbiory.EXE. Oczywiście, w celu ich znalezienia “szkodnik” może przeszukiwać całe dyski komputerów, jednak jest to zadanie pochłaniające bardzo dużo zasobów peceta. Dużo lepszym rozwiązaniem jest umieszczenie wirusa w pamięci i sprawdzanie, które zbiory są uruchamiane. W ten sposób złośliwy program potrafi zarażać używane pliki. Moc komputera jest wykorzystywana w znikomym zakresie, przez co użytkownik nie zauważa nawet, że wirus działa na jego maszynie.

Po odnalezieniu podatnego na zakażenie zbioru “szkodnik” dopisuje się na jego początku lub końcu i zmienia zarażany obiekt w ten sposób, że podczas następnego uruchomienia na pewno zostanie wykonana jego część zawierająca wirusa. “Bakcyl” zapisuje się przeważnie podczas kończenia pracy z atakowanym plikiem. Programy Word czy Excel pozwalają na dołączanie makr do swoich plików, dzięki czemu dopisanie do nich kodu wirusa jest bardzo łatwe.

Inaczej działają wirusy bootsektora, które zakażają sektory startowe dyskietek lub dysków twardych. Rozprzestrzeniają się one bardzo powoli, dlatego że mogą przenosić się między komputerami jedynie za pośrednictwem dyskietki. Ze względu na ogromny rozwój Sieci i zmianę sposobu dystrybucji oprogramowania z dyskietek na CD-ROM-y wirusy tego typu prawie wymarły. Część z nich jest jednak nadal “uśpiona” na dyskietkach i może przypadkowo uszkodzić system plików, do którego nie jest przystosowana, jak na przykład NTFS wykorzystywany przez Windows NT/2000/XP.

Tradycyjne 16-bitowe wirusy plikowe rozprzestrzeniają się, dołączając swój kod do DOS-owych programów z rozszerzeniami EXE lub COM. Takie “szkodniki” nie umieją zarazić 32-bitowych zbiorów, które są wykorzystywane w nowoczesnych systemach Windows. Potrafią się one roznosić poprzez sieć lokalną lub dyskietki. Słabość wirusów 16-bitowych stanowi fakt, że do ich przenoszenia potrzeba programu-nosiciela. Obecnie ten typ “szkodników” również wymiera. Powodem jest wychodzenie z użycia systemów operacyjnych, które były podatne na zarażenie takimi wirusami.

Makrowirusy są pisane w języku makr wykorzystywanym w zaawansowanych aplikacjach, jak na przykład edytory tekstu czy arkusze kalkulacyjne. Najbardziej znane “mikroby” tego typu to te, które atakują programy z pakietu MS Office, ale trzeba pamiętać, że podobne “szkodniki” infekują wszystkie aplikacje umożliwiające pisanie makr. Istnieje wiele różnic pomiędzy wirusami typu makro a plikowymi czy bootsektora. Przede wszystkim te pierwsze zarażają pliki z danymi, a nie programy, dzięki czemu rozprzestrzeniają się szybciej. Ponadto kod źródłowy większości makrowirusów można przeczytać. Poprzednie wersje wirusów były pisane w językach niskiego poziomu i kompilowane do kodu maszynowego. To powodowało, że bez specjalnych narzędzi i pewnej, z reguły dużej wiedzy technicznej nie można było ich kodu odczytać. Makrowirusy przez swoją przejrzystość są zrozumiałe dla większości programistów, co sprawia, że powstają ich nowe mutacje i szybko się rozprzestrzeniają. Poważnym niebezpieczeństwem jest również to, że zarażenie plików z danymi może spowodować wymierne straty dla właściciela plików (program można zwykle zainstalować od nowa, ale dokumentów nie da się już często odzyskać).

32-bitowe wirusy plikowe powstały, gdy upowszechniły się 32-bitowe systemy operacyjne (np. Windows 98 czy NT). Takie “szkodniki” są bardzo podobne do swych 16-bitowych poprzedników, z tą różnicą, że potrafią działać w 32-bitowym środowisku. Zarażają pliki typu EXE czy DLL. Populacja takich “bakcyli” jest jednak dosyć mała ze względu na trudność ich napisania i fakt, że większe efekty daje napisanie skrytpu lub robaka.

W ciągu ostatnich kilku lat najpopularniejszą odmianą “szkodników” stały się robaki pocztowe. Dzięki rozwojowi Sieci przeżywają one prawdziwy rozkwit (patrz: $(LC76075:Sieciowe robaczyska)$). Robaki są programami samowystarczalnymi, co znaczy, że do rozprzestrzeniania się nie potrzebują interwencji użytkownika, jak to miało miejsce w przypadku klasycznych wirusów. Robak sam znajduje adresy potencjalnych ofiar, co pozwala mu na przedostanie się do kolejnego systemu i zarażanie go.

Więcej:bezcatnews