Techniki skanowania sieci

Kolejną metodą, będącą niejako pochodną poprzedniej, jest Broadcast ICMP - pakiet ICMP echo wysyłany na adres rozgłoszeniowy (okólnikowy) sieci.

Wysyłając taki pakiet na adres rozgłoszeniowy, można w pewnych warunkach określić liczbę komputerów w sieci. Większość systemów operacyjnych odpowiada na pakiet ICMP echo request nadany na adres okólnikowy (systemami, które nie reagują na taki pakiet, jest rodzina produktów Microsoft).

Blokowanie pakietów ICMP przychodzących na adres rozgłoszeniowy jest ważne z uwagi na możliwość przeprowadzenie ataku typu DDoS (Distributed Denial of Service), Smurf lub podobnych, polegających na wzmocnieniu ataku na wybrany host przez sieć kilkudziesięciu lub setek "nieświadomych" komputerów, działających we wspólnej sieci (np. Internecie).

Do określenia dostępności hosta docelowego niekoniecznie trzeba korzystać z pakietów ICMP Echo Request. Można skorzystać z innych rodzajów ICMP - takich jak np. TIMESTAMP czy ADRESS MASK REQUEST - i obserwować odpowiedzi systemu.

Istnieje też możliwość wykorzystania protokołu TCP jako pakietu ping - jest to tzw. TCP Sweep. Aby zrozumieć jego mechanizm, należy przypomnieć sobie, jak wygląda proces nawiązania połączenia TCP, nazywany the three way handshake, który jest kombinacją trzech segmentów:

1. Klient wysyła segment z flagą SYN na port nasłuchujący serwera, inicjując numer sekwencyjny.

2. Jeżeli port (serwis) jest aktywny, serwer odpowiada własnym segmentem SYN, zawierającym początkowy numer sekwencyjny (initial sequence number). Serwer także potwierdza odebranie pakietu SYN klienta, wysyłając pakiet z flagą ACK z numerem sekwencyjnym zwiększonym o jeden. Jeżeli port nie jest aktywny, wysyła pakiet z flagą RESET.

3. Klient odpowiada na pakiet SYN serwera pakietem ACK z ISN+1.

Kiedy jeszcze pakiet RESET jest wysyłany? Wtedy, gdy odebrany segment nie jest zgodny z zainicjowanymi parametrami połączenia - czyli adresem IP, numerem portu, a także źródłowym numerem portu i adresem IP (RFC 793).

Do wysyłania pakietu TCP Sweep nie potrzeba uprawnień superużytkownika - w przeciwieństwie do pakietu ICMP (do wysłania dowolnego pakietu ICMP jest potrzebny tzw. Raw Socket - a więc i uprawnienia superużytkownika) - dlatego niektórzy administratorzy uniemożliwiają używanie programów typu ping przez zwykłych użytkowników. Pakiet ten może zostać wysłany na jeden z kilku portów: 21, 22, 23, 25 czy 80 - są to typowe usługi, których pakiety zazwyczaj nie są blokowane na zaporach ogniowych.

Ochrona przed takimi pakietami nie jest trudna - na zaporze ogniowej można podmieniać adres źródłowy pakietów RESET z chronionej sieci, dzięki czemu technika TCP Sweep nie będzie skuteczna.

Podobnie ma się sprawa z wykorzystaniem protokołu UDP - czyli UDP Sweep - lub po prostu skanowaniem UDP.

Metoda ta wykorzystuje fakt, iż wysłanie pakietu UDP na zamknięty port powoduje wysłanie pakietu ICMP PORT UNRECHABLE przez testowany host. Jeżeli port jest otwarty, odpowiedź nie jest wysyłana - dlatego próby te są podejmowane najczęściej w odniesieniu do wysokich portów, na których nie ma usług pracujących z protokołem UDP.

Test ten ma szereg wad:

  • Większość ruterów blokuje pakiety UDP w sieci Internet, przepuszczając tylko pakiety kierowane na port 53 (DNS).

  • Sporo serwisów nie odpowiada prawidłowo, nawet jeżeli są prawidłowo testowane.

  • Zapory ogniowe zwykle blokują pakiety UDP (z wyjątkiem zapytań DNS), a także - ze względu na małą popularność pakietów UDP - łatwo je wykrywają.

  • Prawidłowe zachowanie systemów to limitowana odpowiedź za pomocą pakietu błędu ICMP - zgodnie z zaleceniami w RFC 1812. Na przykład Linux zezwala na wygenerowanie 80 pakietów ICMP sygnalizujących błąd w ciągu 4 s i nie częściej niż co 250 ms (z tego powodu jest to metoda bardzo powolna).


  • TOP 200