Nmap Zusammenfassung (ESP)
Reading time: 14 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
Parameter
Zu scannende IPs
<ip>,<net/mask>
: Geben Sie die IPs direkt an-iL <ips_file>
: list_IPs-iR <number>
: Anzahl zufälliger IPs, Sie können mögliche IPs mit--exclude <Ips>
oder--excludefile <file>
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 <ports>
: 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 <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 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<ports>
: Sendet SCTP INIT-Proben standardmäßig an 80, INIT-ACK(offen) oder ABORT(geschlossen) oder nichts oder ICMP unerreichbar(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 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 <server>
: 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. [<user>:<password>@]<server>[:<port>] 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
-sV Versions-Scan, die Intensität kann von 0 bis 9 reguliert werden, standardmäßig ist 7.
--version-intensity
-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
--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
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
Wir können das RTT-Timeout ändern, aber es ist normalerweise nicht notwendig: --min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout
Wir können die Anzahl der Versuche ändern: --max-retries
Wir können die Scan-Zeit eines Hosts ändern: --host-timeout
Wir können die Zeit zwischen jedem Test ändern, um ihn zu verlangsamen: --scan-delay ; --max-scan-delay
Wir können die Anzahl der Pakete pro Sekunde ändern: --min-rate
Viele Ports benötigen lange, um zu antworten, wenn sie gefiltert oder geschlossen sind. Wenn wir nur an offenen interessiert sind, können wir schneller vorgehen mit: --defeat-rst-ratelimit
Um zu definieren, wie aggressiv wir Nmap haben wollen: -T paranoid|sneaky|polite|normal|aggressive|insane
-T (0-1)
-T0 --> Scannt nur 1 Port auf einmal und wartet 5 Minuten bis zum nächsten
-T1 und T2 --> Sehr ähnlich, warten aber nur 15 und 0,4 Sekunden zwischen jedem Test
-T3 --> Standardbetrieb, umfasst paralleles Scannen
-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
Sie erlauben keinen Zugriff auf Ports und analysieren Pakete.
-f Um Pakete zu fragmentieren, fragmentiert sie standardmäßig in 8 Bytes nach dem Header, um diese Größe anzugeben, verwenden wir ..mtu (mit diesem, verwenden Sie nicht -f), der Offset muss ein Vielfaches von 8 sein. Versionsscanner und Skripte unterstützen keine Fragmentierung
-D decoy1,decoy2,ME Nmap sendet Scanner, aber mit anderen IP-Adressen als Ursprung, auf diese Weise verstecken sie Sie. Wenn Sie ME in die Liste setzen, wird Nmap Sie dort platzieren, besser ist es, 5 oder 6 vor Ihnen zu setzen, um Sie vollständig zu maskieren. Zufällige IPs können mit RND:
Um zufällige IPs zu verwenden: nmap -D RND:10 Target_IP
-S IP Für den Fall, dass Nmap Ihre IP-Adresse nicht erfasst, müssen Sie sie damit angeben. Dient auch dazu, sie glauben zu lassen, dass ein anderes Ziel sie scannt.
-e
Viele Administratoren lassen Eingangsports offen, damit alles korrekt funktioniert, und es ist einfacher für sie, als eine andere Lösung zu finden. Diese können DNS-Ports oder FTP-Ports sein... um diese Schwachstelle zu finden, integriert Nmap: --source-port
--data
--data-string
--data-length
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. Für weitere Informationen und Beispiele zur Verwendung von IP-Optionen mit Nmap siehe http://seclists.org/nmap-dev/2006/q3/52.
--ttl
--randomize-hosts Um den Angriff weniger offensichtlich zu machen
--spoof-mac <MAC-Adresse, Präfix oder Herstellername> Um die MAC zu ändern, Beispiele: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2 und Cisco
--proxies
-sP Um Hosts in unserem Netzwerk über ARP zu entdecken
Viele Administratoren erstellen eine Firewall-Regel, die es allen Paketen erlaubt, die von einem bestimmten Port kommen, durchzulassen (wie 20,53 und 67), wir können Nmap sagen, dass es unsere Pakete von diesen Ports senden soll: nmap --source-port 53 IP
Ausgaben
-oN file Normale Ausgabe
-oX file XML-Ausgabe
-oS file Script-Kiddies-Ausgabe
-oG file Greppable Ausgabe
-oA file Alles außer -oS
-v level Ausführlichkeit
-d level Debugging
--reason Warum des Hosts und Status
--stats-every time Jedes Mal, dass es uns sagt, wie es läuft
--packet-trace Um zu sehen, welche Pakete ausgehen, können Filter wie: --version-trace oder --script-trace angegeben werden
--open zeigt offen, offen|gefiltert und ungefiltert an
--resume file Gibt eine Zusammenfassung aus
Verschiedenes
-6 Erlaubt IPv6
-A ist dasselbe wie -O -sV -sC --traceroute
Laufzeit
Während Nmap läuft, können wir Optionen ändern:
v / V Erhöhen / verringern Sie den Ausführlichkeitsgrad
d / D Erhöhen / verringern Sie den Debugging-Level
p / P Aktivieren / Deaktivieren Sie die Paketverfolgung
? Drucken Sie einen Hilfe-Bildschirm zur Laufzeitinteraktion
Vulscan
Nmap-Skript, das sich die Versionen von Diensten ansieht, die in einer Offline-Datenbank (von anderen sehr wichtigen heruntergeladen) erhalten wurden, und mögliche Schwachstellen zurückgibt.
Die verwendeten DBs sind:
- 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
Um herunterzuladen und im 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/
Sie müssten auch die DB-Pakete herunterladen und sie zu /usr/share/nmap/scripts/vulscan/ hinzufügen.
Verwendung:
Um alle zu verwenden: sudo nmap -sV --script=vulscan HOST_TO_SCAN
Um eine spezifische DB zu verwenden: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_TO_SCAN
Nmap-Service-Scan x16 beschleunigen
Laut diesem Beitrag können Sie die Nmap-Dienstanalyse beschleunigen, indem Sie alle totalwaitms
-Werte in /usr/share/nmap/nmap-service-probes
auf 300 und tcpwrappedms
auf 200 ändern.
Darüber hinaus verwenden Proben, die keinen speziell definierten servicewaitms
haben, einen Standardwert von 5000
. Daher können wir entweder Werte zu jeder der Proben hinzufügen oder wir können Nmap selbst kompilieren und den Standardwert in service_scan.h ändern.
Wenn Sie die Werte von totalwaitms
und tcpwrappedms
im /usr/share/nmap/nmap-service-probes
-Datei überhaupt nicht ändern möchten, können Sie den Parsing-Code so ändern, dass diese Werte in der nmap-service-probes
-Datei vollständig ignoriert werden.