Typy szkodliwego oprogramowania cz.II

Tylne drzwi

Tylne drzwi (backdoor lub trapdoor) to tajny punkt wejścia, umożliwiający użytkownikowi (świadomemu jego istnienia) uzyskanie dostępu do funkcji programu z ominięciem jego mechanizmów zabezpieczeń. Mechanizm ten wykorzystywany bywa bardzo często w całkowicie uczciwych zamiarach: programiści tworzący aplikację i uruchamiający ją wielokrotnie w związku z debugowaniem chcą rzecz jasna uniknąć pracochłonnego logowania przy każdym uruchomieniu, być może kilkaset razy (!) w ciągu dnia roboczego. Ponadto zwłaszcza w początkowym okresie eksploatowania aplikacji "tylne drzwi" (nazywane wówczas potocznie wytrychem konserwacyjnym - maintenance hook) stanowią wyjście awaryjne na wypadek, gdyby mechanizmy zabezpieczeń tej aplikacji funkcjonowały niewłaściwie i niemożliwe byłoby zalogowanie się do niej. To wszystko funkcjonuje w ten sposób, że przy wystąpieniu określonych warunków, na przykład uruchomieniu aplikacji z pewnym tajnym parametrem czy też wprowadzeniu pewnej tajnej sekwencji klawiszy w czasie gdy wyświetlany jest ekran logowania, cała procedura uwierzytelniania zostaje pominięta.
Ten scenariusz może być jednak wykorzystywany przez nieuczciwych programistów do działań na szkodę użytkowników: obecne w oprogramowaniu „tylne drzwi" mogą otwierać autorom tego oprogramowania dostęp do komputera użytkownika i w jego imieniu (z jego uprawnieniami) wykonywać różne akcje na jego komputerze, na przykład wykradać poufne informacje czy też kasować pliki. Inny znany przykład zastosowania "tylnych drzwi" miał miejsce w systemie Multics - wielodostępnym systemie operacyjnym z lat 60. ubiegłego wieku: działający w US Air Force zespół "brygady tygrysa"3, symulujący aktywność włamywaczy, zainstalował w tym systemie konia trojańskiego, przemyconego w jednym z uaktualnień. Przy spełnieniu określonych warunków trojan ten otwierał zdalnemu intruzowi dostęp do jądra systemu. Implementacja wspomnianego trojana była podobno tak dobra, że autorzy systemu, poinformowani później o fakcie jego istnienia, mieli trudności z odnalezieniem jego kodu.
Wykrywanie istnienia "tylnych drzwi" w systemie jest zadaniem bardzo trudnym, dlatego podstawowym sposobem walki z tym mechanizmem jest zapobieganie wprowadzaniu go do systemu.

Bomby logiczne

Bomby logiczne to najstarsza kategoria szkodliwego oprogramowania, starsza nawet od wirusów i robaków. Bomba logiczna to fragment wbudowanego w program złośliwego kodu, nastawionego na "eksplozję" w momencie spełnienia określonych warunków: pojawienia się lub skasowania odpowiedniego pliku, nadejścia konkretnej daty lub dnia tygodnia czy też zalogowania się określonego użytkownika. Owa "eksplozja" może przybierać różne formy, na przykład kasowanie lub modyfikowanie plików, wyłączanie lub resetowanie komputera, zaśmiecanie ekranu w sposób uniemożliwiający pracę itp. Jedna z bardziej słynnych bomb logicznych "wybuchła" rankiem 31 lipca 1996 roku w firmie Omega Engineering, narażając tę firmę na straty szacowane na 10 milionów dolarów, a w konsekwencji zachwianie pozycji rynkowej i konieczność zwolnienia 80 pracowników (o czym pisze Gaudin w artykule [GAUDOO]). Sprawca tego incydentu, Tom Lloyd, po czteroletnim postępowaniu sądowym skazany został na 41 miesięcy pobytu w więzieniu federalnym i odszkodowanie w wysokości 2 milionów dolarów na rzecz Omega Engineering.

Konie trojańskie

