hacktricks/generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md

20 KiB

Nmap Zusammenfassung (ESP)

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

Andere Möglichkeiten, HackTricks zu unterstützen:

{% embed url="https://websec.nl/" %}

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 der zufälligen IPs, Sie können mögliche IPs mit --exclude <Ips> oder --excludefile <file> ausschließen.

Geräteerkennung

Standardmäßig führt Nmap eine Entdeckungsphase durch, 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 Erkundungsphase 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 Antwort mit SYN/ACK geöffnet ist (auf die bei Antwort mit RST, um die Verbindung nicht zu beenden), bei Antwort mit RST ist es geschlossen und bei keiner Antwort 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 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 betrachtet.
  • -PE, -PP, -PM : ICMP PINGS: Echo-Antwort, Timestamp und Adressmask. Sie werden gesendet, 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 als Antwort erfolgen.
  • -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 nur der IP-Header. Der Zweck davon ist, dass aufgrund der Fehlbildung der Header Protokoll nicht erreichbar oder Antworten desselben Protokolls gesendet werden, um zu wissen, ob es aktiv ist.
  • -n: Kein DNS
  • -R: Immer DNS

Port-Scantechniken

  • -sS: Stellt keine Verbindung her, hinterlässt also keine Spuren, sehr gut, wenn es verwendet werden kann (mit Privilegien). Es ist standardmäßig verwendet.
  • -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 (keine Antwort). 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 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 haben: geöffnet/gefiltert(keine Antwort), 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, wird für BSD verwendet, derzeit werden alle als geschlossen zurückgegeben.
  • -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, aber wir wissen, dass sie den Verkehr zu einer bestimmten 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. 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/ungefiltert.
  • -b <server>: FTPhost--> Wird verwendet, um einen Host von einem anderen aus zu scannen, dies geschieht, indem man sich mit dem FTP eines anderen Rechners verbindet und ihn bittet, Dateien an die Ports zu senden, 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 nutzbar.

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). Die Ports werden in zufälliger Reihenfolge überprüft, um dies zu vermeiden -r. Sie können auch Ports auswählen: 20-30,80,443,1024- Dies bedeutet, dass ab 1024 weitergesucht wird. 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> Reguliert die Intensität, so dass bei niedrigeren Werten nur die wahrscheinlichsten Sonden gesendet werden, aber nicht alle. Dadurch kann die Scanzeit für UDP erheblich verkürzt werden.

-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 festgelegt haben, versucht es keine OS-Vorhersage zu treffen (spart Zeit) --osscan-guess Wenn die Betriebssystemerkennung nicht perfekt ist, erhöht dies den Aufwand.

Skripte

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

Zum Standardmäßigen Ausführen reicht -sC oder --script=default

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-Basisskripte 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 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 sind

nmap --script-help="default and safe" --> Diejenigen, die in beiden 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 Hinzufügen des Skriptnamens 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 blockweise, sodass erst nach Abschluss aller Gruppen zum nächsten Block ü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 parallelen Scan-Gruppengrößen)

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>

Wir können das RTT-Timeout ändern, aber normalerweise ist dies nicht erforderlich: --min-rtt-timeout <time>, --max-rtt-timeout <time>, --initial-rtt-timeout <time>

Wir können die Anzahl der Versuche ändern:--max-retries <numtries>

Wir können die Host-Scandauer ändern: --host-timeout <time>

Wir können die Zeit zwischen jedem Scan erhöhen, um langsamer zu scannen: --scan-delay <time>; --max-scan-delay <time>

Wir können die Anzahl der Pakete pro Sekunde ändern: --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, können wir schneller scannen mit: --defeat-rst-ratelimit

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, 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 fragmentiert es sie in 8 Bytes nach dem Header, 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 TCP-Verbindungsdetektoren. 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 Zielrechner sie scannt.

-e <interface> Zum Auswählen des Interfaces

Viele Administratoren lassen Eingangsporte offen, damit alles reibungslos funktioniert und es einfacher ist, nach einer Lösung zu suchen. Diese Ports 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ügen wir eine bestimmte Anzahl von 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, manchmal hält ein Proxy nicht so viele Verbindungen offen, wie nmap möchte, daher 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 allen Paketen erlaubt, die von einem bestimmten Port kommen (wie 20, 53 und 67), wir können nmap sagen, dass es unsere Pakete von diesen Ports sendet: 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

-d Level Debuggen

--reason Warum der Host und sein Zustand

--stats-every Zeit Gibt uns in regelmäßigen Abständen den Fortschritt an

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

--open zeigt offene, offene|gefilterte und nicht gefilterte an

--resume Datei Erstellt eine Zusammenfassung

Verschiedenes

-6 Erlaubt IPv6

-A entspricht -O -sV -sC --traceroute

Laufzeit

Während nmap läuft, können wir Optionen ändern:

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

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

p / P Aktivieren / Deaktivieren der Paketverfolgung

? Drucken Sie einen Hilfetext zur Laufzeitinteraktion

Vulscan

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

Die verwendeten Datenbanken sind:

  1. Scipvuldb.csv | http://www.scip.ch/en/?vuldb
  2. Cve.csv | http://cve.mitre.org
  3. Osvdb.csv | http://www.osvdb.org
  4. Securityfocus.csv | http://www.securityfocus.com/bid/
  5. Securitytracker.csv | http://www.securitytracker.com
  6. Xforce.csv | http://xforce.iss.net
  7. Exploitdb.csv | http://www.exploit-db.com
  8. Openvas.csv | http://www.openvas.org

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 müssten auch die Pakete der Datenbanken 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

Beschleunigen Sie den Nmap-Service-Scan x16

Gemäß diesem Beitrag können Sie den Nmap-Service-Analyse 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 wir können 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.