KONIE TROJAŃSKIE


Definicja koni trojańskich
Założenie projektowe koni trojańskich
Przykładowe konie trojańskie dla platformy Windows
Przykładowe konie trojańskie dla platformy Unix
Wykrywanie koni trojańskich
Źródła
 
 

Definicja koni trojańskich
 

Dr Alan Solomon, specjalista od wirusów o międzynarodowej sławie, w swojej pracy zatytułowanej "Wszystko o wirusach" {All About Viruses) podaje następującą definicję koni trojańskich:

"Koń trojański (ang. trojan horse) jest programem, który robi więcej, niż oczekuje od niego użytkownik i te jego dodatkowe właściwości są z punktu widzenia użytkownika niepożądane. To założenie prowadzi nas do trudności w wykrywaniu koni trojańskich. Przypuśćmy, że mamy program, który mógłby nieomylnie wykryć program, który sformatował nam dysk twardy. Czy można by wówczas stwier­dzić Jednoznacznie, że ten program jest koniem trojańskim? Oczywiście nie, jeśli ten inny program z założenia służy do formatowania dysków (jak na przykład Format) - wówczas nie jest on koniem trojańskim. Problemem jest porównanie tego co robi program, z tym czego oczekuje od niego użytkownik, a oczekiwania użytkownika wobec programów przez niego wykorzystywanych są - na poziomie aplikacji - nieweryfikowalne."( http://www.drsolomon.com/)

Koń trojański jest obcym kodem dołączonym do prawowitego programu, który realizuje funkcje nieznane użytkownikowi (i zapewne przez niego niepożądane). 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. Koń trojański 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).

Założenia projektowe koni trojańskich.

-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

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ć).

Konie trojańskie mogą być zaszyte nie tylko w skompilowanych programach. Możemy je znaleźć również w skryptach powłoki, programach w Perlu, a nawet w skryptach takich jak JavaScript, VBScript lub Tcl. Jednak przypadki występowania koni trojańskich w skryptach są rzadkie ze względu na to, ż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.

Dobrze napisany koń trojański pracuje w tle nie ujawniając swej obecności. Co gorsza, większość dobrze zaprojektowanych programów tego typu zawiera się w narzędziach, które normalnie są obecne i uruchomione w systemie. Zatem nawet listowanie bieżących procesów niewiele nam tutaj pomoże.

Często zdarza się tak, że program nosi nazwę innej, niegroźnej aplikacji. Gdy użytkownik go uruchomi, ten pozornie nie wykona żadnej operacji. Wystartuje i zaraz zakończy działanie, a w rzeczywistości umieści w naszym systemie konia trojańskiego. Jest to najczęstsza metoda instalowania "bakcyla". Nie można go nazwać wirusem, gdyż koń trojański nie ulega replikacji i nie dołącza się do innych plików. Użytkownik sam uruchamia program, nie będąc świadom jego przeznaczenia. Chcąc zainstalować komuś "trojana", można go samemu uruchomić na jego maszynie, trzeba jednak postarać się o bezpośredni dostęp do komputera osoby, której "trojan" zostanie podłożony. 

Często konie trojańskie występują jako aplikacje klient- serwer. Serwer jest uruchomiony na komputerze ofiary i czeka na rozkazy napływające drogą sieciową. Klient służy do wysyłania owych rozkazów. Jeśli "trojan" jest niezbyt skomplikowany, to do komunikacji z serwerem można użyć programu o nazwie Telnet. W przypadku bardziej skomplikowanych koni trojańskich Telnet jest zastępowany specjalnymi aplikacjami. Programy te maja na ogół przejrzysty i bogaty interfejs

użytkownika. Zasada współdziałania serwera i klienta jest zawsze taka sama. Komunikują się one przy użyciu protokołu TCP/IP; serwer, zainstalowany na komputerze, na który przypuszcza się atak, otwiera jeden z nie używanych dotąd portów, z którym może połączyć się klient i w ten sposób wysyłać mu rozkazy. Serwer przyjmuje je i na maszynie "ofiary" podejmuje odpowiednie działanie.Proces ten może być zabezpieczony hasłem, aby nikt, oprócz osoby, która zainstalowała "trojana", nie wykorzystał otwartej w ten sposób bramki.

