Pan Jan Kowalski jadąc do pracy był w świetnym humorze. Kilka dni temu, podczas kolejnego nudnego dnia odsiedzianego w firmie (bo gapienia się przez 8 godzin na wiadomości Wirtualnej Polski nie mógł nazwać pracą) dostał maila od dawnego kolegi ze studiów. Nie kontaktowali się od lat, dlatego było o czym „popisać”. Wspominali stare czasy, studenckie imprezy, opisywali, co obecnie robią. Pan Jan trochę ponarzekał na pracę, na wiecznie niezadowolonego szefa…
W odpowiedzi kolega przypomniał mu dowcip, jaki zrobili nielubianemu współlokatorowi z akademika, podając jego adres e-mail na kilka list dyskusyjnych zajmujących się tematyką \”alternatywną\”. Ze śmiechem zasugerował podobne rozwiązanie, żeby szef miał co robić, zamiast czepiać się pana Janka.
Wysyłali sobie śmieszne obrazki i krótkie filmy, które miały im uprzyjemnić nudną pracę. Korespondencja kwitła, osiągając kilkadziesiąt maili dziennie. Po przyjściu do biura pan Janek szybko włączył komputer, szukając w poczcie kolejnego maila od znajomego.
Zamiast tego znalazł wiadomość od działu technicznego z prośbą o zgłoszenie się w celu \”załatwienia delikatnej sprawy\”. Zaintrygowany poszedł do pokoju administratorów.
Pan Andrzej, zajmujący się firmową siecią komputerową, jak zwykle rano pił kawę. Popatrzył na pana Janka i poprosił, żeby usiadł. Po chwili spokojnym głosem zaczął mówić o tym, że w firmie obowiązuje pewien regulamin, zabraniający korzystania z poczty elektronicznej do prywatnych celów. Że on też jest człowiekiem, ale pewnych rzeczy jako administrator tolerować nie może i nie zamierza.
Panu Jankowi mimo działającej klimatyzacji zaczęło się robić gorąco. Był zaskoczony i wściekły na \”permanentną inwigilację\”, jak zaczynał w myślach nazywać całe zdarzenie. Przeprosił jednak i obiecał, że sytuacja więcej się nie powtórzy. Wychodzącemu ze spuszczoną głową pan Andrzej rzucił na pożegnanie pozornie luźne zdanie: \”Gdyby przypadkiem przyszło panu do głowy zapisanie mnie na jakąś dziwną listę dyskusyjną, proszę pamiętać, że o tym też się dowiem\”. Pan Janek zbladł i szybko opuścił pokój. Jego dobry humor ulotnił się jak kamfora.
Jak to możliwe?
Wymyślony pan Jan zetknął się z techniką zwaną sniffingiem (w wolnym tłumaczeniu oznacza to węszenie). Administrator sieci, mając dostęp do tego samego segmentu LAN (będąc podłączonym do tego samego koncentratora), mógł stosując odpowiednie oprogramowanie przechwytywać informacje wysyłane z komputera pana Kowalskiego.
W powyższej historyjce chodziło o pocztę elektroniczną, ale technika ta pozwala na przechwytywanie dowolnych danych wysyłanych z komputera w sieci lokalnej (LAN).
Sniffing jest jedną z najbardziej skutecznych technik przechwytywania danych, a zarazem – działając w pełni pasywnie – bardzo trudną do wykrycia. Dlatego działalność osoby sniffującej dla zwykłego użytkownika pozostaje niezauważona.
Jak to działa?
Żeby zrozumieć działanie sniffera (programu do podsłuchiwania), musimy najpierw opowiedzieć o tym, jak poruszają się dane w sieci. Wszystkie dane przed wysłaniem w sieć zostają podzielone na małe części, tzw. pakiety. Pakiet składa się z nagłówka, w którym znajduje się m.in. informacja o nadawcy pakietu (adres sprzętowy karty sieciowej, tzw. MAC), adresie docelowym odbiorcy oraz z samych danych.
Wysyłając pakiet, komputer nie zna adresu MAC odbiorcy i wysyła go do koncentratora sieciowego: huba (urządzenie starszej generacji, działające na zasadzie rozgłaszania danych) lub switcha (urządzenie nowszego typu, tzw. inteligentne). Do obu tych urządzeń komputery są podłączone za pomocą indywidualnych portów, po jednym dla każdego komputera. Hub po odebraniu pakietu na jednym porcie wysyła go na wszystkie pozostałe, licząc, że któryś z podłączonych komputerów rozpozna w nagłówku swój adres MAC i odbierze go, a pozostałe zignorują.
Switch działa trochę inaczej. Ma tzw. tablicę adresów MAC, gdzie zapisuje jaki adres MAC ma każdy z komputerów i do którego portu jest podłączony. Po otrzymaniu pakietu analizuje jego nagłówek i przesyła go tylko do portu, na którym podłączony jest odbiorca. Proces przesyłania danych jest więc bardziej skomplikowany.
Technika przesyłania danych stosowana przez huby jest prostsza, ale jednocześnie mało wydajna, ponieważ generuje zbędny ruch w sieci, a w dalszej części udowodnimy, że jest też mało bezpieczna.
Można to porównać do źle zaadresowanego listu, który znalazł się w naszej skrzynce – widzimy nie nasz adres i… wrzucamy do zwrotów lub wyrzucamy. Co się jednak stanie, jeśli ciekawość by zwyciężyła i otworzylibyśmy kopertę?
Żeby nasza karta sieciowa nie odrzucała pakietów nie adresowanych do niej, musimy ją przełączyć w tzw. tryb \”bezładny\” (ang. promiscuous). Omówmy to na przykładzie. Mamy podłączone do wspólnej sieci dwa komputery: A, B. Na komputerze B uruchamiamy sniffera. Z komputera A łączymy się do dowolnie wybranego serwera WWW. Następuje wymiana danych, i na komputerze A pokazuje się strona serwera WWW.
W programie sniffera zainstalowanego na komputerze B transmisja ta została zarejestrowana i możemy ją sobie obejrzeć. To, co zobaczymy, to mnóstwo niezrozumiałych pozornie liczb i dziwnych znaczków przetykanych fragmentami kodu HTML (języka, w którym pisane są strony WWW). Właśnie przechwyciliśmy dane, które nie były adresowane do nas. Tak wygląda w teorii działanie sniffera.
Do czego może przydać się sniffer?
Początkowo sniffery były wykorzystywane przez administratorów sieci w celu wynajdywania usterek. Analizując trasę pakietów można diagnozować problemy, lokalizować usterki sieci itp. Obecnie dobry sniffer stanowi podstawowe narzędzie, którym posługują się hakerzy. Sniffer powinien pracować niezauważony (więc nie może zakłócać pracy sieci).
Zwykle chodzi o jakieś konkretne dane (transmisje poczty, WWW, newsów), więc program sniffujący musi mieć możliwość filtrowania przechwytywanych pakietów i rejestrowania tylko tych istotnych z naszego punktu widzenia.
Filtrowanie jest rzeczą kluczową, gdyż ilość danych przepływająca w małej sieci lokalnej może wynosić w zależności od aktywności od kilkuset kB do kilkudziesięciu MB w ciągu minuty (gdy kilka komputerów ściąga jednocześnie dużo danych). W efekcie bardzo szybko nasz dysk byłby zapchany zupełnie niepotrzebnymi danymi.
Jak się bronić przed podsłuchaniem?
Sniffing to bardzo poważny problem, który nie ogranicza się wyłącznie do podglądania, kto jakie strony WWW przegląda, czy czytania cudzej poczty. Można (i jest to w ten właśnie sposób robione) przechwytywać cudze hasła dostępu, w skrajnych przypadkach także te do banków. W połączeniu z innymi technikami stanowi to groźny oręż w rękach komputerowych przestępców, któremu zarówno użytkownicy, jak i administratorzy mogą się tylko próbować przeciwstawić.
Niestety, obecnie nie ma skutecznych narzędzi przeciwdziałania sniffingowi. Wraz z wymyślaniem kolejnych metod zabezpieczeń sniffing wykorzystuje coraz bardziej zaawansowane techniki.
Zastosowanie w sieciach switchów zamiast hubów na krótko powstrzymało podsłuchiwanie. Wymyślono następne techniki zwane Switch Jamming, MAC Flooding, które poprzez wygenerowanie odpowiednio wielu błędów w protokole ARP (odpowiedzialnym za adresowanie MAC) powodują przepełnienie tablicy MAC adresów switcha i jego przełączenie się w tzw. tryb fail-open, w którym działa jak zwykły hub.
Im tańszy (prostszy) jest switch, tym bardziej podatny na takie ataki. Jest wiele narzędzi (w tym niektóre sniffery), które pozwalają wykrywać w sieci inne karty przełączone w tryb promiscuous i podejmują stosowne kroki administracyjne (włącznie z fizycznym odłączeniem takiego użytkownika od sieci). Wszystko zależy tu od umiejętności i solidności administratora.
Gorzej, jeśli osoba zarządzająca siecią podsłuchuje swoich użytkowników. Wtedy pozostaje alternatywna wersja obrony – kodowanie. Jest to inne podejście do ochrony przesyłanych danych. Zakładamy z góry, że i tak zostaną przechwycone, więc należy je zaszyfrować.
Niestety, sam protokół TCP/IPv4 oraz podstawowe protokoły usługowe (takie jak HTTP w przypadku stron WWW, FTP transferujący pliki, POP3 i SMTP dla poczty elektronicznej, NNTP dla usenetu czy telnet do zdalnej pracy terminalowej) pracują na niekodowanych danych, wysyłając wszystko otwartym tekstem (w tym również nazwy użytkowników, hasła, pola formularzy).
Na rys. 1 i 2 na czerwono zaznaczone są dane, których nie powinny zobaczyć osoby postronne (nazwa użytkownika: ala.ma.kota oraz hasła: mojetajnehaslo, mojebardzotajnehaslo). Jak możemy zauważyć, w przypadku łączenia się za pomocą klienta poczty elektronicznej nie trzeba nawet specjalnie szukać, interesujące nas dane są wymienione w środkowej części ekranu jako element transmisji. Natomiast żeby znaleźć hasło w przypadku łączenia się ze skrzynką pocztową przez WWW, trzeba było przejrzeć zawartość poszczególnych pakietów.
Dlatego powstało wiele nakładek umożliwiających szyfrowanie tych usług. Należą do nich protokół SSH, zamiast telnetu, protokół SSL pozwalający szyfrować transmisje HTTP, narzędzia PGP i S/MIME oraz protokół Kerberos pozwalający szyfrować transmisje i zawartość poczty elektronicznej. Większość komunikatorów w najnowszych wersjach szyfruje wysyłane dane za pomocą SSL. Po przechwyceniu pakietów zaszyfrowanych tymi narzędziami podsłuchujący otrzymuje ciąg niezrozumiałych znaków.
Widać to na rys. 3, gdzie pojawiają się pakiety SSL, których sniffer nie potrafił zdekodować.
Wraz z wykrywaniem kolejnych błędów w implementacjach protokołów ochronnych sniffery są wyposażane w moduły dekodujące.
Jeśli tylko konfiguracja serwera na to pozwala, używajmy opcji bezpiecznego uwierzytelniania hasła (rys. 4) podczas konfigurowania konta w klientach poczty elektronicznej. Niestety opcja ta jest niedostępna w większości darmowych oferty kont e-mail.
Portale oferujące darmowe konta e-mail zwykle jednak pozwalają użyć bezpiecznego logowania do poczty poprzez swoją stronę WWW i należy z tego korzystać.
Jeśli wysyłamy jakieś ważne dane za pomocą formularza na stronie WWW, upewniajmy się, czy transmisja jest szyfrowana. Można to rozpoznać po zmianie http:// na https:// w okienku adresu WWW oraz symbolu kłódki w prawym dolnym rogu przeglądarki (rys. 5).
Podsumowując…
Sniffery stanowią narzędzie analizowania ruchu sieciowego. Posługiwanie się nimi nie jest nielegalne, ale wykorzystywanie zgromadzonych informacji w celach przestępczych – tak, a często bywa co najmniej nieetyczne. Celowo nie podałem w artykule nazw ani adresów stron, na których można znaleźć programy podsłuchujące (sniffery). Zainteresowani tematem i tak do nich dotrą.
Wracając do opowiadania, które rozpoczynało ten artykuł… Administrator sieci firmowej ma prawo w uzasadnionych przypadkach (gdy następuje naruszenie regulaminu czy polityki bezpieczeństwa firmy) użyć sniffera do sprawdzenia, co robią jego użytkownicy. Podobnie administrator sieci osiedlowej. Natomiast podsłuchiwanie sąsiadów czy kolegów z pracy jest procederem nagannym i może się skończyć dużymi nieprzyjemnościami.