Cisco CyberOps Associate - Weryfikacja poprawności połączenia
Protokół ICMP jest dostępny zarówno dla IPv4, jak i IPv6. ICMPv4 jest protokołem komunikacyjnym dla IPv4, a ICMPv6 świadczy te same usługi dla IPv6, ale zawiera dodatkowe funkcje.
Rodzaje komunikatów ICMP i powody ich wysyłania są obszerne.
Wspólne komunikaty ICMP dla ICMPv4 i ICMPv6 obejmują:
Potwierdzenie dostępności hosta (Host Confirmation): Komunikat ICMP Echo Request może być używany do sprawdzenia, czy dany host jest dostępny. Host lokalny wysyła żądanie Echo Request do innego hosta, a jeśli ten jest dostępny, docelowy host odpowiada komunikatem Echo Reply. To właśnie na tym mechanizmie opiera się narzędzie ping.
Niedostępność docelowego hosta lub usługi (Destination or Service Unreachable): Gdy host lub brama odbierająca pakiet nie może go dostarczyć, może użyć komunikatu ICMP Destination Unreachable, aby poinformować źródło, że docelowy host lub usługa są niedostępne. Komunikat zawiera kod wskazujący przyczynę, dla której pakiet nie mógł zostać dostarczony. Przykłady kodów Destination Unreachable dla ICMPv4 to: 0 - Brak dostępu do sieci, 1 - Brak dostępu do hosta, 2 - Brak dostępu do protokołu, 3 - Brak dostępu do portu. ICMPv6 ma podobne, ale nieco inne kody dla komunikatów Destination Unreachable.
Przekroczenie czasu (Time Exceeded): Komunikat ICMPv4 Time Exceeded jest używany przez ruter, aby wskazać, że pakiet nie może być przekierowany, ponieważ pole TTL (Time to Live) w pakiecie IPv4 zostało zdekrementowane do zera. Jeśli ruter otrzyma pakiet i zdekrementuje pole TTL w pakiecie IPv4 do zera, odrzuca pakiet i wysyła komunikat Time Exceeded do hosta źródłowego. ICMPv6 również wysyła komunikat Time Exceeded, jeśli ruter nie może przekazać pakietu IPv6, ponieważ pakiet wygasł. W IPv6 nie ma pola TTL, a zamiast tego używa się pola hop limit do określenia, czy pakiet wygasł.
2. Komunikaty informacyjne i błędów w ICMPv6 są bardzo podobne do komunikatów kontrolnych i błędów w ICMPv4. Jednak ICMPv6 ma nowe funkcje i ulepszoną funkcjonalność, których nie ma w ICMPv4. Komunikaty ICMPv6 są osadzone w IPv6.
ICMPv6 obejmuje cztery nowe protokoły jako część protokołu Neighbor Discovery Protocol (ND lub NDP).
Komunikacja między routerem IPv6 a urządzeniem IPv6:
- Komunikat Router Solicitation (RS)
- Komunikat Router Advertisement (RA)
Komunikacja między urządzeniami IPv6:
- Komunikat Neighbor Solicitation (NS)
- Komunikat Neighbor Advertisement (NA)
Router Solicitation (RS): Komunikaty RA są wysyłane przez routery, aby dostarczyć informacje adresowe hostom korzystającym z Stateless Address Autoconfiguration (SLAAC). Komunikat RA może zawierać informacje adresowe dla hosta, takie jak prefiks, długość prefiksu, adres DNS i nazwę domeny. Router będzie wysyłał komunikat RA okresowo lub w odpowiedzi na komunikat RS. Host korzystający z SLAAC ustawia swoją bramę domyślną na adres link-local routera, który wysłał komunikat RA.
Adress Resolution (Rozwiązywanie adresów): Komunikaty NS są wysyłane, gdy urządzenie zna adres IPv6 innego urządzenia, ale nie zna jego adresu MAC. Jest to równoważne zapytaniu ARP dla IPv4. Komunikaty NA są wysyłane w odpowiedzi na komunikat NS i odpowiadają na adres IPv6 docelowego urządzenia w komunikacie NS. Komunikat NA zawiera adres MAC Ethernetu urządzenia. Jest to równoważne odpowiedzi ARP w IPv4.
Duplicate Address Detection (DAD - Wykrywanie zduplikowanych adresów): Gdy urządzenie otrzymuje adres unicast globalny lub unicast link-local, zaleca się przeprowadzenie DAD, aby sprawdzić, czy jest on unikalny. W celu sprawdzenia unikalności adresu urządzenie wysyła komunikat NS z własnym adresem IPv6 jako adresem docelowym, jak pokazano na rysunku. Jeśli inne urządzenie w sieci ma ten adres, odpowie komunikatem NA. Komunikat NA poinformuje wysyłające urządzenie, że adres jest już używany. Jeśli nie zostanie zwrócony odpowiedni komunikat NA w określonym czasie, adres unicast jest unikalny i można go używać.
3. Ping to narzędzie testujące IPv4 i IPv6, które wykorzystuje komunikaty ICMP echo request i echo reply do testowania łączności między hostami.
Aby przetestować łączność z innym hostem w sieci, wysyłane jest żądanie echo (echo request) na adres hosta za pomocą polecenia ping. Jeśli host o określonym adresie odbierze żądanie echo, odpowiada komunikatem echo reply. W miarę otrzymywania odpowiedzi echo, ping dostarcza informacji o czasie między wysłaniem żądania a otrzymaniem odpowiedzi. Może to być miara wydajności sieci.
Ping ma wartość czasu oczekiwania na odpowiedź. Jeśli odpowiedź nie zostanie otrzymana w określonym czasie, ping wyświetla komunikat informujący, że odpowiedź nie została odebrana. Może to wskazywać na problem, ale również może oznaczać, że funkcje bezpieczeństwa blokują komunikaty ping w sieci. Często pierwsze żądanie ping nie otrzymuje odpowiedzi, jeśli konieczne jest rozwiązanie adresu (ARP lub ND) przed wysłaniem komunikatu ICMP Echo Request.
Po wysłaniu wszystkich żądań narzędzie ping dostarcza podsumowanie, które zawiera wskaźnik sukcesu i średni czas podróży tam i z powrotem do celu.
Rodzaje testów łączności wykonywanych za pomocą narzędzia ping obejmują:
Pingowanie pętli lokalnej (local loopback): Można użyć pinga do przetestowania wewnętrznej konfiguracji IPv4 lub IPv6 na lokalnym hoście. Aby przeprowadzić ten test, pinguj adres pętli lokalnej 127.0.0.1 dla IPv4 (::1 dla IPv6). Odpowiedź z 127.0.0.1 dla IPv4 lub ::1 dla IPv6 wskazuje, że IP jest poprawnie zainstalowane na hoście. To jest odpowiedź z warstwy sieciowej. Nie oznacza to jednak, że adresy, maski lub bramy są poprawnie skonfigurowane. Nie wskazuje to również na stan niższej warstwy stosu sieciowego. To po prostu testuje IP w warstwie sieciowej. Komunikat o błędzie wskazuje, że TCP/IP nie działa poprawnie na hoście.
Pingowanie domyślnej bramy (default gateway): Można również użyć pinga do przetestowania zdolności hosta do komunikacji w lokalnej sieci. Zazwyczaj polega to na pingowaniu adresu IP bramy domyślnej hosta. Pomyślny ping do bramy domyślnej wskazuje, że host i interfejs routera pełniący rolę bramy domyślnej są oba działające w lokalnej sieci. W tym teście najczęściej używany jest adres bramy domyślnej, ponieważ router jest zwykle zawsze dostępny. Jeśli adres bramy domyślnej nie odpowiada, można wysłać ping na adres IP innego hosta w lokalnej sieci, który wiadomo, że jest działający. Jeśli brama domyślna lub inny host odpowiada, to lokalny host może skutecznie komunikować się w sieci lokalnej. Jeśli brama domyślna nie odpowiada, ale inny host tak, może to wskazywać na problem z interfejsem routera pełniącego rolę bramy domyślnej. Jedną z możliwości jest źle skonfigurowany adres bramy domyślnej na hoście. Inną możliwością jest to, że interfejs może być w pełni
4. Ping to narzędzie testujące łączność. Pozwala nam zweryfikować komunikację między hostami i diagnozować problemy sieciowe. Traceroute (lub tracert) uzupełnia ping, dostarczając informacji o ścieżce, którą pakiet przebywa w sieci. Przejdźmy nieco głębiej w oba narzędzia:
Ping:
- Cel: Testowanie łączności między dwoma hostami.
- Jak działa: Host lokalny wysyła komunikat ICMP Echo Request (ping) do hosta docelowego. Jeśli host docelowy jest dostępny, odpowiada komunikatem Echo Reply.
- Zastosowania:
- Weryfikacja lokalnej konfiguracji IP (pingowanie adresu pętli lokalnej).
- Testowanie komunikacji z domyślną bramą.
- Sprawdzanie łączności.
Traceroute:
- Cel: Generowanie listy przeskoku (hop) osiągniętych w trakcie trasy.
- Jak działa: Traceroute zwiększa wartość pola TTL (czas życia) w nagłówku IPv4 lub pola Hop Limit w IPv6, aby śledzić ścieżkę pakietu. Każdy router, który otrzymuje pakiet, odpowiada komunikatem ICMP Time Exceeded.
- Informacje o trasie:
- Traceroute wyświetla adresy interfejsów routerów na ścieżce.
- Jeśli pakiet nie dociera do celu, ostatni router, który odpowiedział na ślad, może wskazać, gdzie znajduje się problem lub ograniczenia związane z bezpieczeństwem.
Czas podróży tam i z powrotem (RTT):
- Traceroute dostarcza czas podróży tam i z powrotem dla każdego przeskoku na ścieżce.
- Asterisk (*) oznacza utracone lub nieodpowiedziane pakiety.
- Wysokie czasy odpowiedzi lub utraty danych z określonego przeskoku mogą wskazywać na przeciążenie zasobów routera lub jego połączeń.
TTL w IPv4 i Hop Limit w IPv6:
- Traceroute wykorzystuje pole TTL w IPv4 i pole Hop Limit w IPv6 w nagłówkach warstwy 3 oraz komunikat ICMP Time Exceeded.
- Pierwsza seria komunikatów wysłanych przez traceroute ma wartość pola TTL równą 1. To powoduje, że pakiet IPv4 przekracza limit czasu na pierwszym routerze, który odpowiada komunikatem ICMPv4 Time Exceeded. Traceroute ma teraz adres pierwszego przeskok.
- Traceroute stopniowo zwiększa pole TTL (2, 3, 4…) dla każdej serii komunikatów, dostarczając adresu każdego przeskok w miarę jak pakiety przekraczają limit czasu dalej w ścieżce. Pole TTL jest zwiększane, aż zostanie osiągnięty cel lub osiągnie maksymalną wartość.
- Po osiągnięciu celu, host odpowiada komunikatem ICMP Port Unreachable lub ICMP Echo Reply zamiast komunikatu ICMP Time Exceeded.
5. ICMP jest bezpośrednio umieszczany w pakietach IP. W tym sensie jest prawie jak protokół warstwy transportowej, ponieważ jest umieszczany w pakiecie, ale uważany jest za protokół warstwy 3. ICMP działa jako ładunek danych wewnątrz pakietu IP.
ICMP używa kodów wiadomości do rozróżnienia między różnymi typami komunikatów ICMP. Oto niektóre wspólne kody wiadomości:
- 0 – Odpowiedź na ping (echo reply)
- 3 – Cel nieosiągalny
- 5 – Przekierowanie (użyj innego routingu do celu)
- 8 – Żądanie ping (echo request)
- 11 – Przekroczono czas (TTL wyniósł 0)
Opcjonalne pole ładunku ICMP może być wykorzystane jako wektor ataku do eksfiltracji danych.