Techniki skanowania portów

Jako początkujący mechanik samochodowy, mogłem godzinami męczyć się z wykonaniem naprawy posiadanymi narzędziami (młotek, taśma izolacyjna, klucz francuski itp.). Kiedy popadłem w depresję i w końcu zaprowadziłem mojego gruchota do prawdziwego mechanika, pogrzebał w przepastnej skrzyni z narzędziami i wyciągnął specjalne narzędzie, którym wykonał naprawę błyskawicznie i bez kłopotów. Sztuka skanowania polega dokładnie na tym samym. Eksperci znają dziesiątki typów skanowania i wybierają jedną adekwatną (lub kombinację kilku) do danego zadania. Z drugiej strony niedoświadczeni użytkownicy i script kiddies próbują rozwiązać każdy problem za pomocą domyślnego skanowania SYN. Nmap jest darmowy i dostępny dla wszyskich, w związku z tym jedyną barierą jest odpowiednia wiedza. To oczywiście bije na głowę świat motoryzacyjny, gdzie trzeba posiadać duże umiejętności, żeby domyślić się, że potrzebne jest bardzo specyficzne narzędzie, ale wtedy potrzeba jeszcze dużo pieniędzy na jego zakup.

Większość typów skanowania jest dostępna tylko dla uprzywilejowanych użytkowników, ponieważ tylko oni mogą wysyłać pakiety raw. Takim użytkownikiem w przypadku systemów UNIX jest root. Używanie konta administratora w systemach Windows jest zalecane, jednak Nmap przeważnie działa poprawnie z konta zwykłego użytkownika przy zainstalowanej w systemie bibliotece WinPcap. Wymóg posiadania uprawnień użytkownika root był poważnym ograniczeniem kiedy pojawił się Nmap w 1997 roku, jako że użytkownicy posiadali dostęp głównie tylko do współdzielonych kont. Świat się zmienił. Komputery są tańsze, coraz więcej ludzi ma bezpośredni dostęp do Internetu i coraz powszechniejsze stają się komputery z systemami UNIX (włączając Linuxa i MAC OS X). Dostępna jest również Windowsowa wersja Nmapa, co powiększa możliwości jego wykorzystywania. Z tych powodów coraz rzadziej zachodzi potrzeba uruchamiania Nmapa z ograniczonych współdzielonych kont. Na szczęście większe przywileje użytkowników przekładają się na większą elastyczność i możliwości Nmapa.

Nmap stara się podawać jak najbardziej dokładne wyniki, jednak trzeba mieć na uwadze fakt, że wyniki są oparte na pakietach zwracanych przez badane systemy (lub firewalle je ochraniające). Dlatego też zwracane informacje nie muszą być wiarygodne i mogą wprowadzać Nmapa w błąd. Bardzo powszechne są hosty nie zachowujące się zgodnie z RFC w odpowiedzi na zapytania Nmapa. Rozwiązaniem są skanowania FIN, Null czy Xmas. Tego typu problemy zostały opisane oddzielnie w częściach poświęconych poszczególnym typom skanowania.

Ta sekcja opisuje dziesiątki typów skanowania dostępnych w Nmapie. Jednocześnie może być wykorzystywana tylko jedna metoda, za wyjątkiem skanowania UDP (-sU), które może być łączone z dowolnymi typami skanowania TCP. Dla łatwiejszego zapamiętania, opcje skanowania portów posiadają nazwy w formie -s<C>, gdzie <C> jest przeważnie pierwszą dużą literą angielskiej nazwy typu skanowania. Wyjątkiem jest przestarzała opcja skanowania FTP bouce (-b). Domyślnie Nmap wykonuje skanowanie SYN, które jest zastępowane connect(), jeśli użytkownik nie ma odpowiednich uprawnień do wysyłania pakietów raw (co wymaga konta root w systemach UNIX) lub w przypadku skanowania sieci IPv6. Z pośród przedstawionych poniżej typów skanowania użytkownicy nie uprzywilejowani mogą jedynie używać typów connect() i FTP bounce.

-sS (Skanowanie TCP SYN)

