-sL(Skanowanie listy)

Skanowanie listy jest zdegenerowaną formą wykrywania hostów, która po prostu wymienia każdy host z określonej sieci (sieci), bez wysyłania jakichkolwiek pakietów do hostów docelowych. Domyślnie, Nmap nadal wykonuje odwrotne rozwiązywanie DNS na hostach, aby poznać ich nazwy. Często zaskakujące jest jak wiele użytecznych informacji dostarczają proste nazwy hostów. Dla przykładu, fw.chi jest nazwą firewalla pewnej firmy w Chicago. Nmap podaje również na końcu całkowitą liczbę adresów IP. Skanowanie listy jest dobrym sposobem na sprawdzenie, czy masz właściwe adresy IP dla swoich celów. Jeśli hosty sportują nazwy domen, których nie rozpoznajesz, warto to sprawdzić, aby uniknąć skanowania sieci niewłaściwej firmy.

Ponieważ ideą jest po prostu wydrukowanie listy hostów docelowych, opcje funkcjonalności wyższego poziomu, takie jak skanowanie portów, wykrywanie systemów operacyjnych lub wykrywanie hostów nie mogą być z tym połączone. Jeśli chcesz wyłączyć wykrywanie hostów, a jednocześnie nadal wykonywać takie funkcje wyższego poziomu, zapoznaj się z opcją -Pn (pomiń wykrywanie hostów).

-sn(Bez skanowania portów)

Ta opcja mówi Nmapowi, aby nie wykonywał skanowania portów po wykryciu hosta i wypisywał tylko dostępne hosty, które odpowiedziały na sondy wykrywające hosty. Jest to często znane jako „ping scan”, ale można również zażądać uruchomienia skryptów traceroute i NSE. Jest to domyślnie o jeden krok bardziej inwazyjne niż skanowanie listy, a często może być używane do tych samych celów. Pozwala on na lekki rekonesans sieci docelowej bez przyciągania większej uwagi. Wiedza o tym, ile hostów jest włączonych, jest bardziej wartościowa dla atakujących niż lista dostarczona przez skanowanie listą każdego pojedynczego IP i nazwy hosta.

Administratorzy systemów często uważają tę opcję za wartościową. Można ją łatwo wykorzystać do zliczania dostępnych maszyn w sieci lub monitorowania dostępności serwerów. Jest to często nazywane ping sweep i jest bardziej niezawodne niż pingowanie adresu rozgłoszeniowego, ponieważ wiele hostów nie odpowiada na zapytania rozgłoszeniowe.

Domyślne odkrywanie hosta wykonywane za pomocą -sn składa się z żądania ICMP echo, TCP SYN na port 443, TCP ACK na port 80 i domyślnie żądania ICMP timestamp. Podczas wykonywania przez nieuprzywilejowanego użytkownika, wysyłane są tylko pakiety SYN (przy użyciu wywołania connect) na porty 80 i 443 na obiekcie docelowym. Gdy użytkownik uprzywilejowany próbuje skanować cele w lokalnej sieci ethernetowej, używane są żądania ARP, chyba że podano opcję --send-ip. Opcję -sn można połączyć z dowolnym typem sondy wykrywania (opcje -P*) w celu uzyskania większej elastyczności. Jeśli użyto dowolnej z tych opcji typu sondy i numeru portu, domyślne sondy są zastępowane. Jeśli pomiędzy hostem źródłowym Nmapa a siecią docelową istnieją ścisłe zapory sieciowe, zalecane jest użycie tych zaawansowanych technik. W przeciwnym razie hosty mogą zostać pominięte, gdy firewall porzuci sondy lub ich odpowiedzi.

W poprzednich wydaniach Nmapa, -sn był znany jako -sP.

-Pn(No ping)