Istnieje kilka sposobów powiadamiania włamywacza o obecności komputera ofiary w sieci. Najłatwiejszym z nich jest wysłanie listu elektronicznego. Włamywacz podczas instalacji "trojana" decyduje o tym, pod jaki adres mają być przesyłane komunikaty. Informacja ta jest dostępna w opcjach "trojana", dzięki czemu użytkownik może dowiedzieć się, kto zainstalował konia trojańskiego. Możliwość taką daje np. NetBus w wersji 1.7.

Niektóre konie trojańskie wyposażone są w skanery portów. Jeżeli włamywacz nie określił z góry swojej ofiary (czyli chce np. połączyć z dowolnym użytkownikiem) to za pomocą skanera przeszukuje sieć w celu znalezienia zainstalowanych serwerów.


Przykładowe konie trojańskie dla platformy Windows


Na platformach Windows koń trojański najczęściej instaluje się w głównym katalogu Windows lub w folderze systemowym (C:\Windows\System) przybiera niepozorną nazwę jednego ze sterowników lub narzędzi Windows. Wpisuje się także do sekcji Autostart Rejestru, dzięki czemu uruchamia się za każdym startem systemu. "Trojan" pozostaje w pamięci ja­ko proces z atrybutem "ukryty", czyli nie ma aktywnego okna i nie jest widoczny w menedżerze zadań.
Wcześniejsze wersje koni trojańskich nie wpisują się do Rejestru (a więc ich działanie jest jednorazowe - trzeba je instalować za każdym razem, gdy uruchamiamy Windows). Niektóre nie zmieniają ścieżki i startują wciąż z tego samego katalogu, z którego je zainstalowano. Jeszcze inne nie zmieniają nazwy (dzięki temu są łatwe do wykrycia) lub wymagają ręcznej konfiguracji.

Rozmiar: 15317 bajtów

ACID SHIVER

AS to narzędzie służące nie tylko do przejmowania kontroli nad czyimś komputerem, ale również do generowania konia trojańskiego, który zostanie uruchomiony na komputerze ofiary. Pakiet składa się z dwóch części: aplikacji konfiguracyjnej [domyślnie nazywa się: ACiD Setup.exe (14 336b)] oraz serwera [domyślnie: AciDShivers.exe (186 368b)]. Za pomocą pierwszej włamywacz tworzy dowolnie nazywający się plik, w skład którego wchodzą: serwer oraz takie dane, jak: serwer SMTP (służący do przesyłania poczty) i adres emailowy włamywacza. Aplikacja ma ikonę łudząco przypominającą programy instalacyjne dystrybuowane przez Microsoft. "Trojan" wyróżnia się na tle innych: aplikacja próbuje w każdej sesji Windows połączyć się ze skonfigurowanym przez włamywacza serwerem pocztowym i wysłać na podany przez niego adres informację o posiadanym przez ofiarę numerze IP oraz porcie, przez który możliwa będzie komunikacja (port ten zmienia się za każdym razem!). Na dodatek AS to projekt otwarty: udostępniany jest wraz z kodem źródłowym i każdy użytkownik-programista może dodać coś od siebie. AS wykrywany jest przez większość markowych programów antywirusowych. Serwer potrzebuje do działania następujące pliki: MSvbvm50.dll orazMSwinsck.ocx.

Przykładowe komendy


Istnieje również zmieniona przez LEENTech Corporation (Living in an Evolution of Enhanced Networking Technology) wersja AcidShiver. Różni się nie tylko wielkością serwera (188 416b), ale również jego nazwą (tour98.exe) iwpisem "WinTour" = "C:\WINDOWS\WINTOUR.EXE" w rejestrze (w kluczach: 

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run i HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices).

Dodano również nowe funkcje:


USUNIĘCIE Z SYSTEMU:

- AS jest wykrywany przez markowe programy antywirusowe

- Nie ma na razie aplikacji wykrywających jego działanie.

- Można usunąć go manualnie: AS pozostawia po sobie wpis