Skanowanie SYN jest domyślną i najpopularniejszą metodą skanowania. Jest to spowodowane tym, że może być przeprowadzone szybko, możliwe jest skanowanie tysięcy portów na sekundę w szybkich sieciach nie chronionych systemami zaporowymi. Skanowanie SYN jest relatywnie dyskretne i niewidoczne, ponieważ nigdy nie otwiera połączeń do końca. Działa to dobrze w stosunku do wszystkich stosów zgodnych z TCP, w przeciwieństwie do udziwnionych, dla których Nmap ma tryby FIN/Null/Xmas, Maimon i Idle. SYN pozwala na przejrzyste i wiarygodne rozróżnienie stanów portu pomiędzy otwartym, zamkniętym i filtrowanym.

Technika ta jest często określana jako skanowanie z połowicznym otwieraniem połączeń (ang. half-open), ponieważ nie otwiera pełnego połączenia TCP. Wysyłany jest pakiet SYN, tak jak by miało być otwarte prawdziwe połączenie i czeka na odpowiedź. SYN/ACK oaznacza, że port oczekuje na połączenia (jest otwarty), a RST (reset) identyfikuje port jako zamknięty. Jeśli odpowiedź nie zostanie otrzymana pomimo kilku prób, port jest oznaczany jako filtrowany. Port jest również oznaczany jako filtrowany w przypadku otrzymania komunikatu błędu ICMP unreachable error (typ 3, kody 1, 2, 3, 9, 10 lub 13).

-sT (Skanowanie TCP connect())

Skanowanie TCP Connect() jest wybierane domyślne, jeśli SYN nie jest dostęne. Ma to miejsce kiedy użytkownik nie posiada uprawnień do wysyłania pakietów raw lub podczas skanowania sieci IPv6. Zamiast wysyłać pakiety raw, jak to ma miejsce przy innych typach skanowania, Nmap prosi system operacyjny o zestawienie połączenia z badanym hostem za pomocą wywołania funkcji systemowej connect(). Jest to taki sam wysoki poziom wywołań systemowych, z jakich korzystają przeglądarki internetowe, oprogramowanie Peer2Peer czy inne programy korzystające z połączeń sieciowych. Jest to część interfejsu programistycznego znanego jako Berkeley Sockets API. Zamiast odczytywać odpowiedzi za pomocą odwołań niskopoziomowych prosto z sieci, Nmap wykorzystuje ten sam wysokopoziomowy interfejs do otrzymania informacji o stanie operacji dla każdej próby połączenia oddzielnie.

Kiedy skanowanie SYN jest dostępne, przeważnie jest lepszym wyborem. Nmap ma dużo mniejszą kontrolę nad wywołaniem wysokopoziomowym connect() niż nad pakietami raw, co jest dużo mniej efektywne. Wywołanie systemowe otwiera pełne połączenie w przeciwieństwie do metody SYN korzystającej z połowicznego połączenia. Nie tylko wymaga to więcej czasu i wymaga więcej pakietów do uzyskania takich samych informacji, ale również prawdopodobnie spowoduje zapisanie w logach badanego systemu próby połączenia. Nowoczesne systemy detekcji intruzów IDS potrafia wykrywać takie połączenia, ale większość systemów nie posiada odpowiednich systemów alarmowych. Wiele usług w typowym systemie UNIX zapisze uwagę do logu systemowego i czasami zagadkowy komunikat błędu, kiedy Nmap połączy się i natychmiast zamknie połączenie bez wysyłania jakichkolwiek danych. Naprawdę żałosne usługi przestaną działać po otrzymaniu takiego pakietu, ale nie jest to często spotykane. Administrator widzący w logach informacje o wielu próbach nawiązania połączenia z jednego adresu powinien wiedzieć, że jego system był skanowany za pomocą metody connect().

-sU (Skanowanie UDP)

Większość popularnych usług w sieci Internet wykorzystuje protokół TCP, ale również usługi UDP są często spotykane. Najpopularniesze z nich to DNS, SNMP i DHCP (porty 53, 161/162 i 67/68). Ponieważ skanowanie UDP jest ogólnie wolniejsze i trudniejsze niż TCP, wielu audytorów bezpieczeństwa ignoruje te porty. Jest to pomyłka, jako że wiele usług UDP jest podatnych na zdalne ataki i atakujący nie ignorują tego protokołu. Na szczęście Nmap umożliwia inwentaryzację portów UDP.

Skanowanie UDP jest aktywowane za pomocą opcji -sU. Może być łączone z innymi typami skanowania TCP, takimi jak SYN (-sS), dla sprawdzenia obu protokołów w jednym przebiegu.