Ta opcja pomija całkowicie etap wykrywania hosta. Normalnie Nmap używa tego etapu do określenia aktywnych maszyn, które będą skanowane w większym stopniu oraz do oceny szybkości sieci. Domyślnie Nmap przeprowadza tylko ciężkie sondowanie, takie jak skanowanie portów, wykrywanie wersji lub wykrywanie systemu operacyjnego w stosunku do hostów, które zostały wykryte jako aktywne. Wyłączenie wykrywania hostów za pomocą -Pn powoduje, że Nmap próbuje wykonać żądane funkcje skanowania dla każdego podanego docelowego adresu IP. Jeśli więc w linii poleceń podana jest sieć o rozmiarze /16, skanowane są wszystkie 65 536 adresów IP. Właściwe wykrywanie hostów jest pomijane, tak jak w przypadku skanowania z listy, ale zamiast zatrzymywać się i drukować listę adresów docelowych, Nmap kontynuuje wykonywanie żądanych funkcji, tak jakby każdy docelowy adres IP był aktywny. Używane są domyślne parametry czasowe, co może skutkować wolniejszym skanowaniem. Aby pominąć wykrywanie hostów i skanowanie portów, jednocześnie pozwalając na działanie NSE, należy użyć dwóch opcji -Pn -sn razem.

Dla maszyn w lokalnej sieci ethernet, skanowanie ARP będzie nadal wykonywane (chyba, że podano --disable-arp-ping lub --send-ip), ponieważ Nmap potrzebuje adresów MAC do dalszego skanowania hostów docelowych. W poprzednich wersjach Nmapa, -Pn było -P0 i -PN.

-PS <port list>(TCP SYN Ping)

Ta opcja wysyła pusty pakiet TCP z ustawioną flagą SYN. Domyślnym portem docelowym jest 80 (konfigurowalny w czasie kompilacji przez zmianę DEFAULT_TCP_PROBE_PORT_SPEC w nmap.h). Alternatywne porty mogą być podane jako parametr. Składnia jest taka sama jak dla -p z wyjątkiem tego, że specyfikatory typu portu takie jak T: nie są dozwolone. Przykładami są -PS22 i -PS22-25,80,113,1050,35000. Zauważ, że między -PS a listą portów nie może być spacji. Jeśli podano wiele sond, będą one wysyłane równolegle.

Flaga SYN sugeruje zdalnemu systemowi, że próbujesz nawiązać połączenie. Zazwyczaj port docelowy zostanie zamknięty, a pakiet RST (reset) odesłany. Jeśli port jest otwarty, system docelowy wykona drugi krok trójstronnego uścisku dłoni TCP, odpowiadając pakietem SYN/ACK TCP. Maszyna z uruchomionym Nmapem zrywa wtedy powstające połączenie odpowiadając pakietem RST zamiast wysłać pakiet ACK, który zakończyłby trójstronny uścisk dłoni i ustanowił pełne połączenie. Pakiet RST jest wysyłany przez jądro maszyny z uruchomionym Nmapem w odpowiedzi na nieoczekiwany SYN/ACK, a nie przez sam Nmap.

Nmap nie dba o to, czy port jest otwarty czy zamknięty. Albo odpowiedź RST albo SYN/ACK, omówione wcześniej, mówią Nmapowi, że host jest dostępny i odpowiada.

Na systemach Unix, tylko uprzywilejowany użytkownik root jest w stanie wysyłać i odbierać surowe pakiety TCP. W przypadku użytkowników nieuprzywilejowanych automatycznie stosowane jest obejście, polegające na zainicjowaniu wywołania systemowego connect na każdym porcie docelowym. Skutkuje to wysłaniem pakietu SYN do hosta docelowego, w celu nawiązania połączenia. Jeśli connect zwróci szybki sukces lub niepowodzenie ECONNREFUSED, bazowy stos TCP musiał otrzymać SYN/ACK lub RST, a host jest oznaczony jako dostępny. Jeśli próba połączenia jest zawieszona aż do osiągnięcia limitu czasu, host jest oznaczany jako wyłączony.

-PA <port list>(TCP ACK Ping)

TCP ACK ping jest dość podobny do właśnie omówionego SYN ping. Różnica, jak zapewne się domyślasz, polega na tym, że zamiast flagi SYN ustawiana jest flaga TCP ACK. Taki pakiet ACK rzekomo potwierdza przesyłanie danych przez ustanowione połączenie TCP, ale takie połączenie nie istnieje. Dlatego zdalne hosty powinny zawsze odpowiadać pakietem RST, ujawniając przy okazji swoje istnienie.

