Nmap: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „Informationssicherheit/“ durch „Informationssicherheit:“
K Textersetzung - „== Syntax ==“ durch „== Aufruf ==“
 
(18 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 14: Zeile 14:
* Überwachung von Betriebszeiten, Hosts oder Diensten
* Überwachung von Betriebszeiten, Hosts oder Diensten


[[Datei:Zenmap.png|mini|Nmap GUI Zenmap]]
[[Datei:Zenmap.png|mini|400px|Nmap GUI Zenmap]]


; ''Nmap'' ist ein [[Freie Software|freier]] [[Portscanner]] zum Scannen und Auswerten von [[Hostrechner|Hosts]] in einem [[Rechnernetz]].  
; ''Nmap'' ist ein [[Freie Software|freier]] [[Portscanner]] zum Scannen und Auswerten von [[Hostrechner|Hosts]] in einem [[Rechnernetz]].  
Zeile 343: Zeile 343:
Open Source Press[15]-Verlag erschienen.
Open Source Press[15]-Verlag erschienen.


== Syntax ==
== Aufruf ==
nmap [Scan Type...] [Options] {target specification}
[[Nmap/syntax]]
 
=== Optionen ===
==== ZIEL-SPEZIFIKATION ====
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
| Can pass hostnames, IP addresses, networks, etc.
|-
| Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
|-
| -iL <inputfilename>: Input from list of hosts/networks* -iR <num hosts>: Choose random targets
|-
| --exclude <host1[,host2][,host3],...>: Exclude hosts/networks
|-
| --excludefile <exclude_file>: Exclude list from file
|}
 
==== HOST ENTDECKUNG ====
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
| -sL: List Scan - simply list targets to scan
|-
| -sP: Ping Scan - go no further than determining if host is online
|-
| -PN: Treat all hosts as online -- skip host discovery
|-
| -PS/PA/PU[portlist]: TCP SYN/ACK or UDP discovery to given ports
|-
| -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
|-
| -PO[protocol list]: IP Protocol Ping
|-
| -n/-R: Never do DNS resolution/Always resolve [default: sometimes]
|-
| --dns-servers <serv1[,serv2],...>: Specify custom DNS servers
|-
| --system-dns: Use OS's DNS resolver
|-
| --traceroute: Trace hop path to each host
|}
 
==== SCAN TECHNIKEN ====
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
| -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
|-
| -sU: UDP Scan
|-
| -sN/sF/sX: TCP Null, FIN, and Xmas scans
|-
| --scanflags <flags>: Customize TCP scan flags
|-
| -sI <zombie host[:probeport]>: Idle scan
|-
| -sO: IP protocol scan
|-
| -b <FTP relay host>: FTP bounce scan
|}
 
==== PORT SPEZIFIKATION und SCAN BEFEHL ====
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
| -p <port ranges>: Only scan specified ports
|-
|  Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
|-
| -F: Fast mode - Scan fewer ports than the default scan
|-
| -r: Scan ports consecutively - don't randomize
|-
| --top-ports <number>: Scan <number> most common ports
|-
| --port-ratio <ratio>: Scan ports more common than <ratio>
|}
 
==== SERVICE/VERSIONS ERKENNUNG ====
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
| -sV: Probe open ports to determine service/version info
|-
| --version-intensity <level>: Set from 0 (light) to 9 (try all probes)
|-
| --version-light: Limit to most likely probes (intensity 2)
|-
| --version-all: Try every single probe (intensity 9)
|-
| --version-trace: Show detailed version scan activity (for debugging)
|}
 
==== SCRIPT SCAN ====
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
| -sC: equivalent to --script=default
|-
| --script=<Lua scripts>: <Lua scripts> is a comma separated list of directories, script-files or script-categories
|-
| --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
|-
| --script-trace: Show all data sent and received
|-
| --script-updatedb: Update the script database.
|}
 
==== OS ERKENNUNG ====
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
OS-Fingerprinting (engl. für „Betriebssystem-Fingerabdruck“)
|-
| -O: Enable OS detection
|-
| --osscan-limit: Limit OS detection to promising targets
|-
| --osscan-guess: Guess OS more aggressively
|}
 
==== TIMING und DARSTELLUNG ====
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
| Options which take <time> are in milliseconds, unless you append 's'(seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
|-
| -T<0-5>: Set timing template (higher is faster)
|-
| --min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
|-
| --min-parallelism/max-parallelism <numprobes>: Probe parallelization
|-
| --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies probe round trip time.
|-
| --max-retries <tries>: Caps number of port scan probe retransmissions.
|-
| --host-timeout <time>: Give up on target after this long
|-
| --scan-delay/--max-scan-delay <time>: Adjust delay between probes
|-
| --min-rate <number>: Send packets no slower than <number> per second
|-
| --max-rate <number>: Send packets no faster than <number> per second
|}
 
==== FIREWALL/IDS UMGEHUNG und -TÄUSCHUNG ====
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
| -f; --mtu <val>: fragment packets (optionally w/given MTU)
|-
| -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
|-
| -S <IP_Address>: Spoof source address
|-
| -e <iface>: Use specified interface
|-
| -g/--source-port <portnum>: Use given port number
|-
| --data-length <num>: Append random data to sent packets
|-
| --ip-options <options>: Send packets with specified ip options
|-
| --ttl <val>: Set IP time-to-live field
|-
| --spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
|-
| --badsum: Send packets with a bogus TCP/UDP checksum
|}
 
==== OUTPUT ====
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
| -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,and Grepable format, respectively, to the given filename.
|-
| -oA <basename>: Output in the three major formats at once
|-
| -v: Increase verbosity level (use twice or more for greater effect)
|-
| -d[level]: Set or increase debugging level (Up to 9 is meaningful)
|-
| --reason: Display the reason a port is in a particular state
|-
| --open: Only show open (or possibly open) ports
|-
| --packet-trace: Show all packets sent and received
|-
| --iflist: Print host interfaces and routes (for debugging)
|-
| --log-errors: Log errors/warnings to the normal-format output file
|-
| --append-output: Append to rather than clobber specified output files
|-
| --resume <filename>: Resume an aborted scan
|-
| --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
|-
| --webxml: Reference stylesheet from Nmap.Org for more portable XML
|-
| --no-stylesheet: Prevent associating of XSL stylesheet w/XML output
|}
 
==== MISC ====
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
MISC ("Minimal instruction set computer" engl. für Computer mit minimalem Befehlssatz)
|-
| -6: Enable IPv6 scanning
|-
| -A: Enables OS detection and Version detection, Script scanning and Traceroute
|-
| --datadir <dirname>: Specify custom Nmap data file location
|-
| --send-eth/--send-ip: Send using raw ethernet frames or IP packets
|-
| --privileged: Assume that the user is fully privileged
|-
| --unprivileged: Assume the user lacks raw socket privileges
|-
| -V: Print version number
|-
| -h: Print this help summary page.
|}
 