Skanowanie UDP polega na wysyłaniu pustych (bez danych) nagłówków protokołu UDP do każdego portu docelowego. Jeśli w odpowiedzi zostanie zwrócony komunikat ICMP port uchreachable (typ 3, kod 3), port jest uznawany za zamknięty. Inne typy komunikatów ICMP unreachable (typ 3, kody 1, 2, 9, 10 lub 13) oznaczają, że port jest filtrowany. Czasami w odpowiedzi zwrócony zostanie pakiet UDP, co oznacza, że porty jest otwarty. Jeśli pomimo powtarzania transmisji nie zostanie uzyskana żadna odpowiedź, port zostaje zaklasyfikowany jako otwarty|filtrowany. Oznacza to, że port może być otwarty lub filtr pakietów blokuje do niego dostęp. Wykorzystanie skanowania wersji usług (-sV) może pomóc w odróżnieniu portów na prawdę otwartych od filtrowanych.

Największym wyzwaniem przy skanowaniu UDP jest przeprowadzenie go odpowiednio szybko. Otwarte i filtrowane porty rzadko wysyłają jakąkolwiek odpowiedź, zmuszając Nmapa do oczekiwania na odpowiedź i ponawiania transmisji na wypadek zagubienia pakietów. Zamknięte porty są często jeszcze większym problemem. Zwykle wysyłają pakiet ICMP port unreachable, jednak w odróżnieniu od pakietów z flagą RST znanych ze skanowania SYN czy connect, wiele hostów domyślnie limituje szybkość wysyłania pakietów ICMP port unreachable. Przykładami mogą być systemy Linux i Solaris. Kernel Linuxa w wersji 2.4.20 limituje ilość pakietów o niedostępności portów do jednego na sekundę (w net/ipv4/icmp.c).

Nmap potrafi wykrywać limitowanie odpowiedzi i zwalnia odpowiednio proces skanowania dla uniknięcia zaśmiecania sieci niepotrzebnymi pakietami, które i tak nie zostaną wykorzystane. Niestety, skanowanie wszystkich 65,536 portów UDP przy limicie Linuxowym jeden pakiet na sekundę powoduje, że skanowanie trwa ponad 18 godzin. Sposobami na przyspieszenie są skanowanie wielu hostów równolegle, wykonywanie na początek szybkiego skanowania popularnych portów, skanowanie z poza systemu zaporowego i używanie opcji --host-timeout do pomijania zbyt wolnych hostów.

-sN; -sF; -sX (Skanowania TCP Null, FIN i Xmas)

Te typy skanowania (większe możliwości posiada opcja --scanflags opisana w dalszej części) wykorzystują nieopisane w TCP RFC kombinacje flag do rozróżnienia pomiędzy stanami portów otwarty oraz zamknięty. Strona 65 opisuje, że jeśli [docelowy] port jest ZAMKNIĘTY ... w odpowiedzi na pakiet nie zawierający RST należy wysłać odpowiedź RST. Następna strona opisuje pakiety wysyłane na porty bez flag SYN, RST lub ACK w następujący sposób: coś takiego nie powinno mieć miejsca, jednak jeśli się zdarzy, pomiń taki pakiet.

Podczas skanowania systemów zgodnych z zapisami w RFC, dowolny pakiet nie zawierający flag SYN, RST lub ACK powinien wywoływać odpowiedź RST w przypadku portu zamkniętego i całkowity brak odpowiedzi w przypadku portu otwartego. Tak długo jak żadna z wymienionych flag nie została użyta, wszystkie inne kombinacje flag (FIN, PSH i URG) są prawidłowe. Nmap wykorzystuje to do przeprowadzania trzech typów skanowania:

Skanowanie Null (-sN)

Nie ustawia żadnych flag (pole flag w nagłówku tcp zawiera 0).

Skanowanie FIN (-sF)

Ustawiona flaga FIN.

Skanowanie Xmas (-sX)

Ustawione flagi FIN, PSH i URG, pakiet podświetlony jak choinka.

Te trzy tryby skanowania są takie same poza ustawionymi flagami w pakietach. Jeśli w odpowiedzi zostanie otrzymany pakiet RST, port jest uznawany za zamknięty, podczas gdy brak odpowiedzi oznacza otwarty|filtrowany. Port uznajemy za filtrowany, jeśli otrzymany zostanie komunikat ICMP unreachable (typ 3, kod 1, 2, 3, 9, 10 lub 13).