Opcja -PA używa tego samego domyślnego portu, co sonda SYN (80) i może również przyjmować listę portów docelowych w tym samym formacie. Jeśli spróbuje tego nieuprzywilejowany użytkownik, zostanie zastosowane omówione wcześniej obejście connect. To obejście jest niedoskonałe, ponieważ connect w rzeczywistości wysyła pakiet SYN, a nie ACK.

Powodem oferowania sond pingowych zarówno SYN, jak i ACK jest maksymalizacja szans na ominięcie firewalli. Wielu administratorów konfiguruje routery i inne proste zapory sieciowe tak, aby blokowały przychodzące pakiety SYN z wyjątkiem tych, które są przeznaczone dla usług publicznych, takich jak firmowa strona WWW lub serwer pocztowy. Zapobiega to innym połączeniom przychodzącym do organizacji, pozwalając jednocześnie użytkownikom na swobodne nawiązywanie połączeń wychodzących do Internetu. To nie-stateful podejście zajmuje niewiele zasobów na firewallu/routerze i jest szeroko wspierane przez filtry sprzętowe i programowe. Linuksowe oprogramowanie zapory Netfilter/iptables oferuje wygodną opcję --syn do implementacji tego bezpaństwowego podejścia. Gdy stosowane są bezstanowe reguły zapory, takie jak ta, sondy ping SYN (-PS) mogą zostać zablokowane, gdy są wysyłane na zamknięte porty docelowe. W takich przypadkach sonda ACK błyszczy, ponieważ przecina te reguły.

Inny popularny typ firewalla wykorzystuje reguły typu stateful, które odrzucają nieoczekiwane pakiety. Funkcja ta była początkowo spotykana głównie w firewallach wysokiej klasy, ale z biegiem lat stała się znacznie bardziej powszechna. Linuksowy system Netfilter/iptables obsługuje to poprzez opcję --state, która kategoryzuje pakiety na podstawie stanu połączenia. Sonda SYN ma większe szanse zadziałać przeciwko takiemu systemowi, ponieważ nieoczekiwane pakiety ACK są zazwyczaj rozpoznawane jako fałszywe i odrzucane. Rozwiązaniem tego dylematu jest wysyłanie zarówno sond SYN jak i ACK przez podanie wartości -PS i -PA.

-PU <port list>(UDP Ping)

Inną opcją wykrywania hostów jest UDP ping, która wysyła pakiet UDP na podane porty. Dla większości portów, pakiet będzie pusty, choć niektóre używają specyficznego dla protokołu payloadu, który z większym prawdopodobieństwem wywoła odpowiedź.Zobacz sekcję nazwaną „UDP payloads: nmap-payloads„, aby zapoznać się z opisem bazy danych ładunków płatnych.Na zawartość pakietu można również wpływać za pomocą opcji --data,--data-string i --data-length.

Lista portów przyjmuje taki sam format, jak w przypadku wcześniej omówionych opcji -PS i -PA. Jeśli nie podano portów, domyślnie jest to 40125. Domyślność tę można skonfigurować w czasie kompilacji przez zmianę DEFAULT_UDP_PROBE_PORT_SPEC w nmap.h. Domyślnie używany jest bardzo rzadki port, ponieważ wysyłanie na otwarte porty jest często niepożądane dla tego konkretnego typu skanowania.

Po trafieniu na zamknięty port na komputerze docelowym, sonda UDP powinna otrzymać w zamian pakiet ICMP port unreachable. Oznacza to dla Nmapa, że maszyna jest włączona i dostępna. Wiele innych typów błędów ICMP, takich jak host/sieć nieosiągalne lub przekroczenie TTL, wskazuje na niedziałającego lub nieosiągalnego hosta. Brak odpowiedzi jest również interpretowany w ten sposób. Jeśli osiągnięty zostanie otwarty port, większość usług po prostu ignoruje pusty pakiet i nie zwraca żadnej odpowiedzi. Z tego powodu domyślnym portem sondy jest 40125, który najprawdopodobniej nie jest używany. Niektóre usługi, takie jak protokół Character Generator (chargen), odpowiedzą na pusty pakiet UDP i w ten sposób ujawnią Nmapowi, że maszyna jest dostępna.

