Konie trojańskie

Najczęściej tuż po włamaniu do systemu, cracker stara się zostawić w nim 'tylne drzwi', umożliwiające przyszły, niezauważalny dostęp do konta z prawami administratora. Najbardziej podatnymi systemami na tego typu ataki jest rodzina systemów UNIX, głównie ze względu na ich konstrukcję i zastosowania.

W większości przypadków trojan wykorzystywany jest w celu osiągnięcia nieautoryzowanego, interaktywnego dostępu do systemu. Wyjątkami mogą tu być ataki DDoS (ang. Distributed Denial of Service), służące do zdalnego floodowania ofiary.

Rodzaje koni trojańskich

Dobrze napisany koń trojański powinien pozostać niezauważalny przez długi okres czasu. Do tego celu stosuje się wiele metod, będących najczęściej podmianami ważnych systemowych demonów. Idealnym i najbardziej rozpowszechnionym przykładem jest zamiana demona sshd na własną wersję, reagującą na uniwersalne hasło oraz zamiana klienta ssh na wersję zapisującą hasła użytkowników.



[Podmieniony demon SSH]


Innym sposobem, który wyszedł jednakże już prawie zupełnie z użycia jest zamiana pewnych plików konfiguracyjnych lub praw dostępu do binariów systemowych, powodująca zmianę zachowania systemu w określonych warunkach. Przykładem może być dopisanie do pliku /etc/inetd.conf fikcyjnego demona, uruchamiającego w rzeczywistości powłokę.

Równie rzadko są w chwili obecnej spotykane tzw. bindshell'e, czyli konie trojańskie uruchamiające powłokę z prawami administratora w chwili połączenia na określony port TCP lub UDP. Najczęściej trojany tego typu łączone były z demonami systemowymi. Bardzo rozpowszechnionym w Polsce okazał się demon syslogd, który po połączeniu z portem 114 ofiary i podaniu hasła, uruchamiał powłokę w prawami administratora.

W chwili obecnej coraz częściej w użyciu jest pewna odmiana opisanych wyżej programów. Zamiast otwierać dany port TCP lub UDP, oczekują one na na pakiety ICMP określonego typu i wielkości, wykonując zawarte w nich polecenia. Utrudnia to w znacznym stopniu wykrycie takiego konia trojańskiego. Przykładem dość rozpowszechnionego 'gotowca' pełniącego tę funkcję jest program loki2 autorstwa route9|daemon.

Innym, równie częstym sposobem nielegalnego dostępu do systemu jest instalowanie własnych bibliotek i modułów kernela. Ogólnodostępne rozwiązania potrafią: ukrywać dowolne pliki, procesy, otwarte połączenia, przekierowywać funkcję execve(), fałszować sumy kontrolne MD5, ukrywać tryb nasłuchiwania pakietów i wiele innych. Zdecydowanie są to najniebezpieczniejsze ze wszystkich trojanów.

Oprócz wyżej opisanych koni trojańskich, cracker instaluje w systemie sniffery, czyli programy wyłapujące hasła i informacje przesyłane przez sieć. Aby utrudnić wykrycie, ich obecność na dysku oraz na liście procesów, a także tryb wychwytywania pakietów (ang. promiscous mode) są maskowane, najczęściej przy pomocy modułów kernela.

Sposoby ochrony

Najbardziej oczywistą i najskuteczniejszą metodą ochrony jest uniemożliwienie nieautoryzowanego dostępu do systemu. Podstawową regułą każdego administratora powinno być śledzienie serwisów WWW (np. www.securityfocus.com) i list dyskusyjnych (bugtraq@securityfocus.com) poświęconych bezpieczeństwu oraz regularne 'łatanie' serwerów.

Kluczowe dla bezpieczeństwa systemu jest również używanie sesji szyfrowanej SSH. Nigdy nie ma pewności, czy ruter pośredniczący w transmisji pakietów nie ma zainstalowanego sniffera. Ważne jest także uniemożliwienie fizycznego dostępu do konsoli serwera poprzez umieszczenie komputerów w wydzielonym pomieszczeniu, do którego dostęp mają tylko upoważnione osoby.

Zdarza się, że zastosowanie wyżej opisanych kroków nie wystarcza i dochodzi do włamania do systemu. Aby zminimalizować możliwość zainstalowania trojanów należy przyjąć następujące kroki:





   używać programu tripwire lub innych obliczających sumy kontrolne plików systemowych; powinien on być umieszczony razem z bazą danych na zabezpieczonej dyskietce oraz statycznie zlinkowany, aby utrudnić zafałszowanie sum kontrolnych

   zabezpieczyć ważne pliki systemowe przed próbami modyfikacji; system FreeBSD w trybie kern.securelevel większym niż 1 uniemożliwia modyfikację plików z flagą schg, bezpośrednie pisanie po dyskach i pamięci, a także modyfikację regułek filtra pakietów

Uniemożliwienie nieautoryzowanego dostępu do danych jest pracochłonnym i niejednokrotnie kosztownym procesem, ale straty wyrządzone przez crackerów mogą być niewspółmiernie duże do poniesionych nakładów. Toteż zagadnienie bezpieczeństwa systemów jest niezwykle ważne i w żadnym wypadku nie powinno być lekceważone przez administratorów.


Creative Commons License
Wszystkie materiały na mojej stronie dostępne są na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Na tych samych warunkach 2.5 Polska.