Dsniff to pakiet narzędzi przeznaczonych do penetrowania sieci lokalnych.
Skład pakietu Dsniff:
- Arpspoof
- Przekierowuje pakiety wysyłane przez nadawcę do adresata tak, ze po drodze przechodzą one przez komputer intruza. Dzięki temu możliwe jest sniffowanie w sieciach z przełącznikami.
- Dnsspoof
- Wysyła sfałszowane odpowiedzi na zapytania DNS (przydatne przy atakach typu man in the middle).
- Dsniff
- Sniffer wyposażony w możliwość interpretowania wielu popularnych protokółów, takich jak FTP, Telnet, SMTP, HTTP, POP, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, IRC, AIM, ICQ, Napster, PostgreSOL, Microsoft SMB
- Filesnarf
- Narzędzie zapisujące pliki przesyłane przy użyciu protokołu NFS.
- Macof
- Narządzie służące do przepełniania pamięci switcha (MAC flooding). Powoduje to, że switch zaczyna działać jak zwykły hub – co ułatwia sniffowanie.
- Mailsnarf
- Zapisuje e-maile przesyłane przy użyciu protokołów POP i SMTP.
- Msgsnarf
- Zapisuje treści wiadomości przesyłanych przy użyciu komunikatorów internetowych i IRC-a.
- Tcpkill
- Zamyka połączenia TCP.
- tcpnice
- Zwalnia (zmniejsza szybkość) połączenia TCP.
- urlsnarf
- Wypisuje adresy URL znalezione w sniffowanym ruchu HTTP.
- webspy
- Przekazuje znalezione adresy URL do lokalnej przeglądarki Netscape, pozwalając na śledzenie (w czasie rzeczywistym) stron, po których surfuje ofiara.
- sshmitm
- Program będący serwerem pośredniczącym dla połączeń SSH (jednocześnie je snifuje).
- webmitm
- Program będący serwerem pośredniczącym dla połączeń HTTP i HTTPS przekierowanych przez dnsspoof (jednocześnie je snifuje).
Poniższy artykuł udostępniony został jako lokalna kopia, której oryginał znajduje się na stronie: http://rainbow.mimuw.edu.pl/…niffing.html
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.
- 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
- …
- Jako narzędzie programisty pozwala na:
- analizę protokołów, których autor nie raczył udokumentować (Reverse Engineering)
- …
- 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ć?
- tcpdump – http://www.tcpdump.org/
- ethereal (http://www.ethereal.com/)
- ettercap, ettercap-NG (http://ettercap.sf.net/)
- dsniff (http://www.monkey.org/…song/dsniff/)
- arp-sk (http://www.arp-sk.org/)
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
- …
Przydatne linki
http://rainbow.mimuw.edu.pl/…g7/index.htm
http://www.monkey.org/…song/dsniff/