Główną zaleta tych typów skanowania jest to, że potrafią się one przemykać przez bezstanowe systemy zaporowe i filtrowanie na routerach. Inną zaletą jest tylko minimalnie większa wykrywalność niż skanowania SYN. Nie można jednak na to liczyć - większość nowych systemów IDS może zostać skonfigurowana do ich wykrywania. Ujemną stroną jest to, że nie wszystkie systemy są zgodne z RFC793. Wiele systemów wysyła odpowiedzi RST niezależnie od tego czy port jest otwarty czy nie. Powoduje to, że wszystkie porty pojawiają się jako zamknięty. Najczęściej spotykane systemy, które się tak zachowują to Microsoft Windows, wiele urządzeń Cisco, BSDI, i IBM OS/400. Skanowania działają jednak dobrze w przypadku większości systemów UNIXowych. Kolejnym minusem tych metod jest to, że nie potrafią rozróżnić portów oznaczonych jako otwarty od filtrowany, ujawniając jedynie stan otwarty|filtrowany.

-sA (Skanowanie TCP ACK)

Ten typ skanowanie jest inny niż omawiane powyżej, bo nigdy nie wykrywa stanów portów otwarty (lub nawet otwarty|filtrowany). Jest wykorzystywany do mapowania reguł filtrowania, do sprawdzania czy fitrowanie jest oparte o stany (stateful) lub nie i które porty są filtrowane.

Pakiety skanowania ACK posiadają tylko flagę ACK (o ile nie została użyta opcja --scanflags). Podczas skanowania systemów nie posiadających filtrowania, porty o stanach otwarty i zamknięty zwrócą pakiet RST. W obu przypadkach Nmap oznaczy je jako niefiltrowane, co oznacza, że były osiągalne dla pakietu ACK, ale nie zostało określone, czy posiadają stan otwarty czy zamknięty. Porty, które nie odpowiedzą lub odpowiedzą za pomocą komunikatu o błędzie ICMP (typ 3, kody 1, 2, 3, 9, 10 lub 13), zostaną oznaczone jako filtrowany.

-sW (Skanowanie TCP Window)

Skanowanie Window jest takie samo jak ACK, różnica polega na tym, że potrafi odróżnić porty otwarte od zamkniętych, zamiast zawsze podawać stan niefiltrowany, kiedy otrzymano flagę RST. Jest to realizowane poprzez analizę pola Window pakietu zwrotnego RST. Na niektórych systemach, otwarte porty zwracają dodatnią wartość rozmiaru okna (także w pakietach RST), a przy zamkniętych o rozmiarze zero. Tak więc zamiast zawsze przedstawiać port jako niefiltrowany kiedy w odpowiedzi przyjdzie RST, skanowanie Window oznacza port jako otwarty lub zamknięty, w zależności czy odpowiednio otrzymano w odpowiedzi rozmiar okna o wartości dodatniej lub zero.

Ten typ skanowania polega na szczególnej implementacji stosu TCP, występującej w rzadko spotykanych systemach w internecie, a więc nie można zawsze na niej polegać. Zwykle systemy, które nie obsługują tej metody będą zwracały porty oznaczone jako zamknięty. Oczywiście jest również możliwe, że host na prawdę nie ma otwartych portów. Jeśli większość przeskanowanych portów ma stan zamknięty, jednak niektóre (takie jak 22, 25 czy 53) mają stan filtrowany, system jest podejrzany. Czasami systemy potrafią się zachowywać zupełnie przeciwnie. Jeśli skanowanie wykaże 1000 otwartych portów i tylko 3 zamknięte lub filtrowane, wtedy te trzy prawdopodobnie są rzeczywiście otwarte.

-sM (Skanowanie TCP Maimon)

Skanowanie Maimon zostało nazwane na cześć jego odkrywcy, Uriela Maimona. Opisał tę technikę w Phrack Magazine w wydaniu #49 (Listopad 1996). Nmap, który potrafił wykorzystać tę technikę został wypuszczony dwa wydania później. Skanowanie to należy do rodziny Null, FIN i Xmass z tą różnicą, że używa flag FIN/ACK. Zgodnie z RFC 793 (TCP), dla takiej kombinacji flag, pakiet RST powinien być wygenerowany niezależnie czy port jest otwarty czy zamknięty. Jednakże Uriel zauważył, że wiele systemów opartych na BSD po prostu pomija odpowiedzi, jeśli port jest otwarty.