"Explorer" = "C:\WINDOWS\MSGSVR16.EXE" (serwer przyjmuje stałą nazwę pliku) w Rejestrze Systemowym w kluczach: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices.Standardowa procedura to: usunięcie wpisu, zresetowanie komputera i skasowanie pliku: C:\WINDOWS\MSGSVR16.EXE.
Rozmiar: 15973 bajtów

NETBUS 1.60, 1.70, 2.0

Rozmiar: 2391 bajtów Rozmiar: 7215 bajtów Rozmiar: 8352 bajtów


 

Twórcą NetBus'a jest Carl-Fredrik Neikter. Wersja 2.0 jest programem shareware, który należy zarejestrować [istnieją 2 rodzaje licencji: na "użytek domowy" oraz dla firm i organizacji (pojedyncze lub stanowiskowe)]. Opłata jest związana, jak twierdzi autor, nie z komercyjną działalnością, ale ze wsparciem jego działań. Wersja 1.6 składa się z dwóch najważniejszych plików (nie mówiąc o dokumentacji): serwera o nazwie Patch.exe (472 576b) oraz klienta - NetBus.exe (567 296b). Wersja 1.7 to pliki o tej samej nazwie, ale innym rozmiarze: 494 592b (serwer) i 599 552b (klient). Obie wersje instalują się domyślnie na portach 12345 lub 12346. Najnowsza wersja rozpowszechniana jest w charakterystycznej dla znanych programów dystrybucji InstallShield(r) Wizard, jej serwer zajmuje domyślnie port 20034. Ustawienia serwera zmienić można programem instalacyjnym (NetBus 2.0 - rysunek) lub po połączeniu się z nim klientem . W wersjach wcześniejszych od 2.0 wystarczy tylko uruchomić serwer (jego nazwa może się dowolnie różnić od patch.exe, można też stosować parametry: /noadd, /remove, /pass:xxx, /port:xxx), aby stał się aktywny podczas każdej sesji Windows.

Przykładowe funkcje NetBus'a :

W wersji 2.0 dodano:

USUNIĘCIE Z SYSTEMU:

-NetBus jest wykrywany przez większość znanych programów antywirusowych

-Usuwa go także aplikacja NetBus Remover

