Co zaliczamy do złośliwego oprogramowania?

Czym dokładnie jest wirus lub robak? Czym różnią się one od konia trojańskiego? Czy programy antywirusowe zwalczają wyłącznie wirusy, czy również robaki i trojany? Wszystkie te pytania rodzą się na skutek niejasności bądź mylnej interpretacji zjawisk związanych ze złośliwym kodem. Znacząca liczba, jak i różnorodność istniejących wariantów sprawia, że trudno sformułować doskonałą definicję każdego typu złośliwego oprogramowania.

Przy omawianiu zagadnień związanych z wirusami mogą okazać się przydatne poniższe definicje poszczególnych typów złośliwego oprogramowania:

  • Koń trojański (zwany również kodem trojańskim lub trojanem)
  • Program który na pierwszy rzut oka wygląda na użyteczny bądź nieszkodliwy, posiada jednak ukryty kod zaprojektowany tak, aby wykorzystać luki w zabezpieczeniach systemu bądź uszkodzić go. Trojany są najczęściej dostarczane za pośrednictwem poczty elektronicznej i podszywają się pod jakiś znany program. Uszkadzają system poprzez wykonanie załączonego, ukrytego programu.

  • Robak
  • Robak używa do replikacji własnych mechanizmów, przez co jest w stanie w sposób całkowicie niezależny rozprzestrzeniać się w sieci. Efektem działania robaków jest np. zużywanie zasobów systemowych zainfekowanych komputerów, co może przerodzić się w atak typu „odmowa obsługi” (ang. Denial of Service, DoS). Niektóre robaki są w stanie samoczynnie się uruchamiać i rozprzestrzeniać; są również takie, które wymagają bezpośredniego uruchomienia kodu przez użytkownika. Poza replikacją robaki mogą również podejmować inne działania.

  • Wirus
  • Wirus wykorzystuje kod stworzony do samoreplikacji. Wirusy rozprzestrzeniają się poprzez dołączanie swojego kodu do programu-nosiciela. Mogą uszkodzić sprzęt, oprogramowanie oraz dane. W przypadku uruchomienia nosiciela, uruchamiany jest również kod wirusa, który infekuje następnie nowe programy; czasami również podejmuje dodatkowe działania.

Termin ładunek (ang. payload) używany jest w niniejszym podręczniku dla zbiorczego określenia działań złośliwego oprogramowania, jakie mają miejsce po zainfekowaniu komputera.

W oparciu o powyższe definicje różnych typów złośliwego oprogramowania zamieszczony poniżej diagram pozwala w prosty sposób rozróżnić pomiędzy poszczególnymi kategoriami oraz określić, czy dany kod zalicza się do którejś z nich.

Drzewo decyzyjne - rozróżnianie oprogramowania typu malware
Drzewo decyzyjne - rozróżnianie oprogramowania typu malware

Powyższy diagram może okazać się pomocny przy rozróżnianiu między znanymi typami złośliwego kodu, także dla potrzeb niniejszego podręcznika. Jednak należy mieć na uwadze, że w ramach jednego ataku może pojawić się kod zaliczający się do więcej niż jednej kategorii. Ataki tego typu znane są jako zagrożenia złożone (ang. blended threats), składające się z więcej niż jednego typu złośliwego kodu. Wykorzystują one różnorodne sposoby ataku i mogą rozprzestrzeniać się niezwykle szybko. (Sposób ataku to droga, którą obiera złośliwe oprogramowanie w celu zainfekowania systemu.) Dlatego też obrona przed zagrożeniami złożonymi może być szczególnie utrudniona.

Koń trojański

Konia trojańskiego nie uważa się za wirusa bądź robaka, ponieważ nie rozprzestrzenia się samoczynnie. Warto jednak zaznaczyć, że wirus czy robak może być wykorzystany do skopiowania trojana na zainfekowany komputer jako część ładunku (co określa się jako dropping). Typowym zadaniem konia trojańskiego jest zakłócenie pracy użytkownika bądź funkcjonowania systemu. Przykładowo, koń trojański może stworzyć tylne wejście dla hakera, ten zaś ma możliwość kradzieży danych bądź zmiany konfiguracji systemu.

