Wiele osób nie zdaje sobie sprawy jak istotny z punktu widzenia bezpieczeństwa jest protokół ICMP. O jego strukturze, zawartości pakietów oraz jednym z ataków za pomocą tunelowania pisaliśmy już w artykule tutaj. Dziś chcielibyśmy opisać inne popularne techniki, które wykorzystują cyberprzestępcy dzięki otwartej komunikacji ICMP.


OS Fingerprint

Komenda PING jest podstawową komendą diagnostyczną wykorzystywaną w sieciach informatycznych. W połączeniu z poleceniem TRACEROUTE może posłużyć jako narzędzie do przeprowadzania rozpoznania. Oba te polecenia przesyłają wiadomości właśnie protokołem ICMP. Jedną z możliwości jest w tym przypadku rozpoznanie systemu operacyjnego na hostach docelowych. Wystarczy wysłać tzw. „echo request” poleceniem PING i poczekać na odpowiedź.

W treści odpowiedzi zwracanej przez hosta widzimy między innymi pole o nazwie TTL. Pełna nazwa tego atrybutu to Time of Live, czyli tak zwany czas życia pakietu. Jest to okres ważności pakietu, po upływie którego nie zostanie on przesłany dalej lub przetworzony. Wbrew nazwie, TTL nie zawsze określa czas, a częściej liczbę przeskoków, które może wykonać pakiet na swojej trasie. Każdy kolejny router zmniejsza wartość pola TTL o jeden i przesyła pakiet dalej. Jeśli jakiś router otrzyma pakiet z polem TTL równym 1, zmniejsza go do 0, odrzuca pakiet i usuwa go z sieci, a nadawca otrzymuje komunikat ICMP o błędzie. Czas życia pakietu pomaga uniknąć przeciążenia w źle skonfigurowanej sieci, np. pętli routingu.

Wiemy już czym jest TTL i jak działa. Brakuje nam jeszcze jednej kluczowej informacji. Mianowicie każdy system operacyjny, wysyłając nowy pakiet ICMP, wpisuje w jego pole TTL charakterystyczne dla siebie wartości. Najpopularniejsze z nich to:

  • TTL = 255 – Solaris, SunOS, Ultrix, FreeBSD
  • TTL = 64 – Linux, MacOS
  • TTL = 128 – Windows

Patrząc na wcześniejszy screenshot, wiemy już, że odpytany host to Windows, ponieważ TTL wynosi 128.

Co, gdy urządzenie nie znajduje się w tej samej podsieci i pakiety ICMP muszą pokonać trasę przez kilka routerów? W takim przypadku musimy dodatkowo użyć polecenia TRACEROUTE (CLI Unix) lub TRACERT (CLI Windows) i wyznaczyć najkrótszą trasę pakietu z naszego hosta do hosta docelowego. Następnie liczbę przeskoków dodać do wartości TTL zwracanej w odpowiedzi ICMP.
Dla przykładu poniżej odpytanie hosta „wikipedia.pl”. TTL = 55, liczba przeskoków = 9, czyli 55+9 = 64. Jest to więc prawdopodobnie serwer Linux.


ICMP Smurf Attack

W wolnym tłumaczeniu – “Atak Smerfowy”. Zasada działania jest bardzo prosta i opiera się na domyślnym ustawieniu sieciowym na praktycznie każdym urządzeniu i w każdej sieci. Chodzi o odpowiadanie na każde zapytanie ICMP, czyli wywołanie komendą PING. W tym ataku, hacker fałszuje adres źródłowy zapytania ICMP (na ten który jest celem ataku) i rozsyła broadcast do wszystkich komputerów w sieci. Hosty zostają oszukane i myślą, że zapytanie ICMP pochodzi od innego, zaufanego urządzenia w sieci i odpowiadają mu. W wyniku tego, sieć zostaje przeciążona, a urządzenie, do którego trafiają odpowiedzi ICMP zostaje „zalane” pakietami, a praca na nim staje się niemożliwa.

ICMP Smurf Attack

Ping of Death (Teardrop)

