Techniki skanowania sieci
- Sebastian Sawicki,
- 01.02.2002
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: