Nmap Summary (ESP)

Lernen Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks

``` nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24 ``` ## Parameter

IPs zu scannen

  • <ip>,<net/mask>: Geben Sie die IPs direkt an

  • -iL <ips_file>: list_IPs

  • -iR <number>: Anzahl der zufälligen IPs, Sie können mögliche IPs mit --exclude <Ips> oder --excludefile <file> ausschließen.

Geräteerkennung

Standardmäßig startet Nmap eine Entdeckungsphase bestehend aus: -PA80 -PS443 -PE -PP

  • -sL: Es ist nicht invasiv, listet die Ziele auf, indem DNS-Anfragen gestellt werden, um Namen aufzulösen. Es ist nützlich zu wissen, ob z.B. www.prueba.es/24 alle IPs unsere Ziele sind.

  • -Pn: Kein Ping. Dies ist nützlich, wenn Sie wissen, dass alle aktiv sind (sonst könnten Sie viel Zeit verlieren, aber diese Option erzeugt auch falsche Negativmeldungen, die besagen, dass sie nicht aktiv sind), es verhindert die Entdeckungsphase.

  • -sn : Kein Portscan. Nach Abschluss der Aufklärungsphase werden keine Ports gescannt. Es ist relativ unauffällig und ermöglicht einen kleinen Netzwerkscan. Mit Privilegien sendet es ein ACK (-PA) an 80, ein SYN(-PS) an 443 und eine Echo-Anfrage sowie eine Timestamp-Anfrage, ohne Privilegien werden immer vollständige Verbindungen hergestellt. Wenn das Ziel das Netzwerk ist, wird nur ARP(-PR) verwendet. Wenn es mit einer anderen Option verwendet wird, werden nur die Pakete der anderen Option verworfen.

  • -PR: Ping ARP. Wird standardmäßig verwendet, wenn Computer in unserem Netzwerk analysiert werden, es ist schneller als die Verwendung von Pings. Wenn Sie keine ARP-Pakete verwenden möchten, verwenden Sie --send-ip.

  • -PS <ports>: Sendet SYN-Pakete, auf die bei SYN/ACK geantwortet wird, dass es offen ist (auf das mit RST geantwortet wird, um die Verbindung nicht zu beenden), bei RST ist es geschlossen und wenn nicht geantwortet wird, ist es nicht erreichbar. Wenn keine Ports angegeben sind, wird es an Port 80 gesendet.

  • -PA <ports>: Wie das vorherige, aber mit ACK, die Kombination beider ergibt bessere Ergebnisse.

  • -PU <ports>: Das Ziel sind geschlossene Ports. Einige Firewalls überprüfen nur TCP-Verbindungen. Wenn es geschlossen ist, wird mit Port unreachable geantwortet, wenn mit einem anderen ICMP geantwortet wird oder nicht geantwortet wird, wird es als Ziel nicht erreichbar belassen.

  • -PE, -PP, -PM : ICMP PINGS: Echo-Antwort, Timestamp und Adressmask. Sie werden gestartet, um festzustellen, ob das Ziel aktiv ist.

  • -PY<ports>: Sendet SCTP INIT-Sonden standardmäßig an Port 80, INIT-ACK(geöffnet) oder ABORT(geschlossen) oder nichts oder ICMP unreachable(inaktiv) können geantwortet werden.

  • -PO <protocols>: Ein Protokoll wird in den Headern angegeben, standardmäßig 1(ICMP), 2(IGMP) und 4(Encap IP). Für ICMP, IGMP, TCP (6) und UDP (17) Protokolle werden die Protokollheader gesendet, für den Rest wird nur der IP-Header gesendet. Der Zweck davon ist, dass aufgrund der Fehlbildung der Header Protokoll nicht erreichbar oder Antworten des gleichen Protokolls gesendet werden, um zu wissen, ob es aktiv ist.

  • -n: Kein DNS

  • -R: Immer DNS