Jest to atak typu Denial of Service (czyli prowadzący do niedostępności usługi lub całego serwera) z wykorzystaniem protokołu ICMP. Przerażające jest to, że jedyną informacją jaką musi posiadać atakujący o celu, jest adres IP urządzenia. Przeprowadzony odpowiednio na niezabezpieczoną sieć powoduje crash lub restart systemu.
Technika polega na wysyłaniu pakietów ping, większych niż zezwala na to standard RFC, czyli większych niż 65 535 bajtów. W teorii, pakiety większe niż maksymalny dopuszczony rozmiar nie będą analizowane przez odbiorcę, jednak istnieje możliwość dzielenia wiadomości ICMP na fragmenty i przesyłania ich jeden po drugim. Następie host docelowy, w celu przeczytania całej treści wiadomości, wykona próbę poskładania jej w całość. Atakujący specjalnie przygotowują wiadomość tak, aby po złożeniu długość przekroczyła 65 535 bajtów. Powoduje to przepełnienie się bufora i zwykle prowadzi do krytycznego błędu systemu i restartu atakowanego komputera.

Sam atak jest znany od bardzo dawna. Jego metodologii można się doszukiwać w dokumencie RFC 791 z 1981 roku. „(…) As the packet is transmitted, it becomes broken into numberous fragments. The reassembly process might cause the receiving system to crash”.


Ping Flood Attack

Klasyczny i popularny atak DoS, gdzie jeden konkretny host zalewa wiadomościami ICMP Echo Request drugiego konkretnego hosta, w celu przeciążenia sieci bądź samego serwera przetwarzającego odbierane zapytania. Wykonuje się go z komputera posiadającego łącze o większej przepustowości niż łącze atakowanej maszyny. Atak zwykle przeprowadzany jest zwykłym poleceniem PING, ale z przełącznikiem -f oznaczającym „flood”. Oznacza to wysyłanie pakietów PING tak szybko jak to możliwe, nie czekając na odpowiedź. Do użycia tej komendy wymagane są poświadczenia administratora.


Jak się chronić?

Metod ochrony przed takimi rodzajami ataków nie jest dużo, aczkolwiek wiele instytucji stosuje poniższe zabezpieczenia:

  • Wyłączenie na krytycznych serwerach, routerach i innych urządzeniach sieciowych obsługi protokołu ICMP. Spowoduje to brak możliwości wysyłania oraz odpowiadania na wszystkie wiadomości ICMP. Niektóre aplikacje sieciowe wymają obsługi polecenia PING do poprawnego działania, tak więc opcja ta nie jest wszędzie możliwa do zrealizowania.
  • Zastosowanie bramy sieciowej, która zazwyczaj pełni dodatkowo rolę Next Generation Firewall. Powoduje to, że wszystkie masowe zapytania ICMP przychodzące z zewnątrz, są przetwarzane na odpowiednio skonfigurowanym urządzeniu brzegowym. Ono decyduje, czy odpytać dalej urządzenie końcowe w sieci i również bezpośrednio z niego wysyłane są odpowiedzi w Świat. Pozwala to na ochronę przed atakami DoS oraz Ping of Death z zewnątrz, jednak nie chroni przed atakiem przeprowadzonym wewnątrz sieci.
  • Aby uchronić się przed rozpoznaniem systemu operacyjnego za pomocą pola TTL, możliwe jest zmienienie jego domyślnej wartości na poziomie jądra systemu operacyjnego. Wymaga to jednak mocnego ingerowania w ustawienia systemowe i nie jest domyślnie stosowaną dobrą praktyką. Po za tym, istnieje wiele innych sposobów na poznanie OS na zdalnym hoście, a każdego z nich nie da się załagodzić.
  • Aby uniemożliwić przeprowadzenie “Ataku Smerfowego” warto wprowadzić filtr sieciowy na urządzeniach końcowych i zabronić odpowiadania na ruch typu broadcast.

Podsumowanie

Protokół ICMP, który jest tak stary jak sam Internet, został stworzony jako najprostsze narzędzie diagnostyczne w sieciach informatycznych. Jak widać, znalazł swoje zastosowanie również w domenie cyberprzestępczości. Całkowite jego wyłączenie, w niektórych przypadkach może być rozwiązaniem problemu. Zawsze jest to jednak dylemat, czy zbyt bardzo nie utrudniamy tym pracy sieciowcom i administratorom.

Podziel się z innymi tym artykułem!