Podstawową zaletą tego typu skanowania jest to, że omija ono firewalle i filtry, które przepuszczają tylko TCP. Na przykład, posiadałem kiedyś bezprzewodowy router szerokopasmowy Linksys BEFW11S4. Zewnętrzny interfejs tego urządzenia domyślnie filtrował wszystkie porty TCP, ale sondy UDP nadal wywoływałyby komunikaty port unreachable i w ten sposób zdradzałyby urządzenie.

-PY <port list>(SCTP INIT Ping)

Ta opcja wysyła pakiet SCTP zawierający minimalny pakiet INIT. Domyślny port docelowy to 80 (konfigurowalny w czasie kompilacji przez zmianę DEFAULT_SCTP_PROBE_PORT_SPEC w nmap.h). Alternatywne porty mogą być podane jako parametr. Składnia jest taka sama jak dla -p z wyjątkiem tego, że specyfikatory typu portu takie jak S: nie są dozwolone. Przykładami są -PY22 i -PY22,80,179,5060. Zauważ, że między -PY a listą portów nie może być spacji. Jeśli podano wiele sond, zostaną one wysłane równolegle.

Fragment INIT sugeruje zdalnemu systemowi, że próbujesz ustanowić połączenie. Zazwyczaj port docelowy będzie zamknięty i zostanie odesłany chunk ABORT. Jeśli port jest otwarty, system docelowy wykona drugi krok w czterostronnym handshake’u SCTP, odpowiadając chunk’iem INIT-ACK. Jeśli maszyna, na której działa Nmap, posiada funkcjonalny stos SCTP, wówczas niszczy ona powstające połączenie odpowiadając pakietem ABORT zamiast wysyłać pakiet COOKIE-ECHO, który byłby kolejnym krokiem w czterostronnym handshake’u. Pakiet ABORT jest wysyłany przez jądro maszyny z uruchomionym Nmapem w odpowiedzi na nieoczekiwany INIT-ACK, a nie przez samego Nmapa.

Nmap nie dba o to, czy port jest otwarty czy zamknięty. Albo odpowiedź ABORT albo INIT-ACK, omówione wcześniej, mówią Nmapowi, że host jest dostępny i odpowiada.

Na systemach Unix, tylko uprzywilejowany użytkownik root jest ogólnie zdolny do wysyłania i odbierania surowych pakietów SCTP. Użycie SCTP INIT Pings nie jest obecnie możliwe dla nieuprzywilejowanych użytkowników.

-PE;-PP;-PM(ICMP Ping Types)

Oprócz nietypowych typów TCP, UDP i SCTP host discovery omówionych wcześniej, Nmap może wysyłać standardowe pakiety wysyłane przez wszechobecny program ping. Nmap wysyła pakiet ICMP typu 8 (echo request) do docelowych adresów IP, oczekując w zamian pakietu typu 0 (echo reply) od dostępnych hostów. Niestety dla badaczy sieci, wiele hostów i firewalli blokuje te pakiety, zamiast odpowiadać na nie zgodnie z wymogami RFC 1122. Z tego powodu skanowanie tylko za pomocą ICMP rzadko jest wystarczająco niezawodne w walce z nieznanymi celami w Internecie. Jednak dla administratorów systemów monitorujących sieć wewnętrzną może to być praktyczne i efektywne podejście. Użyj opcji -PE, aby włączyć to zachowanie echo request.

Choć echo request jest standardowym zapytaniem ICMP ping, Nmap na tym nie poprzestaje. Standardy ICMP (RFC 792 i RFC 950 ) określają również pakiety żądania znacznika czasu, żądania informacji i żądania maski adresu jako kody odpowiednio 13, 15 i 17. Chociaż pozornym celem tych zapytań jest uzyskanie informacji takich jak maski adresów i aktualny czas, mogą być one łatwo wykorzystane do odkrywania hostów. System, który odpowiada jest aktywny i dostępny. Nmap nie implementuje obecnie pakietów żądania informacji, ponieważ nie są one szeroko obsługiwane. RFC 1122 podkreśla, że „host NIE POWINIEN implementować tych wiadomości”. Zapytania o znacznik czasu i maskę adresu mogą być wysyłane odpowiednio z opcją -PP i -PM. Odpowiedź timestamp (kod ICMP 14) lub odpowiedź maski adresowej (kod 18) ujawnia, że host jest dostępny. Te dwa zapytania mogą być cenne, gdy administratorzy specjalnie blokują pakiety żądania echa zapominając, że inne zapytania ICMP mogą być użyte w tym samym celu.