Portscan-Techniken

  • -sS: Stellt keine Verbindung her, hinterlässt also keine Spuren, sehr gut, wenn es verwendet werden kann (Privilegien). Es ist das standardmäßig verwendete.

  • -sT: Stellt die Verbindung her, hinterlässt also eine Spur, kann aber sicher verwendet werden. Standardmäßig ohne Privilegien.

  • -sU: Langsamer, für UDP. Hauptsächlich: DNS(53), SNMP(161,162), DHCP(67 und 68), (-sU53,161,162,67,68): geöffnet(antwortet), geschlossen(Port nicht erreichbar), gefiltert (ein anderes ICMP), geöffnet/gefiltert (nichts). Bei geöffnet/gefiltert sendet -sV zahlreiche Anfragen, um eine der Versionen zu erkennen, die nmap unterstützt, und den tatsächlichen Zustand zu erkennen. Es erhöht die Zeit erheblich.

  • -sY: SCTP-Protokoll kann keine Verbindung herstellen, daher gibt es keine Logs, funktioniert wie -PY

  • -sN,-sX,-sF: Null, Fin, Xmas, sie können einige Firewalls durchdringen und Informationen extrahieren. Sie basieren darauf, dass standardkonforme Maschinen auf alle Anfragen mit RST antworten sollten, die keine SYN, RST oder ACK-Flags aufweisen: geöffnet/gefiltert(nichts), geschlossen(RST), gefiltert (ICMP nicht erreichbar). Unzuverlässig bei Windows, CIsco, BSDI und OS/400. Auf Unix ja.

  • -sM: Maimon-Scan: Sendet FIN- und ACK-Flags, wird für BSD verwendet, derzeit werden alle als geschlossen zurückgegeben.

  • -sA, sW: ACK und Window, wird verwendet, um Firewalls zu erkennen, um festzustellen, ob die Ports gefiltert sind oder nicht. Der -sW unterscheidet zwischen geöffnet/geschlossen, da die geöffneten mit einem anderen Fensterwert antworten: geöffnet (RST mit Fenster ungleich 0), geschlossen (RST-Fenster = 0), gefiltert (ICMP nicht erreichbar oder nichts). Nicht alle Computer arbeiten auf diese Weise, daher, wenn alles geschlossen ist, funktioniert es nicht, wenn einige geöffnet sind, funktioniert es gut, und wenn viele geöffnet und wenige geschlossen sind, funktioniert es andersherum.

  • -sI: Idle-Scan. Für Fälle, in denen eine aktive Firewall vorhanden ist, aber wir wissen, dass sie den Verkehr zu einer bestimmten IP nicht filtert (oder wenn wir einfach anonym bleiben wollen), können wir den Zombie-Scanner verwenden (er funktioniert für alle Ports), um mögliche Zombies zu finden, können wir das Skript ipidseq oder den Exploit auxiliary/scanner/ip/ipidseq verwenden. Dieser Scanner basiert auf der IPID-Nummer der IP-Pakete.

  • --badsum: Es sendet die Summe falsch, die Computer würden die Pakete verwerfen, aber die Firewalls könnten etwas antworten, es wird verwendet, um Firewalls zu erkennen.

  • -sZ: "Seltsamer" SCTP-Scanner, beim Senden von Sonden mit Cookie-Echo-Fragmenten sollten sie fallen gelassen werden, wenn sie geöffnet sind, oder mit ABORT beantwortet werden, wenn sie geschlossen sind. Er kann Firewalls passieren, die init nicht passieren, das Schlechte daran ist, dass er nicht zwischen gefiltert und geöffnet unterscheidet.

  • -sO: Protokoll-IP-Scan. Sendet falsche und leere Header, in denen manchmal nicht einmal das Protokoll unterschieden werden kann. Wenn ein ICMP unreachable-Protokoll ankommt, ist es geschlossen, wenn ein unerreichbarer Port ankommt, ist es geöffnet, wenn ein anderer Fehler ankommt, ist es gefiltert, wenn nichts ankommt, ist es geöffnet|gefiltert.

  • -b <server>: FTPhost--> Wird verwendet, um einen Host von einem anderen aus zu scannen, dies geschieht, indem man sich mit dem FTP einer anderen Maschine verbindet und sie bittet, Dateien an die Ports zu senden, die Sie von einer anderen Maschine aus scannen möchten, je nach Antworten werden wir wissen, ob sie geöffnet sind oder nicht. [<user>:<password>@]<server>[:<port>] Fast alle FTP-Server erlauben dies nicht mehr und daher ist es von geringem praktischen Nutzen.

