# Nmap Zusammenfassung (ESP) {{#include ../../banners/hacktricks-training.md}} ``` nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24 ``` ## Parameter ### Zu scannende IPs - **`,`:** Geben Sie die IPs direkt an - **`-iL `:** list_IPs - **`-iR `**: Anzahl zufälliger IPs, Sie können mögliche IPs mit `--exclude ` oder `--excludefile ` ausschließen. ### Gerätesuche Standardmäßig startet Nmap eine Entdeckungsphase, die aus Folgendem besteht: `-PA80 -PS443 -PE -PP` - **`-sL`**: Es ist nicht invasiv, es listet die Ziele auf, indem es **DNS**-Anfragen zur Namensauflösung stellt. Es ist nützlich zu wissen, ob zum Beispiel www.prueba.es/24 alle IPs unsere Ziele sind. - **`-Pn`**: **Kein Ping**. Dies ist nützlich, wenn Sie wissen, dass alle aktiv sind (ansonsten könnten Sie viel Zeit verlieren, aber diese Option produziert auch falsche Negative, die besagen, dass sie nicht aktiv sind), sie verhindert die Entdeckungsphase. - **`-sn`** : **Kein Portscan**. Nach Abschluss der Aufklärungsphase scannt es keine Ports. Es ist relativ stealthy und ermöglicht einen kleinen Netzwerkscan. Mit Rechten sendet es ein ACK (-PA) an 80, ein SYN(-PS) an 443 und eine Echo-Anfrage sowie eine Zeitstempel-Anfrage, ohne Rechte schließt es immer Verbindungen ab. Wenn das Ziel das Netzwerk ist, verwendet es nur ARP(-PR). Wenn es mit einer anderen Option verwendet wird, werden nur die Pakete der anderen Option verworfen. - **`-PR`**: **Ping ARP**. Es 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 `**: Es sendet SYN-Pakete, auf die, wenn sie mit SYN/ACK antworten, offen sind (auf die mit RST geantwortet wird, um die Verbindung nicht zu beenden), wenn sie mit RST antworten, sind sie geschlossen, und wenn sie nicht antworten, sind sie unerreichbar. Im Falle von fehlenden Rechten wird automatisch eine vollständige Verbindung verwendet. Wenn keine Ports angegeben sind, wird es auf 80 geworfen. - **`-PA `**: Wie das vorherige, aber mit ACK, die Kombination beider ergibt bessere Ergebnisse. - **`-PU `**: 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 unerreichbar geantwortet, wenn es mit einem anderen ICMP oder nicht geantwortet wird, bleibt es als Ziel unerreichbar. - **`-PE, -PP, -PM`** : ICMP PINGS: Echo-Antwort, Zeitstempel und Adressmaske. Sie werden gestartet, um herauszufinden, ob das Ziel aktiv ist. - **`-PY`**: Sendet SCTP INIT-Proben standardmäßig an 80, INIT-ACK(offen) oder ABORT(geschlossen) oder nichts oder ICMP unerreichbar(inaktiv) kann geantwortet werden. - **`-PO `**: 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 Protokoll-Header gesendet, für den Rest wird nur der IP-Header gesendet. Der Zweck davon ist, dass aufgrund der Fehlbildung der Header, Protokoll unerreichbar oder Antworten des gleichen Protokolls beantwortet werden, um zu wissen, ob es aktiv ist. - **`-n`**: Kein DNS - **`-R`**: DNS immer ### Port-Scan-Techniken - **`-sS`**: Schließt die Verbindung nicht ab, sodass keine Spuren hinterlassen werden, sehr gut, wenn es verwendet werden kann. (Rechte) Es ist die standardmäßig verwendete Methode. - **`-sT`**: Schließt die Verbindung ab, sodass eine Spur hinterlassen wird, aber es kann sicher verwendet werden. Standardmäßig ohne Rechte. - **`-sU`**: Langsam, für UDP. Hauptsächlich: DNS(53), SNMP(161,162), DHCP(67 und 68), (-sU53,161,162,67,68): offen(Antwort), geschlossen(Port unerreichbar), gefiltert (ein anderes ICMP), offen/gefiltert (nichts). Im Falle von offen/gefiltert sendet -sV zahlreiche Anfragen, um eine der Versionen zu erkennen, die nmap unterstützt und kann den tatsächlichen Zustand erkennen. Es erhöht die Zeit erheblich. - **`-sY`**: SCTP-Protokoll kann die Verbindung nicht herstellen, sodass keine Protokolle vorhanden sind, funktioniert wie -PY - **`-sN,-sX,-sF`:** Null, Fin, Xmas, sie können einige Firewalls durchdringen und Informationen extrahieren. Sie basieren auf der Annahme, dass standardkonforme Maschinen mit RST auf alle Anfragen antworten sollten, die keine SYN-, RST- oder ACK-Flags haben: offen/gefiltert(nichts), geschlossen(RST), gefiltert (ICMP unerreichbar). Unzuverlässig unter Windows, Cisco, BSDI und OS/400. Unter Unix ja. - **`-sM`**: Maimon-Scan: Sendet FIN- und ACK-Flags, verwendet für BSD, wird derzeit alles als geschlossen zurückgeben. - **`-sA, sW`**: ACK und Window, wird verwendet, um Firewalls zu erkennen, um zu wissen, ob die Ports gefiltert sind oder nicht. Das -sW unterscheidet zwischen offen/geschlossen, da die offenen mit einem anderen Fensterwert antworten: offen (RST mit Fenster ungleich 0), geschlossen (RST Fenster = 0), gefiltert (ICMP unerreichbar oder nichts). Nicht alle Computer funktionieren so, also wenn alles geschlossen ist, funktioniert es nicht, wenn einige offen sind, funktioniert es gut, und wenn viele offen und wenige geschlossen sind, funktioniert es umgekehrt. - **`-sI`:** Idle-Scan. Für die Fälle, in denen es eine aktive Firewall gibt, aber wir wissen, dass sie zu einer bestimmten IP nicht filtert (oder wenn wir einfach Anonymität wollen), können wir den Zombie-Scanner verwenden (er funktioniert für alle Ports), um mögliche Zombies zu suchen, 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 Proben mit Cookie-Echo-Fragmenten sollten sie verworfen werden, wenn sie offen sind, oder mit ABORT geantwortet werden, wenn sie geschlossen sind. Es kann durch Firewalls gelangen, die init nicht durchlassen, das Schlechte ist, dass es nicht zwischen gefiltert und offen unterscheidet. - **`-sO`:** Protokoll-IP-Scan. Sendet fehlerhafte und leere Header, bei denen manchmal nicht einmal das Protokoll unterschieden werden kann. Wenn ICMP unerreichbar-Protokoll ankommt, ist es geschlossen, wenn unerreichbarer Port ankommt, ist es offen, wenn ein anderer Fehler ankommt, gefiltert, wenn nichts ankommt, offen|gefiltert. - **`-b `:** FTPhost--> Es wird verwendet, um einen Host von einem anderen zu scannen, dies geschieht, indem man das FTP einer anderen Maschine verbindet und sie bittet, Dateien an die Ports zu senden, die Sie von einer anderen Maschine scannen möchten, je nach den Antworten wissen wir, ob sie offen sind oder nicht. \[\:\@]\\[:\] Fast alle FTP-Server erlauben dies nicht mehr und daher hat es wenig praktische Anwendung. ### **Fokus-Analyse** **-p:** Wird verwendet, um Ports zum Scannen anzugeben. Um alle 65.335 Ports auszuwählen: **-p-** oder **-p all**. Nmap hat eine interne Klassifizierung basierend auf Popularität. Standardmäßig verwendet es die 1000 beliebtesten Ports. Mit **-F** (schneller Scan) analysiert es die 100 besten. Mit **--top-ports ** analysiert es diese Anzahl der Top-Ports (von 1 bis 65.335). Es überprüft Ports in zufälliger Reihenfolge; um dies zu verhindern, verwenden Sie **-r**. Wir können auch spezifische Ports auswählen: 20-30,80,443,1024- (letzteres bedeutet, ab 1024 zu suchen). Wir können Ports auch nach Protokollen gruppieren: U:53,T:21-25,80,139,S:9. Wir können auch einen Bereich innerhalb der beliebten Ports von Nmap auswählen: -p [-1024] analysiert bis Port 1024 von denen, die in nmap-services enthalten sind. **--port-ratio ** Analysiert die häufigsten Ports innerhalb eines Verhältnisses zwischen 0 und 1 **-sV** Versions-Scan, die Intensität kann von 0 bis 9 reguliert werden, standardmäßig ist 7. **--version-intensity ** Wir regulieren die Intensität, sodass je niedriger sie ist, nur die wahrscheinlichsten Proben gestartet werden, aber nicht alle. Damit können wir die UDP-Scan-Zeit erheblich verkürzen. **-O** OS-Erkennung **--osscan-limit** Für eine ordnungsgemäße Host-Scan sind mindestens ein offener Port und ein geschlossener Port erforderlich. Wenn diese Bedingung nicht erfüllt ist und wir dies festgelegt haben, wird keine OS-Vorhersage versucht (spart Zeit). **--osscan-guess** Wenn die OS-Erkennung nicht perfekt ist, versucht dies, es schwieriger zu machen. **Skripte** --script __|__|__|__[,...] Um Standard-Skripte zu verwenden, verwenden Sie -sC oder --script=default Verfügbare 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 grundlegende Standardskripte aus - **Discovery:** Ruft Informationen vom Ziel oder Opfer ab - **External:** Skript zur Verwendung externer Ressourcen - **Intrusive:** Verwendet Skripte, die als invasiv für das Opfer oder Ziel gelten - **Malware:** Überprüft auf Verbindungen, die von bösartigem Code oder Hintertüren geöffnet wurden - **Safe:** Führt nicht-invasive Skripte aus - **Vuln:** Entdeckt die bekanntesten Schwachstellen - **All:** Führt absolut alle verfügbaren NSE-Erweiterungsskripte aus Um nach Skripten zu suchen: **nmap --script-help="http-\*" -> Die, die mit http- beginnen** **nmap --script-help="not intrusive" -> Alle außer denen** **nmap --script-help="default or safe" -> Die in einem oder beiden** **nmap --script-help="default and safe" --> Die in beiden** **nmap --script-help="(default or safe or intrusive) and not http-\*"** --script-args __=__,__={__=__},__={__,__} --script-args-file __ --script-help __|__|__|__|all[,...] --script-trace ---> Gibt Informationen darüber, wie das Skript vorankommt --script-updatedb **Um ein Skript zu verwenden, geben Sie einfach ein: nmap --script Script_Name target** --> Bei der Verwendung des Skripts werden sowohl das Skript als auch der Scanner ausgeführt, sodass auch Scanner-Optionen hinzugefügt werden können. Wir können **"safe=1"** hinzufügen, um nur sichere auszuführen. **Zeitkontrolle** **Nmap kann die Zeit in Sekunden, Minuten, ms ändern:** --host-timeout-Argumente 900000ms, 900, 900s und 15m tun alle dasselbe. Nmap teilt die Gesamtzahl der zu scannenden Hosts in Gruppen auf und analysiert diese Gruppen in Blöcken, sodass es nicht zum nächsten Block übergeht, bis alle analysiert wurden (und der Benutzer erhält keine Updates, bis der Block analysiert wurde). Auf diese Weise ist es für Nmap optimal, große Gruppen zu verwenden. Standardmäßig verwendet es in Klasse C 256. Dies kann mit **--min-hostgroup** _****_**;** **--max-hostgroup** _****_ geändert werden (Passen Sie die Größen der parallelen Scan-Gruppen an). Sie können die Anzahl der parallelen Scanner steuern, aber es ist besser, dies nicht zu tun (Nmap hat bereits eine automatische Steuerung basierend auf dem Netzwerkstatus): **--min-parallelism** _****_**;** **--max-parallelism** _****_ Wir können das RTT-Timeout ändern, aber es ist normalerweise nicht notwendig: **--min-rtt-timeout** _**