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
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 stwierdzić 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.
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.
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.
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.
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.
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ą
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:
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
Przykładowe konie trojańskie dla platformy
Windows
ACID SHIVER
Przykładowe komendy
NETBUS 1.60, 1.70, 2.0
PROSIAK 0.47, 1/2
Przykładowe konie trojańskie dla platformy Unix
Login_trojan
Kod źródłowy
Kod źródłowy
Kod źródłowy
Ć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