Provided by: nmap_7.80+dfsg1-2ubuntu0.1_amd64 bug

NAME

       nmap - Netzwerk-Analysewerkzeug und Sicherheits-/Portscanner

ÜBERSICHT

       nmap [Scan Type...] [Options] {target specification}

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.

ÜBERSICHT DER OPTIONEN

       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 <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 <time>: 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 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

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.

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. 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.B. 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.B. 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. 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.B. 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.B. 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.B. 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.B. 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.B. -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.B. 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.B., 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.B. 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.B. 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. 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.B. 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.B. --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.B. -sA oder
           -sF) angeben. Dieser Basistyp sagt Nmap, wie es die Antworten interpretieren soll. Ein
           SYN-Scan z.B. 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.B. 1-1023). Anfangs- und/oder Endwerte eines Bereichs können
           weggelassen werden und werden von Nmap dann mit jeweils 1 bzw. 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. 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.B.
           -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.B. 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.B. 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.B. FTP, SSH, Telnet, HTTP), aber auch
       Anwendungsnamen (z.B. ISC BIND, Apache httpd, Solaris telnetd), Versionsnummer, Hostnamen,
       Gerätetyp (z.B. Drucker, Router), die Betriebssystemfamilie (z.B. 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.B. 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.B. Sun), das
       eigentliche Betriebssystem (z.B. Solaris), dessen Generation (z.B. 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.B. 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.B. „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.B. 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.B. -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. 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.B. 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.B. 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.B. 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.B. 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.B. 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.B., 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.B. 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.B. 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.B. 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. 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. 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.B. 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.B. 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.B. 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.B. 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.B.
           \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. 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 http://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.B. 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.

AUSGABE

       Alle Sicherheitswerkzeuge sind nur so gut wie die Ausgabe, die sie erzeugen. Komplexe
       Tests und Algorithmen haben einen geringen Wert, wenn sie nicht auf übersichtliche und
       verständliche Weise dargestellt werden. Da Nmap auf vielfältige Weise von verschiedenen
       Leuten und anderer Software benutzt wird, kann kein Format allein es allen recht machen.
       Daher bietet Nmap mehrere Formate, darunter den interaktiven Modus, den Menschen direkt
       lesen können, und XML, das von Software leicht geparst werden kann.

       Zusätzlich zu verschiedenen Ausgabeformaten bietet Nmap Optionen zur Steuerung der
       Ausführlichkeit dieser Ausgabe sowie Debugging-Meldungen. Die Ausgaben können an die
       Standardausgabe oder an benannte Dateien gehen, die Nmap überschreiben bzw. an die es
       seine Ausgabe anfügen kann. Mit den Ausgabedateien können außerdem abgebrochene Scans
       fortgesetzt werden.

       Nmap erzeugt seine Ausgabe in fünf verschiedenen Formaten. Das Standardformat heißt
       interaktive Ausgabe und wird an die Standardausgabe (stdout) gesendet. Es gibt auch die
       normale Ausgabe, die ähnlich zur interaktiven Ausgabe ist, außer dass sie weniger
       Laufzeitinformation und Warnungen ausgibt, weil man davon ausgeht, dass sie erst nach
       Abschluss des Scans analysiert wird und nicht, während er noch läuft.

       Die XML-Ausgabe ist eines der wichtigsten Ausgabeformate, da sie einfach nach HTML
       konvertiert, von Programmen wie Nmap-GUIs geparst oder in Datenbanken importiert werden
       kann.

       Die zwei verbleibenden Ausgabeformate sind die einfache grepbare Ausgabe, in der die
       meiste Information über einen Zielhost in einer einzigen Zeile enthalten ist, und sCRiPt
       KiDDi3 0utPUt für Benutzer, die sich selbst als |<-r4d sehen.

       Die interaktive Ausgabe ist standardmäßig vorgegeben und verfügt über keine eigenen
       Kommandozeilenoptionen, aber die anderen vier Formate benutzen dieselbe Syntax. Sie
       erwarten ein Argument, den Namen der Datei, in der die Ergebnisse gespeichert werden
       sollen. Es können mehrere Formate angegeben werden, aber jedes nur einmal. Vielleicht
       möchten Sie z.B. eine normale Ausgabe für eine eigene Untersuchung speichern und eine
       XML-Ausgabe desselben Scans für eine programmbasierte Analyse. Das erreichen Sie mit den
       Optionen -oX myscan.xml -oN myscan.nmap. Auch wenn in diesem Kapitel der Kürze wegen
       einfache Namen wie myscan.xml benutzt werden, empfehlen sich im Allgemeinen
       aussagekräftigere Namen. Welche Namen Sie wählen, ist Geschmackssache, aber ich benutze
       lange Namen, die das Scandatum und ein oder zwei Worte über den Scan enthalten, in einem
       Verzeichnis, das den Namen der gescannten Firma enthält.

       Auch wenn diese Optionen Ergebnisse in Dateien speichern, gibt Nmap weiterhin die
       interaktive Ausgabe wie üblich auf die Standardausgabe aus. Zum Beispiel speichert der
       Befehl nmap -oX myscan.xml target XML in myscan.xml und füllt die Standardausgabe mit
       demselben interaktiven Ergebnis, wie es auch ohne Angabe von -oX der Fall wäre. Das können
       Sie ändern, indem Sie ein Minuszeichen als Argument für eines der Formate angeben. Dann
       schaltet Nmap die interaktive Ausgabe ab und gibt stattdessen Ergebnisse im gewünschten
       Format auf den Standardausgabestrom aus. Das heißt, der Befehl nmap -oX - target schreibt
       nur die XML-Ausgabe auf die Standardausgabe. Ernste Fehler werden weiterhin auf den
       normalen Standardfehlerstrom, stderr, ausgegeben.

       Anders als bei anderen Nmap-Argumenten ist das Leerzeichen zwischen dem Options-Flag für
       eine Ausgabedatei (z.B. -oX) und dem Dateinamen oder Minuszeichen obligatorisch. Falls Sie
       die Leerzeichen weglassen und Argumente wie z.B. -oG- oder -oXscan.xml angeben, erzeugt
       Nmap aus Gründen der Rückwärtskompatibilität Ausgabedateien im normalen Format, die
       jeweils die Namen G- und Xscan.xml haben.

       All diese Argumente unterstützen strftime-ähnliche Umwandlungen im Dateinamen. %H, %M, %S,
       %m, %d, %y und %Y sind alle exakt gleich wie in strftime. %T entspricht %H%M%S, %R
       entspricht %H%M und %D entspricht %m%d%y. Ein %, dem ein anderes Zeichen folgt, ergibt nur
       genau dieses Zeichen (%% ergibt ein Prozentzeichen). Also erzeugt -oX 'scan-%T-%D.xml'
       eine XML-Datei in der Form scan-144840-121307.xml.

       Nmap bietet auch Optionen zur Steuerung der Scan-Ausführlichkeit und Optionen, um an
       Ausgabedateien anzuhängen, statt sie zu überschreiben. All diese Optionen werden unten
       beschrieben.

       Nmap-Ausgabeformate

       -oN filespec (normale Ausgabe)
           Verlangt, dass eine normale Ausgabe in der angegebenen Datei gespeichert wird. Wie
           oben erwähnt, unterscheidet sich das leicht von der interaktiven Ausgabe.

       -oX filespec (XML-Ausgabe)
           Verlangt, dass eine XML-Ausgabe in der angegebenen Datei gespeichert wird. Nmap fügt
           eine DTD (Document Type Definition) hinzu, mit der XML-Parser Nmaps XML-Ausgabe
           validieren können. Diese ist vor allem für die Benutzung durch Programme gedacht, kann
           aber auch Menschen bei der Interpretation von Nmaps XML-Ausgabe helfen. Die DTD
           definiert die gültigen Elemente des Formats und zählt an vielen Stellen die dafür
           erlaubten Attribute und Werte auf. Die neueste Version ist immer unter
           https://nmap.org/data/nmap.dtd verfügbar.

           XML bietet ein stabiles Format, das man mit Software leicht parsen kann. Solche
           XML-Parser sind für alle wichtigen Programmiersprachen wie C/C++, Perl, Python und
           Java gratis verfügbar. Manche Leute haben sogar Anbindungen für die meisten dieser
           Sprachen geschrieben, um speziell die Ausgabe und Ausführung von Nmap zu steuern.
           Beispiele sind Nmap::Scanner[10]

           und Nmap::Parser[11]

           für Perl in CPAN. In fast allen Fällen, in denen eine nicht-triviale Anwendung eine
           Schnittstelle zu Nmap benutzt, ist XML das bevorzugte Format.

           Die XML-Ausgabe verweist auf ein XSL-Stylesheet, mit dem man die Ergebnisse als HTML
           formatieren kann. Am einfachsten benutzt man das, indem man einfach die XML-Ausgabe in
           einem Webbrowser wie Firefox oder IE lädt. Standardmäßig funktioniert das nur auf dem
           Rechner, auf dem Sie Nmap ausgeführt haben (oder auf einem, der ähnlich konfiguriert
           ist), weil der Pfad zu nmap.xsl darin festkodiert ist. Um portable XML-Dateien zu
           erzeugen, die auf allen mit dem Web verbundenen Rechnern als HTML angezeigt werden,
           können Sie die Optionen --webxml oder --stylesheet benutzen.

       -oS filespec (ScRipT KIdd|3-Ausgabe)
           Die Script-Kiddie-Ausgabe ist ähnlich zur interaktiven Ausgabe, mit dem Unterschied,
           dass sie nachbearbeitet ist, um die 'l33t HaXXorZ besser anzusprechen! Vorher haben
           sie wegen dessen konsistent richtiger Schreibweise und Buchstabierung auf Nmap
           herabgesehen. Humorlose Menschen sollten wissen, dass diese Option sich über Script
           Kiddies lustig macht, bevor sie mich dafür angreifen, dass ich „ihnen helfe“.

       -oG filespec (grepbare Ausgabe)
           Dieses Ausgabeformat wird zum Schluss beschrieben, weil es als überholt gilt. Das
           XML-Ausgabeformat ist wesentlich leistungsstärker und für erfahrene Benutzer fast
           genauso bequem. XML ist eim Standard, für den Dutzende hervorragender Parser verfügbar
           sind, während die grepbare Ausgabe nur mein eigener einfacher Hack ist. XML ist
           erweiterbar und kann neue Nmap-Eigenschaften unterstützen, die ich beim grepbaren
           Format aus Platzgründen oft weglassen muss.

           Dessen ungeachtet ist die grepbare Ausgabe immer noch recht beliebt. Es ist ein
           einfaches Format, das pro Zeile einen Host auflistet und das mit
           Unix-Standardwerkzeugen wie grep, awk, cut, sed, diff und auch mit Perl auf triviale
           Weise durchsucht und geparst werden kann. Selbst ich benutze es für einmalige schnelle
           Tests in der Kommandozeile. Zum Beispiel kann man alle Hosts, auf denen der SSH-Port
           offen ist oder auf denen Solaris läuft, auf einfache Weise mit einem grep bestimmen,
           das die Hosts findet, umgeleitet in einen awk- oder cut-Befehl, der die gewünschten
           Felder ausgibt.

           Die grepbare Ausgabe besteht aus Kommentaren (Zeilen, die mit einem # anfangen) sowie
           aus Zielzeilen. Eine Zielzeile enthält eine Kombination aus sechs benannten Feldern,
           durch Tabulatoren getrennt, gefolgt von einem Doppelpunkt. Diese Felder lauten Host,
           Ports, Protocols, Ignored State, OS, Seq Index, IP ID und Status.

           Das wichtigste dieser Felder ist im Allgemeinen Ports, das Details zu einem
           interessanten Port enthält. Es ist eine mit Kommata getrennte Liste von
           Port-Einträgen, wobei jeder Eintrag einen interessanten Port darstellt und aus sieben
           mit Schrägstrichen (/) getrennten Unterfeldern besteht. Diese Unterfelder lauten: Port
           number, State, Protocol, Owner, Service, SunRPC info und Version info.

           Wie bei der XML-Ausgabe kann diese Manpage auch hier nicht das vollständige Format
           dokumentieren. Eine detailliertere Betrachtung des grepbaren Ausgabeformats in Nmap
           finden Sie from https://nmap.org/book/output-formats-grepable-output.html.

       -oA basename (Ausgabe in allen Formaten)
           Aus Gründen der Bequemlichkeit können Sie Scan-Ergebnisse mit -oA basename
           gleichzeitig in normalem, in XML- und in grepbarem Format speichern. Sie werden
           jeweils in basename.nmap, basename.xml und basename.gnmap, gespeichert. Wie in den
           meisten Programmen können Sie vor den Dateinamen ein Präfix mit einem Verzeichnispfad
           darin setzen, z.B. ~/nmaplogs/foocorp/ unter Unix oder c:\hacking\sco unter Windows.

       Optionen für Ausführlichkeit und Debugging

       -v (größere Ausführlichkeit)
           Erhöht die Ausführlichkeit, d.h. Nmap gibt mehr Informationen über den laufenden Scan
           aus. Offene Ports werden angezeigt, direkt nachdem sie gefunden werden, und es werden
           Schätzungen für die Dauer bis zur Fertigstellung angegeben, falls Nmap meint, dass ein
           Scan mehr als ein paar Minuten benötigt. Noch mehr Information erhalten Sie, wenn Sie
           diese Option zweimal oder noch öfter angeben.

           Die meisten Änderungen betreffen nur die interaktive Ausgabe, manche betreffen auch
           die normale und die Script-Kiddie-Ausgabe. Die anderen Ausgabearten sind für die
           Weiterverarbeitung durch Maschinen gedacht, d.h. Nmap kann in diesen Formaten
           standardmäßig alle Details angeben, ohne einen menschlichen Leser zu ermüden.
           Allerdings gibt es in den anderen Modi einige Änderungen, bei denen die Ausgabegröße
           durch Weglassen einiger Details erheblich reduziert werden kann. Zum Beispiel wird
           eine Kommentarzeile in der grepbaren Ausgabe, die eine Liste aller gescannten Ports
           enthält, nur im wortreichen Modus ausgegeben, weil sie ziemlich lang werden kann.

       -d [level] (erhöhe oder setze Debugging-Stufe)
           Wenn nicht einmal der wortreiche Modus genug Daten für Sie liefert, können Sie beim
           Debugging noch wesentlich mehr davon bekommen! Wie bei der Ausführlichkeits-Option
           (-v) wird auch das Debugging mit einem Kommandozeilen-Flag eingeschaltet (-d), und die
           Debug-Stufe kann durch eine mehrfache Angabe gesteigert werden. Alternativ dazu können
           Sie eine Debug-Stufe auch als Argument an -d übergeben. So setzt z.B. -d9 die Stufe
           neun. Das ist die höchste verfügbare Stufe, die Tausende von Zeilen produziert, sofern
           Sie keinen sehr einfachen Scan mit sehr wenigen Ports und Zielen ausführen.

           Eine Debugging-Ausgabe ist sinnvoll, wenn Sie einen Fehler in Nmap vermuten oder wenn
           Sie einfach verwirrt darüber sind, was und warum Nmap etwas genau macht. Da dieses
           Merkmal überwiegend für Entwickler gedacht ist, sind Debug-Zeilen nicht immer
           selbsterklärend. Vielleicht bekommen Sie etwas wie: Timeout vals: srtt: -1 rttvar: -1
           to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000. Wenn Sie eine Zeile
           nicht verstehen, ist Ihre einzige Zuflucht, sie zu ignorieren, im Quellcode
           nachzuschauen oder Hilfe auf der Entwicklerliste (nmap-dev). zu erfragen. Manche
           Einträge sind selbsterklärend, aber je höher die Debug-Stufe ist, desto obskurer
           werden die Meldungen.

       --reason (Gründe für Host- und Portzustände)
           Gibt die Gründe an, warum ein Port auf einen bestimmten Zustand gesetzt wurde und
           warum ein Host als ein- oder ausgeschaltet betrachtet wird. Diese Option zeigt die
           Paketart an, die einen Port- oder Hostzustand ermittelt hat, z.B. ein RST-Paket von
           einem geschlossenen Port oder ein Echo Reply von einem eingeschalteten Host. Die
           Information, die Nmap angeben kann, hängt von der Art des Scans oder Pings ab. Der
           SYN-Scan und der SYN-Ping (-sS und -PS) sind sehr detailliert, aber der
           TCP-Connect-Scan (-sT) wird durch die Implementierung des connect-Systemaufrufs
           beschränkt. Dieses Merkmal wird automatisch von der Debug-Option (-d) aktiviert, und
           die Ergebnisse werden auch dann in XML-Protokolldateien gespeichert, wenn diese Option
           gar nicht angegeben wird.

       --stats-every time (periodische Timing-Statistik ausgeben)
           Gibt periodisch eine Timing-Statusmeldung nach einem Intervall der Länge time aus.
           Dabei kann diese Zeitangabe beschrieben werden, wie in „TIMING UND PERFORMANCE“
           dargestellt, d.h. Sie können z.B. --stats-every 10s benutzen, um alle 10 Sekunden eine
           Statusaktualisierung zu erhalten. Diese erscheint in der interaktiven Ausgabe (auf dem
           Bildschirm) und in der XML-Ausgabe.

       --packet-trace (gesendete und empfangene Pakete und Daten mitverfolgen)
           Bewirkt, dass Nmap für jedes gesendete oder empfangene Paket eine Zusammenfassung
           ausgibt. Das wird bei der Fehlersuche oft gemacht, ist aber auch eine willkommene
           Methode für Neulinge, um genau zu verstehen, was Nmap unter der Oberfläche macht. Um
           zu verhindern, dass Tausende von Zeilen ausgegeben werden, möchten Sie vielleicht eine
           beschränkte Anzahl zu scannender Ports angeben, z.B. mit -p20-30. Wenn Sie nur wissen
           möchten, was im Versionserkennungssubsystem vor sich geht, benutzen Sie stattdessen
           --version-trace. Wenn Sie nur an einer Script-Mitverfolgung interessiert sind, geben
           Sie --script-trace an. Mit --packet-trace erhalten Sie all das zusammen.

       --open (zeige nur offene (oder möglicherweise offene) Ports an)
           Manchmal interessieren Sie sich nur für Ports, mit denen Sie tatsächlich eine
           Verbindung herstellen können (offene Ports), und wollen Ihre Ergebnisse nicht mit
           anderen Ports überhäufen, die geschlossen, gefiltert und geschlossen|gefiltert sind.
           Die Ausgabe wird normalerweise nach dem Scan mit Werkzeugen wie grep, awk und Perl
           angepasst, aber dieses Merkmal wurde auf überwältigend vielfachen Wunsch hinzugefügt.
           Geben Sie --open an, um nur offene, offene|gefilterte und ungefilterte Ports zu sehen.
           Diese drei Ports werden ganz wie gewöhnlich behandelt, d.h. dass offen|gefiltert und
           ungefiltert in Zählungen zusammengefasst werden, wenn es eine sehr große Anzahl davon
           gibt.

       --iflist (liste Schnittstellen und Routen auf)
           Gibt die Liste der Schnittstellen und Systemrouten aus, die Nmap entdeckt hat. Das ist
           hilfreich bei der Fehlersuche bei Routing-Problemen oder fehlerhaften
           Gerätebeschreibungen (z.B. wenn Nmap eine PPP-Verbindung als Ethernet behandelt).

       --log-errors (protokolliere Fehler/Warnungen in eine Datei im normalen Ausgabeformat)
           Von Nmap ausgegebene Warnungen und Fehlermeldungen gehen normalerweise nur auf den
           Bildschirm (interaktive Ausgabe), was die Ordnung aller Ausgabedateien im normalen
           Format (üblicherweise mit -oN angegeben) nicht stört. Wenn Sie diese Meldungen in den
           angegebenen normalen Ausgabedateien wirklich sehen möchten, können Sie diese Option
           benutzen. Diese ist dann hilfreich, wenn Sie die interaktive Ausgabe nicht übersehen
           oder wenn Sie Fehler beim Debugging speichern möchten. Die Fehlermeldungen und
           Warnungen werden auch im interaktiven Modus weiterhin erscheinen. Bei den meisten
           Fehlern bezüglich schlechter Kommandozeilenargumente wird das nicht funktionieren, da
           Nmap seine Ausgabedateien eventuell noch nicht initialisiert hat. Außerdem benutzen
           einige Nmap-Fehlermeldungen und -Warnungen ein anderes System, das diese Option noch
           nicht unterstützt.

           Eine Alternative zu --log-errors ist die Umleitung der interaktiven Ausgabe (inklusive
           des Standardfehlerstroms) in eine Datei. Die meisten Unix-Shells machen einem diesen
           Ansatz leicht, aber auf Windows kann er schwierig sein.

       Weitere Ausgabeoptionen

       --append-output (an Ausgabedateien hinzufügen, statt sie zu überschreiben)
           Wenn Sie einen Dateinamen für ein Ausgabeformat wie z.B. -oX oder -oN angeben, wird
           diese Datei standardmäßig überschrieben. Wenn Sie deren Inhalt lieber behalten und die
           neuen Ergebnisse anhängen möchten, benutzen Sie die Option --append-output. Dann wird
           bei allen angegebenen Ausgabedateinamen dieses Nmap-Aufrufs an die Dateien angehängt,
           statt sie zu überschreiben. Mit XML-Scandaten (-oX) funktioniert das nicht so gut, da
           die erzeugte Datei im Allgemeinen nicht mehr sauber geparst wird, es sei denn, Sie
           reparieren sie von Hand.

       --resume filename (abgebrochenen Scan fortsetzen)
           Manche umfangreichen Nmap-Läufe benötigen sehr viel Zeit – in der Größenordnung von
           Tagen. Solche Scans laufen nicht immer bis zum Ende. Vielleicht gibt es
           Beschränkungen, die verhindern, dass man Nmap während der normalen Arbeitszeit
           ausführen kann, das Netzwerk könnte abstürzen, der Rechner, auf dem Nmap läuft, könnte
           einen geplanten oder ungeplanten Neustart erleben oder Nmap selbst könnte abstürzen.
           Der Administrator, der Nmap ausführt, könnte es auch aus irgendeinem anderen Grund
           abbrechen, indem er ctrl-C eingibt. Und den ganzen Scan von vorne neu zu starten, ist
           eventuell nicht wünschenswert. Wenn ein normales (-oN) oder ein grepbares (-oG)
           Protokoll geführt wurde, kann der Benutzer Nmap jedoch bitten, den Scan bei dem Ziel
           fortzusetzen, an dem es beim Abbruch gearbeitet hat. Geben Sie einfach die Option
           --resume an und übergeben Sie die normale/grepbare Ausgabedatei als Argument. Andere
           Argumente sind nicht erlaubt, da Nmap die Ausgabedatei parst, um dieselben Argumente
           zu benutzen, die zuvor benutzt wurden. Rufen Sie Nmap einfach als nmap --resume
           logfilename auf. Nmap fügt neue Ergebnisse dann an die Datendateien an, die im
           vorherigen Lauf angegeben wurden. Diese Fortsetzung funktioniert nicht aus
           XML-Ausgabedateien, weil es schwierig wäre, die zwei Läufe in einer gültigen XML-Datei
           zu kombinieren.

       --stylesheet path or URL (setze XSL-Stylesheet, um eine XML-Ausgabe zu transformieren)
           Die Nmap-Distribution enthält ein XSL-Stylesheet

           namens nmap.xsl

           zum Betrachten oder Übersetzen einer XML-Ausgabe nach HTML.

           Die XML-Ausgabe enthält eine xml-stylesheet-Anweisung, die auf nmap.xml an der Stelle
           verweist, wo es von Nmap ursprünglich installiert wurde (oder im aktuellen
           Arbeitsverzeichnis unter Windows). Laden Sie einfach Nmaps XML-Ausgabe in einem
           modernen Webbrowser, und er sollte nmap.xsl im Dateisystem finden und benutzen, um die
           Ergebnisse darzustellen. Wenn Sie ein anderes Stylesheet benutzen möchten, geben Sie
           es als Argument für --stylesheet an. Dabei müssen Sie den vollständigen Pfadnamen oder
           die URL angeben. Sehr häufig wird --stylesheet https://nmap.org/data/nmap.xsl benutzt.
           Das sagt einem Browser, dass er die neueste Version des Stylesheets von Nmap.Org laden
           soll. Die Option --webxml macht dasselbe, verlangt aber weniger Tipparbeit und
           Merkfähigkeit. Wenn man das XSL von Nmap.Org lädt, wird es einfacher, die Ergebnisse
           auf einem Rechner anzuschauen, auf dem kein Nmap (und folglich auch kein nmap.xsl)
           installiert ist. Daher ist die URL oft nützlicher, doch aus Datenschutzgründen wird
           standardmäßig das nmap.xsl im lokalen Dateisystem benutzt.

       --webxml (lade Stylesheet von Nmap.Org)
           Diese bequeme Option ist nur ein Alias für --stylesheet
           https://nmap.org/data/nmap.xsl.

       --no-stylesheet (lasse XSL-Stylesheet-Deklaration im XML weg)
           Geben Sie diese Option an, wenn Nmap in seiner XML-Ausgabe auf keinerlei
           XSL-Stylesheet verweisen soll. Die xml-stylesheet-Anweisung wird dann weggelassen.

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.B. -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.B. /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.B. 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)

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.

FEHLER

       Wie sein Autor ist auch Nmap selbst nicht perfekt. Aber Sie können helfen, es zu
       verbessern, indem Sie Fehlerberichte schicken oder sogar Patches schreiben. Falls Nmap
       sich nicht wie erwartet verhält, sollten Sie zuerst auf die neueste Version aktualisieren,
       die unter https://nmap.org verfügbar ist. Wenn das Problem anhält, versuchen Sie
       herauszufinden, ob es bereits erkannt und bearbeitet wurde. Suchen Sie nach der
       Fehlermeldung auf unserer Suchseite unter http://insecure.org/search.html oder bei Google.
       Stöbern Sie in den nmap-dev-Archiven unter http://seclists.org/. Lesen Sie auch diese
       Manpage vollständig. Wenn Sie keine Lösung finden, schicken Sie einen Fehlerbericht per
       E-Mail an <dev@nmap.org>. Beschreiben Sie darin bitte alles, was Sie über das Problem
       wissen, inklusive der Nmap-Version und der Betriebssystemversion, unter der Sie Nmap
       einsetzen. Berichte von Problemen und Fragen zur Anwendung von Nmap werden sehr viel
       wahrscheinlicher beantwortet, wenn sie an <dev@nmap.org> geschickt werden statt direkt an
       Fyodor. Wenn Sie sich erst auf der nmap-dev-Liste eintragen, bevor Sie Ihre E-Mail
       schicken, entgeht Ihre Nachricht auch der Moderation und kommt schneller an. Eintragen
       können Sie sich unter https://nmap.org/mailman/listinfo/dev.

       Code-Patches zur Behebung von Fehlern sind noch besser als Fehlerberichte. Eine einfache
       Anweisung für die Erstellung von Patch-Dateien mit Ihren Änderungen ist unter
       https://nmap.org/data/HACKING verfügbar. Patches können an nmap-dev (empfohlen) oder
       direkt an Fyodor geschickt werden.

AUTOR

       Fyodor <fyodor@nmap.org> (http://insecure.org)

       Über die Jahre haben hunderte von Menschen wertvolle Beiträge zu Nmap geleistet. Sie sind
       detailliert in der Datei CHANGELOG aufgeführt, die mit dem Nmap-Quellcode verbreitet wird
       und auch unter https://nmap.org/changelog.html verfügbar ist.

       Sorry, this section has not yet been translated to German. Please see the English
       version[16].

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