--scanflags (Skanowanie TCP z definiowanymi flagami)

Prawdziwie zaawansowani użytkownicy Nmapa nie mogą być ograniczani ilością oferowanych wbudowanych typów skanowania. Opcja --scanflags pozwala na projektowanie własnych typów skanowania z wykorzystaniem wybranych flag TCP. Cieszcie się podczas wykorzystywania tej techniki do oszukiwania systemów IDS, których twórcy pobieżnie przeglądali dokumentację Nmapa dodając specyficzne reguły!

Argument opcji --scanflags może być numerycznym zapisem flag, np 9 (PSH i FIN), lub dla ułatwienia można wykorzystywać symbliczne nazwy. Można podać dowolną kombinację flag URG, ACK, PSH, RST, SYN i FIN. Na przykład --scanflags URGACKPSHRSTSYNFIN ustawia wszystkie flagi, choć nie jest to zbyt użyteczna metoda skanowania. Kolejność podawania flag nie jest istotna.

Dodatkowo przy podawaniu wybranych flag możliwe jest podanie typu skanowania (takiego jak -sA lub -sF). Dodany typ skanowania informuje Nmapa jak ma interpretować otrzymane odpowiedzi. Na przykład skanowanie SYN zakłada, że brak odpowiedzi oznacza stan portu filtrowany, podczas gdy skanowanie FIN potraktuje ten go jako otwarty|filtrowany. Nmap będzie się zachowywał w taki sam sposób jak przy wybranym trybie skanowania, jednak wykorzystane zostaną podane flagi. Jeśli bazowy typ skanowania nie zostanie określony, zostanie wykorzystany domyślny typ SYN.

-sI <zombie host[:probeport]> (Skanowanie Idle)

Ta zaawansowana technika skanowania pozwala na prawdziwie ślepe skanowanie TCP (co oznacza, że żaden pakiet nie zostanie wysłany do badanego systemu z prawdziwego adresu IP Nmapa). Zamiast tego wykorzystany zostanie host zombie, o przwidywalnym działaniu stosu TCP polegającym na sekwencyjnym powiększaniu numerów ID pakietów, do uzyskania informacji o otwartych portach w badanym systemie. Systemy detekcji intruzów pokażą jako adres atakującego zdefiniowany host zombie (musi spełniać określone warunki). Ten fascynujący typ skanowania jest zbyt skomplikowany żeby go dokładnie opisać w tej dokumentacji, dlatego napisałem oddzielny nieformalny dokument na ten temat ze szczegółowymi informacjami i jest on dostępny pod adresem https://nmap.org/book/idlescan.html.

Poza tym, że metoda ta jest niespotykanie poufna (z powodu jej ślepej natury), ten typ skanowania pozwala na mapowanie reguł zaufania pomiędzy maszynami bazujących na adresach IP. Wyniki zawierają otwarte porty, z punktu widzenia hosta zombie . Tak więc można próbować skanowania z wykorzystaniem różnych hostów zombie, które można traktować jako zaufane (poprzez router/reguły filtrowania pakietów).

Można po dwukropku dodać numer portu, jeśli chcemy go wykorzystać na hoście zombie do badania zmian IPID. W innym przypadku Nmap wykorzysta domyślnie port używany przez tcp ping (80).

-sO (Skanowanie protokołów IP)

Skanowanie to pozwala na wykrycie listy protokołów IP (TCP, ICMP, IGMP itp), które są dostępne na danym hoście. Technicznie nie jest to skanowanie portów, ponieważ sprawdza kolejne numery protokołów, a nie kolejne porty TCP czy UDP. Opcja ta nadal używa parametru -p do wybrania numerów protokołów do sprawdzenia, w formacie analogicznym do listy portów. Z tego powodu metoda ta została zaklasyfikowana jako skanowanie portów i dlatego znajduje się tutaj.

Poza swoją własną funkcjonalnością, skanowanie protokołów demonstruje potęgę oprogramowania open source. Podczas gdy podstawowa idea jest całkiem prosta, nie pomyślałem o jej dodaniu, jak również nie otrzymałem żadnej prośby o dodanie takiej funkcjonalności. Latem roku 2000, Gerhard Rieger opracował koncepcję, stworzył odpowiednią poprawkę i wysłał ją na listę dyskusyjną nmap-hackers. Włączyłem ją do drzewa Nmapa i wypuściłem nową wersję następnego dnia. Niewiele komercyjnych programów posiada użytkowników na tyle entuzjastycznych, żeby zaprojektować i stworzyć ich własne poprawki!