==== TMP ====
; Übersicht
Diese Übersicht wird ausgegeben, wenn Nmap ohne Argumente aufgerufen wird; die neueste Version davon ist immer unter
https://nmap.org/data/nmap.usage.txt verfügbar. Sie hilft dabei, sich die am häufigsten benutzten Optionen zu merken, ist aber kein Ersatz für die detaillierte Dokumentation im Rest dieses Handbuchs. Einige obskure Optionen werden hier nicht einmal erwähnt.
 
    Nmap 4.85BETA8 ( https://nmap.org )
    Usage: nmap [Scan Type(s)] [Options] {target specification}
    TARGET SPECIFICATION:
      Can pass hostnames, IP addresses, networks, etc.
      Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
      -iL <inputfilename>: Input from list of hosts/networks
      -iR <num hosts>: Choose random targets
      --exclude <host1[,host2][,host3],...>: Exclude hosts/networks
      --excludefile <exclude_file>: Exclude list from file
    HOST DISCOVERY:
      -sL: List Scan - simply list targets to scan
      -sP: Ping Scan - go no further than determining if host is online
      -PN: Treat all hosts as online -- skip host discovery
      -PS/PA/PU[portlist]: TCP SYN/ACK or UDP discovery to given ports
      -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
      -PO[protocol list]: IP Protocol Ping
      -n/-R: Never do DNS resolution/Always resolve [default: sometimes]
      --dns-servers <serv1[,serv2],...>: Specify custom DNS servers
      --system-dns: Use OS's DNS resolver
      --traceroute: Trace hop path to each host
    SCAN TECHNIQUES:
      -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
      -sU: UDP Scan
      -sN/sF/sX: TCP Null, FIN, and Xmas scans
      --scanflags <flags>: Customize TCP scan flags
      -sI <zombie host[:probeport]>: Idle scan
      -sO: IP protocol scan
      -b <FTP relay host>: FTP bounce scan
    PORT SPECIFICATION AND SCAN ORDER:
      -p <port ranges>: Only scan specified ports
        Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
      -F: Fast mode - Scan fewer ports than the default scan
      -r: Scan ports consecutively - don't randomize
      --top-ports <number>: Scan <number> most common ports
      --port-ratio <ratio>: Scan ports more common than <ratio>
    SERVICE/VERSION DETECTION:
      -sV: Probe open ports to determine service/version info
      --version-intensity <level>: Set from 0 (light) to 9 (try all probes)
      --version-light: Limit to most likely probes (intensity 2)
      --version-all: Try every single probe (intensity 9)
      --version-trace: Show detailed version scan activity (for debugging)
    SCRIPT SCAN:
      -sC: equivalent to --script=default
      --script=<Lua scripts>: <Lua scripts> is a comma separated list of
              directories, script-files or script-categories
      --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
      --script-trace: Show all data sent and received
      --script-updatedb: Update the script database.
    OS DETECTION:
      -O: Enable OS detection
      --osscan-limit: Limit OS detection to promising targets
      --osscan-guess: Guess OS more aggressively
    TIMING AND PERFORMANCE:
      Options which take < are in milliseconds, unless you append 's'
      (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
      -T<0-5>: Set timing template (higher is faster)
      --min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
      --min-parallelism/max-parallelism <numprobes>: Probe parallelization
      --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <: Specifies
          probe round trip time.
      --max-retries <tries>: Caps number of port scan probe retransmissions.
      --host-timeout <: Give up on target after this long
      --scan-delay/--max-scan-delay <: Adjust delay between probes
      --min-rate <number>: Send packets no slower than <number> per second
      --max-rate <number>: Send packets no faster than <number> per second
    FIREWALL/IDS EVASION AND SPOOFING:
      -f; --mtu <val>: fragment packets (optionally w/given MTU)
      -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
      -S <IP_Address>: Spoof source address
      -e <iface>: Use specified interface
      -g/--source-port <portnum>: Use given port number
      --data-length <num>: Append random data to sent packets
      --ip-options <options>: Send packets with specified ip options
      --ttl <val>: Set IP time-to-live field
      --spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
      --badsum: Send packets with a bogus TCP/UDP checksum
    OUTPUT:
      -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
        and Grepable format, respectively, to the given filename.
      -oA <basename>: Output in the three major formats at once
      -v: Increase verbosity level (use twice or more for greater effect)
      -d[level]: Set or increase debugging level (Up to 9 is meaningful)
      --reason: Display the reason a port is in a particular state
      --open: Only show open (or possibly open) ports
      --packet-trace: Show all packets sent and received
      --iflist: Print host interfaces and routes (for debugging)
      --log-errors: Log errors/warnings to the normal-format output file
      --append-output: Append to rather than clobber specified output files
      --resume <filename>: Resume an aborted scan
      --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
      --webxml: Reference stylesheet from Nmap.Org for more portable XML
      --no-stylesheet: Prevent associating of XSL stylesheet w/XML output
    MISC:
      -6: Enable IPv6 scanning
      -A: Enables OS detection and Version detection, Script scanning and Traceroute
      --datadir <dirname>: Specify custom Nmap data file location
      --send-eth/--send-ip: Send using raw ethernet frames or IP packets
      --privileged: Assume that the user is fully privileged
      --unprivileged: Assume the user lacks raw socket privileges
      -V: Print version number
      -h: Print this help summary page.
    EXAMPLES:
      nmap -v -A scanme.nmap.org
      nmap -v -sP 192.168.0.0/16 10.0.0.0/8
      nmap -v -iR 10000 -PN -p 80
    SEE THE MAN PAGE (https://nmap.org/book/man.html) FOR MORE OPTIONS AND EXAMPLES
 
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===


== Konfiguration ==
== Konfiguration ==
=== Dateien ===
=== Dateien ===
</noinclude>
</noinclude>
== Siehe auch ==
== Siehe auch ==
# [[zenmap]]
{{Special:PrefixIndex/Nmap}}
{{Special:PrefixIndex/Nmap}}
----
* [[zenmap]]


=== Sicherheit ===
=== Dokumentation ===
=== Dokumentation ===
==== RFC ====
==== Man-Page ====
==== Man-Pages ====
==== Info-Pages ====
==== Info-Pages ====
=== Links ===
=== Links ===
==== Einzelnachweise ====
<references />
==== Projekt ====
==== Projekt ====
# http://nmap.org
# http://nmap.org


==== Weblinks ====
==== Weblinks ====
# [https://de.wikipedia.org/wiki/Nmap]
# https://www.informatik-aktuell.de/betrieb/it-security/nmap-portscanner-hacking-tool-alleskoenner-teil-i.html
# http://www.scip.ch/?labs.20100507
# https://de.wikipedia.org/wiki/Nmap
# https://de.wikipedia.org/wiki/Nmap
# http://translate.google.com/translate?hl=de&sl=auto&tl=de&u=https%3A%2F%2Fnmap.org%2Fbook%2Finst-windows.html
# https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing
# http://mikiwiki.org/wiki/grep
# https://svn.nmap.org/nmap/docs/nmap.xsl
# https://nmap.org/man/de/man-os-detection.html
# https://www.elektronik-kompendium.de/sites/net/2103061.htm
# https://nmap.org/man/de/man-target-specification.html
# https://nmap.org/man/de/man-output.html
# https://www.elektronik-kompendium.de/sites/net/2103021.htm
<noinclude>


== Testfragen ==
{{DEFAULTSORT:nmap}}
<div class="toccolours mw-collapsible mw-collapsed">
[[Kategorie:nmap]]
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>
</noinclude>
 
= Manpage =
== HOST-ERKENNUNG ==
Einer der allerersten Schritte bei jeder Netzwerkerkundung ist die Reduktion einer (manchmal riesigen) Menge von IP-Bereichen auf eine Liste aktiver
oder interessanter Hosts. Wenn man für alle einzelnen IP-Adressen alle Ports scannt, so ist das nicht nur langsam, sondern normalerweise auch
unnötig. Was einen Host interessant macht, hängt natürlich stark vom Zweck der Untersuchung ab. Netzwerkadministratoren interessieren sich
vielleicht nur für Hosts, auf denen ein bestimmter Dienst läuft, während Sicherheitsprüfer sich vielleicht für alle Geräte interessieren, die eine
IP-Adresse haben. Ein Administrator benötigt vielleicht nur einen ICMP-Ping, um Hosts in seinem internen Netzwerk zu finden, während ein externer
Penetrationstester vielleicht Dutzende ganz verschiedener Tests einsetzen wird, um zu versuchen, die Firewall-Beschränkungen zu umgehen.
 
Da die Anforderungen bei der Host-Erkennung so verschieden sind, bietet Nmap eine breite Palette von Optionen zur Anpassung der eingesetzten
Verfahren. Trotz seines Namens geht ein Ping-Scan weit über die einfachen ICMP Echo-Request-Pakete hinaus, die mit dem allgegenwärtigen Werkzeug
ping verbunden sind. Man kann den Ping-Schritt völlig auslassen, indem man einen List-Scan (-sL) benutzt, Ping ausschaltet (-PN) oder beliebige
Kombinationen von Multi Port TCP-SYN/ACK, UDP- und ICMP-Testanfragen auf ein Netzwerk loslässt. Der Zweck dieser Anfragen ist der, Antworten
hervorzurufen, die zeigen, dass eine IP-Adresse tatsächlich aktiv ist (d.h. von einem Host oder Gerät im Netzwerk benutzt wird). In vielen
Netzwerken ist nur ein kleiner Prozentsatz von IP-Adressen zu einem bestimmten Zeitpunkt aktiv. Das gilt besonders für einen privaten Adressraum wie
10.0.0.0/8. Dieses Netzwerk enthält 16,8 Millionen IPs, aber ich habe auch Firmen gesehen, die es mit weniger als tausend Rechnern benutzen. Mit der
Host-Erkennung kann man diese spärlichen Rechnerinseln in einem Meer von IP-Adressen finden.
 
Falls keine Optionen für die Host-Erkennung angegeben werden, sendet Nmap ein TCP-ACK-Paket an Port 80 und ein ICMP Echo-Request an alle
Zielrechner. Eine Ausnahme ist, dass bei allen Zielen in einem lokalen Ethernet-Netzwerk ein ARP-Scan benutzt wird. Für unprivilegierte
Unix-Shell-Benutzer wird mit dem connect-Systemaufruf ein SYN-Paket statt eines ACK gesendet. Diese Standardeinstellungen sind äquivalent zu den
Optionen -PA -PE. Diese Host-Erkennung ist oft ausreichend, wenn man lokale Netzwerke scannt, aber für Sicherheitsüberprüfungen empfiehlt sich eine
umfangreichere Menge von Erkennungstestpaketen.
 
Die Optionen -P* (die Ping-Typen auswählen) lassen sich kombinieren. Sie können Ihre Chancen steigern, bei strengen Firewalls durchzukommen, indem
Sie viele Testpaketarten mit verschiedenen TCP-Ports/-Flags und ICMP-Codes senden. Beachten Sie auch, dass die ARP-Erkennung (-PR) bei Zielen in
einem lokalen Ethernet-Netzwerk standardmäßig erfolgt, selbst dann, wenn Sie andere -P*-Optionen angeben, weil sie fast immer schneller und
effizienter ist.
 
Standardmäßig führt Nmap eine Host-Erkennung und dann einen Port-Scan auf jedem Host aus, den es als online erkennt. Das gilt auch dann, wenn Sie
nicht standardmäßige Host-Erkennungstypen wie UDP-Testpakete (-PU) angeben. Lesen Sie über die Option -sP nach, um zu lernen, wie man nur eine
Host-Erkennung durchführt, oder über -PN, um die Host-Erkennung zu überspringen und einen Port-Scan aller Zielhosts durchzuführen. Folgende Optionen
steuern die Host-Erkennung:
 
-sL (List-Scan)
    Ein List-Scan ist eine degenerierte Form der Host-Erkennung, die einfach jeden Host im angegebenen Netzwerk (bzw.&nbsp;den Netzwerken) auflistet,
    ohne Pakete an die Ziel-Hosts zu senden. Standardmäßig führt Nmap immer noch eine Reverse-DNS-Auflösung der Hosts durch, um deren Namen zu
    lernen. Es ist oft erstaunlich, wie viel nützliche Informationen einfache Hostnamen verraten. Zum Beispiel ist fw.chi der Name einer Firewall
    einer Firma in Chicago.
 
    Nmap gibt am Ende auch die gesamte Anzahl der IP-Adressen aus. Ein List-Scan ist eine gute Plausibilitätsprüfung, um sicherzustellen, dass Sie
    saubere IP-Adressen für Ihre Ziele haben. Falls die Hosts Domainnamen enthalten, die Ihnen nichts sagen, lohnt sich eine weitere Untersuchung,
    um zu verhindern, dass Sie das Netzwerk der falschen Firma scannen.
 
    Da die Idee einfach die ist, eine Liste der Zielhosts auszugeben, lassen sich Optionen für eine höhere Funktionalität wie z.&nbsp;B.&nbsp;Port-Scanning,
    Betriebssystemerkennung oder Ping-Scanning damit nicht kombinieren. Falls Sie einen Ping-Scan abschalten und trotzdem solch höhere
    Funktionalität durchführen möchten, lesen Sie bei der Option -PN weiter.
 
-sP (Ping-Scan)
    Diese Option verlangt, dass Nmap nur einen Ping-Scan (Host-Erkennung) durchführt und dann die verfügbaren Hosts ausgibt, die auf den Scan
    geantwortet haben. Darüber hinaus werden keine weiteren Tests (z.&nbsp;B.&nbsp;Port-Scans oder Betriebssystemerkennung) durchgeführt, außer bei
    Host-Scripts mit der Nmap Scripting Engine und traceroute-Tests, sofern Sie diese Optionen angegeben haben. Das ist eine Stufe aufdringlicher
    als ein List-Scan und kann oft für dieselben Zwecke benutzt werden. Sie führt schnell eine schwache Aufklärung des Zielnetzwerks durch, ohne
    viel Aufmerksamkeit zu erregen. Für Angreifer ist es wertvoller, zu wissen, wie viele Hosts verfügbar sind, als die Liste aller IPs und
    Hostnamen aus einem List-Scan zu kennen.
 
    Für Systemadministratoren ist diese Option oft ebenfalls wertvoll. Mit ihr kann man sehr leicht die verfügbaren Rechner in einem Netzwerk zählen
    oder die Server-Verfügbarkeit überwachen. So etwas nennt man oft auch einen Ping-Sweep, und es ist zuverlässiger als ein Pinging auf die
    Broadcast-Adresse, weil viele Hosts auf Broadcast-Anfragen nicht antworten.
 
    Die Option -sP sendet standardmäßig einen ICMP Echo-Request und ein TCP-ACK-Paket an Port 80. Bei Ausführung ohne Sonderrechte wird nur ein
    SYN-Paket (mit einem connect-Aufruf) an Port 80 an das Ziel gesendet. Wenn ein Benutzer mit Sonderrechten versucht, Ziele in einem lokalen
    Ethernet-Netzwerk zu scannen, werden ARP-Requests verwendet, es sei denn, die Option --send-ip wird angegeben. Die Option -sP kann mit allen
    Erkennungsmethoden (die Optionen -P*, außer -PN) kombiniert werden, um eine höhere Flexibilität zu erhalten. Falls zwischen dem Ausgangs-Host,
    auf dem Nmap läuft, und dem Zielnetzwerk strenge Firewalls installiert sind, empfehlen sich diese fortgeschrittenen Methoden. Ansonsten könnten
    Hosts übersehen werden, wenn die Firewall Testanfragen oder Antworten darauf verwirft
 
-PN (Ping abschalten)
    Eine weitere Möglichkeit ist die, die Erkennungsphase von Nmap völlig auszulassen. Normalerweise bestimmt Nmap in dieser Phase aktive Rechner,
    die es anschließend stärker scannt. Standardmäßig führt Nmap heftigere Tests wie Port-Scans, Versions- oder Betriebssystemerkennung bei Hosts
    durch, die es bereits als aktiv eingestuft hat. Das Ausschalten der Host-Erkennung mit der Option -PN bewirkt, dass Nmap versucht, die
    gewünschten Scan-Funktionen auf allen angegebenen Ziel-IP-Adresssen durchzuführen. Wenn also ein Zieladressraum der Größe Klasse B (/16) auf der
    Kommandozeile angegeben wird, werden alle 65.536 IP-Adressen gescannt. Eine richtige Host-Erkennung wird wie bei einem List-Scan übersprungen,
    aber statt anzuhalten und die Zielliste auszugeben, fährt Nmap mit der Durchführung der gewünschten Funktionen fort, so als ob jede Ziel-IP
    aktiv wäre. Bei Rechnern im lokalen Ethernet-Netzwerk wird ein ARP-Scan weiterhin ausgeführt (es sei denn, es wird --send-ip angegeben), da Nmap
    MAC-Adressen braucht, um Zielhosts weiter zu scannen. Diese Option lautete früher einaml P0 (mit einer Null), wurde dann aber umbenannt, um
    Verwirrung mit der Option PO von Protokoll-Pings (benutzt den Buchstaben O) zu vermeiden.
 
-PS port list (TCP-SYN-Ping)
    Diese Option sendet ein leeres TCP-Paket mit gesetztem SYN-Flag. Der vorgegebene Zielport ist 80 (lässt sich zum Zeitpunkt des Kompilierens
    durch Ändern von DEFAULT_TCP_PROBE_PORT_SPEC in nmap.h konfigurieren), aber man kann einen alternativen Port als Parameter angeben. Die Syntax
    ist dieselbe wie bei -p, mit dem Unterschied, dass Porttypenbezeichner wie T: nicht erlaubt sind. Beispiele hierfür sind -PS22 und
    -PS22-25,80,113,1050,35000. Beachten Sie, dass es kein Leerzeichen zwischen -PS und der Port-Liste geben darf. Falls mehrere Tests angegeben
    werden, werden sie parallel durchgeführt.
 
    Das SYN-Flag bedeutet für das entfernte System, dass Sie versuchen, eine Verbindung herzustellen. Normalerweise wird der Zielport geschlossen
    sein, und es wird ein RST-(Reset-)Paket zurückgeschickt. Falls der Port offen ist, führt das Ziel den zweiten Schritt eines
    TCP-three-way-handshake
 
    durch, indem es mit einem SYN/ACK-TCP-Paket antwortet. Der Rechner, auf dem Nmap läuft, bricht dann die entstehende Verbindung ab, indem er mit
    einem RST antwortet, statt ein ACK-Paket zu senden, mit dem der three-way handshake komplett und eine vollständige Verbindung hergestellt wäre.
    Das RST-Paket wird als Antwort auf das unerwartete SYN/ACK vom Betriebssystem-Kernel des Rechners gesendet, auf dem Nmap läuft, nicht von Nmap
    selbst.
 
    Für Nmap ist es egal, ob der Port offen oder geschlossen ist. Aus beiden Antworten, ob RST oder SYN/ACK, schließt Nmap, dass der Host verfügbar
    ist und antwortet.
 
    Auf Unix-Rechnern kann im Allgemeinen nur der mit Sonderrechten ausgestattete Benutzer root rohe TCP-Pakete senden und empfangen. Bei normalen
    Benutzern kommt automatisch eine Umgehungslösung zum Tragen, bei der für alle Zielports der connect-Systemaufruf verwendet wird. Das bewirkt,
    dass an den Zielhost ein SYN-Paket gesendet wird, mit der Absicht, eine Verbindung herzustellen. Falls connect schnell ein erfolgreiches
    Ergebnis oder einen ECONNREFUSED-Fehler zurückgibt, muss der darunterliegende TCP-Stack ein SYN/ACK oder RST empfangen haben, und der Host wird
    als verfügbar vermerkt. Falls der Verbindungsversuch hängenbleibt, bis eine Zeitbeschränkung erreicht ist, wird der Host als inaktiv vermerkt.
    Diese Behelfslösung wird auch bei IPv6-Verbindungen verwendet, da Nmap den Bau roher IPv6-Pakete noch nicht unterstützt.
 
-PA port list (TCP-ACK-Ping)
    Der TCP-ACK-Ping ist ziemlich ähnlich zum SYN-Ping. Der Unterschied ist der, dass das TCP-ACK-Flag statt dem SYN-Flag gesetzt wird, was Sie sich
    bestimmt schon gedacht haben. Ein solches ACK-Paket erweckt den Eindruck, es wolle Daten auf einer bestehenden TCP-Vebindung bestätigen, während
    eine solche Verbindung gar nicht existiert. Entfernte Hosts sollten darauf immer mit einem RST-Paket antworten, wobei sie ihre Existenz
    verraten.
 
    Die Option -PA benutzt denselben Standard-Port wie der SYN-Test (80) und nimmt ebenfalls eine Liste von Zielports im selben Format an. Falls ein
    unprivilegierter Benutzer das ausprobiert oder falls ein IPv6-Ziel angegeben wird, wird die bereits erwähnte Behelfslösung mit connect
    eingesetzt. Diese ist nicht perfekt, da connect tatsächlich ein SYN-Paket statt eines ACK sendet.
 
    Der Grund für die Existenz sowohl von SYN- als auch ACK-Ping-Tests liegt darin, die Chancen für die Umgehung von Firewalls zu erhöhen. Viele
    Administratoren konfigurieren Router und andere einfache Firewalls so, dass sie eingehende SYN-Pakete blockieren, außer bei solchen für
    öffentliche Dienste wie bei der Website oder dem Mailserver der Firma. Das verhindert weitere eingehende Verbindungen zur Organisation, während
    es den Benutzern freie Verbindungen ins Internet erlaubt. Dieser zustandslose Ansatz benötigt wenige Ressourcen in der Firewall bzw.&nbsp;im Router
    und wird von Hardware- und Software-Filtern weithin unterstützt. Die Firewall-Software Netfilter/iptables in Linux bietet die komfortable Option
    --syn, um diesen zustandslosen Ansatz zu implementieren. Wenn solche Firewall-Regeln vorhanden sind, werden SYN-Ping-Tests (-PS), die an
    geschlossene Zielports gesendet werden, sehr wahrscheinlich blockiert. In solchen Fällen greift der ACK-Test, da er diese Regeln einfach kappt.
 
    Eine weitere häufige Art von Firewalls verwendet zustandsbehaftete Regeln, die unerwartete Pakete verwerfen. Dieses Merkmal konnte man zuerst
    bei hochwertigen Firewalls finden, es hat sich aber mit der Zeit deutlich verbreitet. In Linux unterstützt das Netfilter/iptables-System das mit
    der Option --state, die Pakete nach einem Verbindungszustand kategorisiert. In solchen Fällen hat der SYN-Test eine wesentlich bessere Chance
    auf Erfolg, da unerwartete ACK-Pakete im Allgemeinen als fehlerhaft erkannt und verworfen werden. Eine Lösung aus diesem Dilemma besteht darin,
    mit -PS und -PA SYN- und ACK-Testpakete zu senden.
 
-PU port list (UDP-Ping)
    Eine weitere Möglichkeit bei der Host-Erkennung ist der UDP-Ping, bei dem ein leeres (außer bei Angabe von --data-length) UDP-Paket an die
    angegebenen Ports gesendet wird. Die Portliste hat dasselbe Format wie bei den weiter oben beschriebenen Optionen -PS und -PA. Falls keine Ports
    angegeben werden, ist die Standardeinstellung 31338. Dieser Wert kann zum Zeitpunkt des Kompilierens dürch Änderung von
    DEFAULT_UDP_PROBE_PORT_SPEC in nmap.h konfiguriert werden. Es wird absichtlich ein sehr unwahrscheinlicher Port verwendet, weil bei dieser
    bestimmten Art des Scannens das Senden an offene Ports oft unerwünscht ist.
 
    Trifft der UDP-Test beim Zielrechner auf einen geschlossenen Port, so sollte dieser ein ICMP-Paket zurückschicken, das besagt, dass der Port
    nicht erreichbar ist. Daraus schließt Nmap, dass der Rechner läuft und verfügbar ist. Viele weitere Arten von ICMP-Fehlern, z.&nbsp;B.&nbsp;bei
    unerreichbaren Hosts/Netzwerken oder überschrittener TTL (Time To Live), sind Zeichen für einen abgeschalteten oder unerreichbaren Host. Auch
    eine ausbleibende Antwort wird so interpretiert. Falls ein offener Port erreicht wird, ignorieren die meisten Dienste das leere Paket einfach
    und geben keine Antwort zurück. Deswegen wird als Standardport 31338 benutzt, bei dem es sehr unwahrscheinlich ist, dass er benutzt wird. Einige
    Dienste, wie z.&nbsp;B.&nbsp;das Character Generator-Protokoll (chargen), antworten auf ein leeres UDP-Paket und enthüllen damit Nmap gegenüber, dass der
    Rechner zugänglich ist.
 
    Der Hauptvorteil dieses Scan-Typs liegt darin, dass er Firewalls und Filter umgeht, die nur TCP überprüfen. Ich hatte z.&nbsp;B.&nbsp;einmal ein BEFW11S4,
    einen Wireless-Breitband-Router von Linksys. Die externe Schnittstelle dieses Geräts filterte standardmäßig alle TCP-Ports, aber UDP-Tests
    entlockten ihm weiterhin Meldungen über unerreichbare Ports und verrieten damit das Gerät.
 
-PE; -PP; -PM (ICMP-Ping-Arten)
    Zusätzlich zu den genannten ungewöhnlichen TCP- und UDP-Host-Erkennungsarten kann Nmap auch Standardpakete senden, wie sie das allgegenwärtige
    Programm ping sendet. Nmap sendet ein ICMP Typ-8-Paket (Echo-Request) an die Ziel-IP-Adressen und erwartet eine Typ-0-Antwort (Echo-Reply) vom
    verfügbaren Host. Zum Leidwesen von Netzwerkerkundern blockieren viele Hosts und Firewalls heute diese Pakete, statt, wie in RFC 1122[1]
    verlangt, darauf zu antworten. Aus diesem Grund sind ICMP-Scans allein bei unbekannten Zielen über das Internet selten zuverlässig genug. Aber
    für Systemadministratoren, die ein internes Netzwerk überwachen, kann das ein praktischer und wirksamer Ansatz sein. Benutzen Sie die Option
    -PE, um dieses Verhalten mit Echo-Requests einzuschalten.
 
    Auch wenn ein Echo-Request die Standard-ICMP-Ping-Abfrage ist, hört Nmap hier nicht auf. Der ICMP-Standard (RFC 792[2]) spezifiziert auch
    Anfragepakete für Zeitstempel, Information und Adressmaske mit den jeweiligen Codes 13, 15 und 17. Während diese Anfragen angeblich den Zweck
    haben, an Informationen wie Address Mask und Timestamp zu gelangen, können sie auch leicht für die Host-Erkennung benutzt werden. Im Moment
    implementiert Nmap keine Information-Request-Pakete, da sie nicht weit verbreitet sind (RFC 1122 besteht darauf, dass „ein Host diese
    Nachrichten NICHT implementieren SOLLTE“). Anfragen nach Timestamp und Address Mask können jeweils mit den Optionen -PP und -PM gesendet werden.
    Eine Timestamp-Antwort (ICMP-Code 14) oder Address-Mask-Antwort (Code 18) enthüllt, dass der Host greifbar ist. Diese beiden Abfragen können
    wertvoll sein, wenn Administratoren ausdrücklich Echo-Request-Pakete blockieren, aber vergessen, dass man für den gleichen Zweck auch andere
    ICMP-Abfragen benutzen kann.
 
-PO protocol list (IP-Protokoll-Ping)
    Die neueste Möglichkeit der Host-Erkennung ist ein IP-Protokoll-Ping, der IP-Pakete sendet, in deren IP-Header die angegebene Protokollnummer
    gesetzt ist. Die Protokoll-Liste hat dasselbe Format wie Portlisten bei den weiter oben vorgestellten Optionen der TCP- und UDP-Host-Erkennung.
    Ohne Angabe von Protokollen werden standardmäßig mehrere IP-Pakete für ICMP (Protokoll 1), IGMP (Protokoll 2) und IP-in-IP (Protokoll 4)
    gesendet. Die Standardprotokolle können zum Zeitpunkt des Kompilierens durch Veränderung von DEFAULT_PROTO_PROBE_PORT_SPEC in nmap.h
    konfiguriert werden. Beachten Sie, dass für ICMP, IGMP, TCP (Protokoll 6) und UDP (Protokoll 17) die Pakete mit den richtigen Protokoll-Headern
    gesendet werden, während andere Protokolle ohne weitere Daten über den IP-Header hinaus gesendet werden (es sei denn, die Option --data-length
    wird angegeben).
 
    Diese Methode der Host-Erkennung sucht nach Antworten, die entweder dasselbe Protokoll wie der Test haben, oder Meldungen, dass das
    ICMP-Protokoll nicht erreichbar ist, was bedeutet, dass das gegebene Protokoll vom Zielhost nicht unterstützt wird. Beide Antworten bedeuten,
    dass der Zielhost am Leben ist.
 
-PR (ARP-Ping)
    Eines der häufigsten Einsatzszenarien für Nmap ist das Scannen eines Ethernet-LANs. In den meisten LANs, besonders jenen, die durch RFC 1918[3]
    erteilte private Adressbereiche verwenden, wird der Großteil der IP-Adressen meistens nicht genutzt. Wenn Nmap versucht, ein rohes IP-Paket wie
    z.&nbsp;B.&nbsp;ein ICMP Echo-Request zu senden, muss das Betriebssystem die der Ziel-IP entsprechende Hardware-Zieladresse (ARP) bestimmen, damit es den
    Ethernet-Frame korrekt adressieren kann. Das ist oft langsam und problematisch, da Betriebssysteme nicht in der Erwartung geschrieben wurden,
    dass sie in kurzer Zeit Millionen von ARP-Anfragen bei nicht erreichbaren Hosts durchführen müssen.
 
    Beim ARP-Scan ist Nmap mit seinen optimierten Algorithmen zuständig für ARP-Anfragen. Und wenn es eine Antwort erhält, muss sich Nmap nicht
    einmal um die IP-basierten Ping-Pakete kümmern, da es bereits weiß, dass der Host aktiv ist. Das macht den ARP-Scan viel schneller und
    zuverlässiger als IP-basierte Scans. Deswegen wird er standardmäßig ausgeführt, wenn Ethernet-Hosts gescannt werden, bei denen Nmap bemerkt,
    dass sie sich in einem lokalen Ethernet-Netzwerk befinden. Selbst wenn verschiedene Ping-Arten (wie z.&nbsp;B.&nbsp;-PE oder -PS) angegeben werden, benutzt
    Nmap stattdessen ARP bei allen Zielen, die im selben LAN sind. Wenn Sie einen ARP-Scan auf gar keinen Fall durchführen möchten, geben Sie
    --send-ip an.
 
--traceroute (Traceroutes zum Host)
    Traceroutes werden nach einem Scan mit Hilfe der Information aus den Scan-Ergebnissen durchgeführt, um den wahrscheinlichsten Port und das
    wahrscheinlichste Protokoll zu bestimmen, die zum Ziel führen. Es funktioniert mit allen Scan-Arten außer Connect-Scans (-sT) und Idle-Scans
    (-sI). Alle Traces benutzen Nmaps dynamisches Timing-Modell und werden parallel durchgeführt.
 
    Traceroute funktioniert dadurch, dass es Pakete mit kurzer TTL (Time To Live) sendet und damit versucht, ICMP Time-Exceeded-Nachrichten von
    Sprungstellen zwischen dem Scanner und dem Zielhost hervorzurufen. Standardimplementationen von Traceroute fangen mit einer TTL von 1 an und
    inkrementieren die TTL, bis der Zielhost erreicht ist. Nmaps Traceroute fängt mit einer hohen TTL an und verringert sie, bis sie Null erreicht.
    Durch dieses umgekehrte Vorgehen kann Nmap clevere Caching-Algorithmen benutzen, um Traces über mehrere Hosts zu beschleunigen. Im Durchschnitt
    sendet Nmap je nach Netzwerkbedingungen 5–10 Pakete weniger pro Host. Wenn ein einziges Unternetz gescannt wird (z.&nbsp;B.&nbsp;192.168.0.0/24), muss Nmap
    an die meisten Hosts eventuell nur ein einziges Paket senden.
 
-n (keine DNS-Auflösung)
    Weist Nmap an, niemals eine Reverse-DNS-Auflösung bei den gefundenen aktiven IP-Adressen durchzuführen. Da DNS selbst mit Nmaps eingebautem
    parallelen Stub-Resolver langsam sein kann, kann diese Option die Scan-Zeiten dramatisch reduzieren.
 
-R (DNS-Auflösung für alle Ziele)
    Weist Nmap an, immer eine Reverse-DNS-Auflösung bei den Ziel-IP-Adressen durchzuführen. Normalerweise wird Reverse-DNS nur bei anwortenden Hosts
    (die online sind) durchgeführt.
 
--system-dns (verwendet DNS-Auflösung des Systems)
    Standardmäßig löst Nmap IP-Adressen auf, indem es Anfragen direkt an die auf Ihrem Host konfigurierten Nameserver schickt und dann auf Antworten
    wartet. Um die Performance zu erhöhen, werden viele Anfragen (oftmals Dutzende) parallel ausgeführt. Wenn Sie diese Option angeben, verwenden
    Sie stattdessen die Auflösungsmethode Ihres Systems (zu jedem Zeitpunkt nur eine IP mit dem Aufruf getnameinfo call). Das ist langsam und selten
    nützlich, es sei denn, Sie finden einen Fehler bei der parallelen Auflösung in Nmap (bitte teilen Sie uns das mit). Bei IPv6-Scans wird immer
    die Auflösungsmethode des Systems verwendet.
 
--dns-servers server1[,server2[,...]] (Server, die für Reverse-DNS-Anfragen benutzt werden)
    Standardmäßig bestimmt Nmap Ihre DNS-Server (für die rDNS-Auflösung) aus Ihrer Datei resolv.conf (Unix) oder der Registry (Win32). Mit dieser
    Option können Sie alternative Server dazu angeben. Diese Option bleibt unbeachtet, falls Sie --system-dns oder einen IPv6-Scan benutzen. Oft ist
    es schneller, mehrere DNS-Server zu benutzen, besonders dann, wenn Sie für Ihren Ziel-IP-Raum maßgebende Server benutzen. Diese Option kann auch
    die Heimlichkeit erhöhen, da Ihre Anfragen von fast jedem rekursiven DNS-Server im Internet abprallen können.
 
    Diese Option ist auch beim Scannen privater Netzwerke praktisch. Manchmal bieten nur einige wenige Nameserver saubere rDNS-Information, und Sie
    wissen vielleicht nicht einmal, wo sie sind. Sie können das Netzwerk auf Port 53 scannen (vielleicht mit Versionserkennung), dann
    Nmap-List-Scans versuchen (-sL) und dabei mit der Option --dns-servers immer nur einen Nameserver angeben, bis Sie einen finden, der
    funktioniert.
 
GRUNDLAGEN VON PORT-SCANS
Nmap hat über die Jahre an Funktionalität zugelegt, aber angefangen hat es als effizienter Port-Scanner, und das ist weiterhin seine Kernfunktion.
Der einfache Befehl nmap target scannt die am häufigsten verwendeten 1000 TCP-Ports auf dem Host target und klassifiziert jeden Port in einen der
Zustände offen, geschlossen, gefiltert, ungefiltert, offen|gefiltert oder geschlossen|gefiltert.
 
Diese Zustände sind keine echten Eigenschaften eines Ports selbst, sondern beschreiben, wie Nmap ihn sieht. Ein Nmap-Scan z.&nbsp;B.&nbsp;, bei dem Ausgangs-
und Zielnetzwerk identisch sind, könnte Port 135/tcp als offen anzeigen, während ein Scan zur selben Zeit mit denselben Optionen über das Internet
diesen Port als gefiltert anzeigen könnte.
 
Die sechs von Nmap erkannten Port-Zustände
 
offen
    Ein Programm ist bereit, TCP-Verbindungen oder UDP-Pakete auf diesem Port anzunehmen. Beim Port-Scanning ist es oftmals das Ziel, solche Ports
    zu finden. Sicherheitsbewusste Leute wissen, dass jeder offene Port eine breite Einfahrtstrasse für Angriffe darstellt. Angreifer und
    Penetrationstester wollen offene Ports ausbeuten (engl. exploit), während Administratoren versuchen, sie zu schließen oder mit Firewalls zu
    schützen, ohne legitime Benutzer zu behindern. Offene Ports sind auch für Scans von Interesse, bei denen es nicht um Sicherheit geht, weil sie
    Dienste anzeigen, die im Netzwerk benutzt werden können.
 
geschlossen
    Ein geschlossener Port ist erreichbar (er empfängt und antwortet auf Nmap-Testpakete), aber es gibt kein Programm, das ihn abhört. Er kann von
    Nutzen sein, um zu zeigen, dass ein Host online ist und eine IP-Adresse benutzt (Host-Erkennung oder Ping-Scanning), sowie als Teil der
    Betriebssystemerkennung. Weil geschlossene Ports erreichbar sind, sind sie es wert, gescannt zu werden, falls sie später einmal geöffnet werden
    sollten. Administratoren möchten solche Ports vielleicht mit einer Firewall blockieren, damit sie im Zustand gefiltert erscheinen, der als
    Nächstes beschrieben wird.
 
gefiltert
    Nmap kann nicht feststellen, ob der Port offen ist, weil eine Paketfilterung verhindert, dass seine Testpakete den Port erreichen. Die Filterung
    könnte durch dafür vorgesehene Firewall-Geräte, Router-Regeln oder hostbasierte Firewall-Software erfolgen. Weil sie so wenig Information
    bringen, sind diese Ports für Angreifer frustrierend. Manchmal antworten sie mit ICMP-Fehlermeldungen wie Typ 3, Code 13 (Destination
    Unreachable: Communication Administratively Prohibited), aber Filter, die Testpakete ohne Antwort einfach verwerfen, kommen wesentlich häufiger
    vor. Das zwingt Nmap zu mehreren wiederholten Versuchen, um auszuschließen, dass das Testpaket wegen einer Netzwerküberlastung statt durch eine
    Filterung verworfen wurde. Diese Art der Filterung verlangsamt einen Scan dramatisch.
 
ungefiltert
    Der Zustand ungefiltert bedeutet, dass ein Port zugänglich ist, aber Nmap nicht feststellen kann, ob er offen oder geschlossen ist. Nur der
    ACK-Scan, der benutzt wird, um Firewall-Regelwerke zu bestimmen, klassifiziert Ports in diesen Zustand. Um festzustellen, ob ein ungefilterter
    Port offen ist, kann es hilfreich sein, ihn mit anderen Scan-Methoden wie Window-Scan, SYN-Scan oder FIN-Scan zu scannen.
 
offen|gefiltert
    Nmap klassifiziert einen Port in diesen Zustand, wenn es nicht feststellen kann, ob der Port offen oder gefiltert ist. Das kommt bei
    Scan-Methoden vor, in denen offene Ports keine Antwort geben. Das Fehlen einer Antwort könnte auch bedeuten, dass ein Paketfilter das Testpaket
    verworfen hat oder dass keine Antwort provoziert werden konnte. Deswegen weiß Nmap nicht sicher, ob der Port offen ist oder gefiltert wird.
    Ports werden von den UDP-, IP-Protokoll-, FIN-, NULL- und Xmas-Scans auf diese Weise klassifiziert.
 
geschlossen|gefiltert
    Dieser Zustand wird benutzt, wenn Nmap nicht feststellen kann, ob ein Port geschlossen ist oder gefiltert wird. Er wird nur vom IP-ID-Idle-Scan
    benutzt.
 
PORT-SCANNING-METHODEN
Als Hobby-Automechaniker kann ich mich stundenlang damit herumquälen, meine einfachsten Werkzeuge (Hammer, Klebeband, Schraubenschlüssel etc.) an
mein Problem anzupassen. Wenn ich dann kläglich versage und meine alte Blechkiste zu einem echten Mechaniker schleppe, fischt er immer so lange in
einer riesigen Werkzeugkiste herum, bis er das perfekte Ding gefunden hat, mit dem sich die Aufgabe fast von allein löst. Bei der Kunst des
Port-Scannings ist es ähnlich. Experten kennen Dutzende von Scan-Methoden und wählen für jede Aufgabe die geeignete (oder eine Kombination von
mehreren) aus. Auf der anderen Seite versuchen unerfahrene Benutzer und Script-Kiddies, jedes Problem mit dem standardmäßigen SYN-Scan zu lösen. Da
Nmap gratis ist, ist Unwissen das einzige Hindernis auf dem Weg zur Meisterschaft im Port-Scanning. Das ist bestimmt besser als in der Autowelt, wo
man eventuell sehr viel Können haben muss, um festzustellen, dass man einen Federbein-Kompressor benötigt, und dann immer noch Tausende dafür
bezahlen muss.
 
Die meisten Scan-Typen stehen nur privilegierten Benutzern zur Verfügung, und zwar deswegen, weil sie rohe IP-Pakete senden und empfangen, wofür auf
Unix-Systemen root-Rechte benötigt werden. Auf Windows empfiehlt sich ein Administrator-Account, wenngleich auf dieser Plattform Nmap manchmal auch
für unprivilegierte Benutzer funktioniert, sofern WinPcap bereits in das Betriebssystem geladen wurde. Als Nmap 1997 veröffentlicht wurde, war die
Voraussetzung von root-Rechten eine ernsthafte Beschränkung, da viele Benutzer nur Zugriff zu Shell-Accounts hatten. Die Welt von heute ist anders.
Computer sind billiger, wesentlich mehr Menschen verfügen über einen immer verfügbaren direkten Internet-Zugang, und Desktop-Unix-Systeme (inklusive
Linux und Mac OS X) sind weit verbreitet. Eine Windows-Version von Nmap ist nun auch verfügbar, wodurch es nun auf noch mehr Rechnern laufen kann.
Aus all diesen Gründen sind Benutzer nur noch selten gezwungen, Nmap von einem beschränkten Shell-Account aus einzusetzen. Das ist erfreulich, denn
die privilegierten Optionen machen Nmap wesentlich mächtiger und flexibler.
 
Auch wenn Nmap versucht, genaue Ergebnisse zu produzieren, sollten Sie nicht vergessen, dass all seine Erkenntnisse auf Paketen basieren, die von
den Zielrechnern (oder den Firewalls davor) zurückkommen. Solche Hosts können unzuverlässig sein und eine Antwort senden, die Nmap verwirren oder
täuschen soll. Wesentlich häufiger sind Hosts, die nicht RFC-konform sind und auf Testpakete von Nmap nicht so antworten, wie sie sollten. FIN-,
NULL- und Xmas-Scans sind für dieses Problem besonders anfällig. Solche Probleme sind spezifisch für bestimmte Scan-Methoden und werden daher in den
jeweiligen Abschnitten erörtert.
 
Dieser Abschnitt dokumentiert die etwa ein Dutzend von Nmap unterstützten Port-Scan-Methoden. Es darf immer nur eine Methode allein benutzt werden,
mit der Ausnahme von UDP-Scans (-sU), die sich mit allen anderen TCP-Scan-Methoden kombinieren lassen. Hier eine Gedächtnisstütze: Optionen für
Port-Scan-Methoden haben die Form -sC, wobei C ein bedeutender Buchstabe im Scan-Namen ist, normalerweise der erste. Die eine Ausnahme hiervon ist
der als veraltet betrachtete FTP-Bounce-Scan (-b). Nmap führt standardmäßig einen SYN-Scan durch, ersetzt diesen aber mit einem Connect-Scan, falls
der Benutzer nicht die nötigen Rechte hat, um rohe Pakete (benötigen unter Unix root-Rechte) zu senden, oder falls er IPv6-Ziele angegeben hat. Von
den in diesem Abschnitt aufgelisteten Scans dürfen Benutzer ohne Sonderrechte nur den Connect- und FTP-Bounce-Scan ausführen.
 
-sS (TCP-SYN-Scan)
    Der SYN-Scan ist aus gutem Grund die Standardeinstellung und die beliebteste Scan-Methode. Er kann schnell durchgeführt werden und scannt dabei
    Tausende von Ports pro Sekunde, wenn das Netzwerk schnell ist und nicht von einer intrusiven Firewall behindert wird. Der SYN-Scan ist relativ
    unauffällig, da er TCP-Verbindungen niemals abschließt. Außerdem funktioniert er auch bei allen konformen TCP-Stacks und ist unabhängig von
    spezifischen Eigenarten von Plattformen, wie es bei den FIN-/NULL-/Xmas-, Maimon- und Idle-Scans in Nmap der Fall ist. Er erlaubt auch eine
    klare, zuverlässige Unterscheidung zwischen den Zuständen offen, geschlossen und gefiltert.
 
    Diese Methode wird oft als halboffenes Scannen bezeichnet, weil keine vollständige TCP-Verbindung hergestellt wird. Sie senden ein SYN-Paket,
    als ob Sie eine echte Verbindung herstellen würden, und warten dann auf eine Antwort. Ein SYN/ACK zeigt, dass jemand auf dem Port lauscht (dass
    er offen ist), während ein RST (Reset) anzeigt, dass niemand darauf lauscht. Falls nach mehreren erneuten Übertragungen keine Antwort erhalten
    wird, wird der Port als gefiltert markiert. Der Port wird auch dann als gefiltert markiert, wenn ein ICMP Unreachable-Fehler (Typ 3, Code 1, 2,
    3, 9, 10 oder 13) empfangen wird.
 
-sT (TCP-Connect-Scan)
    Der TCP-Connect-Scan ist der standardmäßig eingestellte TCP-Scan-Typ, falls der SYN-Scan nicht möglich ist. Das ist dann der Fall, wenn der
    Benutzer kein Recht hat, rohe Pakete zu senden, oder wenn er IPv6-Netzwerke scannt. Statt rohe Pakete zu schreiben, wie es die meisten anderen
    Scan-Typen machen, bittet Nmap das darunterliegende Betriebssystem, eine Verbindung mit dem Zielrechner und -port herzustellen, indem es einen
    Systemaufruf namens connect benutzt. Das ist derselbe Systemaufruf auf höherer Ebene, den Webbrowser, P2P-Clients und die meisten anderen
    netzwerkfähigen Anwendungen benutzen, um eine Verbindung herzustellen. Er ist Teil einer Programmierschnittstelle, die unter dem Namen Berkeley
    Sockets-API bekannt ist. Statt Antworten in Form roher Pakete von der Leitung zu lesen, benutzt Nmap diese API, um zu jedem Verbindungsversuch
    eine Statusinformation zu erhalten.
 
    Wenn der SYN-Scan verfügbar ist, ist er normalerweise die bessere Wahl. Nmap hat weniger Einfluss auf den connect-Systemaufruf als auf rohe
    Pakete, wodurch es weniger effizient wird. Der Systemaufruf beendet Verbindungen zu offenen Ziel-Ports vollständig, statt sie in halboffenen
    Zustand zurückzusetzen, wie es der SYN-Scan macht. Das dauert nicht nur länger und erfordert mehr Pakete, um an dieselbe Information zu
    gelangen, sondern es ist sehr viel wahrscheinlicher, dass die Zielrechner die Verbindung protokollieren. Ein anständiges IDS wird beides
    mitbekommen, aber die meisten Rechner verfügen nicht über ein solches Alarmsystem. Viele Dienste auf Ihrem durchschnittlichen Unix-System fügen
    eine Notiz ins syslog hinzu und manchmal eine kryptische Fehlermeldung, wenn Nmap eine Verbindung herstellt und sofort wieder schließt, ohne
    Daten zu senden. Ganz armselige Dienste stürzen auch ab, wenn so etwas passiert, was aber eher selten ist. Ein Administrator, der in seinen
    Protokollen einen Haufen Verbindungsversuche von einem einzelnen System aus sieht, sollte wissen, dass er Ziel eines Connect-Scans wurde.
 
-sU (UDP-Scan)
    Obwohl die meisten bekannten Dienste im Internet über das TCP-Protokoll laufen, sind UDP[4]-Dienste weitverbreitet. Drei der häufigsten sind
    DNS, SNMP und DHCP (auf den registrierten Ports 53, 161/162 und 67/68). Weil UDP-Scans im Allgemeinen langsamer und schwieriger als TCP-Scans
    sind, werden diese Ports von manchen Sicherheitsprüfern einfach ignoriert. Das ist ein Fehler, denn ausbeutbare UDP-Dienste sind recht häufig,
    und Angreifer ignorieren bestimmt nicht das ganze Protokoll. Zum Glück kann Nmap helfen, diese UDP-Ports zu inventarisieren.
 
    Ein UDP-Scan wird mit der Option -sU aktiviert. Er kann mit einem TCP-Scan-Typ wie einem SYN-Scan (-sS) kombiniert werden, um beide Protokolle
    im gleichen Durchlauf zu prüfen.
 
    Beim UDP-Scan wird ein leerer UDP-Header (ohne Daten) an alle Ziel-Ports geschickt. Falls ein ICMP Port-unreachable-Fehler (Typ 3, Code 3)
    zurückkommt, ist der Port geschlossen. Andere ICMP Unreachable-Fehler (Typ 3, Codes 1, 2, 9, 10 oder 13) markieren den Port als filtered.
    Gelegentlich wird ein Dienst mit einem UDP-Paket antworten, was beweist, das er offen ist. Falls nach einigen erneuten Übertragungen keine
    Antwort erhalten wird, wird der Port als offen|gefiltert klassifiziert. Das heißt, der Port könnte offen sein, oder aber es gibt Paketfilter,
    die die Kommunikation blockieren. Man kann eine Versionserkennung (-sV) benutzen, um bei der Unterscheidung der wirklich offenen von den
    geschlossenen Ports zu helfen.
 
    Eine große Herausforderung beim UDP-Scanning ist Geschwindigkeit. Offene und gefilterte Ports antworten nur selten, wodurch Nmap
    Zeitbeschränkungen überschreitet und seine Anfragen erneut sendet, für den Fall, dass das Testpaket oder die Antwort verloren ging. Geschlossene
    Ports sind oftmals ein noch größeres Problem. Sie senden normalerweise eine ICMP Port-unreachable-Fehlermeldung zurück. Aber anders als die
    RST-Pakete, die von geschlossenen TCP-Ports als Antwort auf einen SYN- oder Connect-Scan geschickt werden, beschränken viele Hosts standardmäßig
    die Rate der ICMP Port-unreachable-Nachrichten. Linux und Solaris sind dabei besonders streng. Der Linux-Kernel 2.4.20 z.&nbsp;B.&nbsp;beschränkt
    Destination-unreachable-Nachrichten auf eine pro Sekunde (in net/ipv4/icmp.c).
 
    Nmap erkennt eine Ratenbeschränkung und verlangsamt seinen Betrieb entsprechend, um zu vermeiden, dass das Netzwerk mit nutzlosen Paketen
    überflutet wird, die vom Zielrechner verworfen werden. Unglücklicherweise führt eine Beschränkung wie in Linux auf ein Paket pro Sekunde dazu,
    dass ein Scan von 65.536 Ports über 18 Stunden dauert. Um Ihre UDP-Scans zu beschleunigen, können Sie z.&nbsp;B.&nbsp;mehr Hosts parallel scannen, zuerst
    nur einen schnellen Scan der beliebten Ports durchführen, von hinter der Firewall scannen und die Option --host-timeout benutzen, um langsame
    Hosts auszulassen.
 
-sN; -sF; -sX (TCP-NULL-, FIN- und -Xmas-Scans)
    Diese drei Scan-Typen (noch mehr sind mit der im nächsten Abschnitt beschriebenen Option --scanflags möglich) beuten ein subtiles Schlupfloch im
    TCP RFC[5] aus, um zwischen offenen und geschlossenen Ports zu unterscheiden. Seite 65 von RFC 793 besagt: „Falls der Zustand des [Ziel-] Ports
    GESCHLOSSEN ist ... bewirkt ein eingehendes Segment, in dem sich kein RST befindet, dass ein RST als Antwort gesendet wird.“ Die nächste Seite
    beschreibt dann Pakete, die ohne gesetztes SYN-, RST- oder ACK-Bit an offene Ports geschickt werden, und dort heißt es weiter: „Es ist
    unwahrscheinlich, dass Sie hierhin kommen, aber wenn doch, dann verwerfen Sie das Segment und springen Sie zurück.“
 
    Beim Scannen von Systemen, die konform zu diesem RFC-Text sind, führt jedes Paket, das kein SYN-, RST- oder ACK-Bit enthält, dazu, dass ein RST
    zurückgegeben wird, wenn der Port geschlossen ist, bzw.&nbsp;zu gar keiner Antwort, falls der Port offen ist. Solange keines dieser drei Bits gesetzt
    ist, sind alle Kombinationen der anderen drei (FIN, PSH und URG) okay. Das nutzt Nmap mit drei Scan-Typen aus:
 
    Null-Scan (-sN)
        Setzt keinerlei Bits (der TCP-Flag-Header ist 0).
 
    FIN-Scan (-sF)
        Setzt nur das TCP-FIN-Bit.
 
    Xmas-Scan (-sX)
        Setzt die FIN-, PSH- und URG-Flags und beleuchtet das Paket wie einen Weihnachtsbaum (engl. Xmas).
 
    Diese drei Scan-Typen haben exakt dasselbe Verhalten und unterscheiden sich nur in den TCP-Flags ihrer Testpakete. Wenn ein RST-Paket empfangen
    wird, wird der Port als geschlossen betrachtet, während keine Antwort bedeutet, dass er offen|gefiltert ist. Der Port wird als gefiltert
    markiert, falls ein ICMP Unreachable-Fehler (Type 3, Code 1, 2, 3, 9, 10 oder 13) empfangen wird.
 
    Der Schlüsselvorteil dieser Scan-Arten ist, dass sie sich an bestimmten zustandslosen Firewalls und paketfilternden Routern vorbeschleichen
    können. Ein weiterer Vorteil ist, dass diese Scan-Arten ncoh ein wenig unauffälliger sind als ein SYN-Scan. Aber verlassen Sie sich nicht darauf
    – die meisten modernen IDS-Produkte können so konfiguriert werden, dass sie diese Scans erkennen. Der große Nachteil ist, dass nicht alle
    Systeme sich ganz genau an RFC 793 halten. Eine Reihe von Systemen sendet RST-Antworten auf die Testpakete, unabhängig davon, ob der Port offen
    ist oder nicht. Das bewirkt, dass alle Ports als geschlossen markiert werden. Hauptvertreter der Betriebssysteme, die das machen, sind Microsoft
    Windows, viele Cisco-Geräte, BSDI und IBM OS/400. Aber auf den meisten Unix-basierten Systemen funktioniert dieser Scan. Ein weiterer Nachteil
    dieser Scans ist, dass sie keine Unterscheidung zwischen offenen und bestimmten gefilterten Ports machen, sondern lediglich das Ergebnis
    offen|gefiltert ausgeben.
 
-sA (TCP-ACK-Scan)
    Dieser Scan unterscheidet sich insofern von den bisher hier vorgestellten, als er nie offene (oder auch nur offene|gefilterte) Ports bestimmt.
    Er wird dazu benutzt, Firewall-Regeln zu bestimmen, festzustellen, ob sie zustandsbehaftet sind oder nicht, und welche Ports gefiltert werden.
 
    Beim Testpaket eines ACK-Scans wird nur das ACK-Flag gesetzt (es sei denn, Sie benutzen --scanflags). Beim Scannen ungefilterter Systeme werden
    sowohl offene als auch geschlossene Ports ein RST-Paket zurückgeben. Nmap markiert sie dann als ungefiltert, d.h. sie werden vom ACK-Paket
    erreicht, aber es kann nicht bestimmt werden, ob sie offen oder geschlossen sind. Ports, die nicht antworten oder bestimmte ICMP-Fehlermeldungen
    zurückgeben (Type 3, Code 1, 2, 3, 9, 10 oder 13), werden als gefiltert markiert.
 
-sW (TCP-Window-Scan)
    Der Window-Scan ist genau derselbe wie der ACK-Scan, nur dass er ein Implementationsdetail bestimmter Systeme zur Unterscheidung zwischen
    offenen und geschlossenen Ports nutzt, statt bei jedem erhaltenen RST immer nur ungefiltert anzugeben. Das geschieht durch Analyse der
    TCP-Fenstergröße der zurückgegebenen RST-Pakete. Auf manchen Systemen benutzen offene Ports eine positive Fenstergröße (sogar für RST-Pakete),
    während geschlossene eine Fenstergröße von Null haben. Statt einen Port immer als ungefiltert aufzulisten, wenn von dort ein RST zurückkommt,
    listet der Window-Scan den Port als offen oder geschlossen auf, je nachdem, ob die TCP-Fenstergröße in diesem Reset jeweils positiv oder Null
    ist.
 
    Dieser Scan baut auf einem Implementationsdetail einer Minderheit von Systemen im Internet auf, d.h. Sie können sich nicht immer darauf
    verlassen. Systeme, die es nicht unterstützen, werden normalerweise alle Ports als geschlossen zurückgeben. Natürlich ist es möglich, dass auf
    dem Rechner wirklich keine offenen Ports sind. Falls die meisten gescannten Ports geschlossen, aber einige Ports mit geläufigen Nummern (wie 22,
    25 und 53) gefiltert sind, dann ist das System sehr wahrscheinlich anfällig. Gelegentlich zeigen Systeme auch genau das gegenteilige Verhalten.
    Falls Ihr Scan 1000 offene und drei geschlossene oder gefilterte Ports anzeigt, dann könnten jene drei sehr wohl die wirklich wahren offenen
    Ports sein.
 
-sM (TCP-Maimon-Scan)
    Der Maimon-Scan wurde nach seinem Erfinder, Uriel Maimon, benannt. Er hat diese Methode im Phrack-Magazin, Ausgabe #49 (November 1996),
    beschrieben. Zwei Ausgaben später war diese Methode in Nmap enthalten. Sie macht genau das Gleiche wie der NULL-, FIN- und Xmas-Scan, außer,
    dass sie ein FIN/ACK-Testpaket verwendet. Laut RFC 793[5] (TCP) sollte als Antwort auf solch ein Paket ein RST-Paket erzeugt werden, egal ob der
    Port offen oder geschlossen ist. Allerdings hatte Uriel bemerkt, dass viele von BSD abgeleitete Systeme das Paket einfach verwerfen, wenn der
    Port offen ist.
 
--scanflags (Benutzerdefinierter TCP-Scan)
    Wirklich fortgeschrittene Nmap-Benutzer brauchen sich nicht auf die vorgefertigten Scan-Typen zu beschränken. Mit der Option --scanflags können
    Sie Ihren eigenen Scan entwerfen, für den Sie beliebige TCP-Flags angeben können. Lassen Sie Ihrer Kreativität freien Lauf und umgehen Sie
    Intrusion-Detection-Systeme, deren Hersteller einfach die Nmap-Manpage durchgeblättert und spezifische Regeln dafür angegeben haben!
 
    Das Argument für --scanflags kann ein numerischer Flag-Wert wie z.&nbsp;B.&nbsp;9 (PSH und FIN) sein, aber symbolische Namen sind einfacher zu benutzen.
    Erstellen Sie einfach eine beliebige Kombination von URG, ACK, PSH, RST, SYN und FIN. So setzt z.&nbsp;B.&nbsp;--scanflags URGACKPSHRSTSYNFIN alle Flags,
    auch wenn das beim Scannen nicht besonders hilfreich ist. Die Reihenfolge, in der Sie diese Flags angeben, spielt keine Rolle.
 
    Zusätzlich zu den gewünschten Flags können Sie einen TCP-Scan-Typen (z.&nbsp;B.&nbsp;-sA oder -sF) angeben. Dieser Basistyp sagt Nmap, wie es die Antworten
    interpretieren soll. Ein SYN-Scan z.&nbsp;B.&nbsp;betrachtet das Fehlen einer Antwort als einen Hinweis auf einen gefilterten Port, während ein FIN-Scan
    das als einen Hinweis auf einenoffen|gefilterten Port ansieht. Nmap verhält sich genauso wie beim Scan-Basistyp, nur mit dem Unterschied, dass
    es die von Ihnen angegebenen TCP-Flags benutzt. Ohne Angabe eines Basistyps wird ein SYN-Scan benutzt.
 
-sI zombie host[:probeport] (Idle-Scan)
    Diese fortgechrittene Scan-Methode ermöglicht einen wirklich blinden TCP-Port-Scan des Ziels, d.h. es werden keine Pakete von Ihrer wahren
    IP-Adresse an das Ziel gesendet. Stattdessen wird mit einem Angriff auf einem parallelen Kanal eine vorhersagbare Erzeugung von Folgen von
    IP-Fragmentation-IDs auf dem Zombie-Host ausgebeutet, um an Information über offene Ports auf dem Ziel zu gelangen. IDS-Systeme zeigen als
    Urheber des Scans den Zombie-Rechner an, den Sie angeben (der aktiv sein und einige bestimmte Bedingungen erfüllen muss). Da dieser
    faszinierende Scan-Typ zu komplex ist, um ihn in diesem Handbuch vollständig zu beschreiben, habe ich einen Artikel mit vollständigen Details
    dazu geschrieben und unter https://nmap.org/book/idlescan.html veröffentlicht.
 
    Dieser Scan-Typ ist nicht nur extrem unauffällig (wegen seiner Blindheit), sondern erlaubt auch, IP-basierte Vetrauensbeziehungen zwischen
    Rechnern festzustellen. Die Portliste zeigt offene Ports aus der Sicht des Zombie-Hosts an. Also können Sie versuchen, ein Ziel mit
    verschiedenen Zombies zu scannen, von denen Sie denken, dass sie vertrauenswürdig sind (über Router-/Paketfilterregeln).
 
    Wenn Sie einen bestimmten Port auf dem Zombie auf IP-ID-Änderungen testen möchten, können Sie einen Doppelpunkt gefolgt von einer Portnummer an
    den Zombie-Host hinzufügen. Sonst benutzt Nmap den Port, den es standardmäßig bei TCP-Pings benutzt (80).
 
-sO (IP-Protokoll-Scan)
    Der IP-Protokoll-Scan ermöglicht die Bestimmung der IP-Protokolle (TCP, ICMP, IGMP etc.), die von Zielrechnern unterstützt werden. Rein
    technisch ist das kein Port-Scan, da er über Nummern von IP-Protokollen statt TCP- oder UDP-Ports vorgeht. Dennoch benutzt er die Option -p für
    die Auswahl der zu scannenden Protokollnummern, gibt seine Ergebnisse im normalen Port-Tabellenformat aus und benutzt sogar dieselbe
    grundlegende Scan-Engine wie die echten Port-Scanning-Methoden. Damit ist er einem Port-Scan ähnlich genug, um an dieser Stelle beschrieben zu
    werden.
 
    Abgesehen davon, dass er schon als solcher nützlich ist, zeigt der Protokoll-Scan die Macht von Open-Source-Software. Auch wenn die grundlegende
    Idee recht simpel ist, hatte ich nicht daran gedacht, ihn hinzuzufügen, und bekam auch keine Anfragen nach einer solchen Funktionalität. Dann,
    im Sommer 2000, hatte Gerhard Rieger die Idee, schrieb einen exzellenten Patch als Implementation und sendete ihn an die Mailingliste
    nmap-hackers. Diesen Patch habe ich in den Nmap-Baum aufgenommen und einen Tag später eine neue Version veröffentlicht. Es gibt nur wenig
    kommerzielle Software, deren Benutzer so enthusiastisch sind, dass sie eigene Verbesserungen dafür entwerfen und beitragen!
 
    Der Protokoll-Scan funktioniert auf ähnliche Weise wie der UDP-Scan. Statt über das Portnummernfeld eines UDP-Pakets zu iterieren, sendet er
    IP-Paketheader und iteriert über das acht Bit große IP-Protokollfeld. Die Header sind normalerweise leer, enthalten keine Daten und nicht einmal
    den richtigen Header für das behauptete Protokoll. Die drei Ausnahmen davon sind TCP, UDP und ICMP. Für diese werden richtige Protokoll-Header
    verwendet, da manche Systeme sie sonst nicht versenden und weil Nmap bereits über die Funktionen verfügt, um sie zu erzeugen. Statt Nachrichten
    der Art ICMP Port unreachable sucht der Protokoll-Scan nach ICMP Protocol unreachable. Falls Nmap zu irgendeinem Protokoll eine Antwort vom
    Zielhost erhält, markiert es das Protokoll als offen. Bei einem ICMP Protocol-unreachable-Fehler (Typ 3, Code 2) wird das Protokoll als
    geschlossen markiert. Bei anderen ICMP Unreachable-Fehlern (Typ 3, Code 1, 3, 9, 10 oder 13) wird das Protokoll als gefiltert markiert (auch
    wenn sie gleichzeitig beweisen, dass ICMP offen ist). Falls nach einigen erneuten Übertragungen keine Antwort erhalten wird, wird das Protokoll
    als offen|gefiltert markiert.
 
-b FTP relay host (FTP-Bounce-Scan)
    Eine interessante Eigenschaft des FTP-Protokolls (RFC 959[6]) ist dessen Unterstützung sogenannter Proxy-FTP-Verbindungen. Damit kann sich ein
    Benutzer mit einem FTP-Server verbinden und dann verlangen, dass Dateien an einen Server einer dritten Partei gesendet werden. Solch eine
    Eigenschaft ist auf vielen Ebenen sturmreif für Missbrauch, weswegen die meisten Server sie nicht mehr unterstützen. Ein solcher Missbrauch, den
    diese Eigenschaft ermöglicht, ist, den FTP-Server für Port-Scans anderer Hosts zu benutzen. Bitten Sie den FTP-Server einfach, eine Datei
    nacheinander an alle interessanten Ports eines Zielhosts zu senden. Die Fehlermeldung wird beschreiben, ob der Port offen ist oder nicht. Das
    ist ein guter Weg, Firewalls zu umgehen, weil FTP-Server von Organisationen oft an Orten platziert sind, von denen aus sie besseren Zugriff auf
    weitere interne Hosts haben, als es jeder alte Internet-Host hätte. Nmap unterstützt den FTP-Bounce-Scan mit der Option -b. Sie erwartet ein
    Argument der Form username:password@server:port. Dabei ist Server der Name oder die IP-Adresse eines anfälligen FTP-Servers. Wie bei einer
    normalen URL können Sie username:password auch weglassen, wobei dann eine anonyme Anmeldung erfolgt (username: anonymous password:-wwwuser@).
    Die Portnummer (samt Doppelpunkt davor) können Sie ebenfalls weglassen, wobei dann auf server der Standard-FTP-Port (21) benutzt wird.
 
    Als Nmap 1997 veröffentlicht wurde, war diese Schwachstelle weit verbreitet, wurde seitdem aber größtenteils behoben. Aber da es immer noch
    anfällige Server gibt, lohnt sich ein Versuch, falls alles andere versagt. Wenn Sie eine Firewall umgehen möchten, scannen Sie das Zielnetzwerk
    nach einem offenen Port 21 (oder sogar nach beliebigen FTP-Diensten, falls Sie alle Ports mit Versionserkennung scannen können), und probieren
    Sie dann für jeden einen Bounce-Scan aus. Nmap wird Ihnen sagen, ob der Host angreifbar ist oder nicht. Versuchen Sie lediglich, Ihre Spuren zu
    verwischen, dann brauchen Sie sich nicht (und tatsächlich sollten Sie das nicht einmal) auf Hosts im Zielnetzwerk zu beschränken. Bevor Sie
    anfangen, zufällige Internet-Adressen nach anfälligen FTP-Servern zu scannen, bedenken Sie, dass Sysadmins keinen Gefallen daran finden werden,
    dass Sie ihre Server auf diese Weise missbrauchen.
 
PORT-ANGABE UND SCAN-REIHENFOLGE
Zusätzlich zu all den bisher erläuterten Scan-Methoden bietet Nmap Optionen, mit denen man angibt, welche Ports gescannt werden und ob die
Scan-Reihenfolge randomisiert oder sequentiell ist. Nmap scannt standardmäßig für jedes Protokoll die 1000 meistbenutzten Ports.
 
-p port ranges (scannt nur angegebene Ports)
    Diese Option gibt an, welche Ports Sie scannen möchten, und überschreibt die Voreinstellung. Einzelne Portnummern sind okay, ebenso wie mit
    einem Bindestrich getrennte Bereiche (z.&nbsp;B.&nbsp;1-1023). Anfangs- und/oder Endwerte eines Bereichs können weggelassen werden und werden von Nmap dann
    mit jeweils 1 bzw.&nbsp;65535 ersetzt. So können Sie mit -p- alle Ports von 1 bis 65535 scannen. Es ist erlaubt, den Port Null zu scannen, wenn Sie
    ihn explizit angeben. Bei IP-Protokoll-Scans (-sO) gibt diese Option die Protokollnummern an, die Sie scannen möchten (0–255).
 
    Wenn Sie sowohl TCP- als auch UDP-Ports scannen, können Sie ein bestimmtes Protokoll angeben, indem Sie den Portnummern ein T: bzw.&nbsp;U:
    voranstellen. Dieser Kennzeichner gilt so lange, bis Sie einen anderen angeben. Zum Beispiel werden bei dem Argument -p
    U:53,111,137,T:21-25,80,139,8080 die UDP-Ports 53, 111 und 137 sowie die angegebenen TCP-Ports gescannt. Beachten Sie, dass Sie -sU und
    mindestens einen TCP-Scan-Typ (z.&nbsp;B.&nbsp;-sS, -sF oder -sT) angeben müssen, um sowohl UDP als auch TCP zu scannen. Falls kein Protokollkennzeichner
    angegeben ist, werden die Portnummern zu allen Protokolllisten hinzugefügt. Ports können auch mit dem Namen angegeben werden, der für diesen
    Port in nmap-services definiert ist. Sie können bei diesen Namen sogar die Joker * und ? verwenden. Um z.&nbsp;B.&nbsp;FTP und alle Ports zu scannen, deren
    Namen mit „http“ anfangen, benutzen Sie -p ftp,http*. Passen Sie auf eine eventuelle Erweiterung durch die Shell auf und setzen Sie das Argument
    von -p in Anführungszeichen, wenn Sie unsicher sind.
 
    Port-Bereiche können in eckigen Klammern angegeben werden, um Ports innerhalb dieses Bereiches anzugeben, die in nmap-services vorkommen. Zum
    Beispiel scannt Folgendes alle Ports in nmap-services kleiner oder gleich 1024: -p [-1024]. Passen Sie auf eine eventuelle Erweiterung durch die
    Shell auf und setzen Sie das Argument von -p in Anführungszeichen, wenn Sie unsicher sind.
 
-F (schneller (beschränkter Port-) Scan)
    Gibt an, dass Sie weniger Ports scannen möchten, als standardmäßig vorgesehen. Normalerweise scannt Nmap die 1000 am häufigsten vorkommenden
    Ports bei jedem gescannten Protokoll. Mit -F werden diese auf 100 beschränkt.
 
    Nmap benötigt die Datei nmap-services mit Informationen zur Häufigkeit, um zu wissen, welche Ports am häufigsten benutzt werden. Wenn keine
    Angaben über die Port-Häufigkeit verfügbar sind, vielleicht weil eine benutzerdefinierte nmap-services-Datei verwendet wird, dann bedeutet -F,
    dass nur Ports gescannt werden, die in der Dienstedatei mit Namen vorkommen (normalerweise scannt Nmap alle benannten Ports plus die Ports
    1–1024).
 
-r (Ports nicht randomisieren)
    Standardmäßig randomisiert Nmap die Reihenfolge der gescannten Ports (bis auf einige allgemein zugängliche Ports, die aus Effizienzgründen
    vorgezogen werden). Diese Randomisierung ist normalerweise erwünscht, aber Sie können stattdessen auch -r für einen sequentiellen Port-Scan
    angeben.
 
--port-ratio <decimal number between 0 and 1>
    Scannt alle Ports in der Datei nmap-services mit einem größeren Bruchteil als die Zahl, die als Argument angegeben wird.
 
--top-ports <integer of 1 or greater>
    Scannt die N Ports mit dem höchsten Bruchteil in der Datei nmap-services.
 
DIENST- UND VERSIONSERKENNUNG
Lassen Sie Nmap auf einen entfernten Rechner los, und Sie erfahren z.&nbsp;B.&nbsp;dass die Ports 25/tcp, 80/tcp und 53/udp offen sind. Dank der über 2200
bekannten Dienste in seiner Datenbank in nmap-services würde Nmap noch ausgeben, dass diese Ports wahrscheinlich jeweils zu einem Mailserver (SMTP),
Webserver (HTTP) und Nameserver (DNS) gehören. Normalerweise sind diese Angaben genau — die überwiegende Mehrheit an Daemons, die den TCP-Port 25
abhören, sind tatsächlich Mailserver. Allerdings sollten Sie nicht Ihre Sicherheit darauf verwetten! Manche Leute können nicht nur Dienste auf
seltsamen Ports betreiben, sondern tun es auch.
 
Selbst wenn Nmap recht hat und auf dem Server im obigen Beispiel SMTP-, HTTP- und DNS-Server laufen, ist das nicht besonders viel an Information.
Bei der Beurteilung der Angreifbarkeit (oder auch nur beim Erstellen einfacher Netzwerkinventare) Ihrer Firmen oder Kunden möchten Sie auch wissen,
welche Mail- und DNS-Server und welche Versionen davon laufen. Eine genaue Versionsnummer hilft enorm bei der Bestimmung der Exploits, für die ein
Server anfällig ist. Die Versionserkennung hilft Ihnen, an diese Information heranzukommen.
 
Nachdem TCP- und/oder UDP-Ports mit einer der anderen Scan-Methoden entdeckt wurden, fragt die Versionserkennung diese Ports ab, um mehr darüber zu
erfahren, was tatsächlich darauf läuft. Die Datenbank in nmap-service-probes enthält Testpakete für die Abfrage verschiedenster Dienste und
Ausdrücke für den Vergleich und das Parsen der Antworten. Nmap versucht, das Dienstprotokoll zu bestimmen (z.&nbsp;B.&nbsp;FTP, SSH, Telnet, HTTP), aber auch
Anwendungsnamen (z.&nbsp;B.&nbsp;ISC BIND, Apache httpd, Solaris telnetd), Versionsnummer, Hostnamen, Gerätetyp (z.&nbsp;B.&nbsp;Drucker, Router), die
Betriebssystemfamilie (z.&nbsp;B.&nbsp;Windows, Linux) und manchmal verschiedene Details: etwa ob ein X-Server Verbindungen annimmt, die SSH-Protokollversion
oder der KaZaA-Benutzername. Natürlich bieten die meisten Dienste nicht all diese Information. Falls Nmap mit OpenSSL-Unterstützung kompiliert
wurde, verbindet es sich mit SSL-Servern, um den hinter dieser Verschlüsselungsebene lauschenden Dienst zu ermitteln. Wenn RPC-Dienste erkannt
werden, wird automatisch Nmaps RPC-Holzhammer (-sR) benutzt, um die RPC-Programm- und Versionsnummern zu bestimmen. Manche UDP-Ports bleiben im
Zustand offen|gefiltert, nachdem ein UDP-Port-Scan nicht bestimmen konnte, ob der Port offen oder gefiltert ist. Die Versionserkennung versucht,
diesen Ports eine Antwort zu entlocken (genauso wie bei offenen Ports) und den Zustand auf offen zu ändern, wenn das gelingt. Offene|gefilterte
TCP-Ports werden genauso behandelt. Beachten Sie, dass die Nmap-Option -A unter anderem auch die Versionserkennung einschaltet. A paper documenting
the workings, usage, and customization of version detection is available at https://nmap.org/book/vscan.html.
 
Wenn Nmap Antworten von einem Dienst erhält, aber keine Übereinstimmungen dafür in seiner Datenbank finden kann, gibt es einen speziellen
Fingerprint und eine URL aus, damit Sie diese Antwort einsenden können, falls Sie genau wissen, was auf diesem Port läuft. Bitte nehmen Sie sich ein
paar Minuten Zeit, um sie einzusenden, damit Ihr Fund für alle ein Gewinn sein kann. Dank dieser Beiträge hat Nmap über 3000 Musterübereinstimmungen
für über 350 Protokolle wie SMTP, FTP, HTTP usw.
 
Die Versionserkennung wird mit den folgenden Optionen aktiviert und gesteuert:
 
-sV (Versionserkennung)
    Aktiviert die Versionserkennung wie oben beschrieben. Alternativ dazu können Sie -A benutzen, was unter anderem auch die Versionserkennung
    aktiviert.
 
--allports (keine Ports von der Versionserkennung ausschließen)
    Standardmäßig schließt Nmaps Versionserkennung den TCP-Port 9100 aus, weil manche Drucker einfach alles ausdrucken, was an diesen Port gesendet
    wird, was zu Dutzenden von Seiten mit HTTP-GET-Requests, binären SSL-Session-Requests usw. führen würde. Dieses Verhalten kann man ändern, indem
    man die Exclude-Anweisung in nmap-service-probes verändert oder entfernt, oder Sie geben --allports an, um alle Port zu scannen, unabhängig von
    einer Exclude-Anweisung.
 
--version-intensity intensity (Intensität des Versions-Scans setzen)
    Bei einem Versions-Scan (-sV) sendet Nmap eine Reihe von Testpaketen, die alle über einen zugeordneten Seltenheitswert zwischen eins und neun
    verfügen. Die Testpakete mit kleineren Werten sind bei einer großen Zahl verbreiteter Dienste wirkungsvoll, während die mit höheren Werten
    seltener nützlich sind. Die Intensitätsstufe gibt an, welche Testpakete angewendet werden sollten. Je höher die Zahl, desto wahrscheinlicher
    wird der Dienst richtig identifiziert. Allerdings brauchen Scans mit hoher Intensität mehr Zeit. Diese Intensität muss zwischen 0 und 9 liegen.
 
    Die Standardeinstellung ist 7.
 
    Wenn ein Testpaket mit der ports-Anweisung in nmap-service-probes für den Zielport registriert ist, wird dieses Testpaket ausprobiert,
    unabhängig von der Intensitätsstufe. Das garantiert, dass die DNS-Testpakete bei jedem offenen Port 53 immer benutzt werden, das SSL-Testpaket
    bei Port 443 usw.
 
--version-light (leichten Modus setzen)
    Das ist ein Alias für --version-intensity 2 aus Bequemlichkeitsgründen. Dieser leichte Modus macht die Versionserkennung wesentlich schneller,
    identifiziert die Dienste aber mit geringerer Wahrscheinlichkeit.
 
--version-all (benutze alle Testpakete)
    Das ist ein Alias für --version-intensity 9, der garantiert, dass jedes einzelne Testpaket bei jedem Port ausprobiert wird.
 
--version-trace (verfolge Aktivität des Versions-Scans)
    Das bewirkt, dass Nmap umfangreiche Debugging-Information darüber ausgibt, was die Versionserkennung gerade macht. Das ist eine Untermenge
    dessen, was Sie mit --packet-trace erhalten.
 
-sR (RPC-Scan)
    Diese Methode funktioniert zusammen mit den verschiedenen Port-Scan-Methoden von Nmap. Sie nimmt alle offenen TCP-/UDP-Ports und überflutet sie
    mit NULL-Befehlen für das SunRPC-Programm, in dem Versuch, festzustellen, ob es RPC-Ports sind, und wenn ja, welches Programm und welche
    Versionsnummer darauf läuft. Dadurch können Sie quasi dieselbe Information herausfinden wie mit rpcinfo -p, selbst wenn der Portmapper des Ziels
    hinter einer Firewall liegt (oder von TCP-Wrappern geschützt wird). Köder funktionieren im Moment nicht mit dem RPC-Scan. Das wird automatisch
    als Teil einer Versionserkennung aktiviert (-sV), wenn Sie diese verlangen. Da die Versionserkennung das enthält und wesentlich umfangreicher
    ist, wird -sR selten benötigt.
 
BETRIEBSSYSTEM-ERKENNUNG
Eines der bekanntesten Merkmale von Nmap ist dessen Erkennung entfernter Betriebssysteme mit TCP/IP-Stack-Fingerprinting. Nmap sendet eine Reihe von
TCP- und UDP-Paketen an den entfernten Host und untersucht praktisch jedes Bit in der Antwort. Nach der Durchführung Dutzender von Tests, wie z.&nbsp;B.&nbsp;
einer TCP-ISN-Abtastung, Unterstützung und Reihenfolge von TCP-Optionen, IP-ID-Abtastung und Prüfung der initialen Fenstergröße, vergleicht Nmap die
Ergebnisse mit seiner Datenbank in nmap-os-db von über eintausend bekannten Betriebssystem-Fingerprints und gibt die Details zum Betriebssystem aus,
wenn es eine Übereinstimmung gefunden hat. Jeder Fingerprint enthält eine formlose Beschreibung des Betriebssystems und eine Klassifikation, aus der
der Herstellername (z.&nbsp;B.&nbsp;Sun), das eigentliche Betriebssystem (z.&nbsp;B.&nbsp;Solaris), dessen Generation (z.&nbsp;B.&nbsp;10) und der Gerätetyp (allgemein, Router,
Switch, Spielkonsole usw.) hervorgeht.
 
Falls Nmap das Betriebssystem eines Rechner nicht erraten kann und die Umstände günstig sind (z.&nbsp;B.&nbsp;wenn mindestens ein offener und ein geschlossener
Port gefunden wurde), präsentiert Nmap eine URL, unter der Sie den Fingerprint einsenden können, wenn Sie (ganz sicher) wissen, welches
Betriebssystem auf dem Rechner läuft. Dadurch erweitern Sie den Pool der Betriebssysteme, die Nmap kennt, wodurch es für alle Benutzer genauer wird.
 
Die Betriebssystem-Erkennung verwendet einige weitere Tests, die Informationen benutzen, die während des Vorgangs ohnehin gesammelt werden. Eine
davon ist die Klassifikation der Vorhersagbarkeit der TCP-Sequenznummern. Sie gibt ungefähr an, wie schwer es ist, eine gefälschte TCP-Verbindung
zum entfernten Host aufzubauen. Sie ist hilfreich zur Ausbeutung von Vertrauensbeziehungen auf Basis von Quell-IPs (rlogin, Firewall-Filter usw.)
oder zum Verbergen des Ursprungs eines Angriffs. Diese Art von Täuschung wird kaum noch praktiziert, aber viele Rechner sind nach wie vor anfällig
dafür. Die eigentliche Maßzahl basiert auf statistischen Abtastungen und kann schwanken. Im Allgemeinen ist es besser, die englische Bezeichnung wie
z.&nbsp;B.&nbsp;„worthy challenge“ oder „trivial joke“ zu benutzen. Das wird nur in der normalen Ausgabe im ausführlichen Modus (-v) ausgegeben. Wenn dieser
Modus zusammen mit -O aktiviert ist, wird auch die IP-ID-Sequenzerzeugung berichtet. Die meisten Rechner finden sich in der Klasse „incremental“,
d.h. sie inkrementieren das ID-Feld im IP-Header für jedes von ihnen gesendete Paket. Dadurch werden sie anfällig für diverse avancierte Angriffe
mittels Täuschung und Sammlung von Informationen.
 
Eine weitere zusätzliche Information, die die Betriebssystem-Erkennung aktiviert, ist eine Schätzung der Betriebszeit des Zielhosts. Dabei wird die
TCP-Timestamp-Option (RFC 1323[7]) benutzt, um zu raten, wann ein Rechner das letzte Mal neu gestartet wurde. Wenn der Timestamp-Zähler nicht bei
null gestartet wurde oder der Zähler überläuft und wieder von vorn zählt, kann diese Schätzung ungenau werden, weshalb sie nur im ausführlichen
Modus ausgegeben wird.
 
A paper documenting the workings, usage, and customization of OS detection is available at https://nmap.org/book/osdetect.html.
 
Eingeschaltet und gesteuert wird die Betriebssystem-Erkennung mit den folgenden Optionen:
 
-O (Betriebssystem-Erkennung aktivieren)
    Aktiviert die Betriebssystem-Erkennung wie oben beschrieben. Alternativ dazu können Sie -A benutzen, um eine Betriebssystem-Erkennung zusammen
    mit anderen Dingen einzuschalten.
 
--osscan-limit (Betriebssystem-Erkennung auf vielversprechende Ziele beschränken)
    Die Betriebssystem-Erkennung ist wesentlich effektiver, wenn mindestens ein offener und ein geschlossener TCP-Port gefunden werden. Wenn Sie
    diese Option angeben, versucht Nmap eine Betriebssystem-Erkennung gar nicht erst bei Hosts, die dieses Kriterium nicht erfüllen. Das kann viel
    Zeit sparen, besonders bei Scans mit -PN auf vielen Hosts. Diese Option gilt nur, wenn eine Betriebssystem-Erkennung mit -O oder -A verlangt
    wird.
 
--osscan-guess; --fuzzy (Ergebnisse der Betriebssystem-Erkennung raten)
    Falls Nmap keine perfekte Übereinstimmung mit einem Betriebssystem finden kann, präsentiert es manchmal mögliche Kandidaten, die dem sehr nahe
    kommen. Damit Nmap das standardmäßig macht, muss die Übereinstimmung sehr hoch sein. Diese beiden (äquivalenten) Optionen lassen Nmap
    aggressiver schätzen. Dann gibt Nmap auch unvollkommene Übereinstimmungen aus, zusammen mit einem Vertrauensgrad (in Prozent).
 
--max-os-tries (setzt die maximale Anzahl der Versuche für eine Betriebssystem-Erkennung bei einem Ziel)
    Wenn Nmap eine Betriebssystem-Erkennung auf einem Ziel durchführt und dafür keine perfekte Übereinstimmung findet, macht es normalerweise einen
    weiteren Versuch. Standardmäßig macht Nmap fünf Versuche, wenn die Bedingungen zum Einsenden eines Betriebssystem-Fingerprints günstig sind, und
    zwei, wenn sie es nicht sind. Die Angabe eines kleineren Wertes für --max-os-tries (z.&nbsp;B.&nbsp;1) beschleunigt Nmap, auch wenn Sie Versuche auslassen,
    bei denen das Betriebssystem möglicherweise erkannt werden könnte. Alternativ dazu kann ein hoher Wert gesetzt werden, um bei günstigen
    Bedinungen noch mehr Versuche zu erlauben. Das macht man aber selten, außer um bessere Fingerprints zu erzeugen, die man einsenden kann, um sie
    in Nmaps Betriebssystem-Datenbank zu integrieren.
 
NMAP SCRIPTING ENGINE (NSE)
Die Nmap Scripting Engine (NSE) ist eines der mächtigsten und flexibelsten Merkmale von Nmap. Mit ihr können Benutzer einfache Scripts schreiben und
weitergeben (geschrieben in der Programmiersprache Lua[8] ), um eine breite Palette von Netzwerkaufgaben zu automatisieren. Diese Scripts werden
dann parallel mit der Geschwindigkeit und Effizienz abgearbeitet, die Sie von Nmap erwarten. Als Benutzer können Sie auf eine wachsende und
vielfältige Menge von Scripts vertrauen, die mit Nmap veröffentlicht werden, oder eigene Scripts für eigene Bedürfnisse schreiben.
 
Zu den Aufgaben, die wir bei der Konzeption dieses Systems anvisierten, gehören die Netzwerkerkennung, eine ausgefeiltere Versionserkennung sowie
eine Verwundbarkeitserkennung. NSE kann aber sogar bei der Ausbeutung von Schwachstellen benutzt werden.
 
Um diese verschiedenen Anwendungen widerzuspiegeln und um die Auswahl des richtigen Scripts zu vereinfachen, verfügen alle Scripts über ein
Kategorie-Feld. Im Moment sind folgende Kategorien definiert: safe, intrusive, malware, version, discovery, vuln, auth und default. Sie alle werden
at https://nmap.org/book/nse-usage.html#nse-categories.
 
Die Nmap Scripting Engine wird detailliert at https://nmap.org/book/nse.html
 
beschrieben und wird mit den folgenden Optionen gesteuert:
 
-sC
    Führt einen Script-Scan mit dem Standardsatz an Scripts durch. Das ist äquivalent zu --script=default. Manche der Scripts in dieser Kategorie
    werden als aufdringlich betrachtet und sollten nicht ohne Genehmigung auf einem Zielnetzwerk ausgeführt werden.
 
--script script-categories|directory|filename|all
    Führt einen Script-Scan (wie z.&nbsp;B.&nbsp;-sC) durch und benutzt dabei die mit Kommata getrennte Liste von Script-Kategorien, individuellen Scripts oder
    Script-Verzeichnissen statt des Standardsatzes. Zuerst versucht Nmap, die Argumente als Kategorien zu interpretieren, dann (wenn das nicht
    gelingt) als Datei- oder Verzeichnisnamen. Ein Script oder Verzeichnis von Scripts kann als absoluter oder relativer Pfad angegeben werden.
    Absolute Pfade werden unverändert benutzt. Relative Pfade werden an den folgenden Orten gesucht, bis sie gefunden werden: --datadir/; $NMAPDIR/;
    ~/.nmap/ (wird unter Windows nicht durchsucht); NMAPDATADIR/ oder ./. In all diesen Verzeichnissen wird außerdem auch ein
    scripts/-Unterverzeichnis ausprobiert.
 
    Falls ein Verzeichnis angegeben und gefunden wird, lädt Nmap alle NSE-Scripts (alle Dateinamen, die mit .nse enden) aus diesem Verzeichnis.
    Dateinamen ohne die Endung nse werden ignoriert. Nmap sucht keine Unterverzeichnisse rekursiv durch, um Scripts zu finden. Wenn individuelle
    Dateinamen angegeben werden, dann muss deren Dateierweiterung nicht nse lauten.
 
    Nmap-Scripts werden standardmäßig in einem scripts-Unterverzeichnis des Nmap-Datenverzeichnisses gespeichert (see
    https://nmap.org/book/data-files.html).
 
    Aus Effizienzgründen werden Scripts in einer Datenbank indiziert, die in scripts/script.db. gespeichert ist und für jedes Script auflistet, in
    welche Kategorie bzw.&nbsp;Kategorien es gehört. Um alle Scripts in der Nmap-Script-Datenbank auszuführen, geben Sie das Argument all an.
 
    Die Scripts werden nicht in einer Sandbox ausgeführt und können Ihr System somit versehentlich oder böswillig beschädigen oder in Ihre
    Privatsphäre eindringen. Sie sollten Scripts von Dritten nur dann ausführen, wenn Sie deren Autoren vertrauen oder sie selbst eingehend studiert
    haben.
 
--script-args name1=value1,name2={name3=value3},name4=value4
    Hiermit können Sie Argumente für NSE-Scripts angeben. Argumente werden als name=value-Paare angegeben. Die Argumente werden verarbeitet und in
    einer Lua-Tabelle gespeichert, auf die alle Scripts Zugriff haben. Die Namen werden als Strings (die alphanumerische Werte sein müssen) in
    argument-table als Schlüssel gespeichert. Die Werte sind ihrerseits entweder Strings oder Tabellen (innerhalb von ‘{’ und ‘}’). Sie könnten z.&nbsp;B.&nbsp;
    diese mit Kommmata getrennten Argumente angeben: user=bar,pass=foo,whois={whodb=nofollow+ripe}. String-Argumente werden potenziell von mehreren
    Scripts benutzt, während Untertabellen normalerweise nur von einem Script benutzt werden. In Scripts, die eine Untertabelle annehmen, wird diese
    Untertabelle normalerweise nach dem Script benannt (in diesem Fall z.&nbsp;B.&nbsp;whois).
 
--script-trace
    Diese Option macht das, was --packet-trace macht, aber eine ISO-Ebene höher. Wenn diese Option angegeben wird, wird die gesamte ein- und
    ausgehende Kommunikation von Scripts ausgegeben. Die angezeigte Information enthält das Kommunikationsprotokoll, Quell- und Zieladressen sowie
    die übertragenen Daten. Falls mehr als fünf Prozent der übertragenen Daten nicht druckbar sind, werden sie stattdessen als Hexadezimal-Auszug
    ausgegeben. Auch die Angabe von --packet-trace schaltet diese Mitverfolgung von Scripts ein.
 
--script-updatedb
    Diese Option aktualisiert die Script-Datenbank in scripts/script.db, die von Nmap benutzt wird, um die verfügbaren Standard-Scripts und
    Kategorien zu bestimmen. Man muss die Datenbank nur dann aktualisieren, wenn man NSE-Scripts in das Standardverzeichnis scripts hinzufügt oder
    von dort entfernt, oder wenn man die Kategorie eines Scripts ändert. Diese Option wird ohne Argumente benutzt: nmap --script-updatedb.
 
== TIMING UND PERFORMANCE ==
Bei der Entwicklung von Nmap hatte dessen Performance immer eine der höchsten Prioritäten. Ein Standardscan (nmap hostname) eines Hosts in meinem
lokalen Netzwerk dauert eine Fünftelsekunde. In dieser Zeit kann man kaum blinzeln, aber wenn man Hunderte oder Tausende von Rechnern scannt, dann
kommt einiges zusammen. Außerdem können bestimmte Scan-Optionen wie UDP-Scanning und eine Versionserkennung die Scan-Zeiten erheblich erhöhen. Das
Gleiche gilt für bestimmte Firewall-Konfigurationen und besonders für die Beschränkung der Antwortrate. Auch wenn Nmap parallel arbeitet und viele
ausgefeilte Algorithmen benutzt, um diese Scans zu beschleunigen, hat doch der Benutzer die letzte Kontrolle darüber, was Nmap genau macht. Experten
erstellen ihre Nmap-Befehle sehr sorgfältig, um in einer beschränkten Zeit genau die gewünschte Information zu bekommen.
 
Um die Scan-Zeiten zu verbessern, kann man z.&nbsp;B.&nbsp;nicht-kritische Tests weglassen und auf die neueste Version von Nmap aktualisieren
(Performance-Verbesserungen werden häufig gemacht). Auch die Optimierung von Timing-Parametern kann einen großen Unterschied ausmachen. Diese
Optionen werden im Folgenden beschrieben.
 
Manche Optionen erwarten einen time-Parameter. Dieser wird standardmäßig in Millisekunden angegeben, aber Sie können ‘s’, ‘m’ oder ‘h’ an den Wert
anhängen, um Sekunden, Minuten oder Stunden anzugeben. Das heißt, bei --host-timeout haben die Argumente 900000, 900s und 15m alle denselben Effekt.
 
--min-hostgroup numhosts; --max-hostgroup numhosts (Größe der parallel gescannten Gruppen anpassen)
    Nmap hat die Fähigkeit, Port-Scans oder Versions-Scans von mehreren Hosts parallel durchzuführen. Das macht Nmap, indem es den
    Ziel-IP-Adressraum in Gruppen aufteilt und dann jeweils eine Gruppe scannt. Im Allgemeinen sind größere Gruppen effizienter. Der Nachteil daran
    ist, dass die Host-Ergebnisse erst dann ausgegeben werden können, wenn die gesamte Gruppe fertig ist. Wenn Nmap mit einer Gruppengröße von 50
    anfängt, würde der Benutzer erst dann Ergebnisse sehen (bis auf die Aktualisierungen im ausführlichen Modus), wenn die ersten 50 Hosts
    abgearbeitet sind.
 
    Diesen Konflikt löst Nmap standardmäßig mit einem Kompromissansatz. Es fängt mit einer kleinen Gruppengröße von etwa fünf an, damit die ersten
    Ergebnisse schnell kommen, und erhöht dann die Gruppengröße bis auf etwa 1024. Die genau vorgegebenen Zahlen hängen von den benutzten Optionen
    ab. Aus Effizienzgründen benutzt Nmap größere Gruppen bei UDP-Scans oder bei TCP-Scans über wenige Ports.
 
    Falls mit --max-hostgroup eine maximale Gruppengröße angegeben wird, wird Nmap diese nie überschreiten. Und wenn Sie mit --min-hostgroup eine
    minimale Größe angeben, versucht Nmap, die Gruppengröße oberhalb dieses Wertes zu belassen. Falls es auf einer gegebenen Schnittstelle nicht
    genug Zielhosts gibt, um dieses Minimum zu erfüllen, muss Nmap einen kleineren Wert benutzen. Es können auch beide gesetzt werden, um die
    Gruppengröße in einem bestimmten Bereich zu belassen, aber das ist selten gewünscht.
 
    Diese Optionen haben während der Host-Entdeckungsphase eines Scans keinen Effekt. Dazu gehören einfache Ping-Scans (-sP). Die Host-Entdeckung
    funktioniert immer in großen Gruppen von Hosts, um die Geschwindigkeit und Genauigkeit zu verbessern.
 
    Der Hauptnutzen dieser Optionen liegt darin, eine hohe minimale Gruppengröße anzugeben, damit der gesamte Scan schneller läuft. Häufig wird 256
    gewählt, um ein Netzwerk in Brocken der Größe von Klasse C zu scannen. Bei einem Scan mit vielen Ports bringt eine größere Zahl vermutlich keine
    Vorteile. Bei Scans über nur wenige Ports können Gruppengrößen von 2048 oder mehr hilfreich sein.
 
--min-parallelism numprobes; --max-parallelism numprobes (Parallelität von Testpaketen anpassen)
    Diese Optionen steuern die Gesamtanzahl an Testpaketen, die für eine Host-Gruppe anstehen dürfen. Sie werden beim Port-Scanning und bei der
    Host-Entdeckung benutzt. Abhängig von der Netzwerk-Performance berechnet Nmap standardmäßig eine immer wechselnde ideale Parallelität. Falls
    Pakete verworfen werden, verlangsamt sich Nmap und erlaubt weniger unerledigte Testpakete. Die ideale Anzahl von Testpaketen steigt mit den
    zunehmenden Möglichkeiten des Netzwerks. Diese Optionen setzen minimale oder maximale Schranken für diese Variable. Standardmäßig kann die
    ideale Parallelität auf eins sinken, wenn sich das Netzwerk als unzuverlässig herausstellt, und im Idealfall kann sie auf mehrere hundert
    steigen.
 
    Meistens setzt man --min-parallelism auf eine Zahl größer als eins, um Scans von langsamen Hosts oder Netzwerken zu beschleunigen. Aber das
    Spielen mit dieser Option kann gefährlich sein, weil die Genaugkeit leiden kann, wenn man einen zu großen Wert setzt. Dabei verringert sich auch
    Nmaps Möglichkeit, die Parallelität je nach Netzwerkbedingungen dynamisch anzupassen. Ein Wert von zehn mag vernünftig sein, auch wenn ich nur
    als letzter Ausweg an diesem Wert drehe.
 
    Die Option --max-parallelism wird manchmal auf eins gesetzt, um zu verhindern, dass Nmap mehr als ein Testpaket auf einmal an Hosts sendet. In
    Kombination mit --scan-delay (wird später behandelt) kann das nützlich sein, auch wenn Letzteres diesen Zweck gut genug allein erfüllt.
 
--min-rtt-timeout time, --max-rtt-timeout time, --initial-rtt-timeout time (Timeouts von Testpaketen anpassen)
    Nmap verwaltet einen laufenden Timeout-Wert, der bestimmt, wie lange es auf eine Antwort zu einem Testpaket wartet, bevor es aufgibt oder das
    Paket erneut sendet. Dieser wird auf der Grundlage der Antwortzeiten bei früheren Testpaketen berechnet.
 
    Falls die Netzwerk-Latenzzeit sich als groß genug und variabel erweist, kann dieser Timeout bis auf mehrere Sekunden wachsen. Er beginnt auch
    bei einem konservativen (hohen) Wert und kann diesen eine Weile behalten, wenn Nmap Hosts scannt, die nicht antworten.
 
    Werden Werte für --max-rtt-timeout und --initial-rtt-timeout angegeben, die kleiner als deren Standardwerte sind, so kann die Scan-Zeit
    erheblich verkürzt werden. Das gilt besonders für pinglose (-PN) Scans und solche von stark gefilterten Netzwerken. Aber verlangen Sie nicht zu
    viel. Der Scan kann am Ende länger brauchen, wenn Sie einen so kleinen Wert angeben, dass bei vielen Testpaketen der Timeout erreicht wird und
    sie erneut gesendet werden, während die Antwort unterwegs ist.
 
    Falls alle Hosts in einem lokalen Netzwerk sind, sind 100 Millisekunden ein vernünftig aggressiver Wert für --max-rtt-timeout. Falls ein Routing
    ins Spiel kommt, pingen Sie zuerst einen Host im Netzwerk, sei es mit einem ICMP-Ping oder mit einem Programm zur Erstellung benutzerdefinierter
    Pakete wie hping2, das eine höhere Chance hat, durch eine Firewall zu kommen. Betrachten Sie dann die maximale Umlaufzeit bei circa zehn
    Paketen. Diese möchten Sie vielleicht für --initial-rtt-timeout verdoppeln und für --max-rtt-timeout verdrei- oder vervierfachen. Im Allgemeinen
    setze ich die maximale RTT nicht unter 100 ms, egal, welche Ping-Zeiten ich habe. Und ich gehe auch nicht über 1000 ms.
 
    Die Option --min-rtt-timeout wird selten benutzt, könnte aber nützlich sein, wenn ein Netzwerk so unzuverlässig ist, dass selbst Nmaps
    Standardeinstellung zu aggressiv ist. Da Nmap das Timeout nur dann auf das Minimum reduziert, wenn das Netzwerk zuverlässig scheint, sollte ein
    Bedarf hierfür eher ungewöhnlich sein und sollte als Fehler auf der nmap-dev-Mailingliste berichtet werden.
 
--max-retries numtries (gibt die maximale Anzahl erneuter Sendeversuche bei Port-Scan-Testpaketen an)
    Falls Nmap keine Antwort auf ein Testpaket eines Port-Scans erhält, könnte das heißen, dass der Port gefiltert ist. Oder aber das Testpaket oder
    die Antwort darauf ging im Netzwerk verloren. Es ist auch möglich, dass der Zielhost eine Ratenbeschränkung aktiviert hat, die die Antwort
    temporär blockiert hat. Also versucht es Nmap erneut, indem es das ursprüngliche Paket noch einmal sendet. Falls Nmap eine mangelnde
    Netzwerkzuverlässigkeit feststellt, führt es eventuell viele weitere Wiederholungen durch, bevor es bei einem Port aufgibt. Das verbessert zwar
    die Genauigkeit, verlängert aber auch die Scan-Zeiten. Wenn es auf die Performance ankommt, kann man die Scans durch eine Beschränkung der
    Anzahl dieser Wiederholungen beschleunigen. Sie können sogar --max-retries 0 angeben, um sie ganz zu verbieten, auch wenn sich das nur in
    Situationen wie formlosen Überprüfungen empfiehlt, bei denen einige verpasste Ports oder Hosts nicht so wichtig sind.
 
    Der Standardwert (ohne -T-Template) sind bis zu zehn Wiederholungen. Falls das Netzwerk zuverlässig zu sein scheint und die Zielhosts keine
    Ratenbeschränkung haben, führt Nmap normalerweise nur eine Wiederholung durch. Daher sind die meisten Scans gar nicht betroffen, wenn man
    --max-retries z.&nbsp;B.&nbsp;auf den kleinen Wert drei verringert. Solche Werte können Scans von langsamen (ratenbeschränkten) Hosts aber erheblich
    beschleunigen. Wenn Nmap frühzeitig bei Ports aufgibt, verlieren Sie eventuell einiges an Information, aber das kann vorteilhafter sein, als ein
    Timeout von --host-timeout zu erreichen und alle Informationen über das Ziel zu verlieren.
 
--host-timeout time (bei langsamen Zielhosts aufgeben)
    Bei manchen Hosts braucht es einfach lange, sie zu scannen. Das kann an leistungsschwacher oder unzuverlässiger Netzwerk-Hardware oder
    -Software, an einer Paketratenbeschränkung oder einer restriktiven Firewall liegen. Die langsamsten paar Prozent der gescannten Hosts können
    einen Großteil der Scan-Zeit verbrauchen. Dann ist es manchmal das Beste, die Verluste abzuschneiden und diese Hosts erst einmal wegzulassen.
    Geben Sie --host-timeout mit der gewünschten maximalen Wartezeit an. Sie können z.&nbsp;B.&nbsp;30m angeben, um sicherzustellen, dass Nmap nicht mehr als
    eine halbe Stunde verschwendet, indem es auf einen einzelnen Host wartet. Beachten Sie, dass Nmap während dieser halben Stunde auch andere Hosts
    scannen kann, d.h. es ist keine komplette Zeitverschwendung. Ein Host, der das Timeout erreicht, wird übersprungen. Für diesen Host werden keine
    Ergebnisse der Port-Tabelle, Betriebssystem- oder Versionserkennung ausgegeben.
 
--scan-delay time; --max-scan-delay time (Verzögerung zwischen Testpaketen anpassen)
    Diese Option bewirkt, dass Nmap mindestens die angegebene Zeit zwischen zwei Testpaketen an einen Host wartet. Das ist besonders bei einer
    Ratenbeschränkung sinnvoll. Solaris-Rechner (und viele andere auch) antworten auf UDP-Scan-Testpakete normalerweise nur mit einer ICMP-Nachricht
    pro Sekunde. Wenn Nmap mehr sendet, ist das Verschwendung. Mit einem --scan-delay von 1s bleibt Nmap bei dieser langsamen Rate. Nmap versucht
    eine Ratenbeschränkung zu erkennen und die Scan-Verzögerung entsprechend anzupassen, aber es schadet nicht, sie explizit anzugeben, falls Sie
    schon wissen, welche Rate am besten funktioniert.
 
    Wenn Nmap die Scan-Verzögerung nach oben anpasst, um mit der Ratenbeschränkung klarzukommen, verlangsamt sich der Scan dramatisch. Die Option
    --max-scan-delay gibt die größte Verzögerung an, die Nmap erlaubt. Ein kleiner Wert für --max-scan-delay kann Nmap beschleunigen, ist aber
    riskant. Ein zu kleiner Wert kann zu verschwenderischen wiederholten Sendungen führen und möglicherweise zu verpassten Ports, wenn das Ziel eine
    strenge Ratenbeschränkung implementiert.
 
    Ein weiterer Einsatz von --scan-delay liegt bei der Umgehung schwellwertbasierter Intrusion-Detection- und -Prevention-Systeme (IDS/IPS).
 
--min-rate number; --max-rate number (direkte Steuerung der Scan-Rate)
    Nmaps dynamisches Timing findet sehr gut die passende Scan-Geschwindigkeit. Aber manchmal kennen Sie vielleicht die passende Scan-Rate für ein
    Netzwerk, oder vielleicht müssen Sie garantieren, dass ein Scan bis zu einem bestimmten Zeitpunkt fertig wird. Oder Sie müssen Nmap vielleicht
    davon abhalten, zu schnell zu scannen. Für diese Situationen sind die Optionen --min-rate und --max-rate vorgesehen.
 
    Bei der Option --min-rate versucht Nmap sein Bestes, um Pakete so schnell wie die damit angegebene Rate zu senden oder noch schneller. Das
    Argument ist eine positive Fießkommazahl, die die Paketrate in Paketen pro Sekunde angibt. Die Angabe --min-rate 300 bedeutet z.&nbsp;B.&nbsp;, dass Nmap
    eine Rate von 300 Paketen pro Sekunde oder höher einzuhalten versucht. Die Angabe einer Minimalrate hält Nmap nicht davon ab, bei günstigen
    Bedingungen schneller zu werden.
 
    Umgekehrt beschränkt --max-rate die Senderate auf das angegebene Maximum. Bei --max-rate 100 wird sie auf 100 Pakete pro Sekunde bei einem
    schnellen Netzwerk beschränkt. Und bei --max-rate 0.1 wird der Scan auf ein Paket pro zehn Sekunden verlangsamt. Mit --min-rate und --max-rate
    gleichzeitig können Sie die Rate in einem bestimmten Bereich halten.
 
    Diese beiden Optionen sind global und betreffen den gesamten Scan, nicht nur einzelne Hosts. Sie betreffen nur Port-Scans und
    Host-Entdeckungs-Scans. Andere Merkmale wie die Betriebssystemerkennung implementieren ihr eigenes Timing.
 
    Unter zwei Bedingungen kann die tatsächliche Scan-Rate unter das verlangte Minimum fallen. Die erste ist, wenn das Minimum schneller als die
    schnellste Rate ist, mit der Nmap senden kann, was hardwareabhängig ist. In diesem Fall sendet Nmap Pakete einfach so schnell wie möglich, aber
    Sie sollten wissen, dass solch hohe Raten sehr wahrscheinlich einen Verlust an Genauigkeit bedeuten. Die zweite Bedingung ist, wenn Nmap nichts
    zu senden hat, z.&nbsp;B.&nbsp;am Ende eines Scans, nachdem die letzten Testpakete gesendet wurden und Nmap darauf wartet, dass sie einen Timeout
    verursachen oder beantwortet werden. Eine sinkende Scan-Rate am Ende eines Scans oder zwischen Gruppen von Hosts ist normal. Die Senderate kann
    temporär das Maximum übersteigen, um unvorhergesehene Verzögerungen auszugleichen, aber im Durchschnitt bleibt die Rate bei oder unter dem
    Maximum.
 
    Eine minimale Rate sollte man mit Vorsicht angeben. Scans, die schneller sind, als das Netzwerk erlaubt, können zu einem Verlust von Genauigkeit
    führen. In manchen Fällen kann die Wahl eines schnelleren Scans dazu führen, dass er länger braucht als bei einer kleineren Rate. Das liegt
    daran, dass Nmaps Algorithmen für die
 
    adaptive retransmission die von einer zu hohen Scan-Rate verursachte Netzwerküberlastung erkennen und die Anzahl der Wiederholungen erhöhen, um
    die Genauigkeit zu verbessern. Das heißt, selbst wenn Pakete mit höherer Rate gesendet werden, werden mehr Pakete insgesamt gesendet. Begrenzen
    Sie diese Anzahl von Wiederholungen nach oben mit der Option --max-retries, wenn Sie eine obere Grenze für die gesamte Scan-Zeit setzen müssen.
 
--defeat-rst-ratelimit
    Viele Hosts haben lange eine Ratenbeschränkung benutzt, um die Anzahl der von ihnen gesendeten ICMP-Fehlermeldungen (z.&nbsp;B.&nbsp;
    Port-Unreachable-Fehler) zu reduzieren. Manche Systeme wenden nun ähnliche Ratenbeschränkungen auf die von ihnen erzeugten RST-(Reset-)Pakete
    an. Das kann Nmap dramatisch verlangsamen, weil es sein Timing an diese Ratenbeschränkungen anpasst. Mit der Option --defeat-rst-ratelimit
    können Sie Nmap sagen, dass es diese Ratenbeschränkungen ignorieren soll (z.&nbsp;B.&nbsp;bei Port-Scans wie dem SYN-Scan, die nicht-antwortende Ports
    nicht als offen behandeln).
 
    Diese Option kann die Genauigkeit reduzieren, da einige Ports nicht zu antworten scheinen, weil Nmap nicht lange genug auf eine ratenbeschränkte
    RST-Antwort gewartet hat. Bei einem SYN-Scan führt die ausbleibende Antwort dazu, dass für den Port der Zustand gefiltert und geschlossen
    markiert wird, den wir sehen, wenn RST-Pakete empfangen werden. Diese Option ist nützlich, wenn Sie sich nur für offene Ports interessieren und
    eine Unterscheidung zwischen geschlossenen und gefilterten Ports die zusätzliche Zeit nicht wert ist.
 
-T paranoid|sneaky|polite|normal|aggressive|insane (setzt ein Timing-Template)
    Auch wenn die feinkörnigen Timing-Einstellungen im letzten Abschnitt mächtig und effektiv sind, finden manche Leute sie verwirrend. Außerdem
    kann die Wahl der passenden Werte manchmal mehr Zeit erfordern als der Scan, den Sie damit optimieren möchten. Deswegen bietet Nmap auch einen
    einfacheren Ansatz mit sechs Timing-Templates. Diese können Sie mit der Option -T und ihrer Nummer (0–5) oder mit ihrem Namen angeben. Diese
    Template-Namen lauten: paranoid (0), sneaky (1), polite (2), normal (3), aggressive (4) und insane (5). Die ersten beiden sind für die Umgehung
    von IDS gedacht. Der Polite-Modus verlangsamt den Scan, damit er weniger Bandbreite und Ressourcen auf dem Zielrechner verbraucht. Der
    Normal-Modus ist der Standardwert, d.h. -T3 macht gar nichts. Der Aggressive-Modus beschleunigt Scans, indem er davon ausgeht, dass Sie sich in
    einem einigermaßen schnellen und zuverlässigen Netzwerk befinden. Und schließlich geht der Insane-Modus davon aus, dass sie sich in einem
    außergewöhnlich schnellen Netzwerk befinden bzw.&nbsp;gewillt sind, für mehr Geschwindigkeit auf etwas Genauigkeit zu verzichten.
 
    Mit diesen Templates können Benutzer angeben, wie aggressiv sie vorgehen möchten, und trotzdem Nmap die Wahl der genauen Zeitwerte überlassen.
    Diese Templates führen außerdem auch kleine Geschwindigkeitsanpassungen aus, für die es zur Zeit keine feinkörnigen Einstellungsoptionen gibt.
    Zum Beispiel verbietet -T4, dass die dynamische Scan-Verzögerung bei TCP-Ports über 10 ms ansteigt, und -T5 begrenzt diesen Wert auf 5 ms.
    Templates könen auch in Kombination mit feinkörnigen Einstellungen benutzt werden, wobei die feinkörnigeren Optionen die entsprechenden
    allgemeinen Werte aus den Templates überschreiben. Ich empfehle den Einsatz von -T4 beim Scannen halbwegs moderner und zuverlässiger Netzwerke.
    Wenn Sie diese Option angeben, auch dann, wenn Sie zusätzliche feinkörnige Einstellungen benutzen, profitieren Sie von den weiteren kleinen
    Optimierungen, die damit verbunden sind.
 
    Falls Sie eine anständige Breitband- oder Ethernet-Verbindung haben, würde ich empfehlen, immer -T4 zu benutzen. Manche Leute lieben -T5, was
    für meinen Geschmack aber zu aggressiv ist. Manchmal geben Leute -T2 an, weil sie denken, dadurch würden Hosts weniger abstürzen, oder weil sie
    sich selbst im Allgemeinen für höflich halten. Oft realisieren sie einfach nicht, wie langsam -T polite tatsächlich ist. Ein solcher Scan kann
    zehnmal mehr Zeit benötigen als ein Standard-Scan. Rechnerabstürze und Bandbreitenprobleme kommen mit den standardmäßigen Timing-Optionen (-T3)
    selten vor, weswegen ich das normalerweise vorsichtigen Scannern empfehle. Auf die Versionserkennung zu verzichten ist weit wirksamer bei der
    Reduktion dieser Probleme als das Herumprobieren mit Zeiteinstellungen.
 
    Zwar sind -T0 und -T1 vielleicht hilfreich bei der Vermeidung von IDS-Alarmen, benötigen aber außergewöhnlich viel Zeit beim Scannen von
    Tausenden von Rechnern oder Ports. Für einen derart langen Scan möchten Sie vielleicht doch lieber die genau benötigten Zeitwerte angeben, statt
    sich auf die vorgefertigten Werte von -T0 und -T1 zu verlassen.
 
    Die Haupteffekte von T0 sind die Serialisierung des Scans, bei der immer nur ein Port gescannt wird, und eine Wartezeit von fünf Minuten
    zwischen zwei Testpaketen. T1 und T2 sind ähnlich, warten aber jeweils nur 15 bzw.&nbsp;0,4 Sekunden zwischen zwei Testpaketen. T3 ist die
    Standardeinstellung in Nmap, die eine Parallelisierung beinhaltet. -T4 macht das Äquivalent von --max-rtt-timeout 1250 --initial-rtt-timeout 500
    --max-retries 6 und setzt die maximale TCP-Scan-Verzögerung auf 10 Millisekunden. T5 macht das Äquivalent von --max-rtt-timeout 300
    --min-rtt-timeout 50 --initial-rtt-timeout 250 --max-retries 2 --host-timeout 15m und setzt die maximale TCP-Scan-Verzögerung auf 5 ms.
 
FIREWALL-/IDS-UMGEHUNG UND -TÄUSCHUNG
Viele Internet-Pioniere hatten die Vision eines globalen, offenen Netzwerks, in dem ein universeller IP-Adressraum virtuelle Verbindungen zwischen
zwei beliebigen Knoten erlaubt. Dadurch können Hosts als echte, gleichberechtigte Partner agieren und Information untereinander senden und
empfangen. Die Menschen könnten von ihrer Arbeitsstelle auf all ihre Systeme daheim zugreifen, die Einstellungen der Klimaanlage ändern oder die
Türen für verfrühte Gäste aufsperren. Diese Vision einer universellen Konnektivität wurde durch eine Verknappung im Adressraum und
Sicherheitsbedenken abgewürgt. In den frühen 1990er Jahren begannen Organisationen mit der Aufstellung von Firewalls mit dem ausdrücklichen Zweck
einer Reduktion der Konnektivität. Riesige Netzwerke wurden mit Anwendungs-Proxies, NAT (Network Address Translation)-Geräten und Paketfiltern vom
ungefilterten Internet abgeriegelt. Der ungehinderte Fluss von Informationen hat einer strengen Regulierung von zugelassenen Kommunikationskanälen
und der darüber ausgetauschten Inhalte Platz gemacht.
 
Netzwerkhindernisse wie Firewalls können die Analyse eines Netzwerks außerordentlich schwer machen. Und leichter wird es nicht werden, da das
Verhindern von Ausspähungen oft ein Schlüsselziel beim Einsatz dieser Geräte ist. Trotzdem bietet Nmap viele Eigenschaften, um beim Verständnis
dieser komplexen Netzwerke zu helfen und um zu überprüfen, dass diese Filter arbeiten wie gewünscht. Es bietet sogar Mechanismen zur Umgehung
schlechter Abwehrstrategien. Eine der besten Methoden, Ihre Lage in puncto Netzwerksicherheit zu verstehen, ist die, sie anzugreifen. Versetzen Sie
sich selbst in die Denkweise eines Angreifers und wenden Sie Verfahren aus diesem Kapitel gegen Ihr Netzwerk an. Starten Sie einen FTP-Bounce-Scan,
Idle-Scan, Fragmentierungsangriff, oder versuchen Sie durch einen Ihrer eigenen Proxies zu tunneln.
 
Zusätzlich zur Beschränkung der Netzwerkaktivität überwachen Firmen ihren Datenverkehr immer mehr mit Intrusion-Detection-Systemen (IDS). Alle
wichtigen IDS werden mit Regeln ausgeliefert, die entworfen wurden, um Nmap-Scans zu erkennen, weil Scans manchmal Vorboten von Angriffen sind.
Viele dieser Produkte haben sich in Intrusion-Prevention-Systeme (IPS) verwandelt, die für böswillig gehaltenen Datenverkehr aktiv blockieren.
Dummerweise ist es für Netzwerkadministratoren und IDS-Hersteller eine sehr schwierige Aufgabe, böswillige Absichten durch die Analyse von
Paketdaten zuverlässig zu erkennen. Angreifer mit Geduld, Geschick und der Hilfe bestimmter Nmap-Optionen können meist unerkannt an einem IDS
vorbeikommen. Währenddessen müssen Administratoren mit riesigen Mengen falscher positiver Ergebnisse kämpfen, bei denen eine nicht böswillige
Aktivität fehldiagnostiziert wird und Alarm schlägt oder blockiert wird.
 
Ab und zu schlagen Leute vor, dass Nmap keine Eigenschaften für die Umgehung von Firewallregeln oder IDS enthalten sollte. Ihr Argument ist, dass
diese Eigenschaften genauso wahrscheinlich von Angreifern missbraucht werden wie von Administratoren, die die Sicherheit verbessern. Das Problem bei
dieser Logik ist, dass diese Methoden trotzdem von Angreifern benutzt würden, die einfach andere Werkzeuge finden oder die Funktionalität in Nmap
einbauen würden. Zugleich wäre es für Administratoren sehr viel schwerer, ihren Job zu machen. Das Aufstellen nur moderner, gepatchter FTP-Server
ist eine wesentlich bessere Verteidigung als der Versuch, die Verbreitung von Werkzeugen zu verhindern, die einen FTP-Bounce-Angriff implementieren.
 
Es gibt keine Wunderlösung (oder Nmap-Option) zur Erkennung und Umgehung von Firewalls und IDS-Systemen. Es braucht Kompetenz und Erfahrung. Eine
Anleitung dazu würde den Rahmen dieses Referenz-Handbuches sprengen, das nur die wichtigsten Optionen auflistet und beschreibt, was sie machen.
 
-f (Pakete fragmentieren); --mtu (benutzt angegebene MTU)
    Die Option -f bewirkt, dass der gewünschte Scan (inklusive Ping-Scans) winzig fragmentierte IP-Pakete benutzt. Die Idee dabei ist, den
    TCP-Header über mehrere Pakete aufzuteilen, um es Paketfiltern, Intrusion-Detection-Systemen und anderen Ärgernissen schwerer zu machen, Ihre
    Aktivitäten zu durchschauen. Seien Sie dabei vorsichtig! Manche Programme haben Mühe, mit diesen winzigen Paketen umzugehen. Ein Sniffer alter
    Schule namens Sniffit ist beim Erhalt des ersten Fragments sofort mit einem Segmentation-Fault-Fehler abgestürzt. Wenn Sie diese Option einmal
    angeben, spaltet Nmap die Pakete in acht Bytes oder weniger nach dem IP-Header auf. Das heißt, ein 20 Byte langer TCP-Header würde in drei
    Pakete aufgeteilt, zwei mit acht Bytes des TCP-Headers und eines mit den restlichen vier. Natürlich hat jedes Fragment auch einen IP-Header.
    Geben Sie erneut -f an, um 16 Bytes pro Fragment zu benutzen (was die Anzahl der Fragmente verkleinert). Oder Sie geben eine eigene Offset-Größe
    mit der Option --mtu (für engl. maximum transmission unit) an. Wenn Sie --mtu angeben, sollten Sie nicht auch -f angeben. Das Offset muss ein
    Vielfaches von acht sein. Zwar kommen fragmentierte Pakete nicht durch Paketfilter und Firewalls durch, die alle IP-Fragmente in eine
    Warteschlange stellen, wie z.&nbsp;B.&nbsp;die Option CONFIG_IP_ALWAYS_DEFRAG im Linux-Kernel, aber einige Netzwerke können sich den damit verbundenen
    Performance-Einbruch nicht leisten und lassen sie folglich deaktiviert. Andere können sie nicht aktivieren, weil die Fragmente auf verschiedenen
    Routen in ihre Netzwerke kommen könnten. Manche Quellsysteme defragmentieren hinausgehende Pakete im Kernel. Ein Beispiel dafür ist Linux mit
    dem Verbindungsmodul iptables. Führen Sie einen Scan aus, während ein Sniffer wie z.&nbsp;B.&nbsp;Wireshark läuft, um sicherzustellen, dass die gesendeten
    Pakete fragmentiert sind. Falls Ihr Host-Betriebssystem Probleme macht, probieren Sie die Option --send-eth aus, um die IP-Schicht zu umgehen
    und rohe Ethernet-Rahmen zu schicken.
 
    Eine Fragmentierung wird von Nmap nur für rohe Pakete unterstützt, die man mit TCP- und UDP-Port-Scans (außer beim Connect-Scan und
    FTP-Bounce-Scan) und der Betriebssystemerkennung benutzen kann. Merkmale wie die Versionserkennung und die Nmap Scripting Engine unterstützen im
    Allgemeinen keine Fragmentierung, weil sie sich auf den TCP-Stack Ihres Hosts verlassen, um mit anderen Zielen zu kommunizieren.
 
-D decoy1[,decoy2][,ME][,...] (verdeckt einen Scan mit Ködern)
    Führt einen Decoy-Scan durch, was für den entfernten Host den Anschein erweckt, dass der oder die Hosts, die Sie als Köder angeben, das
    Zielnetzwerk ebenfalls scannen. Deren IDS kann also 5–10 Port-Scans von eindeutigen IP-Adressen verzeichnen, aber es weiß nicht, welche IP sie
    gescannt hat und welche unschuldige Köder waren. Das kann man zwar bekämpfen, indem man Router-Pfade mitverfolgt, Antworten verwirft oder
    weitere aktive Mechanismen anwendet, aber im Allgemeinen ist es eine wirksame Methode zum Verbergen Ihrer IP-Adresse.
 
    Trennen Sie alle Köder mit Kommata voneinander, wobei Sie optional ME als einen der Köder angeben können, um die Position Ihrer echten
    IP-Adresse zu bestimmen. Falls Sie ME an sechster Stelle oder später setzen, zeigen einige verbreitete Port-Scan-Detektoren (wie z.&nbsp;B.&nbsp;der
    hervorragende Scanlogd von Solar Designer) Ihre IP-Adresse wahrscheinlich überhaupt nicht an. Wenn Sie kein ME angeben, setzt es Nmap an eine
    zufällig gewählte Position. Sie können auch RND benutzen, um eine zufällige, nicht-reservierte IP-Adresse zu erzeugen, oder RND:number, um
    number Adressen zu erzeugen.
 
    Beachten Sie, dass die Hosts, die Sie als Köder benutzen, eingeschaltet sein sollten, sonst könnten Sie versehentlich einen SYN-Flood-Angriff
    auf Ihre Ziele auslösen. Außerdem lässt sich der scannende Host sehr einfach bestimmen, wenn nur einer davon im Netzwerk eingeschaltet ist.
    Vielleicht möchten Sie IP-Adressen statt -Namen benutzen (damit die Köder-Netzwerke Sie nicht in ihren Nameserver-Protokollen sehen).
 
    Köder werden sowohl im initialen Ping-Scan (mit ICMP, SYN, ACK oder was auch immer) als auch während der eigentlichen Port-Scan-Phase benutzt.
    Auch bei der Erkennung entfernter Betriebssysteme (-O) werden Köder benutzt. Bei der Versionserkennung oder beim TCP-Connect-Scan funktionieren
    Köder jedoch nicht. Falls eine Scan-Verzögerung stattfindet, wird sie zwischen zwei Stapeln vorgetäuschter Testpakete erzwungen, nicht zwischen
    einzelnen Testpaketen. Weil Köder stapelweise auf einmal gesendet werden, können sie vorübergehend die Beschränkungen der Überlastungssteuerung
    verletzen.
 
    Man sollte hierbei noch erwähnen, dass beim Einsatz von zu vielen Ködern Ihr Scan sich verlangsamen und sogar ungenauer werden kann. Manche ISPs
    filtern außerdem Ihre vorgetäuschten Pakete, aber viele beschränken solche vorgetäuschten IP-Pakete in keinster Weise.
 
-S IP_Address (Quelladresse vortäuschen)
    Unter gewissen Umständen kann Nmap eventuell Ihre Quelladresse nicht bestimmen (wenn dem so ist, dann sagt Ihnen Nmap Bescheid). Benutzen Sie in
    diesem Fall -S mit der IP-Adresse der Schnittstelle, über die Sie die Pakete senden möchten.
 
    Eine weitere mögliche Anwendung dieses Flags ist eine Vortäuschung des Scans, um die Ziele glauben zu machen, dass jemand anderes sie scannt.
    Stellen Sie sich eine Firma vor, die wiederholt von einem Mitbewerber gescannt wird! Bei dieser Art von Anwendung werden im Allgemeinen die
    Optionen -e und -PN benötigt. Beachten Sie, dass Sie normalerweise Antwortpakete zurückbekommen (sie werden an die IP adressiert, die Sie
    vortäuschen), d.h. Nmap kann keinen sinnvollen Bericht produzieren.
 
-e interface (angegebene Schnittstelle benutzen)
    Sagt Nmap, auf welcher Schnittstelle es Pakete senden und empfangen soll. Nmap sollte das automatisch erkennen können, sagt Ihnen aber Bescheid,
    wenn nicht.
 
--source-port portnumber; -g portnumber (Quell-Portnummer vortäuschen)
    Eine Fehlkonfiguration, die überraschend häufig vorkommt, ist es, dem Netzwerkverkehr allein auf Basis der Quell-Portnummer zu vertrauen. Wie
    das zustande kommt, kann man leicht verstehen. Ein Administrator setzt eine glänzende neue Firewall auf und wird sofort mit Beschwerden von
    undankbaren Benutzern überflutet, deren Anwendungen nicht mehr laufen. Vor allem DNS könnte einen Aussetzer haben, weil die UDP-DNS-Antworten
    von externen Servern nicht länger ins Netzwerk hineinkommen. Ein weiteres häufiges Beispiel ist FTP. Bei aktiven FTP-Übertragungen versucht der
    entfernte Server, eine Verbindung zurück zum Client herzustellen, um die gewünschte Datei zu übertragen.
 
    Für diese Probleme existieren sichere Lösungen, oftmals in Form von Proxies auf Anwendungsebene oder Protokoll-parsenden Firewall-Modulen.
    Leider gibt es auch einfachere, unsichere Lösungen. Viele Administratoren haben beobachtet, dass DNS-Antworten von Port 53 und aktive
    FTP-Antworten von Port 20 kommen, und sind in die Falle getappt, eingehenden Datenverkehr nur von diesen Ports zu erlauben. Oft gehen sie davon
    aus, dass kein Angreifer solche Firewall-Lecks bemerken und ausbeuten würde. In anderen Fällen betrachten das Administratoren als kurzfristige
    Überbrückungsmaßnahme, bis sie eine sicherere Lösung implementieren können. Und dann vergessen sie diese Sicherheitsaktualisierung.
 
    Aber nicht nur überarbeitete Netzwerkadministratoren tappen in diese Falle. Zahlreiche Produkte wurden mit diesen unsicheren Regeln
    ausgeliefert. Sogar Microsoft hat sich schuldig gmacht. Die IPsec-Filter, die mit Windows 2000 und Windows XP ausgeliefert wurden, enthalten
    eine implizite Regel, die jeden TCP- oder UDP-Datenverkehr von Port 88 (Kerberos) erlaubt. Ein weiterer bekannter Fall sind Versionen der Zone
    Alarm Personal-Firewall bis 2.1.25, die alle empfangenen UDP-Pakete vom Quell-Port 53 (DNS) oder 67 (DHCP) erlauben.
 
    Nmap bietet die Optionen -g und --source-port (sind äquivalent), um diese Schwächen auszunutzen. Geben Sie einfach eine Portnummer an, und Nmap
    wird, wenn möglich, Pakete von diesem Port senden. Damit es richtig funktioniert, muss Nmap für bestimmte Betriebssystemerkennungstests
    verschiedene Portnummern benutzen, und DNS-Anfragen ignorieren das --source-port-Flag, weil Nmap sich bei ihnen auf System-Bibliotheken
    verlässt. Die meisten TCP-Scans, inklusive dem SYN-Scan, unterstützen die Option vollständig, ebenso wie der UDP-Scan.
 
--data-length number (Zufallsdaten an gesendete Pakete anfügen)
    Normalerweise sendet Nmap minimale Pakete, die nur einen Header enthalten. Daher haben seine TCP-Pakete im Allgemeinen nur 40 Bytes und die ICMP
    Echo-Requests nur 28. Mit dieser Option sagen Sie Nmap, dass es die angegebene Anzahl von zufälligen Bytes an die meisten gesendeten Pakete
    hinzufügen soll. Pakete für die Betriebssystemerkennung (-O) sind davon nicht betroffen, weil dort aus Genauigkeitsgründen konsistente Pakete
    verlangt werden, aber die meisten Ping- und Port-Scan-Pakete unterstützen das. Das kann den Scan etwas verlangsamen, aber auch etwas
    unauffälliger machen.
 
--ip-options S|R [route]|L [route]|T|U ... ; --ip-options hex string (sendet Pakete mit angegebenen IP-Optionen)
    Laut IP-Protokoll[9] können in den Paket-Headern mehrere Optionen enthalten sein. Anders als die allgegenwärtigen TCP-Optionen sieht man
    IP-Optionen aus Gründen der praktischen Anwendbarkeit und Sicherheit nur selten. Tatsächlich blockieren die meisten Internet-Router die
    gefährlichsten Optionen wie Source Routing sogar. Dennoch können diese Optionen in manchen Fällen nützlich sein, um die Netzwerk-Route zu
    Zielrechnern zu bestimmen und zu manipulieren. Sie können z.&nbsp;B.&nbsp;vielleicht die Option Record Route dazu benutzen, einen Pfad zum Ziel sogar dann
    zu bestimmen, wenn traditionellere, traceroute-artige Ansätze versagen. Oder wenn Ihre Pakete von einer bestimmten Firewall verworfen werden,
    können Sie mit den Optionen Strict oder Loose Source Routing möglicherweise eine andere Route angeben.
 
    Die meisten Möglichkeiten bei der Angabe von IP-Optionen hat man, wenn man einfach Werte als Argumente für --ip-options angibt. Stellen Sie vor
    jede Hex-Zahl ein \x und zwei Ziffern. Einzelne Zeichen können Sie wiederholen, indem Sie ihnen ein Sternchen und dann die Anzahl der
    Wiederholungen nachstellen. So ist z.&nbsp;B.&nbsp;\x01\x07\x04\x00*36\x01 ein Hex-String mit 36 NUL-Bytes.
 
    Nmap bietet auch einen verkürzten Mechanismus für die Angabe von Optionen. Geben Sie einfach die Buchstaben R, T oder U an, um jeweils Record
    Route, Record Timestamp oder beide Optionen gemeinsam anzugeben. Loose oder Strict Source Routing kann man mit L bzw.&nbsp;S, gefolgt von einem
    Leerzeichen und einer mit Leerzeichen getrennten Liste von IP-Adressen angeben.
 
    Wenn Sie die Optionen in den gesendeten und empfangenen Paketen sehen möchten, geben Sie --packet-trace an. Mehr Informationen und Beispiele zum
    Einsatz von IP-Optionen mit Nmap finden Sie unter https://seclists.org/nmap-dev/2006/q3/0052.html.
 
--ttl value (setzt IP-Time-to-live-Feld)
    Setzt bei IPv4 das Time-to-live-Feld in gesendeten Paketen auf den angegebenen Wert.
 
--randomize-hosts (randomisiert Reihenfolge der Zielhosts)
    Verlangt von Nmap, dass es alle Gruppen von bis zu 16.384 Hosts durcheinanderwürfelt, bevor es sie scannt. Das kann den Scan für verschiedene
    Netzwerk-Überwachungssysteme weniger offensichtlich machen, besonders dann, wenn Sie ihn mit einer langsamen Timing-Option kombinieren. Wenn Sie
    größere Gruppen randomisieren möchten, müssen Sie PING_GROUP_SZ in nmap.h erhöhen und neu kompilieren. Eine alternative Lösung ist es, die Liste
    der Ziel-IPs mit einem List-Scan (-sL -n -oN filename) zu erzeugen, dann z.&nbsp;B.&nbsp;mit einem Perl-Script zu randomisieren, um sie schließlich als
    Ganzes mit -iL an Nmap zu übergeben.
 
--spoof-mac MAC address, prefix, or vendor name (MAC-Adresse vortäuschen)
    Verlangt von Nmap, dass es in allen gesendeten rohen Ethernet-Rahmen die angegebene MAC-Adresse benutzt. Diese Option impliziert --send-eth, um
    sicherzustellen, dass Nmap tatsächlich Pakete auf Ethernet-Ebene sendet. Die MAC-Adresse kann in mehreren Formaten angegeben werden. Wenn es
    einfach die Zahl 0 ist, wählt Nmap eine völlig zufällige MAC-Adresse für diese Sitzung. Falls der angegebene String aus einer geraden Anzahl von
    Hexadezimalziffern besteht (in dem Paare optional mit Doppelpunkten getrennt sein können), benutzt Nmap diese als MAC. Werden weniger als 12
    Hexadezimalziffern angegeben, dann füllt Nmap die restlichen sechs Bytes mit zufälligen Werten. Falls das Argument weder null noch ein
    Hex-String ist, schaut Nmap in nmap-mac-prefixes nach, um einen Herstellernamen zu finden, der den angegebenen String enthält (unabhängig von
    der Schreibweise). Wird eine Übereinstimmung gefunden, benutzt Nmap die OUI dieses Herstellers (einen drei Byte langen Präfix) und füllt die
    verbleibenden drei Bytes mit Zufallswerten. Gültige Beispiele für Argumente von --spoof-mac sind Apple, 0, 01:02:03:04:05:06, deadbeefcafe,
    0020F2 und Cisco. Diese Option betrifft nur Scans mit rohen Paketen wie den SYN-Scan oder die Betriebssystemerkennung, keine
    verbindungsorientierten Merkmale wie die Versionserkennung oder die Nmap Scripting Engine.
 
--badsum (sendet Pakete mit falschen TCP/UDP-Prüfsummen)
    Verlangt von Nmap, bei den an Zielhosts gesendeten Paketen ungültige TCP- oder UDP-Prüfsummen zu benutzen. Da so gut wie alle Host-IP-Stacks
    solche Pakete verwerfen, kommen eventuelle Antworten sehr wahrscheinlich von einer Firewall oder einem IDS, das sich nicht die Mühe macht, die
    Prüfsumme zu überprüfen. Mehr Details zu dieser Methode finden Sie unter https://nmap.org/p60-12.html.
 
== VERSCHIEDENE OPTIONEN ==
Dieser Abschnitt beschreibt einige wichtige (und weniger wichtige) Optionen, für die es keinen anderen richtig passenden Ort gibt.
 
-6 (schaltet IPv6-Scans ein)
    Seit 2002 unterstützt Nmap bei seinen beliebtesten Features IPv6. Insbesondere das Ping-Scanning (nur für TCP), Connect-Scanning und die
    Versionserkennung unterstützen IPv6. Die Befehlssyntax ist die übliche, nur dass man auch die Option -6 angibt. Natürlich müssen Sie die
    IPv6-Syntax angeben, wenn Sie eine Adresse statt eines Hostnamens angeben. Eine Adresse könnte wie folgt aussehen:
    3ffe:7501:4819:2000:210:f3ff:fe03:14d0, d.h. es empfehlen sich Hostnamen. Die Ausgabe sieht genauso aus wie üblich. Nur die IPv6-Adresse in der
    Zeile der „interessanten Ports“ deutet auf IPv6.
 
    Zwar hat IPv6 die Welt nicht gerade im Sturm erobert, aber in einigen (besonders asiatischen) Ländern wird es stark eingesetzt, und von den
    meisten modernen Betriebssystemen wird es unterstützt. Um Nmap mit IPv6 zu benutzen, müssen sowohl die Quelle als auch das Ziel Ihres Scans für
    IPv6 konfiguriert sein. Falls Ihnen Ihr ISP (so wie die meisten) keine IPv6-Adressen bereitstellt, gibt es frei verfügbare sogenannte
    Tunnel-Broker, die mit Nmap funktionieren. Weitere Tunnel-Broker sind in Wikipedia aufgelistet[12]. Ein weiterer freier Ansatz sind
    6to4-Tunnels.
 
-A (aggressive Scan-Optionen)
    Diese Option schaltet zusätzlich erweiterte und aggressive Optionen ein. Ich habe noch nicht entschieden, wofür sie genau steht. Im Moment
    schaltet sie die Betriebssystemerkennung (-O), die Versionserkennung (-sV), das Scannen mit Scripts (-sC) und traceroute (--traceroute) ein.
 
    In der Zukunft kommen vielleicht noch weitere Eigenschaften hinzu. Ziel ist es, einen umfassenden Satz von Scan-Optionen zu aktivieren, ohne
    dass man sich viele Flags merken muss. Weil aber das scriptbasierte Scannen mit dem Standardsatz als aufdringlich betrachtet wird, sollten Sie
    -A nicht ohne Genehmigung auf Zielnetzwerke loslassen. Diese Option aktiviert nur Eigenschaften, aber keine Optionen für das Timing (z.&nbsp;B.&nbsp;-T4)
    oder die Ausführlichkeit (-v), die Sie eventuell auch benutzen möchten.
 
--datadir directoryname (gibt benutzerdefinierten Ort für Nmap-Datendateien an)
    Nmap erhält einige spezielle Daten zur Laufzeit aus Dateien namens nmap-service-probes, nmap-services, nmap-protocols, nmap-rpc,
    nmap-mac-prefixes und nmap-os-db. Falls der Ort einer dieser Dateien angegeben wurde (mit den Optionen --servicedb oder --versiondb), wird
    dieser Ort für diese Datei benutzt. Danach sucht Nmap diese Dateien im Verzeichnis, das mit der Option --datadir angegeben wurde (sofern
    vorhanden). Dateien, die dort nicht gefunden werden, werden in einem Verzeichnis gesucht, das durch die Umgebungsvariable NMAPDIR angegeben
    wird. Danach kommt ~/.nmap für echte und effektive UIDs (nur bei POSIX-Systemen) oder der Ort des ausführbaren Nmap-Programms (nur unter Win32)
    und dann ein bei der Kompilierung angegebener Ort wie z.&nbsp;B.&nbsp;/usr/local/share/nmap oder /usr/share/nmap. Als letzte Rettung sucht Nmap im
    aktuellen Arbeitsverzeichnis.


--servicedb services file (gibt benutzerdefinierte Dienstedatei an)
    Verlangt von Nmap, die angegebene Dienstedatei zu benutzen statt der Datendatei nmap-services, die in Nmap enthalten ist. Bei dieser Option wird
    außerdem auch ein schneller Scan (-F) benutzt. Weitere Details zu Nmaps Datendateien finden Sie in der Beschreibung zu --datadir.
--versiondb service probes file (gibt benutzerdefinierte Dienstepakete an)
    Verlangt von Nmap, die angegebene Dienstepaketedatei zu benutzen statt der Datendatei nmap-service-probes, die in Nmap enthalten ist. Weitere
    Details zu Nmaps Datendateien finden Sie in der Beschreibung zu --datadir.
--send-eth (sendet rohe Ethernet-Pakete)
    Verlangt von Nmap, Pakete auf der rohen Ethernet-(Datenlink-)Schicht zu schicken, statt auf der höheren IP-(Netzwerk-)Schicht. Nmap wählt
    standardmäßig diejenige, die im Allgemeinen die beste für die gegebene Plattform ist. Rohe Sockets (IP-Schicht) sind im Allgemeinen auf
    Unix-Rechnern am effizientesten, während unter Windows Ethernet-Rahmen benötigt werden, da Microsoft keine rohen Sockets unterstützt. Trotz
    dieser Option benutzt Nmap rohe IP-Pakete unter Unix, wenn es keine andere Wahl hat (z.&nbsp;B.&nbsp;Verbindungen über etwas anderes als Ethernet).
--send-ip (sendet auf der rohen IP-Schicht)
    Verlangt von Nmap, Pakete über rohe IP-Sockets zu senden, statt über low-level Ethernet-Rahmen. Diese Option ist das Komplement zur weiter oben
    beschriebenen Option --send-eth.
--privileged (nimmt an, dass der Benutzer alle Sonderrechte genießt)
    Sagt Nmap, dass es davon ausgehen soll, dass es über genügend Rechte verfügt, um über rohe Sockets zu senden, Paket-Sniffing und ähnliche
    Operationen zu betreiben, die auf Unix-Rechnern normalerweise root-Rechte benötigen. Standardmäßig terminiert Nmap, wenn solche Operationen
    verlangt werden, aber geteuid nicht null ist. --privileged ist nützlich bei Linux-Kernel-Capabilities und ähnlichen Systemen, die so
    konfiguriert sein können, dass sie Benutzern ohne Sonderrechte erlauben, rohe Paket-Scans durchzuführen. Vergewissern Sie sich, dass Sie diese
    Option vor weiteren Optionen angeben, die Sonderrechte benötigen (SYN-Scan, Betriebssystemerkennung usw.). Als äquivalente Alternative zur
    Option --privileged kann die Umgebungsvariable NMAP_PRIVILEGED gesetzt werden.
--unprivileged (nimmt an, dass der Benutzer keine Sonderrechte für rohe Sockets genießt)
    Diese Option ist das Gegenteil von --privileged. Sie sagt Nmap, dass es den Benutzer so behandeln soll, als genösse er keine Sonderrechte für
    rohe Sockets und Sniffing. Das ist nützlich beim Testen, Debugging oder falls die Möglichkeiten des rohen Netzwerkzugriffs auf Ihrem
    Betriebssystem vorübergehend irgendwie defekt sind. Als äquivalente Alternative zur Option --unprivileged kann die Umgebungsvariable
    NMAP_UNPRIVILEGED gesetzt werden.
--release-memory (gibt Speicher vor Terminierung frei)
    Diese Option ist nur bei der Suche nach Speicherlecks nützlich. Sie bewirkt, dass Nmap den von ihm belegten Speicher direkt vor seiner
    Terminierung freigibt, damit man echte Speicherlecks einfacher finden kann. Normalerweise macht Nmap das nicht, weil es das Betriebssystem
    ohnehin macht, wenn es den Prozess terminiert.
-V; --version (gibt Versionsnummer aus)
    Gibt Nmaps Versionsnummer aus und terminiert.
-h; --help (gibt zusammengefasste Hilfeseite aus)
    Gibt eine kurze Hilfeseite mit den am meisten benutzten Optionen aus. Sie kommt auch dann, wenn man Nmap ganz ohne Argumente startet.
LAUFZEIT-INTERAKTION
Während der Ausführung von Nmap wird jeder Tastendruck abgefangen. Das ermöglicht Ihnen, mit dem Programm zu interagieren, ohne es abzubrechen und
neu zu starten. Bestimmte Spezialtasten ändern Optionen, während alle anderen Tasten eine Statusmeldung über den Scan ausgeben. Konvention ist, dass
der Ausgabeumfang durch Kleinbuchstaben vergrößert und durch Großbuchstaben verkleinert wird. Sie können auch ‘?’ drücken, um eine Hilfe zu
erhalten.
v / V
    Vergrößert/verkleinert die Ausführlichkeit
d / D
    Vergrößert/verkleinert die Debugging-Stufe
p / P
    Schaltet Paketverfolgung ein/aus
?
    Gibt einen Hilfeschirm zur Laufzeit-Interaktion aus
Alles andere
    Gibt eine Statusmeldung wie die folgende aus:
    Stats: 0:00:08 elapsed; 111 hosts completed (5 up), 5 undergoing Service Scan
    Service scan Timing: About 28.00% done; ETC: 16:18 (0:00:15 remaining)
== FUßNOTEN ==
1. RFC 1122
    http://www.rfc-editor.org/rfc/rfc1122.txt
2. RFC 792
    http://www.rfc-editor.org/rfc/rfc792.txt
3. RFC 1918
    http://www.rfc-editor.org/rfc/rfc1918.txt
4. UDP
    http://www.rfc-editor.org/rfc/rfc768.txt
5. TCP RFC
    http://www.rfc-editor.org/rfc/rfc793.txt
6. RFC 959
    http://www.rfc-editor.org/rfc/rfc959.txt
7. RFC 1323
    http://www.rfc-editor.org/rfc/rfc1323.txt
8. Programmiersprache Lua
    http://lua.org
9. IP-Protokoll
    http://www.rfc-editor.org/rfc/rfc791.txt
10. Nmap::Scanner
    http://sourceforge.net/projects/nmap-scanner/
11. Nmap::Parser
    http://nmapparser.wordpress.com/
12. in Wikipedia aufgelistet
    http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers
13. Nmap Network Scanning: The Official Nmap Project Guide to Network Discovery and Security Scanning
    https://nmap.org/book/
14. Nmap: Netzwerke scannen, analysieren und absichern
    https://www.opensourcepress.de/index.php?26&backPID=178&tt_products=270
15. Open Source Press
    http://www.opensourcepress.de
16. English version
    https://nmap.org/book/man-legal.html
[[Kategorie:Scanning]]
[[Kategorie:Linux/Befehl]]
[[Netzwerk/Befehl]]
[[Kategorie:Informationssicherheit:Assessment]]
{{DEFAULTSORT:nmap}}
[[Kategorie:IT-Sicherheit/Tools]]
</noinclude>
</noinclude>

Aktuelle Version vom 12. November 2024, 18:47 Uhr

nmap - Netzwerk-Analysewerkzeug, Sicherheits- und Portscanner

Beschreibung

Network Mapper (nmap)
  • Nmap ist ein freier Portscanner zum Scannen und Auswerten von Hosts in einem Rechnernetz
Was ist Network Scanning?
  • Netzwerke scannen und analysieren
  • Angeschlossene und aktive Systeme erkennen
  • Details zu Diensten, Konfigurationen und Versionen bestimmen
  • Netzwerk-Inventarisierung
  • Dienste-Aktualisierungen prüfen
  • Überwachung von Betriebszeiten, Hosts oder Diensten
Nmap GUI Zenmap
Nmap ist ein freier Portscanner zum Scannen und Auswerten von Hosts in einem Rechnernetz.
  • Der Name steht für Network Mapper.
Nmap wurde von einem unter dem Nickname Fyodor bekannten Hacker ursprünglich für das Betriebssystem Linux entwickelt.
  • Das textbasierte Programm unterlag bis Version 7.90 einer modifizierten Version der GNU General Public License, als diese durch eine auf ihr basierende eigene Lizenz ersetzt wurde.
  • Nmap kann darüber hinaus auch kostenpflichtig unter einer alternativen Lizenz erworben werden (um es zum Beispiel innerhalb von Nicht-GPL-Software zu benutzen).
  • Neben der textbasierten Variante gibt es noch die grafische Benutzeroberfläche NmapFE zur komfortablen Einstellung von Nmap, welche mittlerweile durch die Zenmap genannte GUI abgelöst wurde, die auf UMIT von Adriano Monteiro Marques basiert.
  • Obwohl nmap ursprünglich ein Unix-Werkzeug war, existiert mittlerweile auch eine Portierung auf Windows-Betriebssysteme.
  • Sie bietet annähernd den vollen Funktionsumfang, hat jedoch einige Einschränkungen.[1]
Nmap wird in erster Linie für Portscanning (also das Untersuchen der Ports eines Hosts) eingesetzt.
  • Das Werkzeug wurde ständig erweitert und konnte sich vor allem durch die aktiven Techniken für OS-Fingerprinting (das Erkennen des eingesetzten Betriebssystems auf dem Zielhost) einen Namen machen.
  • Auch das Mapping von Umgebungen (Erkennen aktiver Hosts) ist möglich.
  • Darüber hinaus lassen sich mit Nmap vereinzelt die hinter einem Port stehenden Dienste und deren Version auslesen.
Nmap ist sowohl bei Angreifern als auch bei Administratoren sehr beliebt, da es sehr effizient und zuverlässig arbeitet.
  • Es ist ein wichtiger Bestandteil bei der Netzwerkdiagnose und Auswertung von netzwerkfähigen Systemen.
  • Unter anderem wird es auch vom Vulnerability Scanner Nessus zur Erfassung offener Ports eingesetzt.

Beschreibung= Ausgabe von Nmap gegen wikipedia.de

Hersteller Gordon Lyon (Fyodor) und das „Nmap-Developer-Team“
Betriebssystem Linux, Unix, macOS, Windows
Programmiersprache C, C++, Python, Lua
Kategorie Portscanner
Lizenz Nmap Public Source License
Website nmap.org
BESCHREIBUNG
Nmap („Network Mapper“) ist ein Open-Source-Werkzeug für die Netzwerkanalyse und Sicherheitsüberprüfung.
  • Es wurde entworfen, um große Netzwerke
schnell zu scannen, auch wenn es bei einzelnen Hosts auch gut funktioniert.
  • Nmap benutzt rohe IP-Pakete auf neuartige Weise, um festzustellen,

welche Hosts im Netzwerk verfügbar sind, welche Dienste (Anwendungsname und -version) diese Hosts bieten, welche Betriebssysteme (und Versionen davon) darauf laufen, welche Art von Paketfiltern/-Firewalls benutzt werden sowie Dutzende anderer Eigenschaften.

  • Auch wenn Nmap üblicherweise für Sicherheitsüberprüfungen verwendet wird, wird es von vielen Systemen und Netzwerkadministratoren für Routineaufgaben benutzt, z. B. Netzwerkinventarisierung, Verwaltung von Ablaufplänen für Dienstaktualisierungen und die Überwachung von Betriebszeiten von Hosts oder Diensten.
Die Ausgabe von Nmap ist eine Liste gescannter Ziele mit zusätzlicher Information zu jedem, abhängig von den benutzten Optionen.
  • Die entscheidende Information dabei steht in der „Tabelle der interessanten Ports“.
  • Diese Tabelle listet die Portnummer und das -protokoll sowie den Dienstnamen und -zustand auf.
  • Der Zustand ist entweder offen, gefiltert, geschlossen oder ungefiltert.
  • Offen bedeutet, dass auf diesem Port des Zielrechners eine
Anwendung auf eingehende Verbindungen/Pakete lauscht.
  • Gefiltert bedeutet, dass eine Firewall, ein Filter oder ein anderes Netzwerkhindernis den Port blockiert, so dass Nmap nicht wissen kann, ob er offen oder geschlossen ist.
  • Für geschlossene Ports gibt es keine Anwendung, die auf ihnen lauscht, auch wenn sie jederzeit geöffnet werden könnten.
  • Als ungefiltert werden Ports dann klassifiziert, wenn sie auf Nmaps Testpakete antworten, Nmap aber nicht feststellen kann, ob sie offen oder gechlossen sind.
  • Nmap gibt die Zustandskombinationen offen|gefiltert und geschlossen|gefiltert an, wenn es nicht feststellen kann, welcher der beiden Zustände für einen Port zutrifft.
  • Die Port-Tabelle enthält eventuell auch Details zur Softwareversion, sofern eine Versionserkennung verlangt wurde.
  • Wurde ein IP-Protokoll-Scan verlangt (-sO), dann bietet Nmap Angaben über die unterstützten IP-Protokolle statt über lauschende Ports.

Zusätzlich zur Tabelle der interessanten Ports kann Nmap weitere Angaben über Ziele bieten, darunter Reverse-DNS-Namen, Mutmaßungen über das benutzte Betriebssystem, Gerätearten und MAC-Adressen.

Einen typischen Nmap-Scan sehen Sie in Beispiel 1
  • Die einzigen in diesem Beispiel benutzten Nmap-Argumente sind -A für die Betriebssystem- und Versionserkennung, Script-Scanning und Traceroute und -T4 für eine schnellere Ausführung.
  • Danach kommen die Namen der Zielhosts.

Beispiel 1. Ein repräsentativer Nmap-Scan

   # nmap -A -T4 scanme.nmap.org
   Starting Nmap ( https://nmap.org )
   Interesting ports on scanme.nmap.org (64.13.134.52):
   Not shown: 994 filtered ports
   PORT    STATE  SERVICE VERSION
   22/tcp  open   ssh     OpenSSH 4.3 (protocol 2.0)
   25/tcp  closed smtp
   53/tcp  open   domain  ISC BIND 9.3.4
   70/tcp  closed gopher
   80/tcp  open   http    Apache httpd 2.2.2 ((Fedora))
   |_ HTML title: Go ahead and ScanMe!
   113/tcp closed auth
   Device type: general purpose
   Running: Linux 2.6.X
   OS details: Linux 2.6.20-1 (Fedora Core 5)
   TRACEROUTE (using port 80/tcp)
   HOP RTT   ADDRESS
   [Cut first seven hops for brevity]
   8   10.59 so-4-2-0.mpr3.pao1.us.above.net (64.125.28.142)
   9   11.00 metro0.sv.svcolo.com (208.185.168.173)
   10  9.93  scanme.nmap.org (64.13.134.52)
   Nmap done: 1 IP address (1 host up) scanned in 17.00 seconds

Die neueste Version von Nmap erhält man unter https://nmap.org, und die neueste Version der Manpage ist unter https://nmap.org/book/man.html verfügbar.

Installation

# apt install nmap

Anwendungen

$ nmap -v -A scanme.nmap.org
$ nmap -v -sP 192.168.0.0/16 10.0.0.0/8
$ nmap -v -iR 10000 -PN -p 80

Einfacher Portscan

nmap ohne Optionen

  • Es geht darum herauszufinden, ob ein Port offen ist, welche Anwendung dahinter läuft und ob dort Sicherheitslücken und Schwachstellen zu vermuten sind.
  • Ein einfacher Port-Scanner wird alle Ports pauschal in zwei oder drei Zustände einteilen:
  1. offen,
  2. geschlossen,
  3. gefiltert / geblockt (offen/geschlossen) jeweils mit und ohne Antwort.

Ziele festlegen

  • NMAP ist bei der Angabe des Scan-Ziels sehr flexibel.
  • Das kann ein Domain-Name sein, eine IP-Adresse oder ein ganzes Subnetz.
   Domain: www. XXX.XX
   IP-Adresse: 192.168.1.1
   Subnetz: 192.168.1.1/24
   Subnetz: 192.168.1.*
  • Man sollte einen Port-Scan nicht auf ein ganzes Subnetz anwenden.
  • Ein ganzes Subnetz zu scannen, kann sehr lange dauern, wenn die Hosts gefilterte Ports haben.
  • Die Anzahl der Ports reicht von 1 bis 65.535.
  • NMAP scannt standardmäßig nur etwa 1.000 der meistgenutzten Ports, die in der Datenbank "nmap-services" aufgelistet sind.
  • Mit der Option "-F" (für engl. fast, dt. schnell) kann man den Port-Scan sogar auf die 100 meistgenutzten Ports beschränken.
  • Interessante Ports scannen mit der Option "-p":
Port(s) Option
22 -p22
22,25,80 -p22,25,80
1 - 100 -p-100
80 - 88 -p80-88
>60000 -p60000-
1 - 65535 -p-

Einzelne Rechner

  • Der Zielbereich ist eine einzelne IP-Adresse
  • Standardmäßig arbeitet Nmap mit IPv4 (es geht aber auch IPv6)
  • Ein Windows-7-Rechner scannt einen Linux-PC:
    • nmap 172.16.24.102 (Nmap scan report for)
  • Die IP-Adresse gehört also dem Linux-Rechner, den wir mit Nmap auf offene Ports hin überprüfen.
  • Das Ergebnis:
    • 997 Ports erkennt Nmap als geschlossen (closed ports)
    • Drei Ports sind offen:
    • Port 21 für FTP (open ftp)
    • Port 80 für einen Webserver (open http) und
    • Port 110 für POP3 (open pop3)

Netzwerkbereiche

Bereich auswählen
  • Nmap betrachtet alles in der Kommandozeile, was keine Option (oder ein Argument einer Option) ist, als Bezeichnung eines Zielhosts.
  • Der einfachste Fall ist die Beschreibung einer IP-Zieladresse oder eines Zielhostnamens zum Scannen.
  • Manchmal möchten Sie ein ganzes Netzwerk benachbarter Hosts scannen.
  • Dafür unterstützt Nmap Adressen im CIDR-Stil [1].
  • Sie können an eine IPv4-Adresse oder einen Hostnamen angefügt werden.
  • Nmap wird alle IP-Adressen scannen, bei denen die ersten <numbits> mit denen der gegebenen IP oder des gegebenen Hostnamens übereinstimmen.
  • Z.B.: würde 192.168.10.0/24 die 256 Hosts zwischen 192.168.10.0 (binär: 1100.0000.1010.1000.0000.1010.0000.0000) und 192.168.10.255 (binär: 1100.0000.1010.1000.0000.1010.1111.1111, inklusive) scannen.
  • 192.168.10.40/24 würde genau dieselben Ziele scannen.
  • Dadurch, dass der Host
 scanme.nmap.org

die IP-Adresse 64.13.134.52 hat, würde die Angabe

 scanme.nmap.org/16

die 65.536 IP-Adressen zwischen 64.13.0.0 und 64.13.255.255 scannen.

  • Der kleinste erlaubte Wert ist /0, der das gesamte Internet scannt.
  • Der größte Wert ist /32 und scannt lediglich den Host mit angegebenem Namen oder IP-Adresse, da alle Adressen-Bit festgelegt sind.
Teilbereich auswählen
  • Die CIDR-Notation ist kurz, aber nicht immer flexibel genug.
  • So möchte man z. B. 192.168.0.0/16 scannen, aber IPs auslassen, die mit .0 oder .255 enden, weil sie als Unternetzwerk und Broadcast-Adressen benutzt werden können.
  • Nmap unterstützt das in Form einer Oktett-Bereichsadressierung.
  • Statt eine normale IP-Adresse anzugeben, kann man eine mit Kommata getrennte Liste von Zahlen oder Bereichen für jedes Oktett angeben.
  • Z.B. überspringt 192.168.0-255.1-254 alle Adressen im Bereich, die mit .0 oder .255 enden, und 192.168.3-5,7.1 scannt die vier Adressen 192.168.3.1, 192.168.4.1, 192.168.5.1 und 192.168.7.1.
  • Beide Bereichsgrenzen können weggelassen werden, die Standardwerte sind 0 für die linke und 255 für die rechte Grenze.
  • Wenn Sie allein - benutzen, ist das identisch mit 0-255.
  • Im ersten Oktett dann 0- benutzen, damit die Zielangabe nicht wie eine Kommandozeilenoption aussieht.
  • Die Angabe 0-255.0-255.13.37 führt einen internetweiten Scan über alle IP-Adressen aus, die mit 13.37 enden.
  • Diese Art von breiter Abtastung kann bei Internet-Umfragen und -Forschungen hilfreich sein.

IPv6

  • IPv6-Adressen können nur durch ihre vollständige IPv6-Adresse oder ihren Hostnamen angegeben werden.
  • CIDR und Oktettbereiche werden für IPv6 nicht unterstützt, weil sie selten nützlich sind.

Zielauswahl

  • Auch wenn Ziele normalerweise in der Kommandozeile angegeben werden, gibt es auch die folgenden Optionen, um die Zielauswahl zu steuern:
 -iL <inputfilename> (Eingabe aus einer Liste)
  • Eine sehr lange Liste von Hosts in der Kommandozeile anzugeben ist oft sehr umständlich, kommt aber sehr häufig vor.
  • Der DHCP-Server z. B. exportiert vielleicht eine Liste von 10.000 aktuellen Adresszuweisungen (engl. leases), die Sie scannen möchten.
  • Man möchte z. B. alle IP-Adressen außer denjenigen scannen, um Hosts , die unautorisierte statische IP-Adressen benutzen zu finden.
  • Die Liste der zu scannenden Hosts und übergibt deren Dateinamen als Argument zur Option -iL an Nmap.
  • Die Einträge dürfen alle Formate haben, die Nmap auf der Kommandozeile akzeptiert (IP-Adresse, Hostname, CIDR, IPv6 oder Oktettbereiche).
  • Alle Einträge müssen durch ein oder mehrere Leerzeichen, Tabulatoren oder Zeilenumbrüche getrennt sein.
  • Wenn man einen Bindestrich (-) als Dateinamen angibt, liest Nmap die Hosts von der Standardeingabe statt aus einer normalen Datei.
 -iR <num hosts> (zufällige Auswahl von Zielen)

Internetumfragen

  • Für internetweite Umfragen und andere Forschungsaktivitäten möchte man Ziele vielleicht zufällig auswählen.
  • Das kann man mit der Option -iR, die als Argument die Anzahl der zu erzeugenden IPs annimmt.
  • Nmap lässt automatisch bestimmte unerwünschte IPs aus, wie solche in privaten, Multicast- oder unbesetzten Adressbereichen.
  • Für einen endlosen Scan kann man das Argument 0 angeben.

Beispiele

  • Befehl
 nmap -sS -PS80 -iR 0 -p 80

sucht Webserver , auf denen man stöbern kann.

  • Befehl
 --exclude <host1>[,<host2>[,...]] (Ziele ausklammern)

gibt eine mit Kommata getrennte Liste von Zielen an, die vom Scan ausgeschlossen sein sollen, selbst wenn sie in den angegebenen Netzwerkbereich fallen.

  • Die übergebene Liste benutzt die normale Nmap-Syntax und kann folglich Hostnamen, CIDR-Netzblöcke, Oktettbereiche usw. enthalten.
  • Das kann nützlich sein, wenn das zu scannende Netzwerk hochkritische Server und Systeme enthält, die man nicht anfassen darf, weil sie bekanntermaßen ungünstig auf Port-Scans reagieren.
  • Oder Unternetze, die von anderen Leuten administriert werden.
  • Befehl
 --excludefile<-exclude_file> (Liste aus Datei ausklammern)
  • Das bietet dieselbe Funktionalität wie die Option --exclude.
  • Unterschied: die ausgeklammerten Ziele in der mit Zeilenumbrüchen, Leerzeichen oder Tabulatoren getrennten Datei <exclude_file> statt auf der Kommandozeile angegeben werden.






ANGABE VON ZIELEN

Nmap betrachtet alles in der Kommandozeile, was keine Option (oder ein Argument einer Option) ist, als Bezeichnung eines Zielhosts. Der einfachste Fall ist die Beschreibung einer IP-Zieladresse oder eines Zielhostnamens zum Scannen.

Manchmal möchten Sie ein ganzes Netzwerk benachbarter Hosts scannen. Dafür unterstützt Nmap Adressen im CIDR-Stil. Sie können /numbits an eine IPv4-Adresse oder einen Hostnamen anfügen, und Nmap wird alle IP-Adressen scannen, bei denen die ersten numbits mit denen der gegebenen IP oder des gegebenen Hostnamens übereinstimmen. Zum Beispiel würde 192.168.10.0/24 die 256 Hosts zwischen 192.168.10.0 (binär: 11000000 10101000 00001010 00000000) und 192.168.10.255 (binär: 11000000 10101000 00001010 11111111, inklusive) scannen. 192.168.10.40/24 würde genau dieselben Ziele scannen. Dadurch, dass der Host scanme.nmap.org die IP-Adresse 64.13.134.52 hat, würde die Angabe scanme.nmap.org/16 die 65.536 IP-Adressen zwischen 64.13.0.0 und 64.13.255.255 scannen. Der kleinste erlaubte Wert ist /0, der das gesamte Internet scannt. Der größte Wert ist /32 und scannt lediglich den Host mit angegebenem Namen oder IP-Adresse, da alle Adressen-Bits festgelegt sind.

Die CIDR-Notation ist kurz, aber nicht immer flexibel genug. Vielleicht möchten Sie z. B. 192.168.0.0/16 scannen, aber IPs auslassen, die mit .0 oder .255 enden, weil sie als Unternetzwerk und Broadcast-Adressen benutzt werden können. Nmap unterstützt das in Form einer Oktett-Bereichsadressierung. Statt eine normale IP-Adresse anzugeben, können Sie eine mit Kommata getrennte Liste von Zahlen oder Bereichen für jedes Oktett angeben. Zum Beispiel überspringt 192.168.0-255.1-254 alle Adressen im Bereich, die mit .0 oder .255 enden, und 192.168.3-5,7.1 scannt die vier Adressen 192.168.3.1, 192.168.4.1, 192.168.5.1 und 192.168.7.1. Beide Bereichsgrenzen können weggelassen werden, die Standardwerte sind 0 für die linke und 255 für die rechte Grenze. Wenn Sie allein - benutzen, ist das identisch mit 0-255, aber denken Sie daran, im ersten Oktett 0- zu benutzen, damit die Zielangabe nicht wie eine Kommandozeilenoption aussieht. Diese Bereiche müssen nicht auf die endgültigen Oktetts beschränkt sein: die Angabe 0-255.0-255.13.37 führt einen internetweiten Scan über alle IP-Adressen aus, die mit 13.37 enden. Diese Art von breiter Abtastung kann bei Internet-Umfragen und -Forschungen hilfreich sein.

IPv6-Adressen können nur durch ihre vollständige IPv6-Adresse oder ihren Hostnamen angegeben werden. CIDR und Oktettbereiche werden für IPv6 nicht unterstützt, weil sie selten nützlich sind.

Nmap akzeptiert in der Kommandozeile mehrere Host-Angaben, die auch nicht vom selben Typ sein müssen. Der Befehl nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.- macht also das, was Sie erwarten würden.

Auch wenn Ziele normalerweise in der Kommandozeile angegeben werden, gibt es auch die folgenden Optionen, um die Zielauswahl zu steuern: -iL inputfilename (Eingabe aus einer Liste) Eine sehr lange Liste von Hosts in der Kommandozeile anzugeben ist oft sehr umständlich, kommt aber sehr häufig vor. Ihr DHCP-Server z. B. exportiert vielleicht eine Liste von 10.000 aktuellen Adresszuweisungen (engl. leases), die Sie scannen möchten. Oder vielleicht möchten Sie alle IP-Adressen außer denjenigen scannen, um Hosts zu finden, die unautorisierte statische IP-Adressen benutzen. Erzeugen Sie einfach die Liste der zu scannenden Hosts und übergeben Sie deren Dateinamen als Argument zur Option -iL an Nmap. Die Einträge dürfen alle Formate haben, die Nmap auf der Kommandozeile akzeptiert (IP-Adresse, Hostname, CIDR, IPv6 oder Oktettbereiche). Alle Einträge müssen durch ein oder mehrere Leerzeichen, Tabulatoren oder Zeilenumbrüche getrennt sein. Wenn Sie einen Bindestrich (-) als Dateinamen angeben, liest Nmap die Hosts von der Standardeingabe statt aus einer normalen Datei.

-iR num hosts (zufällige Auswahl von Zielen) Für internetweite Umfragen und andere Forschungsaktivitäten möchten Sie Ziele vielleicht zufällig auswählen. Das kann man mit der Option -iR, die als Argument die Anzahl der zu erzeugenden IPs annimmt. Nmap lässt automatisch bestimmte unerwünschte IPs aus, wie solche in privaten, Multicast- oder unbesetzten Adressbereichen. Für einen endlosen Scan kann man das Argument 0 angeben. Denken Sie aber daran, dass manche Netzwerkadministratoren sich gegen unautorisierte Scans ihrer Netzwerke sträuben. Lesen Sie „“ sorgfältig, bevor Sie -iR benutzen. Falls Sie mal an einem regnerischen Tag wirklich Langeweile haben, probieren Sie einmal den Befehl nmap -sS -PS80 -iR 0 -p 80 aus, um zufällig Webserver zu finden, auf denen Sie herumstöbern können.

--exclude host1[,host2[,...]] (Ziele ausklammern) Gibt eine mit Kommata getrennte Liste von Zielen an, die vom Scan ausgeschlossen sein sollen, selbst wenn sie in den angegebenen Netzwerkbereich fallen. Die übergebene Liste benutzt die normale Nmap-Syntax und kann folglich Hostnamen, CIDR-Netzblöcke, Oktettbereiche usw. enthalten. Das kann nützlich sein, wenn das zu scannende Netzwerk hochkritische Server und Systeme enthält, die man nicht anfassen darf, weil sie bekanntermaßen ungünstig auf Port-Scans reagieren, oder Unternetze, die von anderen Leuten administriert werden.

--excludefile exclude_file (Liste aus Datei ausklammern) Das bietet dieselbe Funktionalität wie die Option --exclude, mit dem Unterschied, dass die ausgeklammerten Ziele in der mit Zeilenumbrüchen, Leerzeichen oder Tabulatoren getrennten Datei exclude_file statt auf der Kommandozeile angegeben werden.

Dienste identifizieren

  • Die Ports 25/tcp, 80/tcp und 53/udp sind offen.
  • Dank der Datenbank in nmap-services gibt Nmap noch aus, dass diese Ports wahrscheinlich jeweils zu einem Mailserver (SMTP), Webserver (HTTP) und Nameserver (DNS) gehören.
  • Selbst wenn Nmap recht hat und auf dem Server im obigen Beispiel SMTP-, HTTP- und DNS-Server laufen, ist das nicht besonders viel an Information.
  • Eine genaue Versionsnummer hilft bei der Bestimmung der Exploits, für die ein Server anfällig ist.
  • Die Versionserkennung hilft Ihnen, an diese Information heranzukommen.
  • Nachdem TCP- und/oder UDP-Ports mit einer der anderen Scan-Methoden entdeckt wurden, fragt die Versionserkennung diese Ports ab.
  • Die Datenbank in nmap-service-probes enthält Testpakete für die Abfrage verschiedenster Dienste und Ausdrücke für den Vergleich und das Parsen der Antworten.
  • Nmap versucht, das
  1. Dienstprotokoll zu bestimmen (z. B. FTP, SSH, Telnet, HTTP), aber auch
  2. Anwendungsnamen (z. B. ISC BIND, Apache httpd, Solaris telnetd),
  3. Versionsnummer,
  4. Hostnamen, Gerätetyp (z. B. Drucker, Router),
  5. die Betriebssystemfamilie (z. B. Windows, Linux) und manchmal verschiedene Details:
  6. etwa ob ein X-Server Verbindungen annimmt,
  7. die SSH-Protokollversion
  8. oder der KaZaA-Benutzername.

Ausgabe steuern

Nmap/Ausgabe

BEISPIELE

Hier sind einige Anwendungsbeispiele für Nmap, von einfachen und routinemäßigen bis zu etwas komplexeren und esoterischen. Um die Sache etwas konkreter zu machen, werden einige echte IP-Adressen und Domainnamen benutzt. Diese sollten Sie mit Adressen/Namen aus Ihrem eigenen Netzwerk ersetzen. Auch wenn ich nicht der Meinung bin, dass Port-Scans anderer Netzwerke illegal sind oder sein sollten, mögen manche Netzwerkadministratoren es nicht, wenn ihre Netzwerke unverlangt gescannt werden, und könnten sich beschweren. Der beste Ansatz ist der, sich zuerst eine Genehmigung zu verschaffen.

Zu Testzwecken haben Sie die Genehmigung, den Host scanme.nmap.org zu scannen. Diese Genehmigung gilt nur für das Scannen mit Nmap und nicht für das Testen von Exploits oder Denial-of-Service-Angriffen. Bitte führen Sie nicht mehr als ein Dutzend Scans pro Tag auf diesem Host durch, um die Bandbreite nicht zu erschöpfen. Falls diese freie Dienstleistung missbraucht wird, wird sie abgeschaltet, und Nmap wird dann Failed to resolve given hostname/IP: scanme.nmap.org ausgeben. Diese Genehmigung gilt auch für die Hosts scanme2.nmap.org, scanme3.nmap.org usw., auch wenn diese Hosts noch nicht existieren.

nmap -v scanme.nmap.org

Diese Option scannt alle reservierten TCP-Ports auf dem Rechner scanme.nmap.org. Die Option -v schaltet den ausführlichen Modus an.

nmap -sS -O scanme.nmap.org/24

Startet einen Stealth-SYN-Scan auf allen aktiven Rechnern unter den 256 IPs im Netzwerk der Größe „Klasse C“, in dem Scanme sitzt. Es versucht auch herauszufinden, welches Betriebssystem auf jedem aktiven Host läuft. Wegen des SYN-Scans und der Betriebssystemerkennung sind dazu root-Rechte notwendig.

nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127

Startet eine Host-Auflistung und einen TCP-Scan in der ersten Hälfte von allen 255 möglichen acht-Bit-Unternetzen im Klasse-B-Adressraum 198.116. Dabei wird getestet, ob die Systeme SSH, DNS, POP3 oder IMAP auf ihren Standardports laufen haben oder irgendetwas auf Port 4564. Falls einer dieser Ports offen ist, wird eine Versionserkennung benutzt, um festzustellen, welche Anwendung darauf läuft.

nmap -v -iR 100000 -PN -p 80

Verlangt von Nmap, 100.000 Hosts zufällig auszuwählen und sie nach Webservern (Port 80) zu scannen. Eine Host-Auflistung wird mit -PN unterbunden, weil es Verschwendung ist, zuerst eine Reihe von Testpaketen zu senden, um festzustellen, ob ein Host aktiv ist, wenn Sie auf jedem Zielhost ohnehin nur einen Port testen.

nmap -PN -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20

Das scannt 4096 IPs nach Webservern (ohne sie anzupingen) und speichert die Ausgabe im grepbaren und im XML-Format.

DAS NMAP-BUCH Auch wenn dieser Reference Guide alle wesentlichen Nmap-Optionen genau beschreibt, kann er nicht vollständig zeigen, wie man diese Features anwendet, um Aufgaben der realen Welt zu lösen. Zu diesem Zweck haben wir das Buch Nmap Network Scanning: The Official Nmap Project Guide to Network Discovery and Security Scanning. Es zeigt, wie man Firewalls und Intrusion Detection-Systeme unterwandert, die Performance von Nmap optimiert, und wie man häufige Netzwerkaufgaben mit der Nmap Scripting Engine automatisiert. Außerdem enthält es Tipps und Anleitungen für häufige Nmap-Aufgaben wie die Netzwerkinventarisierung, Penetrationstests, die Erkennung schurkischer Wireless Access Points und das Verhindern von Wurmausbrüchen im Netzwerk. Dabei zeigt es mit Beispielen und Diagrammen, wie die Kommunikation auf der Leitung aussieht. Mehr als die Hälfte des Buches ist online frei verfügbar. Weitere Informationen finden Sie unter https://nmap.org/book.

Die deutsche Übersetzung dieses Buches von Dinu Gherman ist im Mai 2009 unter dem Titel Nmap: Netzwerke scannen, analysieren und absichern[14] im Open Source Press[15]-Verlag erschienen.

Aufruf

Nmap/syntax

Konfiguration

Dateien

Siehe auch


Dokumentation

Man-Page

Info-Pages

Links

Projekt

  1. http://nmap.org

Weblinks

  1. https://de.wikipedia.org/wiki/Nmap