Nmap Podsumowanie (ESP)
Reading time: 13 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
Parametry
IP do skanowania
<ip>,<net/mask>
: Wskazuje bezpośrednio adresy IP-iL <ips_file>
: list_IPs-iR <number>
: Liczba losowych adresów IP, możesz wykluczyć możliwe adresy IP za pomocą--exclude <Ips>
lub--excludefile <file>
.
Odkrywanie sprzętu
Domyślnie Nmap uruchamia fazę odkrywania składającą się z: -PA80 -PS443 -PE -PP
-sL
: Nie jest inwazyjne, wymienia cele, wykonując DNS zapytania w celu rozwiązania nazw. Jest przydatne, aby wiedzieć, czy na przykład www.prueba.es/24 wszystkie adresy IP są naszymi celami.-Pn
: Brak pingu. Jest to przydatne, jeśli wiesz, że wszystkie są aktywne (jeśli nie, możesz stracić dużo czasu, ale ta opcja również produkuje fałszywe negatywy mówiące, że nie są aktywne), zapobiega fazie odkrywania.-sn
: Brak skanowania portów. Po zakończeniu fazy rozpoznania, nie skanuje portów. Jest stosunkowo dyskretne i pozwala na małe skanowanie sieci. Z uprawnieniami wysyła ACK (-PA) do 80, SYN(-PS) do 443 oraz żądanie echa i żądanie znacznika czasu, bez uprawnień zawsze kończy połączenia. Jeśli celem jest sieć, używa tylko ARP(-PR). Jeśli używane z inną opcją, tylko pakiety innej opcji są odrzucane.-PR
: Ping ARP. Jest używane domyślnie podczas analizy komputerów w naszej sieci, jest szybsze niż używanie pingów. Jeśli nie chcesz używać pakietów ARP, użyj--send-ip
.-PS <ports>
: Wysyła pakiety SYN, na które jeśli odpowiada SYN/ACK, jest otwarty (na które odpowiada RST, aby nie zakończyć połączenia), jeśli odpowiada RST, jest zamknięty, a jeśli nie odpowiada, jest niedostępny. W przypadku braku uprawnień automatycznie używane jest całkowite połączenie. Jeśli nie podano portów, wysyła do 80.-PA <ports>
: Jak poprzednia, ale z ACK, łącząc je, daje lepsze wyniki.-PU <ports>
: Cel jest przeciwny, są wysyłane do portów, które mają być zamknięte. Niektóre zapory ogniowe sprawdzają tylko połączenia TCP. Jeśli jest zamknięty, odpowiada portem niedostępnym, jeśli odpowiada innym icmp lub nie odpowiada, pozostaje jako niedostępny cel.-PE, -PP, -PM
: ICMP PINGS: echo replay, timestamp i addresmask. Są uruchamiane, aby dowiedzieć się, czy cel jest aktywny.-PY<ports>
: Wysyła SCTP INIT proby do 80 domyślnie, INIT-ACK(open) lub ABORT(closed) lub nic lub ICMP unreachable(inactive) mogą być odpowiedzią.-PO <protocols>
: W nagłówkach wskazany jest protokół, domyślnie 1(ICMP), 2(IGMP) i 4(Encap IP). Dla protokołów ICMP, IGMP, TCP (6) i UDP (17) wysyłane są nagłówki protokołów, dla pozostałych tylko nagłówek IP. Celem tego jest, aby z powodu zniekształcenia nagłówków, odpowiedzi na protokół niedostępny lub odpowiedzi tego samego protokołu były odpowiedzią, aby wiedzieć, czy jest aktywny.-n
: Brak DNS-R
: DNS zawsze
Techniki skanowania portów
-sS
: Nie kończy połączenia, więc nie pozostawia śladów, bardzo dobre, jeśli można to użyć. (uprawnienia) Jest to domyślnie używane.-sT
: Kończy połączenie, więc pozostawia ślad, ale można to użyć na pewno. Domyślnie bez uprawnień.-sU
: Wolniejsze, dla UDP. Głównie: DNS(53), SNMP(161,162), DHCP(67 i 68), (-sU53,161,162,67,68): otwarte(odpowiedź), zamknięte(port niedostępny), filtrowane (inny ICMP), otwarte/filtrowane (nic). W przypadku otwarte/filtrowane, -sV wysyła liczne zapytania, aby wykryć dowolną z wersji, które nmap obsługuje i może wykryć prawdziwy stan. Zwiększa to znacznie czas.-sY
: Protokół SCTP nie udaje się nawiązać połączenia, więc nie ma logów, działa jak -PY-sN,-sX,-sF
: Null, Fin, Xmas, mogą przenikać przez niektóre zapory ogniowe i wydobywać informacje. Opierają się na tym, że standardowe maszyny zgodne powinny odpowiadać RST na wszystkie zapytania, które nie mają SYN, RST lub ACK. Odpowiedzi: otwarte/filtrowane(nic), zamknięte(RST), filtrowane (ICMP niedostępny). Niezawodne na Windows, Cisco, BSDI i OS/400. Na unixie tak.-sM
: Skanowanie Maimon: Wysyła flagi FIN i ACK, używane dla BSD, obecnie zwróci wszystko jako zamknięte.-sA, sW
: ACK i Window, używane do wykrywania zapór ogniowych, aby wiedzieć, czy porty są filtrowane, czy nie. -sW rozróżnia między otwartymi/zamkniętymi, ponieważ otwarte odpowiadają inną wartością okna: otwarte (RST z oknem innym niż 0), zamknięte (RST okno = 0), filtrowane (ICMP niedostępny lub nic). Nie wszystkie komputery działają w ten sposób, więc jeśli wszystko jest zamknięte, to nie działa, jeśli jest kilka otwartych, działa dobrze, a jeśli jest wiele otwartych i kilka zamkniętych, działa odwrotnie.-sI
: Skanowanie Idle. W przypadkach, gdy istnieje aktywna zapora ogniowa, ale wiemy, że nie filtruje do określonego IP (lub gdy po prostu chcemy anonimowości), możemy użyć skanera zombie (działa dla wszystkich portów), aby szukać możliwych zombie, możemy użyć skryptu ipidseq lub exploita auxiliary/scanner/ip/ipidseq. Ten skaner opiera się na numerze IPID pakietów IP.--badsum
: Wysyła złą sumę, komputery odrzucą pakiety, ale zapory ogniowe mogą odpowiedzieć na coś, jest używane do wykrywania zapór ogniowych.-sZ
: "Dziwny" skaner SCTP, podczas wysyłania prób z fragmentami cookie echo powinny być odrzucane, jeśli są otwarte lub odpowiadać ABORT, jeśli zamknięte. Może przejść przez zapory ogniowe, przez które init nie przechodzi, złe jest to, że nie rozróżnia między filtrowanymi a otwartymi.-sO
: Skanowanie protokołu IP. Wysyła złe i puste nagłówki, w których czasami nie można nawet rozróżnić protokołu. Jeśli przychodzi ICMP niedostępny protokół, jest zamknięty, jeśli przychodzi niedostępny port, jest otwarty, jeśli przychodzi inny błąd, filtrowany, jeśli nic nie przychodzi, otwarty|filtrowany.-b <server>
: FTPhost--> Używane do skanowania hosta z innego, odbywa się to przez połączenie z ftp innej maszyny i poproszenie jej o wysłanie plików do portów, które chcesz skanować z innej maszyny, w zależności od odpowiedzi będziemy wiedzieć, czy są otwarte, czy nie. [<user>:<password>@]<server>[:<port>] Prawie wszystkie serwery ftps już nie pozwalają na to i dlatego ma to małe praktyczne zastosowanie.
Analiza Skupienia
-p: Używane do określenia portów do skanowania. Aby wybrać wszystkie 65,335 portów: -p- lub -p all. Nmap ma wewnętrzną klasyfikację opartą na popularności. Domyślnie używa 1000 najpopularniejszych portów. Z -F (szybkie skanowanie) analizuje 100 najpopularniejszych. Z --top-ports
-sV Skanowanie wersji, intensywność można regulować od 0 do 9, domyślnie wynosi 7.
--version-intensity
-O Wykrywanie systemu operacyjnego
--osscan-limit Do prawidłowego skanowania hosta potrzebny jest przynajmniej jeden otwarty port i jeden zamknięty port. Jeśli ten warunek nie jest spełniony i ustawiliśmy to, nie podejmie próby przewidywania systemu operacyjnego (oszczędza czas)
--osscan-guess Gdy wykrywanie systemu operacyjnego nie jest doskonałe, to sprawia, że próbuje bardziej
Skrypty
--script
Aby użyć domyślnych skryptów, użyj -sC lub --script=default
Dostępne typy to: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version i vuln
- Auth: wykonuje wszystkie dostępne skrypty uwierzytelniające
- Default: wykonuje podstawowe skrypty domyślne
- Discovery: pobiera informacje z celu lub ofiary
- External: skrypt do korzystania z zewnętrznych zasobów
- Intrusive: używa skryptów uznawanych za inwazyjne dla ofiary lub celu
- Malware: sprawdza połączenia otwarte przez złośliwy kod lub tylne drzwi
- Safe: wykonuje skrypty nieinwazyjne
- Vuln: odkrywa najbardziej znane luki
- All: wykonuje absolutnie wszystkie dostępne skrypty rozszerzeń NSE
Aby wyszukać skrypty:
nmap --script-help="http-*" -> Te zaczynające się od http-
nmap --script-help="not intrusive" -> Wszystkie oprócz tych
nmap --script-help="default or safe" -> Te w jednym lub obu
nmap --script-help="default and safe" --> Te w obu
nmap --script-help="(default or safe or intrusive) and not http-*"
--script-args
--script-args-file
--script-help
--script-trace ---> Dostarcza informacji o tym, jak postępuje skrypt
--script-updatedb
Aby użyć skryptu, wystarczy wpisać: nmap --script Script_Name target --> Podczas używania skryptu, zarówno skrypt, jak i skaner będą wykonywane, więc opcje skanera można również dodać. Możemy dodać "safe=1", aby wykonać tylko bezpieczne.
Kontrola czasu
Nmap może modyfikować czas w sekundach, minutach, ms: --host-timeout arguments 900000ms, 900, 900s, i 15m wszystko robi to samo.
Nmap dzieli całkowitą liczbę hostów do skanowania na grupy i analizuje te grupy w blokach, więc nie przechodzi do następnego bloku, dopóki wszystkie nie zostaną przeanalizowane (a użytkownik nie otrzymuje żadnych aktualizacji, dopóki blok nie zostanie przeanalizowany). W ten sposób jest bardziej optymalne dla Nmap używać dużych grup. Domyślnie w klasie C używa 256.
Można to zmienić za pomocą --min-hostgroup
Możesz kontrolować liczbę równoległych skanerów, ale lepiej tego nie robić (Nmap już wprowadza automatyczną kontrolę w oparciu o status sieci): --min-parallelism
Możemy zmodyfikować czas oczekiwania RTT, ale zazwyczaj nie jest to konieczne: --min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout
Możemy zmodyfikować liczbę prób: --max-retries
Możemy zmodyfikować czas skanowania hosta: --host-timeout
Możemy zmodyfikować czas między każdym testem, aby go spowolnić: --scan-delay ; --max-scan-delay
Możemy zmodyfikować liczbę pakietów na sekundę: --min-rate
Wiele portów zajmuje dużo czasu na odpowiedź, gdy są filtrowane lub zamknięte. Jeśli interesują nas tylko otwarte, możemy przyspieszyć: --defeat-rst-ratelimit
Aby określić, jak agresywny chcemy, aby Nmap był: -T paranoid|sneaky|polite|normal|aggressive|insane
-T (0-1)
-T0 --> Skanuje tylko 1 port na raz i czeka 5 minut do następnego
-T1 i T2 --> Bardzo podobne, ale czekają tylko 15 i 0.4 sekundy odpowiednio między każdym testem
-T3 --> Domyślna operacja, obejmuje skanowanie równoległe
-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms
-T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms
Zapora/IDS
Nie pozwalają na dostęp do portów i analizują pakiety.
-f Aby fragmentować pakiety, domyślnie fragmentuje je na 8 bajtów po nagłówku, aby określić ten rozmiar, używamy ..mtu (z tym, nie używaj -f), offset musi być wielokrotnością 8. Skanery wersji i skrypty nie obsługują fragmentacji
-D decoy1,decoy2,ME Nmap wysyła skanery, ale z innymi adresami IP jako źródło, w ten sposób cię ukrywa. Jeśli umieścisz ME na liście, Nmap umieści cię tam, lepiej umieścić 5 lub 6 przed tobą, aby całkowicie cię zamaskować. Losowe adresy IP można generować za pomocą RND:
Aby użyć losowych adresów IP: nmap -D RND:10 Target_IP
-S IP Gdy Nmap nie złapie twojego adresu IP, musisz go podać w ten sposób. Służy również do sprawienia, by myśleli, że inny cel ich skanuje.
-e
Wielu administratorów pozostawia otwarte porty wejściowe, aby wszystko działało poprawnie i jest to dla nich łatwiejsze niż znalezienie innego rozwiązania. Mogą to być porty DNS lub porty FTP... aby znaleźć tę lukę, Nmap wprowadza: --source-port
--data
--data-string
--data-length
Aby całkowicie skonfigurować pakiet IP, użyj --ip-options
Jeśli chcesz zobaczyć opcje w wysyłanych i odbieranych pakietach, określ --packet-trace. Aby uzyskać więcej informacji i przykładów użycia opcji IP z Nmap, zobacz http://seclists.org/nmap-dev/2006/q3/52.
--ttl
--randomize-hosts Aby uczynić atak mniej oczywistym
--spoof-mac <adres MAC, prefiks lub nazwa dostawcy> Aby zmienić MAC, przykłady: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, i Cisco
--proxies <Lista adresów URL proxy oddzielonych przecinkami> Aby używać proxy, czasami proxy nie utrzymuje tylu otwartych połączeń, ile chce Nmap, więc równoległość musiałaby być zmodyfikowana: --max-parallelism
-sP Aby odkryć hosty w naszej sieci za pomocą ARP
Wielu administratorów tworzy regułę zapory ogniowej, która pozwala na przejście wszystkich pakietów pochodzących z określonego portu (jak 20,53 i 67), możemy powiedzieć Nmap, aby wysłał nasze pakiety z tych portów: nmap --source-port 53 IP
Wyjścia
-oN file Normalne wyjście
-oX file Wyjście XML
-oS file Wyjście dla skryptów kiddies
-oG file Wyjście do przeszukiwania
-oA file Wszystko oprócz -oS
-v level szczegółowość
-d level debugowanie
--reason Dlaczego host i stan
--stats-every time Co ten czas mówi nam, jak idzie
--packet-trace Aby zobaczyć, które pakiety wychodzą, można określić filtry, takie jak: --version-trace lub --script-trace
--open pokazuje otwarte, otwarte|filtrowane i niefiltrowane
--resume file Wyjście podsumowujące
Różne
-6 Umożliwia IPv6
-A jest to samo co -O -sV -sC --traceroute
Czas działania
Podczas działania Nmap możemy zmieniać opcje:
v / V Zwiększ / zmniejsz poziom szczegółowości
d / D Zwiększ / zmniejsz poziom debugowania
p / P Włącz / wyłącz śledzenie pakietów
? Wyświetl ekran pomocy interakcji w czasie rzeczywistym
Vulscan
Skrypt Nmap, który sprawdza wersje usług uzyskanych w offline bazie danych (pobranej z innych bardzo ważnych) i zwraca możliwe luki
Bazy danych, z których korzysta, to:
- Scipvuldb.csv | http://www.scip.ch/en/?vuldb
- Cve.csv | http://cve.mitre.org
- Osvdb.csv | http://www.osvdb.org
- Securityfocus.csv | http://www.securityfocus.com/bid/
- Securitytracker.csv | http://www.securitytracker.com
- Xforce.csv | http://xforce.iss.net
- Exploitdb.csv | http://www.exploit-db.com
- Openvas.csv | http://www.openvas.org
Aby pobrać i zainstalować w folderze Nmap:
wget http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar -czvf nmap_nse_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/
Będziesz również musiał pobrać pakiety DB i dodać je do /usr/share/nmap/scripts/vulscan/
Użycie:
Aby użyć wszystkich: sudo nmap -sV --script=vulscan HOST_TO_SCAN
Aby użyć konkretnej bazy danych: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_TO_SCAN
Przyspieszenie skanowania usług Nmap x16
Zgodnie z tym postem możesz przyspieszyć analizę usług nmap, modyfikując wszystkie wartości totalwaitms
w /usr/share/nmap/nmap-service-probes
na 300 i tcpwrappedms
na 200.
Ponadto, próby, które nie mają określonej wartości servicewaitms
, używają domyślnej wartości 5000
. Dlatego możemy dodać wartości do każdej z prób lub możemy skompilować nmap sami i zmienić domyślną wartość w service_scan.h.
Jeśli nie chcesz w ogóle zmieniać wartości totalwaitms
i tcpwrappedms
w pliku /usr/share/nmap/nmap-service-probes
, możesz edytować kod analizy tak, aby te wartości w pliku nmap-service-probes
były całkowicie ignorowane.
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.