Konie trojańskie
Czym są konie trojańskie?
Program typu koń trojański jest:- Obcym kodem dołączonym do prawowitego programu. Kod ten realizuje funkcje nieznane użytkownikowi (i zapewne przez niego niepożądane).- Każdym programem, który wydaje się realizować pożądane i pożyteczne funkcje, lecz realizuje również funkcje nieznane jego użytkownikowi (i przez niego nieakceptowane).Nielegalne funkcje realizowane przez konia trojańskiego mogą czasami zakwalifikować go do grupy wyjątkowo niebezpiecznych programów destrukcyjnych. Do określenia tego pasują niektóre wirusy - mogą one ukrywać swoją obecność w skądinąd pożytecznym programie. Wówczas taki program można nazywać zarówno koniem trojańskim jak i wirusem.Program, w którym zawarto konia trojańskiego, może pełnić pożyteczne funkcje lub robić po prostu coś interesującego - zawsze natomiast wykonuje zadania, których nie spodziewa się osoba go uruchamiająca, jak na przykład zabór haseł lub kopiowanie, czy usuwanie plików bez wiedzy użytkownika.
Dla uproszczenia przyjmiemy: koń trojański to każdy program, który realizuje ukrytą i niepożądaną przez jego użytkownika funkcję. Koń trojański może występować w dowolnej formie. Może być programem narzędziowym, który indeksuje katalogi lub łamie kody rejestracyjne w oprogramowaniu. Może być edytorem tekstów lub narzędziowym programem sieciowym. Krótko mówiąc, koń trojański może robić wszystko (i może być znaleziony w każdym programie).
Skąd pochodzą konie trojańskie?
Konie trojańskie są pisane zazwyczaj w złych zamiarach. W tej chwili, gdzieś w jakimś zakątku świata, jakiś programista tworzy konia trojańskiego. Wie on dokładnie co robi i że robi to po to, by szkodzić.Autorzy koni trojańskich mają zazwyczaj pewien plan działania. Plan ten może być dowolny, ale w kontekście bezpieczeństwa sieci Internet koń trojański może wykonywać jedno z dwóch zadań:
· Realizować funkcje ujawniające istotne informacje o systemie na którym został uruchomiony, bądź bezpośrednio doprowadzające do pokonania zabezpieczeń tego systemu
· Ukrywać funkcje ujawniające istotne informacje o systemie, na którym został uruchomiony, bądź bezpośrednio doprowadzające do pokonania zabezpieczeń tego systemu
Niektóre konie trojańskie wykonują oba zadania. Istnieje jeszcze jedna grupa koni trojańskich, które po prostu niszczą dane na zaatakowanym systemie (mogą na przykład zaszyfrować dane zapisane na twardym dysku, bądź go sformatować). Koniem trojańskim tego typu jest PC CYBORG. Oto co o nim można przeczytać w biuletynie CIAC z dnia 19. grudnia 1989 r. pt. "Information About the PC CYBORG (AIDS)":Ostatnio w mediach wiele uwagi poświęcono nowemu koniowi trojańskiemu, który jest reklamowany, jako program dostarczający użytkownikom komputerów PC informacji o wirusie AIDS. Gdy PC CYBORG znajdzie się w systemie, zastępuje plik autoexec.bat i zaczyna liczyć ile razy zainfekowany system był uruchamiany do momentu osiągnięcia liczby krytycznej (90). Wówczas PC CYBORG ukrywa katalogi i zaszyfrowuje nazwy wszystkich plików w napędzie C. Jest kilka odmian tego programu i przynajmniej jedna z nich nie czeka z dokonaniem zniszczeń na naszym dysku twardym - opisane powyżej czynności dokonuje już po pierwszym uruchomieniu systemu po zainstalowaniu konia trojańskiego.Innym przykładem jest program AOLGOLD, rozpowszechniany w sieci Usenet przy pomocy poczty elektronicznej. Był programem, który miał ułatwiać dostęp do komercyjnej sieci America Online (AOL). Rozpowszechniany był w postaci archiwum ZIP, które po rozpakowaniu dawało dwa pliki. Jednym z nich był standardowy install.bat - jego uruchomienie generowało 18 kolejnych plików. Oto co na ten temat można przeczytać w dokumencie "Informacje o programie AOLGOLD" (Information on the AOLGOLD) z dnia 16. lutego 1997 r.:Koń trojański AOLGOLD jest uruchamiany przy pomocy prostego pliku wsadowego install.bat. Zmienia on nazwę pliku video.drv na virus.bat. i uruchamia go. video.drv jest napisanym w sposób amatorski plikiem wsadowym, który kasuje zawartość niezwykle istotnych katalogów na dysku C, między innymi: c:\c:\dosc:\windowsc:\windows\systemc:\qemmc:\stacker c:\nortonGdy ów plik skończy swoją pracę, wyświetla na ekranie opryskliwy komunikat i próbuje uruchomić program doomday.exe. Błędy w pliku wsadowym nie pozwalają na uruchomienie doomday.exe i powodują, że usuwa sam siebie - jeśli jest uruchamiany na innym napędzie niż C. Styl programowania i błędy w plikach wsadowych sugerują, że jego twórca ma niewielkie doświadczenie programistyczne.Obydwa konie trojańskie swoją niszczycielską działalność realizowały przy zastosowaniu prostych procedur i nie zbierały żadnych informacji o systemie - ich autorami przypuszczalnie byli nastolatkowie. Programy takie najczęściej ujawniają się poprzez sieć Usenet.Jednak zdarza się, że konie trojańskie tworzone są przez profesjonalnych programistów. Takie sytuacje mają miejsce wtedy, gdy programista umieszcza w swoim produkcie kod konia trojańskiego. Takie sytuacje są dużo bardziej niebezpieczne, ponieważ:
· Takie konie trojańskie nie niszczą danych (zbierają informacje o systemie) i dlatego ich wykrycie jest trudne - najczęściej ich obecność ujawniana jest przypadkiem.
· Godne zaufania serwery internetowe, które obsługują setki lub tysiące użytkowników, mogą być zainfekowane. W tej sytuacji użytkownicy korzystający z usług danego systemu są narażeni na niebezpieczeństwo - jeśli np. serwer prowadzi popularny serwis WWW, bądź obsługuje znaczną liczbę innych maszyn, pojawienie się w nim konia trojańskiego ma bezpośredni, bądź pośredni wpływ na bezpieczeństwo tysięcy maszyn.
Czasami programiści, którzy nie zajmują się pisaniem programów komercyjnych, infekują kopiami trojańskimi kluczowe programy narzędziowe dla systemu operacyjnego UNIX. Zdarzyło się to wielokrotnie i często dotyczyło programów związanych z bezpieczeństwem. Przykładem może być SATAN w wersji 1.0 dla Linux-a, w której zaszyty był koń trojański.Plikiem, w którym zaszyto konia trojańskiego był program o nazwie fping. Najwyraźniej jakiś programista miał dostęp do komputera, na którym znajdował się kod źródłowy. Zmodyfikował on funkcję main() i zmienił fping w taki sposób, żeby uruchomienie programu SATAN powodowało umieszczenie specjalnego wpisu w pliku /etc/passwd. Tym wpisem był użytkownik nazwany suser. Tą metodą podstępny programista chciał włamać się na wiele sieciowych serwerów. W rzeczywistości zamiar ten się nie powiódł - zarejestrowano jedynie dwa przypadki pokonania zabezpieczeń systemowych przez użycie zainfekowanego fping-a. Według doniesień koń trojański był niedoskonały - jego wady uniemożliwiały zainfekowanie wielu komputerów (nie działał na systemach, gdzie zainstalowano system ochrony haseł - shadowing).
Jak często możemy spotkać konia trojańskiego
Konie trojańskie stanowią ważny aspekt bezpieczeństwa systemów - są dość często stosowane przez różnej maści hakerów. Uważa się je za programy działające podstępnie, ponieważ nawet po wykryciu ich wpływ jest wciąż odczuwalny. W tym sensie są podobne do analizatorów pakietów (snifferór~ - niełatwo ocenić skalę zniszczeń (penetracji systemu) jakie program dokonał w naszej sieci. Wynika to z kilku względów, między innymi z faktu, iż z reguły konie trojańskie ukrywane są w skompilowanym kodzie, zatem by cokolwiek odczytać musimy korzystać z programu typu debugger (przeglądanie binariów edytorem nic nam nie da - będziemy mogli jedynie odnaleźć teksty zawierające komunikaty błędów, komunikaty programu oraz zastrzeżenia praw autorskich etc).Konie trojańskie mogą być zaszyte nie tylko w binarnych skompilowanych programach. Możemy je znaleźć również w skryptach powłoki, programach w Perlu i być może nawet w skryptach takich jak JavaScript, VBScript lub Tcl. Jednak takie przypadki są względnie rzadkie, z tego powodu, że opisowy język skryptu jest czytelny dla człowieka, stąd niepożądany kod jest łatwy do wykrycia. Zagnieżdżenie konia trojańskiego w takim kodzie jest bardziej prawdopodobne w przypadku, gdy dany skrypt jest częścią dużego pakietu rozbudowana struktura wydatnie zmniejsza prawdopodobieństwo wykrycia obcej wstawki programistycznej.Konie trojańskie w żaden sposób nie ujawniają swej obecności - pracują w tle, po cichu i skutecznie. Co gorsza, większość dobrze zaprojektowanych programów tego typu zawiera się wnarzędziach, które normalnie są obecne i uruchomione w systemie. Zatem nawet listowanie bieżących procesów niewiele nam tutaj pomoże.Jak sobie zatem radzić? Jak zwykle wiedza i doświadczenie są kluczowymi czynnikami w tym procesie. Jednak nawet doświadczeni programiści mogą mieć kłopoty z identyfikacją konia trojańskiego - i to nawet pomimo wglądu do kodu programu (zwłaszcza wtedy, gdy program został napisany w języku mało im znanym).
Jakie ryryko stanowią konie trojańskie?
Konie trojańskie prezentują sobą wysoki poziom ryzyka, głównie z wymienionych już powodów:- Są trudne do wykrycia - Z reguły rezydują w plikach binarnych, w formie nieczytelnej dla człowiekaKonie trojańskie, zanim zostaną wykryte, mogą doprowadzić do uszlodzenia całego systemu (często przebywają wnim miesiącami). W tym czasie kraker z przywilejami administratora, może robić z systemem niemal wszystko. Nawet po wykryciu konia trojańskiego, efekty jego działalności (w postaci ukrytych luk) mogą być jeszcze długo odczuwane.
Jak wykryć konia trojańskiego?
Wykrywanie koni trojańskich jest dość prostym zadaniem - pod warunkiem uprzedniego przedsięwzięcia odpowiednich środków. W przeciwnym wypadku jest to bardzo trudne.Większość metod detekcji wykorzystuje zasadę porównania zgodności obiektów (object reconclhation), która (w uproszczeniu) polega na sprawdzaniu, czy obecny stan systemu jest zgodny ze stanem zapamiętanym. Obiektami są w tym wypadku pliki lub katalogi.Załóżmy na przykład, że wykonaliśmy kopię zapasową dysku i chcemy sprawdzić zgodność aktualnego pliku ps z tą zarchiwizowaną uprzednio. Jeśli porównywane wersje się różnią (a program nie był w międzyczasie uaktualniany, zastępowany czy korygowany), znaczy to, że coś nie jest w porządku. Technika ta daje niezłe efekty przy weryfikacji integralności plików systemowych.Zasada porównywania zgodności obiektów jest prostym sposobem testowania spójności plików. Do tego zadania możemy wykorzystać jednak i inne metody - od bardzo prostych po wyrafinowane. Rolę stosownego wskaźnika pełnić może:- Data ostatniej modyfikacji pliku- Data utworzenia pliku- Rozmiar plikuNiestety, wszystkie trzy powyższe metody są niewystarczające, ponieważ:Za każdym razem gdy zmienia się plik, zmieniają się jego parametry (np. po każdej zmianie czy zapisie opisuje go nowa data, która jest jednak łatwo później zmienić - przez ingerencję w ustawieniach zegara systemowego). Zatem nie możemy polegać na dacie pliku jako na wyznaczniku jego zgodności z wersją oryginalną.Wyjątkowo zawodną metodą jest sprawdzanie integralności pliku poprzez badanie jego rozmiaru - łatwo jest bowiem zachować ten sam rozmiar, nie naruszając w edycji ilości bajtów w pliku. Jest to nieco trudniejsze w przypadku plików binarnych - tu trzeba by wygospodarować miejsce na nowy kod, nie ingerując w strukturę pliku, gdyż program przestanie działaćNajpowszechniejszą praktyką jest dołączanie kodu konia trojańskiego do istniejących plików systemowych, właściwych dla danej platformy (takich jak powłoka csh w systemie UNIX czy plik command.com dla systemu DOS). Są one zapisywane na dysku twardym podczas instalacji systemu i opisane są odpowiednimi argumentami (data, czas, rozmiar). Wszelkie odstępstwa od początkowych wartości tych argumentów w większości przypadków natychmiast powodują podjęcie stosownych działań ze strony administratora systemu.Wiedzą o tym także autorzy koni trojańskich i dlatego starannie badają kod źródłowy, szukając w nim elementów możliwych do usunięcia (mogą na przykład wyeliminować tekst stanowiący komentarz albo inne, nie istotne z punktu widzenia funkcjonalności programu, elementy). Na to miejsce wprowadzany jest nieautoryzowany kod i plik zostaje ponownie skompilowany. Wówczas kraker sprawdza rozmiar pliku. Niekiedy okazuje się on zbyt duży lub zbyt mały, w takim przypadku operacja będzie ponawiana tak długo, aż plik osiągnie rozmiar możliwie najbardziej zbliżony do oryginalnego.Jeśli dany program nie znalazł się jeszcze w oficjalnej dystrybucji to kraker nie musi się specjalnie przejmować wielkością pliku programu, który modyfikuje a to z takiego powodu; że nikt jeszcze nie zna jego oryginalnego rozmiaru. Na ogół nawet autor oryginału nie jest świadom zagrożenia i nie pamięta/nie zapisuje początkowego rozmiaru skompilowanego pliku binarnego.Podsumowując, takie wskaźniki jak data utworzenia pliku, data ostatniego otwarcia lub jego rozmiar, nie mają żadnego praktycznego znaczenia przy weryfikacji integralności plików w naszym systemie. Istnieją jednakże inne procedury pozwalające na sprawdzenie, czy dany plik jest zgodny z oryginałem (na przykład stosowanie sum kontrolnych). Jednakże i sumy kontrolne można zmienić - należy zatem pamiętać o stosownym zabezpieczeniu bazy sum kontrolnych plików w naszym systemie. Możemy składować bazę tych sum na oddzielnym serwerze lub innym nośniku, do którego dostęp ma tylko administrator lub zaufani użytkownicy. Sumy kontrolne często wykorzystuje się przy transferze plików - właśnie do weryfikacji ich integralności, gdyż zdarza się że podczas operacji przesyłania występują przekłamania.Czy wobec tego, istnieje jakakolwiek skuteczna technika sprawdzania integralności plików? Tak. Polega ona na wyliczaniu cyfrowego podpisu dla każdego pliku, do czego możemy zastosować różnie algorytmy. W praktyce, używa się do tego celu przede wszystkim rodziny algorytmów MD. Jedną z najbardziej popularnych implementacji tych algorytmów jest system zwany MD5.
MD5
MD5 (message digest 5) -jest jednokierunkowym algorytmem mieszającym, zdefiniowanym w dokumencie RFC 1321. Opisany jest następująco:
Algorytm ten generuje Z28 bitową unikalni sygnaturę lub inaczej "streszczenie" (message digest) informacji wejściowej dowolnej dlugości. Przypuszcza się, że nie jest możliwe wygenerowanie przy pomocy technik komputerowych dwóch ciągów, które dawalyby taki sami sygnaturę, bądż ciągu którego podpis jest uprzednio określony. Algorytm MD5 przeznaczony jest do elektronicznego sygnowania zbiorów, wszędzie tam gdzie istnieje konieczność weryfikacji ich spójności.
Kiedy potraktujemy dany zbiór algorytmem MD5 otrzymamy 32 bajtowy podpis elektroniczny, wyglądający mniej więcej tak: 2d50b2bffb537cc4e637dd1f07a187f4Wiele serwisów internetowych dystrybuujących oprogramowanie dla systemu operacyjnego UNIX posługuje się algorytmem MD5 do generowania dla swoich produktów cyfrowych podpisów. Przeglądając ich katalogi zauważymy sygnatury dla każdego pliku. Typowy listing katalogu wyglądałby następująco:MD5 (wn-1.17.8.tar.gz) = 2f52aaddldefeda5bad91daBefcOf980MD5 (wn-1.17.7.tar.gz) = b92916d83f377b143360f068df6d8116MD5 (wn-1.17.6.tar.gz) = 18d02b9f24a49dee239a78ecfaf9c6faMD5 (wn-1.17.5.tar.gz) = Ocf8f8d0145bb7678abcc518fOcb39e9MD5 (wn-1.17.4.tar.gz) = 4afe7c522ebe0377269da0c7f26ef6b8MD5 (wn-1.17.3.tar.gz) = aaf3c2bic4eaa3eb37e8227e3327856MD5 (wn-1.17.2.tar.gz) = 9b29eaa366d4f4dc6de6489e1e844fb9MD5 (wn-1.17.1.tar.gz) = 91759da54792f1cab743a034542107d0MD5 (wn-1.17.O.tar.gz) = 32f6eb7f69b4bdc64a163bf744923b41Jeśli po pobraniu pliku stwierdzimy, że jego cyfrowy podpis różni się od oczekiwanego, to istnieje 99,99999% prawdopodobieństwo, że coś z danym plikiem jest nie w porządku.MD5 jest popularnym algorytmem i został zaimplementowany w wielu programach użytkowych. Jedną z aplikacji wykorzystujących MD4 i MD5 jest S/key z firmy Bel Laborotories. S/key generuje jednorazowe hasła stosowane przy zdalnym dostępie do systemu. Dzięki zastosowaniu tego programu możemy wydatnie zwiększyć bezpieczeństwo systemu przy połączeniach Telnet lub Rlogin. O korzyściach płynących z MD5 przeczytać możemy w dokumencie: "S/key Overwiev":Program S/key stosuje algorytm MD4, bądź MD5 (jednokierunkowe algorytmy mieszające opracowane przez Rona Rivesta) do generowania jednorazowych haseł. W tym systemie hasła przesyłane są w sieci otwartym tekstem - nawet jeśli ktoś nasze hasło przechwyci, jest ono dla niego bezużyteczne, bo już nieaktualne.Największą korzyścią płynącą z zastosowania programu S/Key jest ochrona przed krakerami bez konieczności modyfikowania oprogramowania klienckiego i przy tym nie nazbyt uciążliwa dla użytkowników.Z wykorzystaniem MDS, lub bez, proces weryfikacji zgodności obiektów jest złożony. Prawdą jest, że na pojedynczej stacji roboczej o ograniczonych zasobach technicznie wykonalne jest ręczne sprawdzenie zgodności obiektów, jednak w większym środowisku sieciowym jest to po prostu niemożliwe. Zatem, aby wspomóc administratorów stworzono wiele programów do weryfikacji integralności plików. Najpopularniejszym z nich jest Tripwire.Dokumentacja programu Tripwire i sposobu jego wykorzystania jest dostępna pod adresem: ftp://coast.cs.purdue.edu/pub/tools/unix/Tripware/.