Nmap Summary (ESP)
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
<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.
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), es 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 ARP-Pakete nicht 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
-sS
: Schließt die Verbindung nicht ab, sodass keine Spur hinterlassen wird, 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 Tatsache, dass standardkonforme Maschinen auf alle Anfragen, die keine SYN, RST oder ACK-Flags haben, mit RST antworten sollten: 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 nicht zu einer bestimmten IP 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 ein ICMP unerreichbares Protokoll ankommt, ist es geschlossen, wenn ein 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.
-p: Dient dazu, die zu scannenden Ports anzugeben. Um die 65335 auszuwählen: -p- oder -p all. Nmap hat eine interne Klassifizierung nach Beliebtheit. Standardmäßig verwendet es die 1000 Hauptports. Mit -F (schneller Scan) analysiert es die 100 Hauptports. Mit --top-ports <nummer> analysiert es diese Anzahl von Hauptports (von 1 bis 65335). Es überprüft die Ports in zufälliger Reihenfolge, um zu verhindern, dass dies passiert, verwenden Sie -r. Wir können auch Ports auswählen: 20-30,80,443,1024- Dies bedeutet, dass es ab 1024 schaut. Wir können die 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 1024 der in nmap-services enthaltenen. --port-ratio <ratio> Analysiert die häufigsten Ports, die ein Verhältnis haben müssen, das zwischen 0 und 1 liegt.
-sV Versionsscan, die Intensität kann von 0 bis 9 reguliert werden, standardmäßig 7.
--version-intensity <nummer> Reguliert die Intensität, sodass je niedriger, desto wahrscheinlicher nur die wahrscheinlichsten Sonden gesendet werden, aber nicht alle. Damit können wir die Zeit des UDP-Scans erheblich verkürzen.
-O OS-Erkennung
--osscan-limit Um einen Host gut zu scannen, muss mindestens ein Port offen und ein anderer geschlossen sein, wenn diese Bedingung nicht erfüllt ist und wir dies gesetzt haben, versucht es nicht, eine OS-Vorhersage zu machen (spart Zeit).
--osscan-guess Wenn die OS-Erkennung nicht perfekt ist, sorgt dies dafür, dass sie sich mehr anstrengt.
Skripte
--script <filename>|<category>|<directory>|<expression>[,...]
Um die Standard-Skripte zu verwenden, 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 Skripte zur Authentifizierung aus.
Default: Führt die grundlegenden Standard-Skripte des Tools 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, ob es offene Verbindungen durch bösartige Codes oder Backdoors gibt.
Safe: Führt Skripte aus, die nicht invasiv sind.
Vuln: Entdeckt die bekanntesten Schwachstellen.
All: Führt absolut alle verfügbaren Skripte mit der Erweiterung NSE aus.
Um Skripte zu suchen:
nmap --script-help="http-*" -> Die, die mit http- beginnen
nmap --script-help="not intrusive" -> Alle außer diesen
nmap --script-help="default or safe" -> Die, die in einem oder dem anderen oder in beiden sind
nmap --script-help="default and safe" --> Die, 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 läuft.
--script-updatedb
Um ein Skript zu verwenden, muss man nur Folgendes eingeben: namp --script Name_des_Skripts Ziel --> Beim Eingeben des Skripts wird sowohl das Skript als auch der Scanner ausgeführt, sodass auch Optionen des Scanners angegeben werden können, wir können “safe=1” hinzufügen, damit nur die sicheren ausgeführt werden.
Zeitkontrolle
Nmap kann die Zeit in Sekunden, Minuten, ms ändern: --host-timeout arguments 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, bis nicht alle analysiert wurden, nicht zum nächsten Block übergegangen wird (und der Benutzer auch keine Aktualisierung erhält, 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.
Es kann geändert werden mit --min-hostgroup <numhosts>; --max-hostgroup <numhosts> (Passen Sie die Größen der parallelen Scan-Gruppen an).
Die Anzahl der parallelen Scanner kann kontrolliert werden, aber es ist besser, dies nicht zu tun (nmap hat bereits eine automatische Kontrolle basierend auf dem Zustand des Netzwerks): --min-parallelism <numprobes>; --max-parallelism <numprobes>
Wir können das RTT-Timeout ändern, aber das ist normalerweise nicht notwendig: --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 Scan-Zeit eines Hosts ändern: --host-timeout <time>
Wir können die Zeit zwischen jedem Test ändern, damit es langsamer geht: --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 auf gefilterte oder geschlossene Anfragen zu antworten. Wenn uns nur die offenen interessieren, können wir schneller vorgehen mit: --defeat-rst-ratelimit.
Um zu definieren, wie aggressiv wir nmap haben möchten: -T paranoid|sneaky|polite|normal|aggressive|insane
-T (0-1)
-T0 --> Es wird nur 1 Port gleichzeitig gescannt und 5 Minuten bis zum nächsten gewartet.
-T1 und T2 --> Sehr ähnlich, aber warten nur 15 und 0,4 Sekunden zwischen jedem Test.
-T3 --> Standardbetrieb, schließt parallel ein.
-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
Lassen keine Ports durch und analysieren Pakete.
-f Um Pakete zu fragmentieren, fragmentiert es standardmäßig in 8 Bytes nach dem Header. Um diese Größe anzugeben, verwenden wir ..mtu (damit, nicht -f verwenden), 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, es ist besser, 5 oder 6 vor Ihnen zu setzen, um Sie vollständig zu maskieren. Es können zufällige IPs mit RND:<nummer> generiert werden, um <nummer> zufällige IPs zu generieren. Sie funktionieren nicht mit Versionsdetektoren ohne TCP-Verbindung. Wenn Sie sich in einem Netzwerk befinden, ist es besser, aktive IPs zu verwenden, da es sonst sehr einfach sein wird, herauszufinden, dass Sie die einzige aktive sind.
Um zufällige IPs zu verwenden: nmap-D RND: 10 Ziel_IP
-S IP Wenn Nmap Ihre IP-Adresse nicht erfasst, müssen Sie sie damit angeben. Es dient auch dazu, den Eindruck zu erwecken, dass ein anderes Ziel sie scannt.
-e <interface> Um die Schnittstelle auszuwählen.
Viele Administratoren lassen Eingangsports offen, damit alles ordnungsgemäß funktioniert, und es ist einfacher für sie, als eine andere Lösung zu suchen. Dies können die DNS-Ports oder die FTP-Ports sein... um diese Schwachstelle zu suchen, integriert nmap: --source-port <portnumber>;-g <portnumber> Sind äquivalent.
--data <hex string> Um hexadezimalen Text zu senden: --data 0xdeadbeef und --data \xCA\xFE\x09
--data-string <string> Um normalen Text zu senden: --data-string "Scan durchgeführt von Security Ops, Durchwahl 7192"
--data-length <number> Nmap sendet nur Header, mit diesem erreichen wir, dass eine bestimmte Anzahl von Bytes mehr hinzugefügt wird (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. Für weitere Informationen und Beispiele zur Verwendung von IP-Optionen mit Nmap siehe 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> Um die MAC zu ändern, Beispiele: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2 und Cisco.
--proxies <Komma-getrennte Liste von Proxy-URLs> Um Proxys zu verwenden, manchmal hält ein Proxy nicht so viele Verbindungen offen, wie nmap möchte, daher müsste das Parallelismus geändert werden: --max-parallelism.
-sP Um Hosts im Netzwerk, in dem wir uns befinden, über ARP zu entdecken.
Viele Administratoren erstellen eine Regel in der Firewall, die es erlaubt, alle Pakete, die von einem bestimmten Port stammen (wie 20, 53 und 67), durchzulassen. Wir können nmap anweisen, unsere Pakete von diesen Ports zu senden: nmap --source-port 53 IP
Ausgaben
-oN file Normale Ausgabe
-oX file XML-Ausgabe
-oS file Ausgabe von Skript-Kiddies
-oG file Grepbare Ausgabe
-oA file Alle außer -oS
-v level Ausführlichkeit
-d level Debugging
--reason Warum des Hosts und Status
--stats-every time Alle diese Zeit sagt uns, 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 die offenen, offenen|gefilterten und die nicht gefilterten 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 die Versionen der Dienste in einer Offline-Datenbank überprüft (die von anderen sehr wichtigen heruntergeladen wird) und die möglichen Schwachstellen zurückgibt.
Die verwendeten Datenbanken 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 es 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/
Außerdem müssten 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
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 Datei /usr/share/nmap/nmap-service-probes
überhaupt nicht ändern möchten, können Sie den Parsing-Code so ändern, dass diese Werte in der Datei nmap-service-probes
vollständig ignoriert werden.
Lernen & üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)