Dla administratora systemu nie jest najgroźniejsze włamanie polegające na zmienia kilku rzeczy na stronie WWW systemu. Najgroźniejsze są włamania, które nie są szybko identyfikowane (odnajdywane i rozpoznawane), w których dane nie tyle są niszczone, co wykradane poprzez sieć. Dla wielu firm o wiele bardziej korzystne by było utracić pewne dane, które w jakimś stopniu można by było odzyskać (np. z backupów), niż ich wykradnięcie do firm konkurencyjnych. Dla tego bezpieczeństwo systemu od strony sieci jest również niezwykle istotne. Poprzez sieć (a zwłaszcza sieć lokalną) można do atakowanego systemu dostać się wykorzystując trzy podstawowe, najpopularniejsze i najgroźniejsze techniki:
Podczas normalnej pracy stacji roboczej potrafi ona odbierać pakiety, które zawierają w polu adresu
docelowego właśnie jej adres. Możliwe jest również ustawienie karty sieciowej w tzw. tryb bezładny (ang.
promiscous mode) i wówczas możliwe jest odbieranie wszystkich pakietów przychodzących do komputera. Mając
na względzie fakt, że wiele (większość) aplikacji działających w sieci nie wykorzystuje nawet najprostszych
metod szyfrowania, można w łatwy sposób przechwycić i odczytać zawartość wszystkich nie szyfrowanych
plątających się po sieci pakietów. Jeśli natrafimy na pakiety wędrujące do serwera i niosące ze sobą login
oraz hasło do systemu (np. telnet czy ftp), to wyłapując takie pakiety i odczytując ich zawartość dostajemy
na tacy klucz do systemu.
Program przełączający kartę w tryb bezładny i nasłuchujący pracę w sieci nazywamy węszycielem (ang. sniffer). Węszyciel to program, który zwykle wykorzystuje pliki nagłówkowe: linux/if.h, linux/if_ether.h, linux/in.h, linux/ip.h, stdio.h, sys/socket.h, tcp.h. Przy ich pomocy możemy wywołać: przełączenie interfejsu w tryb bezładny, nasłuchiwanie, zapisywanie i wyświetlanie nasłuch ruchu TCP.
Najpopularniejsze węszyciele:
Niebezpieczeństwo dla systemu ze strony węszycieli jest bardzo duże, gdyż można tą drogą przechwycić hasła. A jak wiadomo dostanie się do systemu nawet jako zwykły użytkownik to połowa sukcesu dla włamywacza. Ataki przeprowadzane przy użyciu węszycieli to najgroźniejsze i najbardziej niebezpieczne ataki na system i poufne informacje.
Niełatwo jest wykryć węszyciela. Najczęściej nie zostawiają one żadnych śladów - przecież działają na komputerze atakującego i tylko przyjmują pakiety - żadnych danych podczas prowadzenia nasłuchu nie wpuszczają (chyba, że komputer zostanie zapytany) do sieci.
Czy dana karta pracuje w trybie bezładnym możemy odczytać posługując się poleceniem ifconfig. Aby sprawdzić wszystkie karty pod względem trybu pracy możemy też posłużyć się poleceniem ifstatus. W przypadku ustawionego interfejsu w tryb bezładny otrzymamy stosowny komunikat. Jest jednak poważna wada tego rozwiązania: przecież, aby wykryć węszyciela nie będziemy biegać do każdej stacji i sprawdzać jej ustawienia !
Dobrym rozwiązaniem jest użycie programu NEPED (Network Promiscous Detector). NEPED skanuje sieć w poszukiwaniu interfejsów znajdujących się w trybie promiscous. W tym celu NEPED wykorzystuje błąd w implementacji arp. Niestety (?) w jadrach powyżej 2.0.36 (mowa o linuxach) naprawiono już ten błąd.
Najlepszą ochroną przed węszycielami jest zastosowanie szyfrowania zarówno transmisji loginu i hasła jak i samych danych.
Podszywanie najczęściej polega na działaniu mającym na celu przeprowadzenie procesu autoryzacji z jednego komputera do drugiego poprzez sfałszowanie pakietów tak, by wyglądały jak z zaufanego hosta. Techniki podszywania możemy podzielić na trzy kategorie:
Podszywanie IP polega na wykorzystywaniu słabych punktów strategii sterowania dostępem do sieci na podstawie nazwy hosta. Taka strategia występuje w Internecie bardzo często. W tym podejściu zabezpiecza się jeden serwer, lub (np. przy pomocy TCP Wrappers) kilka usług, a nawet całe sieci (zapory sieciowe). Narzędzia te różnią się między sobą, ponieważ zostały stworzone do konkretnych zastosowań. Wszystkie z nich mają jednak pewną cechę wspólną: do rozpoznawania używają adresu źródłowego lub adresu IP łączącego się komputera. Często w plikach konfiguracyjnych wielu aplikacji (choćby serwer apache) możemy znaleźć zapisy postaci:
AllowHosts nazwa.hosta.domena, ip.sieci.*
DenyHosts inny.host.inna.domena
Takie wpisy, w zależności od aplikacji, mogą dotyczyć całych podsieci, indywidualnych hostów, czy poszczególnych użytkowników.
Jak łatwo można zauważyć, pojedynczy pakiet zawiera między innymi numer IP źródła. Numer ten jest na tyle nie powtarzalny, że w danej sieci czy podsieci nie mogą się znaleźć dwa komputery z tym samym IP. Niestety to host wpisuje adres źródłowy i jeśli dany program wykorzystuje autoryzację czy identyfikację na podstawie tylko numeru IP, to system docelowy nie ma możliwości poznania prawdziwego miejsca pochodzenia pakietu.
Przykładem programu, który wykorzystuje autoryzację na podstawie adresu źródłowego IP jest system rhosts. Na podstawie wpisu w pliku .rhosts użytkownicy zdalni mogą otrzymać dostęp do danego komputera za pośrednictwem usług 'r' bez podawania hasła.
Sama luka w systemie rhosts nie daje jeszcze możliwości włamania się do danego systemu. Protokół TCP posiada mechanizm kontroli polegający na numeracji pakietów (ang. numbering sequence). Jeśli podczas nawiązywania połączenia komputer atakowany wyśle pakiet SYN to komputer starający się o autoryzację musi odgadnąć wartość numeru sekwencyjnego tego pakietu i odpowiedzieć numerem o jeden większym. Ale skoro komputer podszywający się wyśle pakiet z adresem źródłowym innego komputera (sam jest nie autoryzowany) to od atakowanego komputera nie dostanie żadnych pakietów w odpowiedzi. Pakiety te pójdą natomiast do komputera, za którego atakujący się podaje. Połączenie nie zostanie nawiązane.
Dobrym rozwiązaniem tego problemu jest zablokowanie (przez np. zalanie pakietami SYN) komputera za którego komputer atakujący się podaje tak, by nie mógł on odpowiadać na pakiety komputera atakowanego. Następnie samplujemy pakietami SYN komputer atakowany by odgadnąć w jaki sposób generuje on swoje numery sekwencyjne. Widząc już jaki będzie najbliższy numer sekwencyjny serwera wysyłamy pakiet z komputera atakującego ale z adresem źródłowym autoryzowanego komputera. W domyśle wiemy, że serwer odpowie na 'nasze' żądanie wysyłając swój pakiet. Ten pakiet nie dotrze do komputera atakującego. Do autoryzowanego też nie, bo ten jest zalany tak, by nie mógł odpowiadać. Ponieważ wiemy jaki numer sekwencyjny wysłał serwer odpowiadamy numerem o jeden większym (znów z adresem źródłowym komputera autoryzowanego) i w ten sposób otrzymujemy nawiązanie połączenia. Teraz wystarczy wykonać na atakowanym komputerze polecenie:
echo ++ > .rhostsi mamy otwartą furtkę do systemu.
Programem wykorzystującym powyższy algorytm jest
Inne programy i narzędzia pomocne w podszywaniu:
Na podszywanie IP podatne są usługi:
Najprostszym zabezpieczeniem przeciw podszywaniu IP jest unikanie wykorzystywania adresu IP do autoryzacji. Obecnie bardzo dobrze rozwinięte są techniki szyfrowania, które zupełnie eliminują konieczność autoryzacji w ten sposób.
Można by było udoskonalić generator kolejnych numerów sekwencyjnych, ale nigdy nie zastąpi to szyfrowania. Podpatrując kilka kolejnych liczb wciąż jeszcze można odgadnąć sposób ich generowania.
Dodatkowo możemy skonfigurować ruter tak, aby nie wpuszczał do sieci lokalnej pakietów podających w swoim adresie źródłowym numerów IP z tej sieci.
Podszywanie ARP (ang. Address Resolution Protocol) to bardzo podobny sposób podszywania co podszywanie oparte o IP. W protokole ARP autoryzacja jest także oparta na adresie, ale tym razem jest to adres sprzętowy MAC.
Kiedy host zamierza rozpocząć sesję, wysyła komunikat ARP z adresem IP komputera docelowego. Dla usprawnienia komunikacji istnieje pamięć podręczna adresów ARP, pozwalająca na szybkie połączenie hostów bez konieczności rozsyłania komunikatu. To właśnie pamięć podręczną wykorzystują agresorzy przy atakach z wykorzystaniem podszywania ARP.
W podszywaniu ARP atakujący zatrzymuje swój adres sprzętowy, ale przyjmuje adres IP hosta 'zaufanego'. W tym celu wysyła błędne informacje o tłumaczeniu adresów zarówno do komputera atakowanego, jak i do pamięci podręcznej. Od tej pory pakiety z komputera atakowanego przesyłane są pod adres sprzętowy komputera atakującego. Ofiara "wierzy", że maszyna atakującego to właśnie 'zaufany' host.
Jest kilka sposobów na zabezpieczenie przed podszywanie ARP. Jednym z nich jest wpisanie tłumaczenia adresów na stałe. Jest to jednak nie wygodne i dość kłopotliwe ze względu na nieelastyczność mechanizmu w przypadku jakichkolwiek zmian w strukturze sieci.
W systemie Linux obsługę translacji między adresami sprzętowymi MAC a IP możemy wykonywać przy pomocy polecenia arp. System ARP będzie pozwalał na odczytywanie przychodzących pakietów w dwóch sytuacjach:
Program posiada wiele opcji wywołania, ale najważniejsze i najczęściej używane z nich to:
Podszywanie DNS polega na włamaniu się do serwera DNS (Domain Name System) i zmianie tablic
mapowania nazw hostów na adresy IP. Kiedy klient wysyła żądanie podania adresu IP jakiegoś hosta,
to w odpowiedzi otrzymuje adres podrobiony, Może to być adres IP komputera znajdującego się pod całkowitą
kontrolą krakera.
Więcej:
http://ciac.llnl.gov/ciac/bulletins/g-14.shtml
Narzędzia do przeprowadzania ataków DNS:
Podszywanie DNS jest dość łatwo wykryć. Jeśli podejrzewamy któryś z serwerów DNS, należy wysłać żądania do innych serwerów DNS w sieci. Po porównaniu odpowiedzi łatwo można zauważyć wystąpienie ew. anomalii. Jedyną przeszkodę napotkamy, gdy ataku na dany serwer DNS dokonano stosunkowo dawno i tablica mapowania została przesłana do innych serwerów.Switche - nie bronią nas przed np. ARP-spoofingiem ale ten jest aktywny więc łatwiejszy do wykrycia.
Skaner to program automatycznie wyszukujący luki w systemie. Najprostszy skaner wyszukujący wszystkie programy root'a w /sbin, w których bit SUID jest ustawiony i programy te mogą być używane przez wszystkich użytkowników może wyglądać tak:
find /sbin/ -perm -4505
Przykładowy wynik działania (z wylistowaniem tych programów):
-rwsr-xr-x 1 root root 1276536 paź 27 14:58 /sbin/linuxconf* -rwsrwxrwx 1 root root 11691 mar 20 20:02 /sbin/pgr* -rwsr-xr-x 1 root root 15692 paź 2 07:42 /sbin/pwdb_chkpwd* -r-sr-xr-x 1 root root 16236 paź 2 07:42 /sbin/unix_chkpwd*
Samo odnalezienie takich programów jeszcze niewiele nam daje, ale mamy już jakiś punkt zaczepienia - przykład ilustruje istotę działania skanera. Jeśli wiedzielibyśmy jak wykorzystać słabość np. /sbin/linuxconf, to mamy włamanie gotowe.
Różne skanery wyszukują różne luki, ale wszystkie można podzielić na dwie kategorie:
Skanery systemowe badają host lokalny, poszukując luk w bezpieczeństwie wynikających z przeoczeń, drobnych błędów w administracji oraz problemów przy konfiguracji, które miewają nawet doświadczeni użytkownicy. Przykładem skanera systemowego może być COPS (Computer Oracle and Password System). Jeszcze darmowy COPS można pobrać z:
COPS wyszukuje w systemie typowe błędy konfiguracyjne, luki, itp. Znajduje np.: nieprawidłowe prawa dostępu do plików, katalogów i urządzeń, wyszukuje słabe hasła, nieprawidłowo ustawione bity SUID i SGID, podejrzane zmiany w sumach kontrolnych plików.
Skaner sieciowy, natomiast, testuje hosty poprzez łącza sieciowe - tak jakby to robił kraker. Skanery sieciowe sondują dostępne usługi i porty, poszukując ogólnie znanych luk, które mogłyby zostać wykorzystane przez atakującego.
Przykładem skanera sieciowego może być ISS (Internet Security Scanner). Program ISS jest pierwszym narzędziem w swoim rodzaju. Rozpoznaje on uruchomione usługi i testuje je pod kątem znanych luk w bezpieczeństwie, które można wykorzystać zdalnie. To właśnie główne cechy każdego skanera sieciowego.
Obecnie za jeden z najlepszych skanerów sieciowych uważa się program SATAN (Security Administrator's Tool for Analyzing Networks), który po raz pierwszy ukazał się 5 kwietnia 1995 roku.
SATAN'a można znaleźć na: http://www.fish.com/satan.
SATAN jest pierwszym programem, w którym za pomocą jednego kliknięcia można przeprowadzać złożone testy systemu. SATAN składa się z wielu modułów skanujących, wykrywających luki w zabezpieczeniach zdalnych hostów. Bada m.in.:
Program do wyświetlania raportów wykorzystuje możliwości Perla i zwykłą przeglądarkę interpretującą HTML'a. Rapotry są niezwykle przejrzyste i ścisłe zarazem. To właśnie dzięki nim SATAN zyskał ogromną popularność.
Należy pamiętać, ze skanery to nie tylko wyszukiwacze luk w naszym systemie, które może wykorzystać włamywacz. To przede wszystkim nieoceniona pomoc w wyszukiwaniu owych luk, które powinniśmy załatać.
Przykłady innych skanerów:
Legalność skanerów sieciowych to temat dyskusyjny. Niektórzy uważają, że przeczesywanie obcego systemu to naruszenie prywatności - przypomina przecież buszowanie wokół domu z nadzieją wyważenia drzwi albo okna. Inni stoją na stanowisku, że uruchamiając serwer w Internecie wyraża się przynajmniej domniemaną zgodę na skanowanie. W końcu adres sieciowy można porównać do numeru telefonicznego: każdy ma prawo go wykręcić. Przepisy prawne nie regulują jeszcze tej kwestii. Tak więc prawnie skanowanie jest legalne.
Przed skanerami nie da się ukryć. Jeśli chcemy choćby obserwować ich działania możemy posłużyć się różnymi ku temu celowi stworzonymi programami. Np.:
Jednym z najbardziej niebezpiecznych ataków na system komputerowy jest atak polegający na przechwyceniu sesji w protokole TCP(ang. hijacking). Technika polega na tym, że haker powoduje przerwanie połączenia zestawionego pomiędzy klientem a serwerem, następnie podszywa się pod klienta i podsyła serwerowi własne numery sekwencji. Aby mieć możliwość wglądu w przesyłane pakiety, konieczne jest korzystanie ze sniffera, co w tym przypadku oznacza, że haker musi mieć uprawnienia roota na komputerze, z którego przeprowadza atak. Hijacking jest więc połączeniem dwóch metod: sniffingu i IP-spoofingu.
źródło: praca Krzysztofa Rzeckiego, Leszka Siwika pod kierunkiem mgr inż. Bogusława Juzy pt.: "Administrowanie Systemami Komputerowymi"