Zentrale Analyse

-p: Wird verwendet, um die zu scannenden Ports anzugeben. Um alle 65335 auszuwählen: -p- oder -p all. Nmap hat eine interne Klassifizierung nach Popularität. Standardmäßig werden die Top 1000 verwendet. Mit -F (schneller Scan) werden die Top 100 analysiert. Mit --top-ports <number> werden diese Anzahl von Top-Ports analysiert (von 1 bis 65335). Es überprüft die Ports in zufälliger Reihenfolge, um dies zu vermeiden -r. Sie können auch Ports auswählen: 20-30,80,443,1024- Dies bedeutet, dass es ab 1024 weiter sucht. Sie können auch Ports nach Protokollen gruppieren: U:53,T:21-25,80,139,S:9. Sie können auch einen Bereich innerhalb der beliebten Nmap-Ports auswählen: -p [-1024] analysiert bis 1024 der in nmap-services enthaltenen Ports. --port-ratio <ratio> Analysiert die häufigsten Ports mit einem Verhältnis zwischen 0 und 1.

-sV Versions-Scan, die Intensität kann von 0 bis 9 eingestellt werden, standardmäßig 7.

--version-intensity <number> Wir regulieren die Intensität, so dass bei niedrigeren Werten nur die wahrscheinlichsten Sonden gesendet werden, aber nicht alle. Dadurch können wir die Scanzeit erheblich verkürzen, insbesondere bei UDP.

-O OS-Erkennung

--osscan-limit Um einen Host richtig zu scannen, muss mindestens ein Port geöffnet und ein anderer geschlossen sein, wenn diese Bedingung nicht erfüllt ist und wir dies eingestellt haben, versucht es keine OS-Vorhersage zu treffen (spart Zeit) --osscan-guess Wenn die Betriebssystemerkennung nicht perfekt ist, wird dadurch mehr Aufwand betrieben.

Skripte

--script <filename>|<category>|<directory>|<expression>[,...]

Um die Standard-Skripte zu verwenden, reicht es aus, -sC oder --script=default zu verwenden.

Die verfügbaren Typen sind: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version und vuln

  • Auth: führt alle verfügbaren Authentifizierungsskripte aus

  • Default: führt die Standard-Skripte des Tools aus

  • Discovery: ruft Informationen über das Ziel oder Opfer ab

  • External: Skript zur Verwendung externer Ressourcen

  • Intrusive: verwendet als aufdringlich betrachtete Skripte für das Opfer oder Ziel

  • Malware: überprüft auf offene Verbindungen durch schädlichen Code oder Hintertüren

  • Safe: führt nicht aufdringliche Skripte aus

  • Vuln: entdeckt die bekanntesten Schwachstellen

  • All: führt alle verfügbaren NSE-Skripte aus

Zum Suchen von Skripten:

nmap --script-help="http-*" -> Diejenigen, die mit http- beginnen

nmap --script-help="not intrusive" -> Alle außer diesen

nmap --script-help="default or safe" -> Diejenigen, die in einem oder in beiden enthalten sind

nmap --script-help="default and safe" --> Diejenigen, die in beiden enthalten sind

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 ---> Gibt Informationen darüber, wie das Skript funktioniert

--script-updatedb

Um ein Skript zu verwenden, geben Sie einfach ein: nmap --script Skriptname Ziel --> Durch Eingabe des Skripts wird sowohl das Skript als auch der Scanner ausgeführt. Daher können auch Scanneroptionen hinzugefügt werden. Fügen Sie "safe=1" hinzu, um nur sichere Skripte auszuführen.

Zeitsteuerung

Nmap kann die Zeit in Sekunden, Minuten, ms ändern: --host-timeout arguments 900000ms, 900, 900s und 15m bewirken dasselbe.

