Poniżej znajdziesz 20 podstawowych przykłady użycia polecenia Nmap.

Dowiesz się, jak korzystać z Nmapa od wiersz poleceń w linux wyszukiwanie aktywnych hostów w sieci i skanowanie otwartych portów.

Zobaczysz jak zdalnie wykryć system operacyjny używanie odcisków palców stosu TCP/IP i jak sprawdź wersję oprogramowania działa na zdalnym serwerze.

Pokażę Ci również, jak używać Nmapa do implementacji ukryte skanowanie, Jak zdefiniuj zaporę I jak zmień adres MAC.

1. Skanuj pojedynczy host lub adres IP

Skanowanie Oddzielny adres IP:

$ nmap 192.168.1.1

Skanuj serwer przez Nazwa hosta:

$ nmap server.site

Zwiększać Poziom detali wyniki skanowania:

$ nmap -v serwer..strona

2. Skanowanie wielu adresów IP

Skanowanie Wiele adresów IP:

$ nmap 192.168.1.1 192.168.1.2 192.168.1.3 $ nmap 192.168.1.1,2,3

Skanowanie Podsieć:

$ nmap 192.168.1.0/24 $ nmap 192.168.1.*

Skanowanie Zakres adresów IP (192.168.1.0 — 192.168.1.200):

$ nmap 192.168.1.0-200

3. Wyszukaj aktywne komputery w sieci

Przydatna rada: Skanuj sieć jednym poleceniem ping! Oblicz wszystkie aktywne komputery!

Skanuj sieć w wyszukiwarce Aktywni gospodarze:

$ nmap -sn 192.168.1.0/24

4. Skanowanie listy hostów z pliku

Zeskanuj listę hostów/sieci z Plik:

$ nmap -iL input.txt

Format pliku:

# Wpisy mogą być w dowolnym z formatów, # z którymi Nmap współpracuje z wiersza poleceń (adresy IP, nazwy hostów, CIDR, IPv6 lub zakresy # oktetów). Wpisy muszą być oddzielone co najmniej jedną spacją, tabulatorami # lub znakami nowej linii. $ cat input.txt server.site 192.168.1.0/24 192.168.2.1,2,3 192.168.3.0-200

5. Wykluczanie adresów IP/hostów/sieci ze skanowania

Wyklucz cele ze skanowania Nmapa:

$ nmap 192.168.1.0/24 --exclude 192.168.1.1 $ nmap 192.168.1.0/24 --exclude 192.168.1.1 192.168.1.5 $ nmap 192.168.1.0/24 --exclude 192.168.1.1,2,3

Wyklucz listę hosty pobrane z pliku:

$ nmap 192.168.1.0/24 --excludefile exclude.txt

Format pliku z wykluczonymi hostami jest taki sam jak powyżej.

6. Skanuj określone porty

Skanowanie Jeden port:

$ nmap -p 80 192.168.1.1

Skanowanie Wiele portów:

$ nmap -p 80 443 192.168.1.1

Skanowanie Zakres portów:

$ nmap -p 80-1000 192.168.1.1

Skanowanie Wszystkie porty:

$ nmap -p "*" 192.168.1.1

Zeskanuj kilka z najbardziej Wspólne porty:

$ nmap --top-ports 5 192.168.1.1 $ nmap --top-ports 10 192.168.1.1

7. Definicja obsługiwanych protokołów IP

Określ, które Protokoły IP(TCP, UDP, ICMP itp.) obsługuje zeskanowany host:

$ nmap -sO 192.168.1.1

8. Skanuj porty TCP/UDP

Skanowanie wszystkie porty TCP:

$ nmap -sT 192.168.1.1

Skanowanie niektóre porty TCP:

$ nmap -p T:80 192.168.1.1

Skanowanie wszystkie porty UDP:

$ nmap -sU 192.168.1.1

Skanowanie określone porty UDP:

$ nmap -p U:53 192.168.1.1

Łączenie skanów różnych portów:

$ nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.1.1

9. Szybkie skanowanie

Aktywuj Szybki trybłów:

$ nmap -F 192.168.1.1

* Skanuje mniej portów niż zwykłe skanowanie.

10. Pokaż powód stanu portu

Pokazać powód, przez co Nmap uważa, że ​​port jest w określonym stanie:

$ nmap -- powód 192.168.1.1

11. Pokaż tylko otwarte porty

Pokazać Tylko otwarte porty(lub ewentualnie otwarte):

$ nmap -- otwórz 192.168.1.1

12. Definicja systemu operacyjnego

Jeden z najbardziej sławnych funkcjonalność Nmap to zdalne wykrywanie systemu operacyjnego na podstawie analizy stosu TCP/IP.

Nmap wysyła serię pakietów TCP i UDP do zdalnego hosta i sprawdza odpowiedzi.

Po przeprowadzeniu wielu testów Nmap porównuje wyniki ze swoją bazą danych i, jeśli znajdzie dopasowanie, wyświetla informacje o systemie operacyjnym.

Włączyć Definicja systemu operacyjnego:

$ nmap -O 192.168.1.1

13. Określanie wersji Usług

Włączyć Określanie wersji usług:

$ nmap -sV 192.168.1.1

* Określa wersje programów działających na serwerze zdalnym.

14. Wykrywanie zapory