-PO <protocol list>(IP Protocol Ping)

Jedną z nowszych opcji odkrywania hostów jest protokół IP ping, który wysyła pakiety IP z określonym numerem protokołu ustawionym w ich nagłówku IP. Lista protokołów ma taki sam format jak listy portów w poprzednio omawianych opcjach wykrywania hostów TCP, UDP i SCTP. Jeśli nie podano żadnych protokołów, domyślnie wysyłanych jest wiele pakietów IP dla ICMP (protokół 1), IGMP (protokół 2) oraz IP-in-IP (protokół 4). Domyślne protokoły można skonfigurować w czasie kompilacji, zmieniając DEFAULT_PROTO_PROBE_PORT_SPEC w nmap.h. Zauważ, że w przypadku protokołów ICMP, IGMP, TCP (protokół 6), UDP (protokół 17) i SCTP (protokół 132) pakiety są wysyłane z odpowiednimi nagłówkami protokołów, podczas gdy inne protokoły są wysyłane bez dodatkowych danych poza nagłówkiem IP (chyba że określono którąś z opcji --data, --data-string lub --data-length).

Ta metoda wykrywania hosta szuka albo odpowiedzi używających tego samego protokołu co sonda, albo komunikatów ICMP protocol unreachable, które oznaczają, że dany protokół nie jest obsługiwany na hoście docelowym. Każdy z tych typów odpowiedzi oznacza, że host docelowy żyje.

--disable-arp-ping(No ARP or ND Ping)

Nmap normalnie wykonuje ARP lub IPv6 Neighbor Discovery (ND) discovery lokalnie podłączonych hostów ethernetowych, nawet jeśli używane są inne opcje wykrywania hostów, takie jak -Pn lub -PE. Aby wyłączyć to niejawne zachowanie, należy użyć opcji --disable-arp-ping.

Domyślne zachowanie jest zazwyczaj szybsze, ale ta opcja jest przydatna w sieciach używających proxy ARP, w których router spekulacyjnie odpowiada na wszystkie żądania ARP, sprawiając, że każdy cel wydaje się być aktywny zgodnie ze skanowaniem ARP.

--discovery-ignore-rst

W niektórych przypadkach, firewalle mogą spoofować odpowiedzi TCP reset (RST) w odpowiedzi na sondowanie niezajętych lub niedozwolonych adresów. Ponieważ Nmap zazwyczaj traktuje odpowiedzi RST jako dowód, że cel jest aktywny, może to prowadzić do straty czasu na skanowanie celów, których nie ma. Użycie --discovery-ignore-rst spowoduje, że Nmap nie będzie brał pod uwagę tych odpowiedzi podczas wykrywania hostów. Może być konieczne wybranie dodatkowych opcji wykrywania hostów, aby upewnić się, że nie przegapisz celów w tym przypadku.

--traceroute(Śledzenie ścieżki do hosta)

Śledzenie jest wykonywane po skanowaniu przy użyciu informacji z wyników skanowania w celu określenia portu i protokołu, który najprawdopodobniej dotrze do celu. Działa ze wszystkimi typami skanowania z wyjątkiem skanowania łączącego (-sT) i skanowania bezczynności (-sI). Wszystkie ślady używają dynamicznego modelu czasowego Nmapa i są wykonywane równolegle.