Nmap teilt die Gesamtzahl der zu scannenden Hosts in Gruppen auf und analysiert diese Gruppen in Blöcken, sodass erst nach Abschluss aller Analysen eines Blocks zum nächsten übergegangen wird (und der Benutzer auch keine Aktualisierungen erhält, bis der Block analysiert wurde). Auf diese Weise ist es für Nmap effizienter, große Gruppen zu verwenden. Standardmäßig verwendet es in der Klasse C 256.

Es kann geändert werden mit**--min-hostgroup** <numhosts>; --max-hostgroup <numhosts> (Anpassung der Größen paralleler Scan-Gruppen)

Die Anzahl der parallelen Scanner kann gesteuert werden, aber es ist besser, dies nicht zu tun (Nmap hat bereits eine automatische Steuerung basierend auf dem Netzwerkzustand): --min-parallelism <numprobes>; --max-parallelism <numprobes>

Die rtt-Timeout-Zeit kann geändert werden, ist jedoch normalerweise nicht erforderlich: --min-rtt-timeout <time>, --max-rtt-timeout <time>, --initial-rtt-timeout <time>

Die Anzahl der Versuche kann geändert werden: --max-retries <numtries>

Die Host-Scann-Zeit kann geändert werden: --host-timeout <time>

Das Intervall zwischen jedem Scan kann verlangsamt werden: --scan-delay <time>; --max-scan-delay <time>

Die Anzahl der Pakete pro Sekunde kann geändert werden: --min-rate <number>; --max-rate <number>

Viele Ports benötigen lange, um zu antworten, wenn sie gefiltert oder geschlossen sind. Wenn nur offene Ports interessant sind, kann mit --defeat-rst-ratelimit schneller gescannt werden.

Um festzulegen, wie aggressiv Nmap sein soll: -T paranoid|sneaky|polite|normal|aggressive|insane

-T (0-1)

-T0 --> Es wird nur ein Port gleichzeitig gescannt und 5 Minuten gewartet, bis zum nächsten

-T1 und T2 --> Sehr ähnlich, aber warten nur 15 bzw. 0,4 Sekunden zwischen jedem Scan

-T3 --> Standardbetrieb, inklusive paralleler Scans

-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

Firewall/IDS

Blockieren Ports und analysieren Pakete.

-f Zum Fragmentieren von Paketen, standardmäßig werden sie nach 8 Bytes nach dem Header fragmentiert. Um diese Größe anzugeben, verwenden Sie ..mtu (damit nicht -f verwenden), der Offset muss ein Vielfaches von 8 sein. Versions- und Skript-Scanner unterstützen keine Fragmentierung

-D decoy1,decoy2,ME Nmap sendet Scanner, aber mit anderen IP-Adressen als Ursprung, um dich zu verbergen. Wenn du ME in die Liste aufnimmst, platziert dich Nmap dort, es ist besser, 5 oder 6 vor dir zu platzieren, um dich vollständig zu maskieren. Es können zufällige IPs mit RND:<nummer> generiert werden, um <nummer> zufällige IPs zu generieren. Funktioniert nicht mit Versionsdetektoren ohne TCP-Verbindung. Wenn du dich in einem Netzwerk befindest, ist es ratsam, IPs zu verwenden, die aktiv sind, da es sonst sehr einfach ist herauszufinden, dass du der einzige Aktive bist.

Zum Verwenden von zufälligen IPs: nmap-D RND: 10 Ziel-IP

-S IP Wenn Nmap deine IP-Adresse nicht erkennt, musst du sie mit diesem Parameter angeben. Es kann auch verwendet werden, um zu suggerieren, dass ein anderer Ziel sie scannt.

-e <interface> Zum Auswählen des Interfaces

Viele Administratoren lassen Eingangsporte offen, damit alles reibungslos funktioniert und es für sie einfacher ist, eine andere Lösung zu finden. Diese Ports können DNS- oder FTP-Ports sein... Um diese Schwachstelle zu finden, bietet Nmap: --source-port <portnummer>;-g <portnummer> Sind äquivalent

--data <hex string> Zum Senden von hexadezimalem Text: --data 0xdeadbeef und --data \xCA\xFE\x09

--data-string <string> Zum Senden eines normalen Textes: --data-string "Scan conducted by Security Ops, extension 7192"

--data-length <nummer> Nmap sendet nur Header, damit fügen wir eine bestimmte Anzahl von zusätzlichen Bytes hinzu (die zufällig generiert werden)

Um das IP-Paket vollständig zu konfigurieren, verwenden Sie --ip-options

Wenn Sie die Optionen in gesendeten und empfangenen Paketen sehen möchten, geben Sie --packet-trace an. Weitere Informationen und Beispiele zur Verwendung von IP-Optionen mit Nmap finden Sie unter http://seclists.org/nmap-dev/2006/q3/52.

--ttl <wert>

--randomize-hosts Damit der Angriff weniger offensichtlich ist

--spoof-mac <MAC-Adresse, Präfix oder Herstellername> Zum Ändern der MAC-Adresse, Beispiele: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2 und Cisco --proxies <Komma-separierte Liste von Proxy-URLs> Um Proxies zu verwenden, kann es vorkommen, dass ein Proxy nicht so viele Verbindungen offen hält, wie nmap möchte. In diesem Fall müsste die Parallelität angepasst werden: --max-parallelism

-sP Um Hosts im aktuellen Netzwerk über ARP zu entdecken

Viele Administratoren erstellen eine Regel in der Firewall, die es ermöglicht, alle Pakete von einem bestimmten Port durchzulassen (wie 20, 53 und 67). Wir können nmap anweisen, unsere Pakete von diesen Ports zu senden: nmap --source-port 53 Ip

Ausgaben

-oN Datei Normale Ausgabe

-oX Datei XML-Ausgabe

-oS Datei Ausgabe für Script-Kiddies

-oG Datei Grepable-Ausgabe

-oA Datei Alles außer -oS

-v Level Verbose-Modus

-d Level Debugging

--reason Grund des Hosts und Status

--stats-every Zeit Gibt regelmäßig den Fortschritt aus

--packet-trace Um zu sehen, welche Pakete gesendet werden, können Filter wie: --version-trace oder --script-trace spezifiziert werden

--open Zeigt offene, offene|gefilterte und ungefilterte Hosts an

--resume Datei Erstellt eine Zusammenfassung

Verschiedenes

-6 Erlaubt IPv6

-A Äquivalent zu -O -sV -sC --traceroute

Laufzeit

Während nmap läuft, können Optionen geändert werden:

v / V Erhöhen / Verringern des Verbose-Levels

d / D Erhöhen / Verringern des Debugging-Levels

p / P Aktivieren / Deaktivieren der Paketverfolgung

? Anzeige einer Hilfe zur Laufzeitinteraktion

Vulscan

Ein nmap-Skript, das die Versionen der gefundenen Dienste in einer Offline-Datenbank überprüft (die von anderen wichtigen Websites heruntergeladen wird) und mögliche Schwachstellen zurückgibt

Die verwendeten Datenbanken sind:

  1. Securitytracker.csv | http://www.securitytracker.com

Um es herunterzuladen und in den Nmap-Ordner zu installieren:

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/

Außerdem müssen die Datenbankpakete heruntergeladen und zu /usr/share/nmap/scripts/vulscan/ hinzugefügt werden.

Verwendung:

Um alle zu verwenden: sudo nmap -sV --script=vulscan HOST_A_ESCANEAR

Um eine spezifische Datenbank zu verwenden: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_A_ESCANEAR

Nmap-Service-Scan x16 beschleunigen

Gemäß diesem Beitrag können Sie den Nmap-Service-Scan beschleunigen, indem Sie alle totalwaitms-Werte in /usr/share/nmap/nmap-service-probes auf 300 und tcpwrappedms auf 200 ändern.

Darüber hinaus verwenden Sonden, die keinen speziell definierten servicewaitms haben, einen Standardwert von 5000. Daher können wir entweder Werte zu jeder Sonde hinzufügen oder Nmap selbst kompilieren und den Standardwert in service_scan.h ändern.

Wenn Sie die Werte von totalwaitms und tcpwrappedms in der Datei /usr/share/nmap/nmap-service-probes überhaupt nicht ändern möchten, können Sie den Parsing-Code so bearbeiten, dass diese Werte in der Datei nmap-service-probes vollständig ignoriert werden.

Last updated