Artykuł pochodzi z magazynu Hakin9. Do ściągnięcia ze strony: http://www.hakin9.org Bezpłatne kopiowanie i rozpowszechnianie artykułu zwolone pod warunkiem zachowania jego obecnej formy i trteści.
Sniffing w ethernecie z przełącznikami Marek Gusta, Maciej Szmit Zastosowanie przełączników drugiej warstwy uniemożliwia oczywiście stosowanie klasycznych metod sniffingu (polegają one na przestawieniu karty sieciowej w tryb promiscuous, to jest taki, w którym karta ignoruje adres odbiorcy zapisany w ramce i przetwarza wszystkie ramki, które pojawią się w medium). Istnieją jednak metody pozwalające na podsłuch informacji również w sieciach przełączanych. Podstawy Ethernet jest technologią, czy kładniej: rodziną protokołów, o logicznej topologii magistrali. Oznacza to, że informacja (ramka) wysłana przez nadawcę trafi a wszystkich odbiorców, przy czym odczytuje ją jedynie odbiorca, którego adres sprzętowy (MAC address) jest zgodny z adresem przeznaczenia. W przypadku fi zycznej topologii magistrali (np. ethernet 10Base2 albo 10Base5) jest to ść oczywiste, pobnie natomiast wygląda to też w przypadku, kiedy sieć zbuwana jest w fi zycznej topologii gwiazdy (na przykład 10baseT albo 100baseTX). Zadaniem koncentratora (huba) umieszczonego w centralnym punkcie rozdzielczym sieci jest wzmacnianie otrzymanego sygnału i przekazywanie go na wszystkie swoje porty (dla nieuważnych Czytelników: pisząc w tym artykule o portach mamy na myśli gniazdka, w które wkłada się kabelki, a nie skławe socketów TCP). Przełącznik (switch) jest urządzeniem drugiej warstwy modelu referencyjnego ISO/OSI. Od koncentratora (huba) różni się, z grubsza rzecz biorąc, tym, że potrafi nauczyć się adresów MAC urządzeń podłączonych swoich poszczególnych portów i przekazywać nadchodzące ramki tylko tego portu, którego podłączone jest urządzenie o odpowiednim adresie fi zycznym. Switch ma wbuwaną pamięć, w której przechowuje tablicę adresów przypisanych poszczególnych portów. Jeżeli na którymś z portów switcha pojawia się ramka, switch odczytuje adres jej nadawcy i umieszcza w tablicy adresów jako adres przypisany danego portu. Oczywiście póki przełącznik nie nauczy się, jakie adresy odpowiadają któremu portowi, rozsyła ramki zaadresowane nieznanego urządzenia na wszystkie swoje porty zupełnie jak hub. Pojemność pamięci przeznaczonej na adresy wynosi zazwyczaj od dwóch ośmiu kilobajtów (w zależności od modelu switcha) co, biorąc pod uwagę fakt, że adres MAC ma długość 6 bajtów, pozwala na zapamiętanie kilkuset adresów. Oczywiście standarwe switche mają zazwyczaj kilkanaście portów, natomiast większa pamięć jest potrzebna w przypadku łączenia ich ze sobą w sieci o topologii drzewa. Zastosowanie przełączników drugiej warstwy uniemożliwia oczywiście stosowanie klasycznych metod sniffi ngu (polegają one na przestawieniu karty sieciowej w tryb promiscu- 24 www.hakin9.org
Sniffing w sieciach przełączanych Rysunek 1. Sieć z koncentratorem ous, to jest taki, w którym karta ignoruje adres odbiorcy zapisany w ramce i przetwarza wszystkie ramki, które pojawią się w medium). Powód jest prosty interfejsu komputera chodzą tylko ramki przeznaczone dla niego i ramki rozgłoszeniowe (po angielsku broadcast mówimy, że switch rozdziela meny kolizyjne, nie rozdziela natomiast men rozgłoszeniowych). Istnieją jednak metody pozwalające na podsłuch informacji również w sieciach przełączanych. MAC flooding (zalewanie ramkami z fałszywymi adresami MAC) Pierwszą i uprzedzając fakty najmniej skuteczną metodą jest MAC fl ooding, czyli zalewanie switcha dużą liczbą ramek ze sfałszowanym adresem źródłowym (nadawcy). Oczywiście po pewnym czasie chodzi przepełnienia tablicy adresów. Nie umiejąc prawidłowo nauczyć się nowych adresów pochodzących od rzeczywiście działających w sieci komputerów switch zaczyna rozsyłać nadchodzące ramki zaadresowane nieznanych mu adresatów na wszystkie swoje porty. W przypadku porządnych switchy można w ten sposób co najwyżej zafl oować port, z którego jest prowadzony atak, albowiem każdy z portów ma przydzielony osobny fragment tablicy adresów. Tańsze i starsze modele przełączników mają współdzieloną pamięć dla wszystkich portów, zatem zalewanie jednego z nich kończy się Rysunek 2. Sieć ze switchem Rysunek 3. Przełącznik zalany nadmiarem informacji w miarę szybką zamianą switcha w huba. Dalej można już stosować metody podsłuchu znane z klasycznego ethernetu. Oczywiście przełącznik co pewien czas odświeża informacje (inaczej nie moglibyśmy nawet przepiąć działającego komputera z portu portu), więc proces zalewania musi być prowadzony w sposób ciągły, przy wykorzystaniu ść wydajnego komputera, a i to nie gwarantuje odebrania stu procent podsłuchanych wiamości. W końcu każda wiamość (nawet ta, którą udało się podsłuchać) niesie w sobie informacje o swoim nadawcy, a ta informacja powoduje przypisanie w switchu adresu źródłowego któregoś z portów. Potrzeba pewnego czasu aby napływające z fl oodingu ramki wyparły tę informację z pamięci przełącznika. Również od rozpoczęcia zalewania wypełnienia tablic switcha musi upłynąć nieco czasu. ARP spoofing (fałszowanie pakietów ARP) Drugą metodą podsłuchiwania ramek w sieci przełączanej jest ARP spoofi ng. Metoda ta polega na wysłaniu fałszywej ramki ARP Reply, z której komputery w sieci czerpią informację na temat odwzorowania adresów logicznych (IP) na adresy fi zyczne (MAC). Na broadcastowe zapytanie klienta o adres IP (dajmy na to bramy Internetu) odpowiada komputer użyty ataku (rzecz jasna odpowiada podając nieprawdziwą informację, z której wynika, ze fi zyczny adres bramy to adres jego karty sieciowej). Dalej komunikacja odbywa się już na linii pirat klient. Ten ostatni przekonany jest oczywiście, ze wysyła ramki pod właściwy adres (fi zyczny), a jedyne, o co ten pierwszy musi zadbać, to przekazywanie zawartych w nich pakietów tam gdzie trzeba ( rzeczywistej bramy). Komputer pirata działa tu więc jak swoisty pseurouter drugiej warstwy. Mamy tu pełną analogie ataków typu Man In The Middle stosowanych w warstwach wyższych (przez fałszowanie odpowiedzi dnsowych). www.hakin9.org 25
Rysunek 4. ARP spoofi ng Duplikacja adresu fizycznego Oczywiście można posunąć się jeszcze dalej i podłączyć dwóch portów switcha dwa komputery o identycznych adresach fizycznych. Najprostszym w realizacji sposobem osiągnięcia takiego efektu jest programowa zmiana adresu MAC interfejsu sieciowego. Opcję te umożliwia wiele kart sieciowych (z kartami opartymi na RTL8139D włącznie) i systemów operacyjnych (z Winws 2000 i oczywiście Linuksem). Nie jest to metoda końca pozbawiona wad i oczywiście można zamiast tego podsyłać po prostu odpowiednio spreparowane ramki, nie zmieniając rzeczywistego adresu komputera użytego ataku. Z punktu widzenia switcha jest to równoważne sytuacji, w której dwóch portów jest przyłączone to samo urządzenie. W normalnej sieci takie sytuacje raczej nie mają miejsca (wyjąwszy ść rzadki przypadek pętli mostowej). Może się jednak zdarzyć, że ktoś właśnie zajmuje się przepinaniem komputerów z portu portu, switch więc przez pewien czas będzie przesyłał ramki na oba porty. Ponieważ tak się składa, że większość transmisji w sieci ma charakter dialogu, kiedy na jednym z portów Rysunek 6. Sieć użyta testowania MAC fl oodingu pojawi się ramka z odpowiedzią (zawierająca odpowiedni adres MAC) wpis tyczący drugiego portu zostanie usunięty a transmisja nań zaniechana. Aby zatem utrzymać switcha w stanie nieświamości należy co jakiś czas podsyłać mu ramkę z zespoofowanym adresem MAC. Jeżeli wykorzystaliśmy programową zmianę adresu karty najprościej to osiągnąć choćby uruchamiając w tle pinga na wolny adres. Oczywiście tego typu kombinacja pozwala jedynie na przechwycenie informacji cierających jednej strony dialogu (tej, której MAC jest naślawany) ale może to okazać się wystarczające na przykład przechwycenia haseł. Jeżeli nie należy postarać się o drugi komputer, drugą kartę sieciową. albo spoofować naraz oba adresy, z tym, że tu już nie będziemy mogli się posłużyć standarwą programową zmianą MAC adresu karty w Winws. Nie trzeba dawać, że adres logiczny (IP) komputera użytego ataku powinien być inny niż adres logiczny komputera, pod który ten się podszywa, albo przynajmniej należy na nim wyłączyć obsługę odpowiedniej części protokołów, w przeciwnym bowiem razie może jść różnych dziwnych sytuacji, na przykład klient zamiast nawiązać połączenie z komputerem podsłuchiwanym nawiąże je z podsłuchującym. Trochę praktyki Żeby nie poprzestać na samej teorii przetestowaliśmy działanie czterech przełączników pod względem odporności na MAC fl ooding i ARP spoofi ng. Sprawdziliśmy też, jak spisuje się jedno z narzędzi ARP-spoofi ngu program dsniff. Podstawy Rysunek 5. Duplikacja adresu fi zycznego MAC flooding Dla celów MAC fl oodingu zestawiliśmy sieć o adresie 192.68.0.0/24 składającą się z czterech komputerów, jak na Rysunku 6. Komputery o adresach IP kończących się liczbami 1, 2, 3 pracowały pod kontrolą systemu operacyjnego Knoppix w wersji 3.2, natomiast komputer o numerze 4 26 www.hakin9.org
Sniffing w sieciach przełączanych pracował pod kontrolą Red Hat Linux 9.0. Na komputerze 1 uruchomiony był skrypt (zobacz Listing 1), który powował zalewanie switcha. Działanie skryptu polegało na wysyłaniu w pętli pakietów ICMP Echo Request pod nieistniejący w sieci adres logiczny 192.168.0.12. Każda wysłana ramka miała zmieniony adres źródłowy MAC, co wymuszało na switchu, aby aktualizował w swojej tablicy informację o adresie fi zycznym podłączonym tego portu. Aby wyeliminować zapytania ARP Request (które komputer z konieczności by wygenerował) przed każdym wysłanym pakietem ICMP w tablicy ARP komputera 1 konywany był statyczny wpis informujący o adresie fi zycznym nieistniejącej stacji 192.168.0.12. Podczas gdy komputer 1 generował w sieci pakiety ICMP, pomiędzy komputerami 3 i 4 była nawiązywana transmisja, a na komputerze 2 uruchomiony był program podsłuchujący sniffer. Do podsłuchiwania użyto konsolowego programu tcpdump wywołanego poleceniem tcpdump i eth0 host 192.168.0.3 oraz grafi cznego programu Ethereal. Pomiędzy komputerami 3 i 4 był generowany następujący ruch: pakiety ping z 3 4, zapytania http 4, logowanie z 3 na serwer ftp zainstalowany na komputerze 4. Tabela 1. Badane przełączniki Producent i model X-Net Model SH-9005A HP Procurve Switch Model 2512 X-NET Model SH-9024A Planet Model FNSW 2401 Specyfikacja 10/100Mb, 8 portów STP RJ45, bufor pamięci: 1MB, pamięć na MAC adresy: 2kB 10/100Mb, 24 porty RJ45, IEEE 802.1x, 10/100Mb, 24 porty RJ45, bufor pamięci: 4MB,pamięć na MAC adresy: 2kB 10/100Mb, 24 porty RJ45,pamięć na MAC adresy: 8kB Listing 1. Skrypt fl oodujący for zm_8 in 0 1 2 3 4 5 6 7 8 9 a b c d e f for zm_9 in 0 1 2 3 4 5 6 7 8 9 a b c d e f for zm_10 in 0 1 2 3 4 5 6 7 8 9 a b c d e f for zm_11 in 0 1 2 3 4 5 6 7 8 9 a b c d e f for zm_12 in 0 1 2 3 4 5 6 7 8 9 a b c d e f ifconfig eth0 wn ifconfig eth0 hw ether 00:00:0${zm_8}:${zm_9} ${zm_10}:${zm_11}${zm_12} up arp -s 192.168.0.12 00:05:05:05:6C:05 ping 192.168.0.12 -c 1 & echo ${zm} Do przedstawionej powyżej sieci były podłączane kolejno wszystkie wymienione w Tabeli 1 switche. Jak było przewidzenia, we wszystkich przypadkach flowanie switchy powowało przepełnienie bufora na MAC adresy dla portu, z którego floowanie następowało. Tylko w przypadku switcha 1 udało się na komputerze 2 podsłuchać transmisję pomiędzy komputerami 3 i 4, przy czym w przypadku pakietów pinga udało się przechwycić wszystkie zapytania ICMP Echo Request, natomiast nie przechwycono już większości odpowiedzi na pakiety Echo Reply (dał tu znać o sobie problem aktualizacji wpisów, o którym była mowa powyżej). W przypadku przechwytywania ruchu protokołów http i ftp również udało się przechwycić tylko część ramek. W obydwu przypadkach nie udało się podsłuchać samego nawiązywania połączenia TCP (segmenty TCP z ustawionymi flagami SYN oraz ACK) oraz części ramek, które miały niewiele różniące się od siebie znaczniki czasowe. Dla protokołu FTP udało się natomiast przechwycić login i hasło. Jak można się spodziewać ramki niosące na sobie pakiety z odpowiednimi komunikatami protokołu ftp będą jednak nieco różniły się czasem wysłania, zatem proces zalewania dał w międzyczasie właściwe efekty. Udało się również przechwycić ramki zawierające komendy dla serwera FTP. W celu zwiększenia prędkości fl oowania przełącznika podłączono sieci jeszcze jeden komputer z systemem Knopix 3.2, na którym uruchomiono skrypt. Pomimo zwiększania ruchu, który musiał obsługiwać przełącznik, nadal nie udało się przechwycić całości ruchu. ARP-spoofing Do podszywania ARP użyliśmy narzędzia konsolowego o nazwie arpspoof wchodzącego w skład pakietu dsniff. Pakiet dsniff jest przeznaczony dla systemów z rodziny Unix / Linux. Program arpspoof wywołujemy w następujący sposób: arpspoof [-i interfejs] [-t ip_celu] ip_spoof gdzie: interfejs interfejs, przy pomocy którego program będzie wysyłał fałszywe informacje, www.hakin9.org 27
ip_celu komputer, którego transmisję będzie przechwytywana. W przypadku wywołania programu bez parametru fałszywe informacje będą rozsyłane wszystkich komputerów z sieci lokalnej, ip_spoof adres, pod który program będzie się podszywał, np. adres IP bramy Internetu. Dsniff możemy ściągnąć, w postaci pliku binarnego przeznaczonego dla systemu Red Hat Linux w wersji 9.0, ze strony: http://www.brannhutchinson.com/dsniff-2.3-1_rh9.i386.rpm. Instalacji pakietu konujemy poleceniem # rpm -ivh dsniff-2.3-1_rh9.i386.rpm Podstawy Schemat użytej sieci został przedstawiony na Rysunku 7. Komputery o końcówkach adresu IP 2 i 4 pracowały pod kontrolą systemu operacyjnego Knoppix w wersji 3.2, natomiast na komputerze z końcówką 3 był uruchomiony Red Hat Linux wersja 9.0. Na komputerze o adresie logicznym 192.168.0.3 uruchomiono program arpspoof z parametrami: # arpspoof -i eth0 -t 192.168.0.2 192.168.0.1 Program wyświetla informacje o generowanych ramkach: # arpspoof -i eth0 -t 192.168.0.2 192.168.0.1 0:0:01:02:03:04 0:0:0:0:0:0 0806 42: arp reply 192.168.0.1 S is-at 0:0:01:02:03:04 0:0:01:02:03:04 0:0:0:0:0:0 0806 42: arp reply 192.168.0.1 S is-at 0:0:01:02:03:04 0:0:01:02:03:04 0:0:0:0:0:0 0806 42: arp reply 192.168.0.1 S is-at 0:0:01:02:03:04 Aby sprawdzić jak wygląda lokalna tablica ARP komputera o adresie 192.168.02 można posłużyć się poleceniem arp: # arp -a (192.168.0.1) at 00:00:01:02:03:04 [ether] on eth0 W tym przypadku wszystkie ramki wygenerowane Internetu przez komputer 192.168.0.2 będą trafi ały komputera 192.168.0.3 zamiast bramki internetowej. Rysunek 7. Sieć użyta testowania ARP spoofi ngu Adres mowy programu dsniff, skąd możemy ściągnąć jego źródła i kumentację, to: http://www.monkey.org/~dugsong/dsniff/ Oczywiście aby atak pozostał niezauważony musimy jeszcze wszystkie ramki z komputera 2 przesyłać na właściwą bramę Internetu. Aby to zrobić należy na komputerze 192.168.0.3 włączyć przekazywanie pakietów, na przykład za pomocą polecenia: echo 1 > /proc/sys/net/ipv4/ip_forward Od tego momentu można podsłuchiwać ruch generowany Internetu przez komputer 2, nie zrywając transmisji przez niego nawiązywanych. Ramki po tarciu komputera 3 będą przekierowane właściwej bramy, dzięki czemu użytkownik komputera 2 nie zauważy żadnych anomalii. Okiem admina Powstaje istotne pytanie: jak radzić sobie z tego rodzaju atakami? W przeciwieństwie klasycznego sniffi ngu podsłuch w sieciach przełączanych opiera się na technologiach aktywnych, zatem jego wykrycie powinno być prostsze. Administratorzy dysponujący urządzeniami zarządzalnymi, z wbuwaną możliwością analizy ruchu sieciowego, mają oczywiście ułatwione zadanie. Nawet jednak dysponujący ograniczonymi zasobami administrator nie stoi na przegranej pozycji. Zamiast Carnivore a może wystarczyć zwykły sniffer i koncentrator. Podejrzany komputer można przyłączyć razem ze stacją monitorującą koncentratora, a piero ten przełącznika i w ten sposób uzyskać pełną informację o jej aktywności. Niezależnie od użytego sprzętu stosunkowo łatwo oczywiście wykryć wolny fl ooding duże obciążenie sieci, duża liczba wysyłanych ramek na danym porcie to zjawiska, którym należy się bacznie przyjrzeć. Co ARP spoofi ngu to najłatwiej oczywiście sprowokować potencjalnego agresora wysłania fałszywej ramki (każdy porządny administrator rzecz jasna trzyma u siebie w kasie pancernej zeszyt z zapisanymi adresami MAC wszystkich kart sieciowych w całej sieci, odpowiadającymi im adresami IP poszczególnych urządzeń, w których te karty są zamontowane i informacją, na którym porcie switcha dane urządzenie się znajduje). Sprawa nieco kom- 28 www.hakin9.org
Sniffing w sieciach przełączanych plikuje się, gdy agresor zamierza podsłuchiwać nie pierwszy z brzegu, ale jakiś konkretny komputer, a na zapytania ARP wysyłane z komputera administratora nie odpowiada. Pewnym rozwiązaniem jest wysyłanie zapytania ARP z zespoofowanym adresem źródłowym udającym adres potencjalnej ofi ary. Switch wprawdzie prześle odpowiedź tam gdzie trzeba, czyli portu, którego przypisany jest MAC adres tegoż komputera, ale właśnie przed chwilą (z zespoofowanej ramki) wiedział się, że tym portem jest port, pod który podłączony jest komputer administratora. Na szczęście (w tym wypadku) czas aktualizacji tablic switcha waha się w granicach od kilku kilkunastu sekund, zaś odpowiedź ARP w średnio obciążonej sieci powinna nadejść wcześniej. Oczywiście jeśli otrzymamy dwie odpowiedzi ARP (od pirata i od bramy) to mamy już winnego. Stosunkowo najtrudniej wykryć sytuację, w której w sieci funkcjonują dwa identyczne komputery. Oczywiście jeżeli adresy IP będą różne, to wystarczy przepytać całą sieć (za pomocą protokołu ARP) i sprawdzić, czy dwie maszyny nie przyznają się tego samego adresu (fi zycznego). Jeśli adresy IP będą takie same i na komputerze agresora nie zostaną zablokowane usługi odpowiedzi (np. ICMP Echo) to wskazówką może być otrzymywanie podwójnych odpowiedzi na wysłane pakiety. Jeżeli agresor zablokował wszystkie możliwe protokoły udzielające odpowiedzi (ARP, RARP, TCP, ICMP) albo po prostu nie uruchomił na swoim komputerze stosu protokołów TCP/IP w końcu sniffi ngu tego nie potrzeba, to można skorzystać z faktu, że w czasie prowadzenia ataku musi w sposób ciągły informować switcha o tym, że również na jego porcie znajduje się adres MAC taki jak adres podsłuchiwanego komputera (inaczej switch uaktualni dane w tablicy). Jeżeli nie jesteśmy szczęśliwymi posiadaczami urządzenia zarządzalnego nie możemy sprawdzić tablicy adresowej switcha, pozostaje więc tylko wspomniana metoda podsłuchu ruchu sieciowego na określonym kabelku i jego analizy pod kątem fi zycznych adresów nadawcy. Oczywiście w sieci, w której mamy wiele przełączników spiętych w topologii drzewa i porozmieszczanych w różnych dziwnych miejscach taka operacja może być nieco skomplikowana. Rzecz jasna zabiegi takie jak monitorowanie własnej sieci i wysyłanie niej fałszywych informacji powinny być przez administratora stosowane tylko w ostateczności, kiedy naprawdę istnieje uzasadnione podejrzenie, że dzieje się coś niebrego i wyłącznie w celu wykrycia agresora lub przyczyny dziwnych zachowań sieci. www.hakin9.org 29