Dowiedz się, czy Twój komputer jest chroniony przez jakiekolwiek Filtry pakietów lub zapora sieciowa:

$ nmap -sA 192.168.1.1

15. Podszywanie się pod adres MAC

Zmiana Adres MAC a:

$ nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1

Zmień adres MAC Losowy MAC:

$ nmap --spoof-mac 0 192.168.1.1

16. Skanowanie zapory w poszukiwaniu luk

Te trzy typy skanowania wykorzystują subtelną lukę w RFC TCP do oddzielenia otwartych i zamkniętych portów.

Gdy skanowany jest system zgodny z RFC, każdy pakiet, który nie zawiera ustawionego bitu SYN, RST lub ACK, spowoduje wysłanie RST w odpowiedzi, jeśli port jest zamknięty, lub brak odpowiedzi, jeśli port jest otwarty .

Dlatego żaden z tych bitów nie jest ustawiony, wtedy dowolna kombinacja pozostałych trzech (FIN, PSH i URG) będzie ważna.

Zerowy TCPłów:

$ nmap -sN 192.168.1.1

* Nie są ustawione żadne bity (flagi w nagłówku TCP 0).

Finał TCPłów:

$ nmap -sF 192.168.1.1

* Ustawiony jest tylko bit TCP FIN.

Święta TCPłów:

$ nmap -sX 192.168.1.1

* Ustawione są flagi FIN, PSH i URG (pakiet świeci się jak choinka).

17. Ukryte skanowanie

Przydatna rada: Zachowaj anonimowość podczas skanowania portów! Użyj Nmap + Tor + ProxyChains! Bezpieczne i łatwe testy penetracyjne!

TCP SYNłów:

$ nmap -sS 192.168.0.1

* Znane jako skanowanie półotwartego połączenia, ponieważ nie otwiera pełnych połączeń TCP.

18. Wyłącz wykrywanie hosta (bez pingowania)

Nie pinguj hostów przed skanowaniem:

$ nmap -Pn 192.168.1.1

19. Wyłącz korzystanie z DNS

Przydatna rada: Chcesz wzmocnić zabezpieczenia w systemie Linux? Szyfruj ruch DNS, aby chronić się przed podszywaniem się!

Nigdy nie wykonuj odwrotnego rozpoznawania nazw DNS dla każdego znalezionego aktywnego adresu IP.

nmap[ <Тип сканирования> ...] [ <Опции> ] { <цель сканирования> }

Opis