Analizując metodę działania koni trojańskich, można wyróżnić ich dwa typy:

  • Trojany zdalnego dostępu
  • Niektóre konie trojańskie pozwalają hakerowi na zdalne przejęcie kontroli nad zainfekowanym systemem. Są to tzw. trojany zdalnego dostępu (ang. Remote Access Trojans, RATs) lub tylne wejścia (ang. backdoors). Jako przykłady tego typu trojanów można wymienić Back Orifice, Cafeene czy SubSeven.

  • Rootkity (ang. rootkits)
  • Jest to zbiór programów, z których haker korzysta w celu uzyskania nieautoryzowanego dostępu zdalnego do danego komputera i do dalszych ataków. Programy te wykorzystują wiele różnych technik ataku, takich jak monitorowanie klawiatury czy podgląd i modyfikacja logów systemowych czy istniejących aplikacji, tworzenie tylnych wejść i atakowanie innych komputerów w sieci. Tego typu programy składają się zazwyczaj z kilku zintegrowanych ze sobą narzędzi dostosowanych do określonej platformy systemowej. Pierwsze rootkity zidentyfikowano na początku lat dziewięćdziesiątych. Wtedy były one wymierzone głównie w platformę Sun i Linux, dzisiaj jednak liczba zagrożonych systemów jest większa; jest wśród nich także system Microsoft® Windows®.

Robaki

Jeśli złośliwy kod posiada zdolność samoreplikacji, oznacza to, że nie mamy do czynienia z koniem trojańskim. Kolejne pytanie z diagramu brzmi: „Czy kod infekuje nosicieli, żeby się rozprzestrzeniać?” Jeśli nie, dany kod jest jakimś typem robaka.

Większość robaków kopiuje się samoczynnie do komputera będącego celem ataku, a następnie replikuje się za pośrednictwem jego kanałów komunikacyjnych. Przykładowo, robak Sasser wykorzystuje do pierwszej infekcji podatność systemu, a do dalszego rozprzestrzeniania korzysta z połączeń sieciowych. Atak można udaremnić instalując najświeższe aktualizacje zabezpieczeń (powstrzymanie infekcji), bądź aktywując zapory (firewall), tak aby zablokować porty sieciowe, z których robak korzysta (powstrzymanie replikacji). W przypadku Windows XP, zarówno procesy infekcji, jak i replikacji robaków zostają zablokowane po zastosowaniu Service Pack 2. Dzieje się tak, ponieważ w tej wersji usunięto lukę systemu oraz domyślnie uaktywniono zaporę Windows. Jeśli dodatkowo opcja Aktualizacje automatyczne zostanie ustawiona na Automatycznie (zalecane), wszystkie odkryte w przyszłości luki będą naprawiane automatycznie w miarę pojawiania się aktualizacji.

Wirusy

Jeśli w celu replikacji złośliwy kod dodaje swoją kopię do pliku, dokumentu czy sektora rozruchowego dysku, jest określany jako wirus. Kopia może być dokładną repliką oryginalnego wirusa, może także być jego modyfikacją. (Więcej szczegółów na ten temat można znaleźć w sekcji „Mechanizmy obronne złośliwego oprogramowania” w dalszej części rozdziału). Wirus często zawiera ładunek, którym infekuje dany komputer – może to być koń trojański, który następnie wykonuje różnorakie działania złośliwe, np. usuwanie danych użytkownika. Nawet jeśli tak nie jest i jedynym działaniem wirusa jest replikacja, i tak pozostaje on groźny – sam wirus również może uszkodzić dane, zaś podczas replikacji zużywa zasoby systemowe oraz powoduje zmniejszenie przepustowości sieci.