-Wykrycie NetBusa jest trudne, ponieważ jego serwer może przyjąć każdą nazwę, można go wykryć w Rejestrze Systemowym. NetBus pozostawia takie wpisy jak: HKEY_CURRENT_USER\NETBUS 1.6, HKEY_CURRENT_USER\NETBUS 1.7, HKEY_CURRENT_USER\NetBus, HKEY_CURRENT_USER\NetBus Server (dwa ostatnie to wersja 2.0, wtedy wystarczy tylko odszukać klucz HKEY_CURRENT_USER\NetBus\Transfer, w którym podana jest ścieżka serwera, usunąć dwa wcześniejsze klucze, zresetować komputer i w następnej sesji Windows usunąć serwer oraz plik NBHelp.dll). Wcześniejsze wersje NetBusa trudniej jest wykryć (chyba że włamywacz nie pofatygował się i nie zmienił nazwy serwera – wówczas jest nim plik o nazwie Patch.exe). NetBus w wersji 1.6 i 1.7 zostawia charakterystyczny wpis w Rejestrze: HKEY_CURRENT_USER\nazwa_serwera_w_wersji_1.6_lub_1.7. Znając nazwę można usunąć konia trojańskiego kasując w kluczu: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run wpis o nazwie takiej, jak nazwa serwera (czyli np. jeśli nasz serwer nazywa się serwer.exe, to zostawia takie klucze w Rejestrze, jak:

1.HKEY_CURRENT_USER\SERWER

2.HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run wpis: nazwa "SERWER" - dane "ścieżka_dostępu\serwer.exe". Wystarczy usunąć te dwa wpisy, zresetować komputer i manualnie usunąć serwer z dysku, aby pozbyć się ostatecznie NetBusa.

Rozmiar: 8796 bajtów

PROSIAK 0.47, 1/2

Prosiak jest ewenementem, jeśli chodzi o twórczość polskich programistów. Jego autorem jest student ukrywający się pod adresemkwikwi@kki.net.pl. "Trojan" składa się z dwóch części: serwera PROSIAK.EXE (238 592b w wersji 0.47, 237 056b w wersji 1/2) oraz klienta PRO_CLI.EXE (211 456b w v. 0.47, 258 048b w v. 1/2). Serwer instaluje się na porcie 33333 (v. 0.47) lub 44444 (v. 1/2). Działa na systemach: Windows 95 i 98.

Dostępne w wersji 0.47 funkcje to:

W wersji 1/2 dodano:

USUNIĘCIE Z SYSTEMU:

-Wykrycie Prosiaka jest łatwiejsze niż NetBusa, mimo iż jego serwer również może przyjąć każdą nazwę. W przeciwieństwie do NetBusa, Prosiak nie zmienia nazwę wpisu w rejestrze (Microsoft DLL Loader), a pozostawia go w kluczu :

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices. Domyślnie wpis ma wartość: windll32.exe (w wersji 0.47) lub vbrun60.exe (w wersji 1/2). Ponadto w wersji 1/2Prosiak tworzy klucz: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Rconfig.

Usuwając wpis, resetując komputer i kasując serwer znajdujący się w katalogu C:\WINDOWS\SYSTEM pozbędziemy się go na dobre.


Przykładowe konie trojańskie dla platformy Unix

Login_trojan
Działanie tego konia opiera się na zastąpieniu systemowego pliku "login" przez plik o identycznej nazwie. Jego zadaniem jest zasymulowanie procesu logowania, podanie informacji o nieprawidło-wo wpisanym haśle a następnie wywołanie właściwego programu "login". Celem działania tego "trojana" jest przechwycenie haseł osób logujących się na danej platformie i zapisanie ich w ustalonym pliku.
Kod źródłowy
Su_trojan
Program, podobnie jak poprzedni, symuluje działanie polecenia systemowego. Tutaj jest to polecenie su, umożliwiające zalogowanie się na konto administratora z poziomu zwykłego użytkownika. Podobnie jak w poprzednim przypadku właściwy program su należy zastąpić troajnem po uprzednim skopiowaniu właściwego plikuw inne miejsce. Szczegóły procesu instalacji zawarte są w kodzie źródłowym programu.
Kod źródłowy
Intrudef_trojan_linux
Program podobny do "Login_trojan", z tą różnicą że hasła wysyła pocztą elektroniczną oraz jest przeznaczony na platformę Linux. Po niewielkich modyfikacjach możebyć uruchamiany na innych systemach unixowych.
Kod źródłowy

Wykrywanie koni trojańskich

Wykrywanie koni trojańskich jest 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 reconciliation), 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ą uprzed­nio . 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 te­stowania 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:

Niestety, wszystkie trzy powyższe metody są niewystarczające, ponie­waż 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 syste­mowego). Zatem nie możemy polegać na dacie pliku jako na wyznaczni­ku 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 ponow­nie 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.
W przypadku platformy Windows sprawa jest nieco prostsza, gdyż większość koni trojańskich (przynajmniej tych najbardziej popularnych) jest wykrywana przez bardziej zaawansowane programy antywirusowe.
Podsumowując, takie wskaźniki jak data utworzenia pliku, data ostat­niego otwarcia lub jego rozmiar, nie mają żadnego praktycznego znacze­nia 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). Jed­nakż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 zaufa­ni 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.

Ćwiczenie




Aby skompilować program w środowisku UNIX należy użyć kompilatora cc:
cc [-o plik wynikowy] plik_źródłowy.c np. cc -o login login_trojan.c

Źródła w internecie:

Deep Throat Remote:http://deept.future.easyspace.com/

Netbus: http://welcome.to/Net-Bus/

NOBO: http://web.cip.com.br/nobo/

BOCIean 2.01: http://www.nsclean.com/

TheCleanerl.2: http://www.clynamsol.com/puppet/

NetBus Removerhttp://lanzone.koti.com.pl/

Anti-Sockets de Troie: http://members.xoom.com/kankan_/

Millenium Remove: http://www.multimania.com/cdc/

AVP: http://www.avp.com/

Konie trojańskie i programy zwalczające: http://www.underground.org.pl/

Lokalne sieci komputerowe: http://lanzone.koti.com.pl/

Zabezpieczenia w sieci: http://www.privsoft.conV