Traceroute działa poprzez wysyłanie pakietów z niskim TTL (time-to-live) w celu wywołania komunikatów ICMP Time Exceeded z pośrednich węzłów pomiędzy skanerem a hostem docelowym. Standardowe implementacje traceroute zaczynają od TTL równego 1 i zwiększają TTL aż do osiągnięcia hosta docelowego. Traceroute Nmapa zaczyna się od wysokiego TTL i następnie zmniejsza TTL aż do osiągnięcia zera. Odwrotne działanie pozwala Nmapowi na zastosowanie sprytnych algorytmów buforowania, aby przyspieszyć śledzenie wielu hostów. Średnio Nmap wysyła 5-10 pakietów mniej na hosta, w zależności od warunków sieciowych. Jeśli skanowana jest pojedyncza podsieć (np. 192.168.0.0/24) Nmap może być zmuszony do wysłania tylko dwóch pakietów do większości hostów.

-n(No DNS resolution)

Mówi Nmapowi, aby nigdy nie wykonywał odwrotnego rozwiązywania DNS na aktywnych adresach IP, które znajdzie. Ponieważ DNS może być powolny nawet z wbudowanym równoległym resolverem Nmapa, ta opcja może skrócić czas skanowania.

-R(DNS resolution for all targets)

Mówi Nmapowi, aby zawsze wykonywał odwrotne rozwiązywanie DNS na docelowych adresach IP. Normalnie odwrotne DNS jest wykonywane tylko dla hostów reagujących (online).

--resolve-all(Skanuj każdy rozwiązany adres)

Jeśli docelowa nazwa hosta rozwiązuje się do więcej niż jednego adresu, przeskanuj je wszystkie. Domyślnym zachowaniem jest skanowanie tylko pierwszego rozwiązanego adresu. Niezależnie od tego, skanowane będą tylko adresy z odpowiedniej rodziny adresów: IPv4 domyślnie, IPv6 z -6.

--system-dns(Użyj systemowego resolwera DNS)

Domyślnie Nmap rozwiązuje adresy IP poprzez wysyłanie zapytań bezpośrednio do serwerów nazw skonfigurowanych na hoście, a następnie nasłuchiwanie odpowiedzi. Wiele zapytań (często dziesiątki) jest wykonywanych równolegle, aby poprawić wydajność. Podanie tej opcji spowoduje, że zamiast tego będzie używany resolver systemowy (po jednym IP na raz poprzez wywołanie getnameinfo). Jest to wolniejsze i rzadko użyteczne, chyba że znajdziesz błąd w równoległym resolverze Nmapa (proszę daj nam znać jeśli tak się stanie). Systemowy resolver jest zawsze używany do forward lookups (uzyskiwania adresu IP z nazwy hosta).

--dns-servers <server1>] (Serwery do użycia dla odwrotnych zapytań DNS)

Domyślnie Nmap określa serwery DNS (dla rozdzielczości rDNS) z pliku resolv.conf (Unix) lub Rejestru (Win32). Alternatywnie, można użyć tej opcji do określenia alternatywnych serwerów. Ta opcja nie jest honorowana, jeśli używasz --system-dns. Używanie wielu serwerów DNS jest często szybsze, zwłaszcza jeśli wybierzesz serwery autorytatywne dla docelowej przestrzeni IP. Opcja ta może również poprawić ukrywanie, ponieważ twoje żądania mogą być odbijane od niemal każdego rekurencyjnego serwera DNS w Internecie.

Opcja ta przydaje się również podczas skanowania sieci prywatnych. Czasami tylko kilka serwerów nazw dostarcza prawidłowych informacji rDNS, a Ty możesz nawet nie wiedzieć, gdzie one się znajdują. Możesz przeskanować sieć w poszukiwaniu portu 53 (być może z wykrywaniem wersji), a następnie spróbować skanowania listy Nmap (-sL), określając każdy serwer nazw po kolei za pomocą --dns-servers, aż znajdziesz jeden, który działa.

Ta opcja może nie być honorowana, jeśli odpowiedź DNS przekracza rozmiar pakietu UDP. W takiej sytuacji nasz resolver DNS dołoży wszelkich starań, aby wydobyć odpowiedź z obciętego pakietu, a jeśli się to nie uda, powróci do korzystania z resolvera systemowego. Również odpowiedzi, które zawierają aliasy CNAME powrócą do resolwera systemowego.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.