Skanowanie protokołów działa w sposób podobny do skanowania UDP, jednak zamiast iteracji po kolejnych numerach portu, w nagłówkach pakietów zmienia się 8-mio bitowy numer protokołu. Nagłówki są przeważnie puste, nie zawierają żadnych danych ani nawet poprawnego dla danego protokołu nagłówka. Trzema wyjątkami są TCP, UDP i ICMP. Poprawne nagłówki dla tych protokołów są konieczne, ponieważ niektóre systemy nie będą ich potrafiły wysłać oraz dlatego, że Nmap posiada już odpowiednie funkcje do ich tworzenia. Zamiast obserwować komunikaty ICMP unreachable, skanowanie protokołów nie polega na komunikatach ICMP protocol unreachable. Jeśli Nmap otrzyma jakąkolwiek odpowiedź w jakimkolwiek protokole, ustala stan protokołu jako otwarty. Otrzymanie komunikatu ICMP protocol unreachable (typ 3, kod 2) powoduje oznaczenie protokołu jako zamknięty. Inne komuniakty ICMP protocol unreachable (typ 3, kody 1, 3, 9, 10 lub 13) powodują oznaczenie protokołu jako filtrowany (oraz równocześnie potwierdzają, że protokół ICMP jest również otwarty). Jeśli nie uzyskano odpowiedzi, protokół jest oznaczany jako otwarty|filtrowany.

-b <pośredniczący host ftp> (Skanowanie FTP bounce)

Interesującą funkcją protokołu FTP (RFC 959) jest wspieranie tak zwanych połączeń proxy. Pozwala to użytkownikowi na połączenie z jednym serwerem FTP i poproszenie o wysłanie plików do innego. Ta funkcjonalność była przyczyną nadużyć na wielu poziomach, dlatego wiele serwerów porzuciło dla niej wsparcie. Jednym z możliwych nadużyć jest sposobność do zmuszenia serwera do skanowania portów na zewnętrznym hoście. Wystarczy po prostu poprosić serwer o wysłanie pliku kolejno na każdy interesujący port badanego systemu. Uzyskany komunikat o błędzie zwróci informację, czy porty był otwarty czy zamknięty. Jest to dobra metoda do omijania systemów zaporowych, ponieważ korporacyjne serwery FTP często są umieszczane w takim miejscu, że mają możliwość komunikacji zarówno z hostami w internecie jak i w sieci lokalnej. Nmap obsługuje skanowanie FTP bounce z wykorzystaniem opcji -b. Opcja przyjmuje argument w postaci <nazwa_użytkownika>:<hasło>@<serwer>:<port>. <Serwer> jest nazwą lub adresem IP podatnego serwera FTP. Tak jak przy zwykłym adresie URL, można pominąć pola <nazwa_użytkownika>:<hasło>, w tym przypadku zostanie wykorzystana domyślna kombinacja dla użytkowników anonimowych (użytkownik anonymous hasło:-wwwuser@). Numer portu (i poprzedzający go dwukropek) również może zostać pominięty, w tym przypadku przy połączeniu z wybranym adresem <serwer>, zostanie wykorzystany domyślny port serwera FTP (21).

Podatność ta była szeroko spotykana w roku 1997, kiedy to Nmap został wypuszczony, jednak z biegiem czasu jej znaczenie bardzo się zmniejszyło. Dziurawe serwery FTP nadal się zdarzają, więc warto wyprubować i tę metodę, jeśli inne zawiodą. Jeśli potrzebne jest obejście systemu zaporowego, można przeskanować sieć w poszukiwaniu otwartych portów 21 (lub poprzez wyszukanie ftp na innych portach z wykorzystaniem opcji do wykrywania wersji) i wypróbować na wykrytych portach metodę bounce. Nmap poinformuje, czy usługa jest podatna czy nie. Jeśli chcesz ukrywać swoje działania, nie trzeba (i nie powinno) ograniczać się do hostów z badanej sieci. Przed rozpoczęciem skanowania losowych adresów w sieci Internet w poszukiwaniu podatnych wersji serwerów FTP trzeba mieć na uwadze, że wielu administratorów nie bedzie zachwyconych wykorzystywaniem ich serwerów w ten sposób.