Podsłuchiwanie

  1. Sniffer - co to i do czego może się przydać?

    Sniffer to narzędzie służące do przechwytywania i analizowania danych przepływających w sieciach Ethernet.

    1. Jako narzędzie administratora sieci pozwala na:
      • analizę wydajności sieci i diagnozowanie związanych z nią problemów - np. lokalizowanie źródeł ataków DoS (Denial of Service), lokalizowanie komputerów zarażonych robakami rodziny Blaster, czy Sasser, itp.
      • wykrywanie prób włamań, zakłócania pracy sieci i innych źródeł zagrożenia
      • wykrywanie i analizę problemów w sieci - np. dlaczego komputer A nie może się komunikować z komputerem B, mimo że oba są teoretycznie poprawnie skonfigurowane
      • ...
    2. Jako narzędzie programisty pozwala na:
      • analizę protokołów, których autor nie raczył udokumentować (Reverse Engineering)
      • ...
    3. Jako narzędzie włamywacza pozwala na:
      • przechwytywanie tresci i haseł przesyłanych otwartym tekstem, w nieszyfrowanych protokołach:
        • telnet i rlogin
        • http
        • ftp
        • smtp, pop3, imap
        • SNMPv1
        • gadu-gadu
        • ...
      • przechwytywanie treści i haseł przesyłanych za pomocą niektórych szyfrowanych protokołów, np. ssh1
      • przejmowanie, zamykanie, kontrolowanie nawiązanych połączeń
      • modyfikowanie przeslyłanych danych
      • ...
  2. Jak działa?

    W normalnych warunkach karta sieciowa przyjmuje jedynie ramki adresowane na jej adres sprzętowy (MAC) lub na adres rozgłoszeniowy sieci ethernet (ff:ff:ff:ff:ff:ff). Jednakże praktycznie wszystkie sprzedawane obecnie karty można przełączyć w tzw. tryb rozwiązły lub bezładny (promiscuous) - karta przyjmuje wtedy wszystkie pakiety transmitowane w sieci ethernet. To wystarczy by za pomocą gniazd surowych lub biblioteki takej jak np. libpcap (http://www.tcpdump.org/), czy winpcap (http://winpcap.polito.it/) dostać się do zawartości pakietów adresowanych do innego komputera.

  3. Gdzie zdobyć?

  4. Jak zabezpieczyć sieć i komputery?

    1. Zastosować przełączany Ethernet - wymienić koncentratory (huby) na przełączniki (switche). Przełącznik jest wieloportowym urządzeniem pracującym w warstwie drugiej modelu OSI, którego zadaniem jest przekazywanie ramek ethernetowych między kilkoma fragmentami sieci. Przełączniki utrzymują tablicę wiązań adres fizyczny (MAC) <-> port, dzięki której mogą przekazywać pakiet tylko do tego fragmentu sieci, w ktorym znajduje się adresat. Dzięki temu karta w trybie rozwiązłym "widzi" tylko pakiety adresowanej do niej i wysyłane na adres rozgłoszeniowy. Jednak jest to mało skuteczne rozwiązanie - w pewnych okolicznościach można je na wiele sposobów ominąć:
      • Switch Jamming, MAC Flooding - tablica wiązań MAC <-> port ma ograniczony rozmiar, jej przepełnienie sprawia, że nowe wiąznia nie są dopisywane, a pakiety są przekazywane do wszystkich portów poza tym, z którego przełącznik otrzymał pakiet. Wystarczy więc wygenerować dostatecznie dużo ramek z losowymi fizycznymi adresami źródłowymi, np. za pomocą narzędzia takiego jak np. macof z pakietu dsniff, by sprawić, że przełącznik będzie się zachowywał jak koncentrator. Droższe, zarządzalne przełączniki posiadające statyczne tablice adresów MAC są odporne na tego typu atak, pod warunkiem, że są poprawnie skonfigurowane.
      • MAC Spoofing - zamiast generować ramki z losowym adresem MAC, generujemy ramki z adresem źródłowym jakiegoś innego komputera. Istenieje duża szansa, że będziemy dostawać ramki adresowane do tego komputera, lub pod wpływem dużej liczby konfliktów przełącznik przełączy się w tryb fail-open, w którym działa jak koncentrator. Również na ten typ ataku są odporne zarządzalne przełączniki z ustawioną statyczną tablicą adresów MAC.
      • ARP Spoofing - można wykorzystać niedoskonałości protokołu ARP. Komputer A o adresie IP 192.168.1.1, chcąc komunikować się z komputerem B o adresie IP 192.168.1.2 musi poznać adres sprzętowy karty sieciowej komputera B. W tym celu wysyła na adres rozgłoszeniowy sieci pakiet ARP Request z ustawionym swoim adresem źródłowym MAC oraz IP i adresem docelowym IP 192.168.1.1. Komputer B odpowiada komputerowi A na to zapytanie pakietem ARP Reply wysłanym na adres MAC karty komputera A. W tym pakiecie zawarte są adresy IP oraz MAC komputera B. Komputer A zapamiętuje tę parę adresów w pamięci podręcznej ARP i może zacząć komunikację z komputerem B. Jeśli zdąrzymy wysłać odpowiedź ze swoim adresem MAC zanim zrobi to komputer B, to komputer A będzie wysyłał pakiety do nas, myślać że adresatem jest B.
      • ARP Poisoning - komputer B otrzymując pakiet ARP Request spodziewa się połączenia z komputera A, więc żeby nie wysyłać zbędnych pakietów ARP, zapisuje parę MAC, IP z pakietu ARP Request w swojej pamięci podręcznej ARP. Można to wykorzystać i wysyłać wiele zapytań ARP Request ze swoim adresem MAC, ale adresem IP komputera A, modyfikując w ten sposób pamięci podręczne ARP komputerów w sieci i przejmując tym samym komunikację przeznaczoną dla komputera A. Jest wiele gotowych narzędzi wykorzustujących ARP Spoofing/ARP Poisoning, w tym bardzo rozbudowane sniffery, np. ethereal, czy ettercap. Prostym i skutecznym zabezpieczeniem przed tymi metodami jest ustawienie statycznych wpisów pamięci podręcznej ARP dla komputerów w naszej sieci ethernet - zazwyczaj wystarczy taki wpis dla bramy sieci. Pod Linuksem można go ustawić za pomocą polecenia:
        	arp -s -i <interfejs> <ip_bramy> <mac_bramy>
        							
      • ICMP Redirect, ICMP Router Advertisement - Protokół IRDP (ICMP Router Discovery Protocol) został stworzony z myślą o zapewnieniu nieprzerwanej pracy sieci lokalnej po awarii domyślnej bramki przez automatyczne przełączenie wychodzących pakietów na inne routery. Korzysta on z trzech rodzajów pakietów protokołu ICMP: Redirect, Router Advertisement oraz Router Selection. Protokół IRDP musi być zaimplementowany i włączony zarówno na routerach, jak i na stacjach roboczych. W skonfigurowanym środowisku maszyny w sieci lokalnej otrzymują od routerów pakiety ICMP Router Advertisement i na postawie wartości pola numeru preferencyjnego wybierają najlepszą bramkę domyślną. Jeśli router wybrany jako bramka domyślna na podstawie tablicy routowania stwierdzi, że lepsza droga do konkretnego hosta prowadzi przez inny router, to wyśle datagram ICMP Redirect nakazujący zmienić hostowi bramkę domyślną. Protokół IRDP spełnia swoje zadania, nie ma jednak możliwości weryfikacji datagramów ICMP i ślepo wierzy w ich prawdziwość. Odpowiednio spreparowane datagramy ICMP pozwolą na podszycie się pod bramkę domyślną i przechwycenie całego ruchu wychodzącego. Pod Linuksem można się przed tym zabezpieczyć wyłączając protokół IRDP np. za pomocą polecenia:
        	echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
        							
    2. Wykrywać
      • ARP Spoofing/ARP Poisoning - można wykywać za pomocą programu arpwatch. Wiele systemów detekcji włamań (IDS - Intrusion Detection System) posiada umiejętność wykrywania nadużyć protokołu ARP, np. Snort. Potrafią to również niektóre sniffery, np. ettercap.
      • można próbować określić który z komputerów w sieci ma kartę przełączoną w tryb rozwiązły:
        • metodą "ping" - wysyłamy pakiet ICMP Echo Request na adres "podejrzanego" komputera, ale z innym adresem MAC. Jeśli ma interfejs w trybie rozwiązłym, to prawdopodobnie odpowie, mimo złego MACa.
        • metodą "arp" - jak wyżej, tylko wysyłamy unicastowy ARP Request (na adres MAC komputera, a nie na adres rozgłoszeniowy).
        • metodą "dns" - wiele snifferów automatycznie próbuje uzyskiwać adresy symboliczne znalezionych adresów IP z odwrotnego serwera DNS. Można wysłać wiele pakietów ICMP echo request na nieistniejące adresy i obserwować czy jakis komputer będzie probówał odczytać ich adresy symboliczne z serwera DNS.
        • ...
        • można skorzystać z gotowego narzędzia, np. antisniff
    3. Używać szyfrowanych protokołów i bezpiecznej autentykacji
      • ssh zamiast telneta
      • SSL
      • PGP, gpg, S/MIME
      • TLS
      • SRP
      • SMBv2/CIFS
      • Kerberos v5
      • ...