nmap(" Mapowanie sieci ») to narzędzie z otwartym kod źródłowy do eksploracji sieci i testowania bezpieczeństwa. Został zaprojektowany do szybkiego skanowania dużych sieci, chociaż działa również dobrze w przypadku pojedynczych celów. Nmap wykorzystuje surowe pakiety IP w oryginalny sposób, aby określić, jakie hosty są dostępne w sieci, jakie usługi (nazwa i wersja aplikacji) oferują, jakich systemów operacyjnych (i wersji systemu operacyjnego) używają, jakie typy filtrów pakietów/zapory są używane i wiele innych innych cech. Chociaż Nmap jest powszechnie używany do sprawdzania bezpieczeństwa, wielu administratorów systemu uważa go za przydatny do typowych zadań, takich jak monitorowanie struktury sieci, zarządzanie harmonogramami uruchamiania usług i śledzenie czasu pracy hosta lub usługi.

Wyjściem Nmapa jest lista przeskanowanych celów z Dodatkowe informacje dla każdego z nich w zależności od podanych opcji. Kluczowe informacje to « tabela ważnych portów» . Ta tabela zawiera numer portu, protokół, nazwę usługi i stan. Status może być otwarty (otwarty), filtrowany (filtrowany), zamknięty (zamknięty) lub niefiltrowany (niefiltrowany). Otwarte oznacza, że ​​aplikacja na komputerze docelowym jest gotowa do łączenia/odbierania pakietów na tym porcie. Filtrowane oznacza, że ​​firewall, filtr sieci, lub jakieś inne zakłócenia sieciowe blokują port, a Nmap nie może określić, czy port jest otwarty, czy zamknięty. Zamknięte porty nie są powiązane z żadną aplikacją, ale można je otworzyć w dowolnym momencie. Porty są uważane za niefiltrowane, gdy odpowiadają na żądania Nmapa, ale Nmap nie może stwierdzić, czy są otwarte, czy zamknięte. Nmap wydaje kombinacje open|filter i closed|filtered, gdy nie może określić, który z dwóch stanów opisuje port. Ta tabela może również zawierać szczegółowe informacje na temat wersji oprogramowania, jeśli jest to wymagane. Podczas skanowania przez protokół IP (-sO), Nmap dostarcza informacji o obsługiwanych protokołach, a nie o otwartych portach.

Oprócz tabeli ważnych portów, Nmap może dostarczyć dodatkowe informacje o celu: rozpoznane nazwy DNS, odgadnięcia systemu operacyjnego, typy urządzeń i adresy MAC.

Typowy skan przy użyciu Nmapa pokazano w przykładzie 1. Jedyne argumenty użyte w tym przykładzie to -A , dla wersji systemu operacyjnego, skanowania skryptowego i śledzenia; -T4 dla szybszego wykonania; następnie dwa hosty docelowe.

Przykład 1. Typowy przykład skanowania za pomocą Nmap

# nmap -A -T4 scanme..org) Interesujące porty na scanme.site (64.13.134.52): (Przeskanowane porty 1663, ale nie pokazane poniżej są w stanie: filtrowane) STAN PORTU WERSJA USŁUGI 22/tcp open ssh OpenSSH 3.9p1 (protokół 1.99) 53/tcp otwarta domena 70/tcp zamknięta gopher 80/tcp otwarta http Apache httpd 2.0.52 ((Fedora)) 113/tcp zamknięta auth Typ urządzenia: ogólnego przeznaczenia Działa: Linux 2.4.X|2.5.X| 2.6.X Szczegóły systemu operacyjnego: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Interesujące porty na placu zabaw..168.0.40: (Przeskanowane porty 1659, ale nie pokazane poniżej są w stanie: zamknięte) PORT WERSJA USŁUGI STANOWEJ 135/tcp otwarte msrpc Microsoft Windows RPC 139/tcp otwarte netbios-ssn 389/tcp otwarte ldap? 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp open windows-icfw? 1025/tcp open msrpc Microsoft Windows RPC 1720/tcp open H.323/Q.931 CompTek AquaGateKeeper 5800/tcp open vnc-http RealVNC 4.0 (rozdzielczość 400x250; port VNC: 5900) 5900/tcp open vnc VNC (protokół 3.8) MAC Adres: 00:A0:CC:63:85:4B (komunikacja Lite-on) Typ urządzenia: ogólnego przeznaczenia Działa: Microsoft Windows NT/2K/XP Szczegóły systemu operacyjnego: Microsoft Windows XP Pro RC1+ do ostatecznej wersji Informacje o usłudze: Systemy operacyjne: Windows , Windows XP Nmap zakończony: 2 adresy IP (2 hosty w górę) przeskanowane w 88,392 sekundy


bardzo Nowa wersja Nmap można pobrać z

Istnieją cztery rodzaje skryptów NSE, a mianowicie:

  • Skrypty wstępne– to skrypty uruchamiane przed jakąkolwiek operacją skanowania Nmapa, są wykonywane, gdy Nmap nie zebrał jeszcze żadnych informacji o celu.
  • skrypty hosta– to skrypty wykonywane po wykonaniu przez Nmap normalnych operacji, takich jak wykrywanie hosta, skanowanie portów, wykrywanie wersji i wykrywanie systemu operacyjnego na docelowym hoście.
  • Skrypty serwisowe– to skrypty uruchamiane na określonych usługach nasłuchujących na hoście docelowym.
  • Skrypty postruli– są skryptami uruchamianymi po przeskanowaniu przez Nmapa wszystkich hostów docelowych.

Następnie te skrypty są pogrupowane w różne kategorie, w tym te do uwierzytelniania ( autoryzować), odkrywanie hostów ( audycja), ataki typu brute force w celu odgadnięcia danych uwierzytelniających ( bydlę), aby dowiedzieć się więcej o sieci ( odkrycie), powodując odmowę usługi ( dos), wykorzystując pewną lukę ( wykorzystać) itp. Wiele skryptów należy do kategorii domyślnej.

Notatka: Zanim przejdziemy dalej, zwróć uwagę na te kluczowe punkty:

  • Nie wykonuj skryptów stron trzecich bez krytycznego ich przejrzenia lub tylko wtedy, gdy ufasz autorom. Dzieje się tak, ponieważ te skrypty nie są uruchamiane w piaskownicy, a zatem mogą nieoczekiwanie lub złośliwie uszkodzić system lub naruszyć twoją prywatność.
  • Po drugie, wiele z tych skryptów może działać jako: zasada wstępna lub postulacja scenariusz. Biorąc to pod uwagę, zaleca się stosowanie reguły wstępnej w celu zachowania spójności.
  • Nmap używa skrypty/skrypt.db bazy danych, aby dowiedzieć się, jakie są dostępne domyślne skrypty i kategorie.

Aby zobaczyć lokalizację wszystkich dostępnych skryptów NSE, uruchom na terminalu w następujący sposób:

$ zlokalizować *.nse/usr/share/nmap/scripts/acarsd-info.nse /usr/share/nmap/scripts/address-info.nse /usr/share/nmap/scripts/afp-brute.nse /usr/share/nmap/scripts /afp-ls.nse /usr/share/nmap/scripts/afp-path-vuln.nse /usr/share/nmap/scripts/afp-serverinfo.nse /usr/share/nmap/scripts/afp-showmount.nse /usr/share/nmap/scripts/ajp-auth.nse /usr/share/nmap/scripts/ajp-brute.nse /usr/share/nmap/scripts/ajp-headers.nse /usr/share/nmap/scripts /ajp-methods.nse /usr/share/nmap/scripts/ajp-request.nse /usr/share/nmap/scripts/allseeingeye-info.nse /usr/share/nmap/scripts/amqp-info.nse /usr /share/nmap/scripts/asn-query.nse...

Skrypty NSE są ładowane za pomocą flagi --script , która umożliwia również uruchamianie własnych skryptów poprzez podanie kategorii, nazw plików skryptów lub nazw katalogów, w których znajdują się skrypty.

Składnia włączania skryptów jest następująca:

$ namp -sC cel #load domyślne skrypty LUB $ nmap --script nazwa pliku|kategoria|katalog|wyrażenie,... cel

Możesz wyświetlić opis skryptu za pomocą opcji --script-help. Dodatkowo możesz przekazać argumenty do niektórych skryptów za pomocą opcji --script-args i --script-args-file, ta ostatnia służy do podania nazwy pliku, a nie argumentu wiersza poleceń.

Aby wykonać skanowanie za pomocą większości domyślnych skryptów, użyj flagi -sC lub alternatywnie użyj --script=default, jak pokazano.

$ nmap -sC scanme.nmap.org LUB $ nmap --script=default scanme.nmap.org LUB $ nmap --script domyślna scanme.nmap.org

przykładowe wyjście
Od Nmapa 7.01 (https://nmap.org) o 15.11.2017 10:36 IST Raport skanowania Nmapa dla scanme.nmap.org (45.33.32.156) Host działa (opóźnienie 0,0027 s). Nie pokazano: 999 filtrowanych portów PORT STATE SERVICE 80/tcp open http |_http-title: Śmiało i ScanMe! Nmap gotowe: 1 adres IP (1 host w górę) przeskanowany w 11,74 sekundy

Aby użyć skryptu w odpowiednim celu, możesz najpierw uzyskać krótki opis tego, co on właściwie robi, na przykład nagłówki http.

$ nmap --script-help http-headers scanme.nmap.org

przykładowe wyjście
Uruchamianie Nmapa 7.01 (https://nmap.org) o 15.11.2017 10:37 IST http-headers Kategorie: wykrywanie bezpieczne https://nmap.org/nsedoc/scripts/http-headers.html Wykonuje żądanie HEAD dla folderu głównego ("/") serwera WWW i wyświetla zwrócone nagłówki HTTP.

Ładowanie skryptów NSE w celu wykonania skanowania Nmap

Możesz wybrać lub załadować skrypty do wykonania skanowania różnymi metodami opisanymi poniżej.

Korzystanie z nazwy skryptu

Gdy już wiesz, co robi skrypt, możesz go przeskanować. Możesz użyć jednego skryptu lub wprowadzić listę nazw skryptów oddzielonych przecinkami. Poniższe polecenie umożliwi przeglądanie nagłówków HTTP skonfigurowanych na serwerze sieciowym na hoście docelowym.

$ nmap --script http-headers scanme.nmap.org

Skanuj nagłówki HTTP

Począwszy od Nmapa 7.01 (https://nmap.org) o 15.11.2017 10:39 Raport ze skanowania Nmapa IST dla scanme.nmap.org (45.33.32.156) Host jest aktywny (opóźnienie 0,27s). Nie pokazano: 996 zamkniętych portów STAN PORTU USŁUGA 22/tcp otwarty ssh 80/tcp otwarty http | nagłówki http: | Data: środa, 15 listopada 2017 05:10:04 GMT | Serwer: Apache/2.4.7 (Ubuntu) | Accept-Ranges: bajty | Zmieniaj: Akceptuj-kodowanie | Połączenie: zamknij | Typ treści: text/html | |_ (Typ żądania: HEAD) 179/tcp filtrowane bgp 31337/tcp otwarte Elite Nmap wykonane: 1 adres IP (1 host w górę) przeskanowany w 20,96 sekundy

Korzystanie z kategorii

Możesz także załadować skrypty z jednej kategorii lub z listy oddzielonych przecinkami kategorii. W tym przykładzie używamy wszystkich skryptów z kategorii default i broadcast do przeprowadzenia skanowania na hoście 192.168.56.1 .

$ nmap --skrypt domyślny, transmisja 192.168.56.1

Korzystanie z *Wildcard

Jest to przydatne, gdy chcesz wybrać skrypty z podanym wzorcem nazwy. Na przykład, aby załadować wszystkie skrypty o nazwach zaczynających się od cisza, uruchom poniższe polecenie na terminalu:

$ nmap --script "ssh-*" 192.168.56.1

Korzystanie z wyrażeń logicznych

Możesz także wybrać skrypty za pomocą wyrażeń logicznych, które możesz zbudować za pomocą oraz, lub, oraz nie operatorów. A nazwy w wyrażeniu logicznym mogą być kategorią, nazwą pliku z skrypt.db lub wszystkie.

Następujące polecenie załaduje skrypty z kategorii domyślnej lub rozgłoszeniowej.

$ nmap --script "domyślny lub rozgłaszany" 192.168.56.10

Co jest równoznaczne z:

$ nmap --skrypt domyślny, nadawanie 192.168.56.10

Aby załadować wszystkie skrypty z pominięciem tych w wulgarny kategorii, uruchom to polecenie na terminalu.

$ nmap --script "not vuln" 192.168.56.10

Kolejne polecenie wygląda trochę skomplikowanie, ale jest łatwe do zrozumienia, wybiera skrypty w domyślnych lub rozgłoszeniowych kategoriach, pomijając te, których nazwy zaczynają się od ssh-:

$ nmap --script "(domyślny lub rozgłoszeniowy) a nie ssh-*" 192.168.56.10

Co ważne, możliwe jest łączenie kategorii, nazw skryptów, katalogu zawierającego własne skrypty lub wyrażenia logicznego w celu załadowania skryptów, na przykład:

$ nmap -- rozgłaszanie skryptu, vuln, metody ssh-auth,/ścieżka/do/niestandardowe/skrypty 192.168.56.10

Przekazywanie argumentów do skryptów NSE

Poniżej znajduje się przykład pokazujący, jak przekazać argumenty do skryptów za pomocą --argumenty-skryptu opcja:

$ nmap --script mysql-audit --script-args "mysql-audit.username="root", \ mysql-audit.password="hasło_tutaj", mysql-audit.filename="nselib/data/mysql-cis. rewizja""

Aby przekazać numer portu, użyj -p opcja nmap:

$ nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username="root", \ mysql-audit.password="hasło_tutaj" , mysql-audit.filename="nselib/data/mysql -cis.audyt""

Powyższe polecenie uruchamia audyt konfiguracji bezpieczeństwa serwera bazy danych MySQL w odniesieniu do części CIS MySQL v1.0.2 reper. Możesz również tworzyć własne, przydatne pliki audytu dla innych audytów MySQL.

Na razie to wszystko. Możesz znaleźć więcej informacji na stronie podręcznika nmap lub sprawdzić NSE Usage .

Aby rozpocząć pisanie własnych skryptów NSE, zapoznaj się z tym przewodnikiem: https://nmap.org/book/nse-tutorial.html

Wniosek

nmap jest naprawdę potężnym i użytecznym narzędziem, którego każdy administrator systemu lub sieci potrzebuje w swoim arsenale bezpieczeństwa – NSE po prostu dodaje mu większej wydajności.

W tym artykule przedstawiliśmy Ci Silnik skryptów Nmap i przyjrzeliśmy się, jak znaleźć i wykorzystać różne dostępne skrypty w różnych kategoriach. Jeśli masz jakieś pytania, nie wahaj się odpisać do nas za pomocą poniższego formularza komentarza.

Nmap to bardzo popularny skaner sieciowy typu open source, który może być używany zarówno w systemie Windows, jak i Linux. Nmap lub Network Mapper został opracowany przez Gordona Luona i jest obecnie używany przez specjalistów ds. bezpieczeństwa i administratorów systemów na całym świecie.

Ten program pomaga administratorom systemu bardzo szybko zrozumieć, które komputery są podłączone do sieci, poznać ich nazwy, a także zobaczyć, jakie oprogramowanie jest na nich zainstalowane, jaki system operacyjny i jakie typy filtrów są stosowane. Funkcjonalność programu można rozszerzyć o własny język skryptowy, co pozwala administratorom zautomatyzować wiele czynności.

Na przykład skrypty mogą automatycznie wykrywać nowe luki w zabezpieczeniach w Twojej sieci. Namp może być używany w dobrych lub złych intencjach, uważaj, aby nie używać nmap wbrew prawu. W tym samouczku przyjrzymy się, jak używać namp do skanowania portów w systemie operacyjnym Linux. Ale najpierw musisz spróbować zrozumieć, jak działa to narzędzie.

W sieciach komputerowych wszystkie podłączone urządzenia mają swój własny adres IP. Każdy komputer obsługuje protokół ping, za pomocą którego można określić, czy jest podłączony do sieci. Po prostu wysyłamy żądanie ping do komputera, a jeśli odpowie, zakładamy, że jest podłączony. Nmap ma nieco inne podejście. Komputery również reagują w określony sposób na określone pakiety sieciowe, narzędzie po prostu wysyła niezbędne pakiety i sprawdza, które hosty wysłały odpowiedź.

Ale prawdopodobnie już o tym wiesz. Bardziej interesujące jest to, skąd Nmap wie, które usługi są uruchomione na komputerze. Istota pracy wszystkich programów sieciowych opiera się na portach. Aby odebrać wiadomość z sieci, program musi otworzyć port na twoim komputerze i czekać na połączenia przychodzące. Aby wysłać wiadomość przez sieć, musisz połączyć się z innym portem programu (docelowym). Program będzie wtedy musiał otworzyć port, na którym będzie oczekiwał na odpowiedź.

Narzędzie nmap przegląda dostępny zakres portów, skanując sieć i próbując połączyć się z każdym z nich. Jeśli połączenie się powiedzie, w większości przypadków wysyłając kilka pakietów, program może nawet znaleźć wersję oprogramowania, która czeka na połączenia na tym porcie. Teraz, gdy omówiliśmy już podstawy, przyjrzyjmy się, jak używać nmapa do skanowania portów i sieci.

Składnia Nmap

Polecenie uruchamiania Nmapa jest bardzo proste, po prostu przekaż mu docelowy adres IP lub sieć w parametrach i określ opcje, jeśli to konieczne:

$ nmap opcje adresu

Przyjrzyjmy się teraz głównym opcjom, których będziemy potrzebować w tym artykule.

  • -sl- po prostu utwórz listę uruchomionych hostów, ale nie skanuj portów nmap;
  • -sP- sprawdź tylko, czy host jest osiągalny za pomocą polecenia ping;
  • -PN- rozważ wszystkie dostępne hosty, nawet jeśli nie odpowiadają na ping;
  • -sS/sT/sA/sW/sM- Skanowanie TCP;
  • -sU- nmap skanowania UDP;
  • -sN/sF/sX- skanowanie TCP NULL i FIN;
  • -sC- uruchom domyślny skrypt;
  • -si- leniwe skanowanie w czasie rzeczywistym;
  • -p- określ zakres portów do sprawdzenia;
  • -sV- szczegółowe badanie portów w celu określenia wersji usług;
  • -O- określić system operacyjny;
  • -T- prędkość skanowania, im więcej, tym szybciej;
  • -D- skanowanie maski przy użyciu fikcyjnych adresów IP;
  • -S- zmień swój adres IP na określony;
  • -mi- używać określonego interfejsu;
  • --spoof-mac- ustaw swój adres MAC;
  • -A- wykrywanie systemu operacyjnego za pomocą skryptów.

Teraz, gdy omówiliśmy wszystkie podstawowe opcje, porozmawiajmy o tym, jak działa skanowanie portów nmap.

Jak używać Nmapa do skanowania portów w systemie Linux?

Przyjrzyjmy się dalej przykładom nmap. Najpierw spójrzmy, jak znaleźć wszystkie urządzenia podłączone do sieci, do tego wystarczy użyć opcji -sL i określić naszą maskę sieci. w moim przypadku jest to 192.168.1.1/24. Możesz znaleźć maskę sieci lokalnej, uruchamiając polecenie:

Z danych wyjściowych używanego interfejsu weź liczbę po ukośniku, a przed ukośnikiem określ adres IP routera. Polecenie skanowania sieci nmap będzie wyglądać tak:

nmap -sL 192.168.1.1/24

Czasami to skanowanie może nie zwracać żadnych wyników, ponieważ niektóre systemy operacyjne mają ochronę skanowania portów. Ale można to ominąć, po prostu używając ping do skanowania wszystkich adresów IP w sieci, do tego jest opcja -sn:

nmap -sn 192.168.1.1/24

Jak widać, teraz program wykrył aktywne urządzenia w sieci. Następnie możemy przeskanować porty nmap w poszukiwaniu żądanego hosta, uruchamiając narzędzie bez opcji:

sudo nmap 192.168.1.1

Teraz widzimy, że mamy otwartych kilka portów, z których wszystkie są używane przez jakąś usługę na docelowej maszynie. Każdy z nich może być potencjalnie zagrożony, więc posiadanie wielu otwartych portów na komputerze nie jest bezpieczne. Ale to nie wszystko, co możesz zrobić, dalej dowiesz się, jak korzystać z nmap.

Aby uzyskać bardziej szczegółowe informacje o maszynie i uruchomionych na niej usługach, możesz użyć opcji -sV. Narzędzie połączy się z każdym portem i określi wszystkie dostępne informacje:

sudo nmap -sV 192.168.1.1

Na naszym komputerze działa ftp, więc możemy spróbować zbadać tę usługę bardziej szczegółowo, używając standardowych skryptów nmap. Skrypty pozwalają dokładniej sprawdzić port, znaleźć możliwe luki. Aby to zrobić, użyj opcji -sC i -p, aby ustawić port:

sudo nmap -sC 192.168.56.102 -p 21

Uruchomiliśmy domyślny skrypt, ale istnieją inne skrypty, na przykład wszystkie skrypty dla ftp można znaleźć za pomocą polecenia:

sudo find /usr/share/nmap/scripts/ -name "*.nse" | grep ftp

Następnie spróbujemy użyć jednego z nich, do tego wystarczy określić go za pomocą opcji --script. Ale najpierw możesz spojrzeć na informacje o skrypcie:

sudo nmap --script-help ftp-brute.nse

Ten skrypt spróbuje określić login i hasło FTP na zdalnym hoście. Następnie uruchom skrypt:

sudo nmap --script ftp-brute.nse 192.168.1.1 -p 21

W rezultacie skrypt pobrał login i hasło admin/admin. Dlatego nie musisz używać domyślnych opcji logowania.

Możesz również uruchomić narzędzie z opcją -A, która aktywuje bardziej agresywny tryb narzędzia, dzięki któremu uzyskasz większość informacji za pomocą jednego polecenia:

sudo nmap -A 192.168.1.1

Zauważ, że prawie wszystkie informacje, które widzieliśmy wcześniej, są tutaj zawarte. Może być użyty do zwiększenia obrony tej maszyny.

wnioski

W tym artykule przyjrzeliśmy się, jak odbywa się skanowanie portów nmap, a także kilka proste przykłady za pomocą tego narzędzia. Te polecenia nmap mogą być przydatne dla wielu administratorów systemów w celu poprawy bezpieczeństwa ich systemów. Ale to nie wszystkie możliwości narzędzia. Eksperymentuj z narzędziem, aby dowiedzieć się więcej, ale nie w sieciach innych osób!

o autorze

Założyciel i administrator serwisu, lubię oprogramowanie open source i system operacyjny Linux. Obecnie używam Ubuntu jako głównego systemu operacyjnego. Oprócz Linuksa interesuje mnie wszystko, co związane jest z informatyką i współczesną nauką.

Nmap to kultowy skaner, bez którego prawie żaden haker nie może się obejść, więc temat rozszerzenia jego możliwości, jak sądzę, jest interesujący dla wielu. Powszechną praktyką jest używanie innych narzędzi w połączeniu z Nmapem. W tym artykule dowiesz się, jak łatwo zautomatyzować Nmapa za pomocą ulubionych narzędzi. Wygodniej jest „nacisnąć jeden przycisk” i uzyskać wynik, niż ciągle wykonywać tę samą sekwencję działań. Korzystanie ze skryptów w Nmap może pomóc hakerom w bardziej automatycznym hakowaniu systemów, a administratorzy systemów mogą sprawdzać systemy pod kątem domyślnych dziur i naprawiać je w odpowiednim czasie.

Kilka słów o Nmap

Jestem pewien, że większość czytelników magazynu Hacker wie, czym jest Nmap i prawdopodobnie używało go więcej niż raz do eksploracji sieci i zbierania informacji. Dla tych, którzy zapomnieli lub nie wiedzą, na wszelki wypadek przypomnę:

  • Nmap to wieloplatformowe narzędzie do skanowania sieci, sprawdzania jej bezpieczeństwa, określania wersji systemu operacyjnego i różnych usług i wielu innych. Jest to bardzo elastyczne i łatwo rozszerzalne narzędzie, a silnik skryptowy NSE to umożliwia;
  • NSE (Nmap Scripting Engine) to potężny komponent Nmapa, który umożliwia użytkownikom pisanie skryptów automatyzujących szeroki zakres zadań sieciowych: bardziej elastyczną interakcję z istniejącymi możliwościami Nmapa, wykrywanie i wykorzystywanie luk w zabezpieczeniach i nie tylko. NSE opiera się na tłumaczu języka Lua;
  • Lua to język skryptowy podobny do JavaScript.

Sformułowanie problemu

Jak już wspomniano, dzisiaj będziemy rozszerzać funkcjonalność Nmapa, pisząc własne skrypty. Każdy hack/pentest zwykle zaczyna się od rozpoznania i zebrania danych. Jedną z pierwszych kontroli jest obecność otwartych portów na badanym hoście oraz identyfikacja uruchomionych usług. Najlepsze narzędzie do zbierania takich informacji niż Nmap, a może nie. Następnym krokiem po skanowaniu jest zwykle albo poszukiwanie splotu dla znalezionej podatnej na ataki usługi, albo wybranie pary login:hasło przy użyciu metody brute force.

Załóżmy, że aktywnie używasz brute-forcera THC-Hydra do odgadywania haseł kilku usług (na przykład HTTP-Basic, SSH, MySQL). W takim przypadku musisz ustawić hydrę na każdej usłudze osobno, musisz zapamiętać cechy usług i flagi niezbędne do uruchomienia hydry. A jeśli zajdzie potrzeba brutetowania znacznie więcej niż pięciu usług?.. Dlaczego by tego nie zautomatyzować?

Dlatego napiszmy prosty skrypt, który zautomatyzuje proces uruchamiania Hydry, aby wybrać loginy/hasła dla jednej usługi (np. PostgreSQL). Do tego potrzebujemy następujących narzędzi:

Jeśli nie masz jeszcze zainstalowanego Nmapa i/lub Hydry, napraw to natychmiast:

$ sudo apt-get zainstaluj nmap hydra

Dobra, zacznijmy. Skrypty dla Nmapa są zwykłe pliki tekstowe z rozszerzeniem *.nse. Otwórz więc swój ulubiony edytor tekstu i utwórz nowy plik. Użyję Vima:

$ vim hydra.nse

Struktura skryptu NSE

Zanim przejdziemy do pisania, trzeba powiedzieć, że wszystkie skrypty mają określoną strukturę. Oprócz samego kodu, który automatyzuje określone działania, zawiera opis skryptu (do czego jest przeznaczony i jak go używać), informacje o autorze, licencjach, zależności od innych skryptów, kategorie do których należy skrypt , i tak dalej. Przyjrzyjmy się bliżej każdej z tych części.

Opis skryptu (opis)

Ta sekcja zawiera opis skryptu, komentarze autora, przykład wyświetlania wyniku wykonania skryptu na ekranie oraz dodatkowe funkcje.

Dla naszego skryptu, który wybiera loginy/hasła dla PostgeSQL opis będzie wyglądał tak:

Opis = [[ Brute force wszystkie usługi działające na hoście docelowym. Wyniki są zwracane w tabeli z każdą ścieżką, wykrytą metodą, loginem i/lub hasłem. ]] --- -- @usage -- nmap --script hydra [--script-args "lpath= , pścieżka= "] -- -- @output -- USŁUGA STANU PORTU -- 80/tcp open http -- | hydra: -- | Hasło logowania do metody ścieżki -- | 127.0.0.1/private/index.html Przepustka dziennika podsumowania -- |_ 127.0.0.1/simple/index.txt Użytkownik podstawowy qwerty -- -- @args hydra.lpath: ścieżka do pliku z loginami. Na przykład -- nmap --script hydra --script-args="lpath=/home/my_logins.txt" -- @args hydra.ppath: ścieżka do pliku z hasłami. Na przykład -- nmap --script hydra --script-args="ppath=/home/moje_hasło.txt"

Komentarz; -- - komentarz wielowierszowy; @usage, @output, @args - przykład wywołania skryptu, wyświetlenie wyniku na ekranie, niezbędne argumenty przy wywołaniu.

Powyżej w @usage widzimy format uruchamiania skryptu. W tym przypadku podawana jest tylko nazwa skryptu (hydra). Staje się to możliwe, jeśli skrypt zostanie umieszczony w katalogu / /nmap/scripts/ , w przeciwnym razie będziesz musiał podać do niego ścieżkę bezwzględną lub względną. W przyszłości umożliwimy ustawianie argumentów podczas uruchamiania skryptu. Argumenty są ustawiane za pomocą flagi --script-args " W naszym przypadku ustawimy ścieżkę do pliku logowania (lpath) i do pliku z hasłami (ppath). Argumenty są opcjonalne: domyślnie będziemy szukać plików o nazwach login.txt i password.txt w bieżący katalog.

Kategorie, w których znajduje się skrypt (kategorie)

Pisząc skrypt NSE, możesz określić jego kategorię (lub kilka kategorii). Jest to przydatne, gdy użytkownik Nmapa chce użyć nie określonego skryptu, ale zestawu skryptów należących do tej samej kategorii. Przykłady niektórych kategorii:

  • auth - kategoria, w której skrypty definiują dane uwierzytelniające hosta docelowego;
  • brute – kategoria, której skrypty pomagają ustalić loginy i hasła do różnych usług;
  • default - kategoria zawierająca główne skrypty. Istnieje kilka kryteriów, które określają, czy skrypt należy do tej kategorii: szybkość skanowania, użyteczność, niezawodność, poufność, efekt wizualny;
  • złośliwe oprogramowanie — kategoria, która pomaga zidentyfikować złośliwe oprogramowanie.

Na przykład, jeśli chcesz uruchomić wszystkie skrypty z kategorii auth, polecenie będzie wyglądać tak:

$ nmap --script=auth example.com

W takim przypadku skrypty tej kategorii będą kolejno uruchamiane dla określonego hosta. Nasz scenariusz należy do kategorii brutalnej. Dodajmy do pliku następujący wiersz:

Kategorie = ("brutal")

Informacje o autorze (autorze)

Każdy skrypt zawiera informacje o jego autorze. W moim przypadku:

Autor = „Olga Barinova”

Informacje o używanej licencji (licencji)

Nmap z zadowoleniem przyjmuje wszelkie zmiany wprowadzone przez użytkowników i zachęca do udostępniania, w tym skryptów NSE. Określając licencję, potwierdzasz prawo do udostępniania skryptu społeczności. Standardowa licencja Nmapa wygląda tak:

Licencja = "Tak samo jak Nmap--Patrz http://nmap.org/book/man-legal.html"

Dodajmy również tę linię do naszego skryptu.

Zależności od innych skryptów (zależności)

Ten obszar zawiera nazwy skryptów NSE, które muszą zostać wykonane przed uruchomieniem tego skryptu w celu uzyskania niezbędnych informacji. Na przykład,

Zależności = („smb-brute”).

W naszym przypadku ta funkcja nie będzie potrzebna, więc nie dodamy zależności.

Host i port (host i port)

Nmap musi wiedzieć, dla jakich usług i na których portach uruchomić skrypt. Istnieją na to specjalne zasady:

  • prerule() - skrypt jest wykonywany raz przed skanowaniem dowolnego hosta, używany do niektórych operacji sieciowych;
  • hostrule(host) - skrypt jest wykonywany dla każdego hosta z tabeli, który przyjmuje jako argument;
  • portrule(host, port) - skrypt jest wykonywany dla każdego hosta i dla każdego portu z tabel, które przyjmuje jako argumenty;
  • postrule() - skrypt jest wykonywany raz po przeskanowaniu dowolnego hosta. Służy głównie do przetwarzania wyników, podsumowywania statystyk i tym podobnych.

Istnieją biblioteki do tworzenia takich zasad. Nasz skrypt wystarczy podać numer portu (5432) i nazwę usługi (postgresql), a wtedy będzie działał tylko dla tego portu i usługi. Istnieje dość popularna biblioteka shortport wbudowana w NSE, która zawiera różne metody. Wykorzystamy metodę

Port_or_service (porty, usługi, protos, stany)

gdzie porty to numery portów, usługi to nazwy usług, proto to nazwy protokołów (na przykład udp), stany to stany.

Ta metoda zwraca wartość true, jeśli aktualnie analizowana usługa znajduje się na jednym z portów na liście portów lub pasuje do dowolnej usługi na liście usług, a protokół i stan są sprawdzane pod kątem dopasowania, w przeciwnym razie zwracana jest wartość false.
Aby nasz skrypt działał z PostgreSQL, musimy dodać numer portu i nazwę usługi:

Portrule = shortport.port_or_service((5432), ("postgresql"))

Podłączanie bibliotek

Odejdźmy na chwilę od struktury skryptu i zastanówmy się, jak połączone są zewnętrzne biblioteki, do których funkcjonalności musimy mieć dostęp.

Nadal dostępne tylko dla członków

Opcja 1. Dołącz do społeczności „strony”, aby przeczytać wszystkie materiały na stronie

Członkostwo w społeczności w wyznaczonym okresie zapewni ci dostęp do WSZYSTKICH materiałów hakerskich, zwiększy osobistą skumulowaną zniżkę i pozwoli na zgromadzenie profesjonalnej oceny Xakep Score!