Koń trojański to program wykonujący użyteczne (lub sprawiające wrażenie użytecznych) funkcje, skrywający jednocześnie kod, który po uruchomieniu realizuje (często niepostrzeżenie) różne niepożądane działania.
Konie trojańskie, nazywane poprawnie trojanami, używane są do wykonywania działań, których nieautoryzowani użytkownicy nie są w stanie wykonywać w sposób bezpośredni. Intruz, chcąc uzyskać dostęp do "wrażliwych" plików systemowych, podsyła trojana administratorowi, a gdy uruchomi on otrzymany program, ten przystępuje do różnych destruktywnych działań (na przykład modyfikowania uprawnień dostępu do tajnych plików, tak by mogli je odczytywać wszyscy) bez żadnych przeszkód - w końcu wszystko odbywa się z konta administratora. Intruz może też użyć rzeczonego programu jako przynęty dla większej liczby użytkowników, umieszczając go (pod atrakcyjną nazwą, w towarzystwie atrakcyjnego czytajto!.txt) we współdzielonym katalogu.
Odmianą trojanów szczególnie trudnych do wykrycia są te, które wykonują destrukcyjną robotę w sposób pośredni. Przykładem programów tej kategorii może być kompilator, który do generowanego kodu wynikowego dołącza swój pasożytniczy kod. Gdy skompilowany program (na przykład przeprowadzający uwierzytelnianie) zacznie wykonywać działania wzbudzające podejrzenie (na przykład kolekcjonowanie haseł i ich wysyłanie na zdalny komputer), jego autorzy - jak to zwykle bywa w takich przypadkach - zaczną się uważnie przyglądać jego kodowi źródłowemu. I nic w nim nie znajdą, bo szkodliwy kod wynikowy generowany jest samorzutnie przez kompilator. Kod wstrzyknięty przez kompilator może oczywiście działać bardziej inteligentnie, na przykład otwierać "tylne drzwi" dla niepożądanych ingerencji z zewnątrz.
Bardzo często działalność trojana polega na kasowaniu plików - często niepostrzeżenie, bo szkodliwy program wykonywać może całkiem użyteczne funkcje (na przykład emulację kalkulatora), nie wzbudzając podejrzeń ze strony użytkownika.
Konie trojańskie podzielić można na trzy grupy zależnie od relacji między oferowaną funkcjonalnością a funkcjonalnością przejawianą faktycznie:
  • w pierwszej grupie plasują się trojany, których destrukcyjna działalność jest dodatkiem do pełnej, oczekiwanej funkcjonalności,
  • trojany drugiej grupy modyfikują oryginalne zachowanie pod kątem szkodliwych działań, bądź to wiążąc z nim dodatkowe funkcje (jak kolekcjonowanie przez program logujący wprowadzanych haseł), bądź też modyfikując reguły funkcjonalności (na przykład ukrywając szkodliwe procesy na wyświetlanej liście aktywnych procesów systemowych),
  • w przypadku trojanów trzeciej grupy pozory użyteczności (jeżeli w ogóle są przejawiane) stanowią tylko skromną maskę dla zasadniczych działań destruktywnych.

Kod przenośny

Mianem kodu przenośnego (mobile code) określamy programy zapisane w językach przenośnych między różnymi platformami, prezentujących identyczną semantykę na każdej z tych platform ( [JANS0l] ) - do języków takich należ m.in. języki skryptowe w rodzaju JavaScript czy VBScript, a także kontrolki ActiveX. Określenie "różne platformy" może także oznaczać w tym kontekście różne odmiany tego samego systemu, na przykład różne wersje MS Windows. Po dotarciu na docelową platformę kod przenośny jest wykonywany, zwykle bez wiedzy użytkownika. Kod przenośny służy zazwyczaj jako medium transportu wirusów, robaków, trojanów itp., choć może mieć talcie znaczenie samoistne, jako eksploit wykorzystujący tę lub inną lukę w zabezpieczeniach do przejęcia kontroli nad komputerem. Przenośny kod dostaje się do komputera najczęściej w postaci załączników do poczty elektronicznej i spreparowanych stron WWW, może też zostać jawnie pobrany z niezaufanego serwera FTP.

Szkodniki wieloskładnikowe

Wirusy i inne szkodniki mogą działać według skomplikowanych schematów - w tym przypadku terminologia jest bardzo daleka od ujednolicenia. Przyjrzyjmy się zatem dwóm przykładom tego, co nazwać można działaniem wielokierunkowym.
Wirus wielofunkcyjny (multipartite virus) dokonuje infekcji na wiele różnych sposobów, odmiennych dla różnych rodzajów plików. W konsekwencji przeciwdziałanie tego typu infekcjom też musi mieć charakter wielokierunkowy.
Atak mieszany (blended attack) to działanie zmasowane, którego celem jest jak najszybsza infekcja, wyrządzająca jak najpoważniejsze szkody. W literaturze przedmiotu źródła takich ataków utożsamia się najczęściej z pakietami szkodników wykazujących różnorodną aktywność. Przykładem takiego pakietu jest Nimda5, uważany omyłkowo za zwykłego robaka, a faktycznie wykorzystujący cztery metody rozprzestrzeniania się:
  • pocztę elektroniczną - gdy użytkownik otworzy zainfekowany załącznik, szkodnik odczytuje książkę adresową i rozsyła swe kopie do wszystkich adresatów,
  • udziały Windows - Nimda skanuje hosty w celu wyszukiwania niezabezpieczonych udziałów Windows, następnie wykorzystuje protokół NetBIOS86 jako mechanizm transportu na host i infekuje pliki wykonywalne tego hosta w nadziei, że użytkownicy uruchomią któryś z tych plików, co spowoduje aktywację szkodnika na tym hoście,
  • serwery WWW - Nimda skanuje dostępne serwery WWW, wyszukując znane luki w internetowych usługach informacyjnych (IIS) firmy Microsoft; po znalezieniu luki podejmuje próbę przedostania się na serwer i zainfekowania jego plików,
  • przeglądarki WWW - gdy użytkownik "dziurawej" przeglądarki odwiedzi stronę WWW znajdującą się na serwerze zainfekowanym przez Nimdę, host użytkownika również zostanie zainfekowany.
Nimda przejawia zatem cechy zarówno robaka, jak i wirusa oraz kodu przenośnego. Szkodniki tego typu mogą także rozprzestrzeniać się za pośrednictwem innych usług, takich jak komunikatory czy wymiana plików peer-to-peer.

Źródła i Literatura:
William Stallings - "Kryptografia i bezpieczeństwo sieci komputerowych - koncepcje i metody bezpiecznej komunikacji", Wydanie V, Wydawnictwo Helion 2012, ISBN: 978-83-246-2987-9.
Polish language edition published by HELION S.A. Copyright© 2012.
Copyright© 2012 Wydawnictwo HELION S.A
WWW: http:pl/helion.pl (księgarnia internetowa, katalog książek)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *