Nmap Summary (ESP)

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

``` 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, ist schneller als die Verwendung von Pings. Wenn keine ARP-Pakete verwendet werden sollen, verwenden Sie --send-ip.

  • -PS <ports>: Sendet SYN-Pakete, auf die bei Antwort mit SYN/ACK geöffnet ist (auf die bei Antwort mit RST, um die Verbindung nicht zu beenden), bei Antwort mit RST geschlossen ist und bei keiner Antwort nicht erreichbar ist. Wenn keine Privilegien vorhanden sind, wird automatisch eine vollständige Verbindung verwendet. 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 ist das Gegenteil, sie werden an Ports gesendet, von denen erwartet wird, dass sie geschlossen sind. Einige Firewalls überprüfen nur TCP-Verbindungen. Wenn es geschlossen ist, wird mit Port unreachable geantwortet, wenn mit einem anderen ICMP geantwortet wird oder keine Antwort erfolgt, 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 nicht erreichbar(inaktiv) kann 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 desselben Protokolls beantwortet werden, um zu wissen, ob es aktiv ist.

  • -n: Kein DNS

  • -R: Immer DNS

Portscan-Techniken

  • -sS: Stellt die Verbindung nicht 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 Spuren, 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 wahren Zustand erkennen zu können. Es erhöht die Zeit erheblich.

  • -sY: SCTP-Protokoll kann die Verbindung nicht 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 erhöht haben: geöffnet/gefiltert(nichts), geschlossen(RST), gefiltert (ICMP nicht erreichbar). Unzuverlässig bei Windows, CIsco, BSDI und OS/400. Bei Unix ja.

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

  • -sA, sW: ACK und Window, wird verwendet, um Firewalls zu erkennen, um zu wissen, 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 alle geschlossen sind, 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, wir jedoch wissen, dass sie den Zugriff auf eine bestimmte IP nicht filtert (oder wenn wir einfach anonym bleiben möchten), können wir den Zombie-Scanner verwenden (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 abgewiesen werden, wenn sie geöffnet sind, oder mit ABORT beantwortet werden, wenn sie geschlossen sind. Es kann Firewalls passieren, die init nicht passieren, das Schlechte daran ist, dass es 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 nicht erreichbares Protokoll ankommt, ist es geschlossen, wenn ein nicht erreichbarer 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 durch Verbindung mit dem FTP eines anderen Rechners und Aufforderung zum Senden von Dateien an die Ports, die Sie von einem anderen Rechner aus scannen möchten, anhand der Antworten wissen wir, ob sie geöffnet sind oder nicht. [<user>:<password>@]<server>[:<port>] Fast alle FTP-Server erlauben dies nicht mehr, daher ist es praktisch kaum noch von 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 100 verwendet. Mit -F (schneller Scan) werden die Top 100 analysiert. Mit --top-ports <numero> 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 <numero> Regelt die Intensität, so dass bei niedrigeren Werten nur die wahrscheinlichsten Sonden gesendet werden, aber nicht alle. Dadurch kann die Scanzeit erheblich verkürzt werden, insbesondere bei UDP-Scans.

-O OS-Erkennung

--osscan-limit Um einen Host ordnungsgemäß zu scannen, muss mindestens ein Port geöffnet und ein anderer geschlossen sein. Wenn diese Bedingung nicht erfüllt ist und wir dies festgelegt 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 vom 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, ob offene Verbindungen durch bösartigen Code oder Hintertüren vorhanden sind

  • 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 vorhanden sind

nmap --script-help="default and safe" --> Diejenigen, die in beiden vorhanden 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. Wir können "safe=1" hinzufügen, 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 Netzwerkstatus implementiert): --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>

Die Zeit 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 antworten langsam, 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 es wird 5 Minuten auf den nächsten gewartet

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

-T3 --> Standardbetrieb, führt parallele Scans durch

-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 in 8-Byte-Fragmente nach dem Header fragmentiert. Um diese Größe anzugeben, verwenden Sie ..mtu (verwenden Sie dies nicht zusammen mit -f), 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 Sie zu verbergen. Wenn Sie ME in die Liste aufnehmen, platziert Nmap Sie dort. Es ist besser, 5 oder 6 Adressen vor Ihrer eigenen hinzuzufügen, um Sie 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 Sie sich in einem Netzwerk befinden, ist es ratsam, IPs zu verwenden, die aktiv sind, da es sonst sehr einfach ist, festzustellen, dass Sie die einzige aktive Person sind.

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

-S IP Wenn Nmap Ihre IP-Adresse nicht erkennt, müssen Sie sie damit angeben. Es kann auch verwendet werden, um zu suggerieren, dass ein anderer Zielrechner sie scannt.

-e <interface> Zum Auswählen des Interfaces

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

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

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

--data-length <number> Nmap sendet nur Header, damit fügt es 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 <value>

--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 Netzwerk zu entdecken, in dem wir uns befinden, über ARP

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

Ausgaben

-oN Datei Normale Ausgabe

-oX Datei XML-Ausgabe

-oS Datei Script-Kiddies-Ausgabe

-oG Datei Grepable-Ausgabe

-oA Datei Alles außer -oS

-v Level Verbose-Modus

-d Level Debuggen

--reason Warum der Host und sein Status

--stats-every Zeit Gibt in regelmäßigen Abständen an, wie es läuft

--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 an

--resume Datei Erstellt eine Zusammenfassung

Verschiedenes

-6 Erlaubt IPv6

-A Das gleiche wie -O -sV -sC --traceroute

Laufzeit

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

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

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

p / P Aktivieren / Deaktivieren der Paketverfolgung

? Drucken Sie einen Hilfebildschirm zur Laufzeitinteraktion

Vulscan

Ein nmap-Skript, das die Versionen der erhaltenen 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/

Es ist auch erforderlich, die Datenbankpakete herunterzuladen und sie zu /usr/share/nmap/scripts/vulscan/ hinzuzufügen.

Verwendung:

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

Um eine bestimmte 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 Analysecode so bearbeiten, dass diese Werte in der Datei nmap-service-probes vollständig ignoriert werden.

Last updated