Nmap Summary (ESP)
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Szkolenie AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Szkolenie GCP Red Team Expert (GRTE)
<ip>,<net/mask>
: Wskazuje bezpośrednio adresy IP
-iL <ips_file>
: lista_IPs
-iR <number>
: Liczba losowych adresów IP, możesz wykluczyć możliwe adresy IP za pomocą --exclude <Ips>
lub --excludefile <file>
.
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 ping. 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 ukryte 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żywa pełnego połączenia. 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.
-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>
: Wskazuje protokół w nagłówkach, domyślnie 1(ICMP), 2(IGMP) i 4(Encap IP). Dla protokołów ICMP, IGMP, TCP (6) i UDP (17) nagłówki protokołów są wysyłane, dla pozostałych tylko nagłówek IP jest wysyłany. Celem tego jest to, że z powodu zniekształcenia nagłówków, odpowiada się na protokół unreachable lub odpowiedzi tego samego protokołu, aby wiedzieć, czy jest aktywny.
-n
: Brak DNS
-R
: DNS zawsze
-sS
: Nie kończy połączenia, więc nie pozostawia śladów, bardzo dobrze, 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 (inne 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 unreachable). 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 unreachable 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 mało zamkniętych, działa odwrotnie.
-sI
: Skanowanie Idle. W przypadkach, gdy istnieje aktywna zapora ogniowa, ale wiemy, że nie filtruje do określonego adresu 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ć czymś, 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 protokół ICMP unreachable, jest zamknięty, jeśli przychodzi port unreachable, 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 zeskanować 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.
-p: Służy do podania portów do skanowania. Aby wybrać 65335: -p- lub -p all. Nmap ma wewnętrzną klasyfikację według popularności. Domyślnie używa 1000 głównych. Z -F (szybkie skanowanie) analizuje 100 głównych. Z --top-ports <numer> Analizuje tę liczbę głównych (od 1 do 65335). Sprawdza porty w losowej kolejności, aby to nie miało miejsca -r. Możemy również wybrać porty: 20-30,80,443,1024- To ostatnie oznacza, że patrzy na porty powyżej 1024. Możemy również grupować porty według protokołów: U:53,T:21-25,80,139,S:9. Możemy również wybrać zakres w popularnych portach nmap: -p [-1024] analizuje do 1024 z uwzględnieniem nmap-services. --port-ratio <ratio> Analizuje najczęściej używane porty, które mają współczynnik między 0 a 1.
-sV Skanowanie wersji, można regulować intensywność od 0 do 9, domyślnie 7.
--version-intensity <numer> Regulujemy intensywność, w ten sposób im niższa, tym tylko najprawdopodobniej uruchomi sondy, ale nie wszystkie. Dzięki temu możemy znacznie skrócić czas skanowania UDP.
-O Wykrywanie systemu operacyjnego.
--osscan-limit Aby dobrze zeskanować hosta, potrzebny jest przynajmniej 1 port otwarty i inny zamknięty, jeśli nie spełniona jest ta warunek i ustawiliśmy to, nie próbuje przewidywać systemu operacyjnego (oszczędza czas).
--osscan-guess Gdy wykrywanie systemu operacyjnego nie jest doskonałe, to sprawia, że bardziej się stara.
Skrypty
--script <filename>|<category>|<directory>|<expression>[,...]
Aby użyć domyślnych, wystarczy -sC lub --script=default.
Typy, które istnieją to: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, i vuln.
Auth: uruchamia wszystkie dostępne skrypty do autoryzacji.
Default: uruchamia podstawowe skrypty domyślne narzędzia.
Discovery: odzyskuje informacje o celu lub ofierze.
External: skrypt do korzystania z zasobów zewnętrznych.
Intrusive: używa skryptów, które są uważane za inwazyjne dla ofiary lub celu.
Malware: sprawdza, czy są otwarte połączenia przez złośliwe kody lub backdoory (drzwi tylne).
Safe: uruchamia skrypty, które nie są inwazyjne.
Vuln: odkrywa najbardziej znane luki.
All: uruchamia absolutnie wszystkie skrypty z rozszerzeniem NSE dostępne.
Aby wyszukać skrypty:
nmap --script-help="http-*" -> Te, które zaczynają się od http-
nmap --script-help="not intrusive" -> Wszystkie oprócz tych
nmap --script-help="default or safe" -> Te, które są w jednym lub drugim lub w obu
nmap --script-help="default and safe" --> Te, które są w obu
nmap --script-help="(default or safe or intrusive) and not http-*"
--script-args <n1>=<v1>,<n2>={<n3>=<v3>},<n4>={<v4>,<v5>}
--script-args-file <filename>
--script-help <filename>|<category>|<directory>|<expression>|all[,...]
--script-trace ---> Daje informacje o tym, jak działa skrypt.
--script-updatedb
Aby użyć skryptu, wystarczy wpisać: namp --script Nazwa_skryptu cel --> Po wpisaniu skryptu uruchomi się zarówno skrypt, jak i skaner, więc można również podać opcje skanera, możemy dodać “safe=1”, aby uruchomić tylko te, które są 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 zeskanowania na grupy i analizuje te grupy w blokach, tak że dopóki wszystkie nie zostały przeanalizowane, nie przechodzi do następnego bloku (a użytkownik również nie otrzymuje żadnej 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 <numhosts>; --max-hostgroup <numhosts> (Dostosuj rozmiary grup skanowania równoległego).
Można kontrolować liczbę skanerów w równoległym, ale lepiej tego nie robić (nmap już wprowadza automatyczną kontrolę na podstawie stanu sieci): --min-parallelism <numprobes>; --max-parallelism <numprobes>
Możemy zmodyfikować czas oczekiwania RTT, ale zazwyczaj nie jest to konieczne: --min-rtt-timeout <time>, --max-rtt-timeout <time>, --initial-rtt-timeout <time>
Możemy zmodyfikować liczbę prób:--max-retries <numtries>
Możemy zmodyfikować czas skanowania hosta: --host-timeout <time>
Możemy zmodyfikować czas między każdym testem, aby działał wolniej: --scan-delay <time>; --max-scan-delay <time>
Możemy zmodyfikować liczbę pakietów na sekundę: --min-rate <number>; --max-rate <number>
Wiele portów długo odpowiada na bycie filtrowanymi lub zamkniętymi, jeśli interesują nas tylko otwarte, możemy działać szybciej z: --defeat-rst-ratelimit.
Aby określić, jak agresywny ma być nmap: -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ślne działanie, obejmuje równolegle.
-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 przepuszczają 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 ukrywają Ciebie. 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ć. Można generować losowe adresy IP z RND:<numer> Aby wygenerować <numer> losowych adresów IP. Nie działają z detektorem wersji bez połączenia TCP. Jeśli jesteś w sieci, warto używać adresów IP, które są aktywne, ponieważ w przeciwnym razie będzie bardzo łatwo ustalić, że jesteś jedynym aktywnym.
Aby użyć losowych adresów IP: nmap-D RND: 10 Ip_cel.
-S IP Gdy Nmap nie uchwyci Twojego adresu IP, musisz go podać. Może również służyć do sprawienia, że wydaje się, że inny cel skanuje.
-e <interface> Aby wybrać interfejs.
Wielu administratorów pozostawia otwarte porty wejściowe, aby wszystko działało poprawnie i jest im łatwiej niż szukać innego rozwiązania. Mogą to być porty DNS lub FTP... aby znaleźć tę lukę, nmap wprowadza: --source-port <portnumber>;-g <portnumber> Są równoważne.
--data <hex string> Aby wysłać tekst szesnastkowy: --data 0xdeadbeef i --data \xCA\xFE\x09.
--data-string <string> Aby wysłać zwykły tekst: --data-string "Skanowanie przeprowadzone przez Security Ops, rozszerzenie 7192".
--data-length <number> Nmap wysyła tylko nagłówki, dzięki temu osiągamy, że dodaje do tego dodatkową liczbę bajtów (które będą generowane losowo).
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 <value>
--randomize-hosts Aby atak był mniej oczywisty.
--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 oddzielona przecinkami> Aby używać proxy, czasami proxy nie utrzymuje tylu otwartych połączeń, ile chce nmap, więc trzeba by zmodyfikować równoległość: --max-parallelism.
-sP Aby odkryć hosty w sieci, w której jesteśmy, za pomocą ARP.
Wielu administratorów tworzy regułę w zaporze, która pozwala przechodzić wszystkim pakietom pochodzącym z określonego portu (takiego 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 skryptów dziecięcych.
-oG file Wyjście do grepowania.
-oA file Wszystko oprócz -oS.
-v level poziom szczegółowości.
-d level poziom debugowania.
--reason Dlaczego host i stan.
--stats-every time Co ten czas mówi nam, jak idzie.
--packet-trace Aby zobaczyć, jakie pakiety wychodzą, można określić filtry, takie jak: --version-trace lub --script-trace.
--open pokazuje otwarte, otwarte|filtrowane i nie filtrowane.
--resume file Wyciąga podsumowanie.
Miscellaneous
-6 Umożliwia ipv6.
-A to 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 bazie danych offline (pobieranej z innych bardzo ważnych) i zwraca możliwe luki.
Bazy danych, które używa 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/
Należy również pobrać pakiety z baz danych i dodać je do /usr/share/nmap/scripts/vulscan/.
Użycie:
Aby użyć wszystkich: sudo nmap -sV --script=vulscan HOST_A_ESCANEAR.
Aby użyć konkretnej bazy danych: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_A_ESCANEAR.
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 samodzielnie 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.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)