mirror of
https://github.com/nmap/nmap.git
synced 2025-12-06 04:31:29 +00:00
4371 lines
221 KiB
XML
4371 lines
221 KiB
XML
<?xml version="1.0"?>
|
|
<!-- $Id: nmap-man.xml 13215 2009-05-08 02:47:14Z fyodor $ -->
|
|
<article id="man">
|
|
<artheader>
|
|
<title>Nmap-Referenz-Handbuch (Man Page)</title>
|
|
</artheader>
|
|
<indexterm><primary>Manpage</primary><see>Referenz-Handbuch</see></indexterm>
|
|
<indexterm class="startofrange" id="man-nmap1-indexterm"><primary>Referenz-Handbuch (Manpage)</primary></indexterm>
|
|
<refentry id='man-nmap1'>
|
|
<refmeta>
|
|
<refentrytitle>nmap</refentrytitle>
|
|
<manvolnum>1</manvolnum>
|
|
<refmiscinfo class="source">Nmap</refmiscinfo>
|
|
<refmiscinfo class="manual">Nmap-Referenz-Handbuch</refmiscinfo>
|
|
</refmeta>
|
|
<refnamediv id='man-name'>
|
|
<refname>nmap</refname>
|
|
<refpurpose>Netzwerk-Analysewerkzeug und Sicherheits-/Portscanner</refpurpose>
|
|
</refnamediv>
|
|
<!-- body begins here -->
|
|
<refsynopsisdiv id='man-synopsis'>
|
|
<cmdsynopsis>
|
|
<command>nmap</command>
|
|
<arg choice='opt' rep='repeat'>
|
|
<replaceable>Scan Type</replaceable>
|
|
</arg>
|
|
<arg choice='opt'>
|
|
<replaceable>Options</replaceable>
|
|
</arg>
|
|
<arg choice='req'>
|
|
<replaceable>target specification</replaceable>
|
|
</arg>
|
|
</cmdsynopsis>
|
|
</refsynopsisdiv>
|
|
<refsect1 id='man-description'>
|
|
<title>Beschreibung</title>
|
|
<indexterm><primary>Nmap</primary><secondary>Beschreibung</secondary></indexterm>
|
|
<web>
|
|
<note><para>This document describes the very latest version of
|
|
Nmap available from <ulink url="https://nmap.org/download.html" /> or <ulink url="https://nmap.org/dist/?C=M&O=D" />. Please
|
|
ensure you are using the latest version before reporting that a
|
|
feature doesn't work as described.</para></note>
|
|
</web>
|
|
|
|
<para>Nmap (<quote>Network Mapper</quote>) 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.</para>
|
|
|
|
<para>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 <quote>Tabelle der interessanten
|
|
Ports</quote>.<indexterm><primary>Ports</primary><secondary sortas="interessante">interessante</secondary></indexterm>
|
|
Diese Tabelle listet die Portnummer und das -protokoll sowie den Dienstnamen
|
|
und -zustand auf. Der Zustand ist entweder
|
|
<literal>offen</literal>, <literal>gefiltert</literal>,
|
|
<literal>geschlossen</literal> oder <literal>ungefiltert</literal>.
|
|
<literal>Offen</literal><indexterm><primary><literal>offen</literal> Portzustand</primary></indexterm>
|
|
bedeutet, dass auf diesem Port des Zielrechners eine Anwendung
|
|
auf eingehende Verbindungen/Pakete lauscht.
|
|
<literal>Gefiltert</literal><indexterm><primary><literal>gefiltert</literal> Portzustand</primary></indexterm>
|
|
bedeutet, dass eine Firewall, ein Filter oder ein anderes
|
|
Netzwerkhindernis den Port blockiert, so dass Nmap nicht wissen kann,
|
|
ob er <literal>offen</literal> oder <literal>geschlossen ist</literal>.
|
|
Für <literal>geschlossene</literal><indexterm><primary><literal>geschlossen</literal> Portzustand</primary></indexterm>
|
|
Ports gibt es keine Anwendung, die auf ihnen lauscht,
|
|
auch wenn sie jederzeit geöffnet werden könnten.
|
|
Als <literal>ungefiltert</literal><indexterm><primary><literal>ungefiltert</literal> Portzustand</primary></indexterm>
|
|
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
|
|
<literal>offen|gefiltert</literal><indexterm><primary><literal>offen|gefiltert</literal> Portzustand</primary></indexterm>
|
|
und <literal>geschlossen|gefiltert</literal><indexterm><primary><literal>geschlossen|gefiltert</literal> Portzustand</primary></indexterm>
|
|
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 (<option>-sO</option>), dann
|
|
bietet Nmap Angaben über die unterstützten IP-Protokolle
|
|
statt über lauschende Ports.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Einen typischen Nmap-Scan sehen Sie in
|
|
<xref linkend="man-ex-repscan" xrefstyle="select: label nopage" />.
|
|
Die einzigen in diesem Beispiel benutzten Nmap-Argumente sind
|
|
<option>-A</option> für die Betriebssystem- und Versionserkennung,
|
|
Script-Scanning und Traceroute und <option>-T4</option> für eine
|
|
schnellere Ausführung. Danach kommen die Namen der Zielhosts.</para>
|
|
|
|
<example id="man-ex-repscan"><title>Ein repräsentativer Nmap-Scan</title>
|
|
<indexterm><primary><option>-A</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
<screen>
|
|
# 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
|
|
</screen>
|
|
</example>
|
|
|
|
<para>Die neueste Version von Nmap erhält man unter
|
|
<ulink url="https://nmap.org" />, und die neueste Version der Manpage
|
|
ist unter <ulink url="https://nmap.org/book/man.html"/> verfügbar.</para>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1 id='man-briefoptions'>
|
|
<title>Übersicht der Optionen</title>
|
|
|
|
<para>Diese Übersicht wird ausgegeben, wenn Nmap ohne Argumente
|
|
aufgerufen wird; die neueste Version davon ist immer unter
|
|
<ulink url="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.</para>
|
|
|
|
<!-- sortas="#" puts it before the entries that start with '-' in the options
|
|
section. -->
|
|
<indexterm class="startofrange" id="nmap-usage-indexterm"><primary sortas="#">Optionsübersicht</primary></indexterm>
|
|
<indexterm class="startofrange" id="nmap-usage-nmap-indexterm"><primary>Kommandozeilenoptionen</primary><secondary>von Nmap</secondary></indexterm>
|
|
<?dbfo-need height="1in"?>
|
|
<literallayout format="linespecific" class="normal">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
|
|
</literallayout>
|
|
|
|
|
|
<indexterm class="endofrange" startref="nmap-usage-nmap-indexterm"/>
|
|
<indexterm class="endofrange" startref="nmap-usage-indexterm"/>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1 id='man-target-specification'>
|
|
<title>Angabe von Zielen</title>
|
|
<indexterm><primary>Zielangabe</primary></indexterm>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Manchmal möchten Sie ein ganzes Netzwerk benachbarter Hosts scannen.
|
|
Dafür unterstützt Nmap Adressen im
|
|
CIDR-Stil.<indexterm><primary>CIDR (Classless Inter-Domain Routing)</primary></indexterm>
|
|
Sie können
|
|
/<replaceable>numbits</replaceable> an eine IPv4-Adresse oder einen Hostnamen
|
|
anfügen, und Nmap wird alle IP-Adressen scannen, bei denen die ersten
|
|
<replaceable>numbits</replaceable> 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: <literal>11000000 10101000 00001010 00000000</literal>)
|
|
und 192.168.10.255 (binär: <literal>11000000 10101000 00001010 11111111</literal>, inklusive) scannen.
|
|
192.168.10.40/24 würde genau dieselben Ziele scannen. Dadurch, dass der Host
|
|
<literal>scanme.nmap.org</literal><indexterm><primary><literal>scanme.nmap.org</literal></primary></indexterm>
|
|
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.</para>
|
|
|
|
<indexterm><primary>Adressbereiche</primary></indexterm>
|
|
<para>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 <literal>-</literal> 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Nmap akzeptiert in der Kommandozeile mehrere Host-Angaben,
|
|
die auch nicht vom selben Typ sein müssen. Der Befehl
|
|
<command>nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.-</command>
|
|
macht also das, was Sie erwarten würden.</para>
|
|
|
|
<para>Auch wenn Ziele normalerweise in der Kommandozeile angegeben werden,
|
|
gibt es auch die folgenden Optionen, um die Zielauswahl zu steuern:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-iL <replaceable>inputfilename</replaceable></option> (Eingabe aus
|
|
einer Liste)
|
|
<indexterm><primary><option>-iL</option></primary></indexterm>
|
|
<indexterm><primary>Zielangabe</primary><secondary>aus Liste</secondary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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 <emphasis>außer</emphasis> 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 <option>-iL</option> 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
|
|
(<literal>-</literal>) als Dateinamen angeben, liest Nmap die Hosts
|
|
von der Standardeingabe statt aus einer normalen Datei.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-iR <replaceable>num hosts</replaceable></option> (zufällige Auswahl von Zielen)
|
|
<indexterm><primary><option>-iR</option></primary></indexterm>
|
|
<indexterm><primary>randomisierte Ziele</primary></indexterm>
|
|
<indexterm><primary>Zielangabe</primary><secondary>randomisiert</secondary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>Für internetweite Umfragen und andere Forschungsaktivitäten möchten
|
|
Sie Ziele vielleicht zufällig auswählen. Das kann man mit der Option
|
|
<option>-iR</option>, 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 <literal>0</literal> angeben.
|
|
Denken Sie aber daran, dass manche Netzwerkadministratoren sich gegen
|
|
unautorisierte Scans ihrer Netzwerke sträuben. Lesen Sie
|
|
<xref linkend="man-legal" /> sorgfältig, bevor Sie -iR benutzen.</para>
|
|
|
|
<para>Falls Sie mal an einem regnerischen Tag wirklich Langeweile haben,
|
|
probieren Sie einmal den Befehl <command>nmap -sS -PS80 -iR 0 -p 80</command>
|
|
<indexterm><primary><option>-iR</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
<indexterm><primary><option>-sS</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
<indexterm><primary><option>-PS</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
aus, um zufällig Webserver zu finden, auf denen Sie herumstöbern
|
|
können.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--exclude
|
|
<replaceable>host1</replaceable><optional>,<replaceable>host2</replaceable><optional>,...</optional></optional></option> (Ziele ausklammern)
|
|
<indexterm significance="preferred"><primary><option>--exclude</option></primary></indexterm>
|
|
<indexterm><primary>Ausklammern von Zielen</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--excludefile <replaceable>exclude_file</replaceable></option>
|
|
(Liste aus Datei ausklammern)
|
|
<indexterm significance="preferred"><primary><option>--excludefile</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>Das bietet dieselbe Funktionalität wie die Option
|
|
<option>--exclude</option>, mit dem Unterschied, dass die ausgeklammerten
|
|
Ziele in der mit Zeilenumbrüchen, Leerzeichen oder Tabulatoren getrennten
|
|
Datei <replaceable>exclude_file</replaceable> statt auf der Kommandozeile
|
|
angegeben werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id='man-host-discovery'>
|
|
<title>Host-Erkennung</title>
|
|
<indexterm class="startofrange" id="man-host-discovery-indexterm"><primary>Host-Erkennung</primary></indexterm>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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
|
|
<application>ping</application> verbunden sind. Man kann den Ping-Schritt
|
|
völlig auslassen, indem man einen List-Scan (<option>-sL</option>) benutzt,
|
|
Ping ausschaltet (<option>-PN</option>) 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.</para>
|
|
|
|
<para>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 <function>connect</function>-Systemaufruf
|
|
ein SYN-Paket statt eines ACK
|
|
gesendet.<indexterm><primary>Benutzer ohne Sonderrechte</primary><secondary>Beschränkungen</secondary></indexterm>
|
|
Diese Standardeinstellungen sind äquivalent zu den Optionen
|
|
<option>-PA -PE</option>. Diese Host-Erkennung ist oft ausreichend,
|
|
wenn man lokale Netzwerke scannt, aber für Sicherheitsüberprüfungen
|
|
empfiehlt sich eine umfangreichere Menge von Erkennungstestpaketen.</para>
|
|
|
|
<para>Die Optionen <option>-P*</option> (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
|
|
(<option>-PR</option>)<indexterm><primary><option>-PR</option></primary></indexterm>
|
|
bei Zielen in einem lokalen Ethernet-Netzwerk standardmäßig erfolgt,
|
|
selbst dann, wenn Sie andere <option>-P*</option>-Optionen angeben,
|
|
weil sie fast immer schneller und effizienter ist.</para>
|
|
|
|
<para>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
|
|
(<option>-PU</option>) angeben. Lesen Sie über die Option
|
|
<option>-sP</option> nach, um zu lernen, wie man nur eine Host-Erkennung
|
|
durchführt, oder über <option>-PN</option>, um die Host-Erkennung zu
|
|
überspringen und einen Port-Scan aller Zielhosts durchzuführen. Folgende
|
|
Optionen steuern die Host-Erkennung:</para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sL</option> (List-Scan)
|
|
<indexterm><primary><option>-sL</option></primary></indexterm>
|
|
<indexterm><primary>List-Scan</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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 <literal>fw.chi</literal>
|
|
der Name einer Firewall einer Firma in Chicago.
|
|
<indexterm><primary>DNS</primary><secondary>Einträge als Informationsquelle</secondary></indexterm>
|
|
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.</para>
|
|
|
|
<para>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
|
|
<option>-PN</option> weiter.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sP</option> (Ping-Scan)
|
|
<indexterm><primary><option>-sP</option></primary></indexterm>
|
|
<indexterm><primary>Ping-Scan</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Die Option <option>-sP</option> 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
|
|
<function>connect</function>-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 <option>--send-ip</option> wird angegeben.
|
|
Die Option <option>-sP</option> kann mit allen Erkennungsmethoden
|
|
(die Optionen <option>-P*</option>, außer <option>-PN</option>)
|
|
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</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PN</option> (Ping abschalten)
|
|
<indexterm><primary><option>-PN</option></primary></indexterm>
|
|
<indexterm><primary>Host-Erkennung</primary><secondary>ausschalten</secondary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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 <option>-PN</option> bewirkt, dass Nmap
|
|
versucht, die gewünschten Scan-Funktionen auf
|
|
<emphasis>allen</emphasis> 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 <option>--send-ip</option> angegeben),
|
|
da Nmap MAC-Adressen braucht, um Zielhosts weiter zu scannen. Diese Option
|
|
lautete früher einaml <option>P0</option> (mit einer Null), wurde dann
|
|
aber umbenannt, um Verwirrung mit der Option <option>PO</option> von
|
|
Protokoll-Pings (benutzt den Buchstaben O) zu vermeiden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PS <replaceable>port list</replaceable></option> (TCP-SYN-Ping)
|
|
<indexterm><primary><option>-PS</option></primary></indexterm>
|
|
<indexterm><primary>SYN-Ping</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<varname>DEFAULT_TCP_PROBE_PORT_SPEC</varname><indexterm><primary><varname>DEFAULT_TCP_PROBE_PORT_SPEC</varname></primary></indexterm>
|
|
in <filename>nmap.h</filename>
|
|
konfigurieren),<indexterm><primary><filename>nmap.h</filename></primary></indexterm>
|
|
aber man kann einen alternativen Port als Parameter angeben.
|
|
Die Syntax ist dieselbe wie bei <option>-p</option>, mit dem Unterschied,
|
|
dass Porttypenbezeichner wie <literal>T:</literal> nicht erlaubt sind.
|
|
Beispiele hierfür sind <option>-PS22</option> und
|
|
<option>-PS22-25,80,113,1050,35000</option>. Beachten Sie, dass es
|
|
kein Leerzeichen zwischen <option>-PS</option> und der Port-Liste
|
|
geben darf. Falls mehrere Tests angegeben werden, werden sie
|
|
parallel durchgeführt.</para>
|
|
|
|
<para>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
|
|
<indexterm><primary>Three-way-Handshake</primary></indexterm> 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Auf Unix-Rechnern kann im Allgemeinen nur der mit Sonderrechten
|
|
ausgestattete Benutzer
|
|
<literal>root</literal><indexterm><primary>Benutzer mit Sonderrechten</primary></indexterm>
|
|
rohe TCP-Pakete senden und
|
|
empfangen.<indexterm><primary>rohe Pakete</primary></indexterm>
|
|
Bei normalen Benutzern kommt automatisch eine Umgehungslösung zum
|
|
Tragen,<indexterm><primary>Benutzer ohne Sonderrechte</primary><secondary>Beschränkungen</secondary></indexterm>
|
|
bei der für alle Zielports der <function>connect</function>-Systemaufruf
|
|
verwendet wird. Das bewirkt, dass an den Zielhost ein SYN-Paket gesendet
|
|
wird, mit der Absicht, eine Verbindung herzustellen. Falls
|
|
<function>connect</function> 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.<indexterm><primary>IPv6</primary><secondary>Beschränkungen</secondary></indexterm>
|
|
</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PA <replaceable>port list</replaceable></option> (TCP-ACK-Ping)
|
|
<indexterm><primary><option>-PA</option></primary></indexterm>
|
|
<indexterm><primary>ACK-Ping</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
|
|
<para>Die Option <option>-PA</option> 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
|
|
<function>connect</function> eingesetzt. Diese ist nicht perfekt,
|
|
da <function>connect</function> tatsächlich ein
|
|
SYN-Paket statt eines ACK sendet.</para>
|
|
|
|
<para>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<indexterm><primary>iptables</primary></indexterm>
|
|
in Linux bietet die komfortable Option <option>--syn</option>, um diesen
|
|
zustandslosen Ansatz zu implementieren. Wenn solche Firewall-Regeln
|
|
vorhanden sind, werden SYN-Ping-Tests
|
|
(<option>-PS</option>), die an geschlossene Zielports gesendet werden,
|
|
sehr wahrscheinlich blockiert. In solchen Fällen greift der ACK-Test,
|
|
da er diese Regeln einfach kappt.</para>
|
|
|
|
<para>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 <literal>--state</literal>, 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 <option>-PS</option> und <option>-PA</option>
|
|
SYN- und ACK-Testpakete zu senden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PU <replaceable>port list</replaceable></option> (UDP-Ping)
|
|
<indexterm><primary><option>-PU</option></primary></indexterm>
|
|
<indexterm><primary>UDP-Ping</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Eine weitere Möglichkeit bei der Host-Erkennung ist der UDP-Ping,
|
|
bei dem ein leeres (außer bei Angabe von <option>--data-length</option>)
|
|
UDP-Paket an die angegebenen Ports gesendet wird. Die Portliste hat dasselbe
|
|
Format wie bei den weiter oben beschriebenen Optionen <option>-PS</option>
|
|
und <option>-PA</option>. Falls keine Ports angegeben werden, ist die
|
|
Standardeinstellung 31338. Dieser Wert kann zum Zeitpunkt des Kompilierens
|
|
dürch Änderung von
|
|
<varname>DEFAULT_UDP_PROBE_PORT_SPEC</varname><indexterm><primary><varname>DEFAULT_UDP_PROBE_PORT_SPEC</varname></primary></indexterm>
|
|
in <filename>nmap.h</filename> konfiguriert werden.<indexterm><primary><filename>nmap.h</filename></primary></indexterm>
|
|
Es wird absichtlich ein sehr unwahrscheinlicher Port verwendet, weil bei
|
|
dieser bestimmten Art des Scannens das Senden an offene Ports oft unerwünscht
|
|
ist.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PE</option>;
|
|
<option>-PP</option>;
|
|
<option>-PM</option> (ICMP-Ping-Arten)
|
|
<indexterm><primary><option>-PE</option></primary></indexterm>
|
|
<indexterm><primary><option>-PP</option></primary></indexterm>
|
|
<indexterm><primary><option>-PM</option></primary></indexterm>
|
|
<indexterm><primary>ICMP-Ping</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Zusätzlich zu den genannten ungewöhnlichen TCP- und
|
|
UDP-Host-Erkennungsarten kann Nmap auch Standardpakete senden, wie sie
|
|
das allgegenwärtige Programm <application>ping</application> 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.<indexterm><primary>ICMP Echo</primary></indexterm>
|
|
Zum Leidwesen von Netzwerkerkundern blockieren viele Hosts und
|
|
Firewalls heute diese Pakete, statt, wie in
|
|
<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc1122.txt">RFC 1122</ulink> 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
|
|
<option>-PE</option>, um dieses Verhalten mit Echo-Requests
|
|
einzuschalten.</para>
|
|
|
|
<para>Auch wenn ein Echo-Request die Standard-ICMP-Ping-Abfrage
|
|
ist, hört Nmap hier nicht auf. Der ICMP-Standard
|
|
(<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc792.txt">RFC 792</ulink>)
|
|
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 <quote>ein Host
|
|
diese Nachrichten NICHT implementieren SOLLTE</quote>).
|
|
Anfragen nach Timestamp und Address Mask können jeweils mit den
|
|
Optionen <option>-PP</option> und <option>-PM</option>
|
|
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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PO <replaceable>protocol list</replaceable></option> (IP-Protokoll-Ping)
|
|
<indexterm><primary><option>-PO</option></primary></indexterm>
|
|
<indexterm><primary>IP-Protokoll-Ping</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <varname>DEFAULT_PROTO_PROBE_PORT_SPEC</varname><indexterm><primary><varname>DEFAULT_PROTO_PROBE_PORT_SPEC</varname></primary></indexterm>
|
|
in <filename>nmap.h</filename> 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 <option>--data-length</option> wird angegeben).</para>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PR</option> (ARP-Ping)
|
|
<indexterm><primary><option>-PR</option></primary></indexterm>
|
|
<indexterm><primary>ARP-Ping</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Eines der häufigsten Einsatzszenarien für Nmap ist das Scannen eines
|
|
Ethernet-LANs. In den meisten LANs, besonders jenen, die durch
|
|
<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc1918.txt">RFC 1918</ulink> 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.</para>
|
|
|
|
<para>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. <option>-PE</option> oder <option>-PS</option>) 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 <option>--send-ip</option> an.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--traceroute</option> (Traceroutes zum Host)
|
|
<indexterm significance="preferred"><primary><option>--traceroute</option></primary></indexterm>
|
|
<indexterm significance="preferred"><primary>traceroute</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>
|
|
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
|
|
(<option>-sT</option>) und Idle-Scans (<option>-sI</option>).
|
|
Alle Traces benutzen Nmaps dynamisches Timing-Modell und werden parallel
|
|
durchgeführt.
|
|
</para>
|
|
|
|
<para>
|
|
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.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-n</option> (keine DNS-Auflösung)
|
|
<indexterm><primary><option>-n</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Weist Nmap an, <emphasis>niemals</emphasis> eine
|
|
Reverse-DNS-Auflösung<indexterm><primary>Reverse-DNS</primary><secondary>ausschalten mit <option>-n</option></secondary></indexterm>
|
|
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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-R</option> (DNS-Auflösung für alle Ziele)
|
|
<indexterm><primary><option>-R</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>Weist Nmap an, <emphasis>immer</emphasis> 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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--system-dns</option> (verwendet DNS-Auflösung des Systems)
|
|
<indexterm significance="preferred"><primary><option>--system-dns</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <function>getnameinfo</function> 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.
|
|
<indexterm><primary>IPv6</primary><secondary>Beschränkungen</secondary></indexterm>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--dns-servers <replaceable>server1</replaceable><optional>,<replaceable>server2</replaceable><optional>,...</optional></optional>
|
|
</option> (Server, die für Reverse-DNS-Anfragen benutzt werden)
|
|
<indexterm significance="preferred"><primary><option>--dns-servers</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<option>--system-dns</option> 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.</para>
|
|
|
|
<para>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 (<option>-sL</option>) und dabei mit der
|
|
Option <option>--dns-servers</option> immer nur einen Nameserver
|
|
angeben, bis Sie einen finden, der funktioniert.</para>
|
|
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
<indexterm class="endofrange" startref="man-host-discovery-indexterm"/>
|
|
</refsect1>
|
|
|
|
<refsect1 id='man-port-scanning-basics'>
|
|
<title>Grundlagen von Port-Scans</title>
|
|
|
|
<para>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
|
|
<command>nmap <replaceable>target</replaceable></command> scannt die am
|
|
häufigsten verwendeten 1000 TCP-Ports auf dem Host
|
|
<replaceable>target</replaceable> und klassifiziert jeden Port in einen der
|
|
Zustände
|
|
<literal>offen</literal>, <literal>geschlossen</literal>,
|
|
<literal>gefiltert</literal>, <literal>ungefiltert</literal>,
|
|
<literal>offen|gefiltert</literal> oder
|
|
<literal>geschlossen|gefiltert</literal>.</para>
|
|
|
|
<para>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 <literal>135/tcp</literal> als offen anzeigen, während ein
|
|
Scan zur selben Zeit mit denselben Optionen über das Internet diesen Port
|
|
als <literal>gefiltert</literal> anzeigen könnte.</para>
|
|
|
|
<variablelist><title>Die sechs von Nmap erkannten Port-Zustände</title>
|
|
|
|
<varlistentry><term>
|
|
<indexterm><primary><literal>offen</literal> Portzustand</primary></indexterm>
|
|
offen</term>
|
|
<listitem><para>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.
|
|
</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>
|
|
<indexterm><primary><literal>geschlossen</literal> Portzustand</primary></indexterm>
|
|
geschlossen</term>
|
|
|
|
<listitem><para>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.
|
|
</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>
|
|
<indexterm><primary><literal>gefiltert</literal> Portzustand</primary></indexterm>
|
|
gefiltert</term>
|
|
|
|
<listitem><para>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.</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>
|
|
<indexterm><primary><literal>ungefiltert</literal> Portzustand</primary></indexterm>
|
|
ungefiltert</term>
|
|
<listitem><para>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.
|
|
</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>
|
|
<indexterm><primary><literal>offen|gefiltert</literal> Portzustand</primary></indexterm>
|
|
offen|gefiltert</term>
|
|
<listitem><para>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.
|
|
</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>
|
|
<indexterm><primary><literal>geschlossen|gefiltert</literal> Portzustand</primary></indexterm>
|
|
geschlossen|gefiltert</term>
|
|
<listitem><para>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.
|
|
</para></listitem></varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id='man-port-scanning-techniques'>
|
|
<title>Port-Scanning-Methoden</title>
|
|
|
|
<para>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,<indexterm><primary>Script Kiddies</primary></indexterm>
|
|
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.</para>
|
|
|
|
<para>Die meisten Scan-Typen stehen nur privilegierten Benutzern zur
|
|
Verfügung,<indexterm><primary>Benutzer mit Sonderrechten</primary></indexterm>
|
|
und zwar deswegen, weil sie rohe
|
|
IP-Pakete<indexterm><primary>rohe Pakete</primary></indexterm>
|
|
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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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 (<option>-sU</option>), die sich mit allen anderen
|
|
TCP-Scan-Methoden kombinieren lassen. Hier eine Gedächtnisstütze:
|
|
Optionen für Port-Scan-Methoden haben die Form
|
|
<option>-s<replaceable>C</replaceable></option>, wobei
|
|
<replaceable>C</replaceable> ein bedeutender Buchstabe im Scan-Namen ist,
|
|
normalerweise der erste. Die eine Ausnahme hiervon ist der als veraltet
|
|
betrachtete FTP-Bounce-Scan (<option>-b</option>).
|
|
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.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sS</option> (TCP-SYN-Scan)
|
|
<indexterm><primary><option>-sS</option></primary></indexterm>
|
|
<indexterm><primary>SYN-Scan</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<literal>offen</literal>, <literal>geschlossen</literal> und
|
|
<literal>gefiltert</literal>.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sT</option> (TCP-Connect-Scan)
|
|
<indexterm><primary><option>-sT</option></primary></indexterm>
|
|
<indexterm><primary>Connect-Scan</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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 <function>connect</function> 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.
|
|
</para>
|
|
|
|
<para>Wenn der SYN-Scan verfügbar ist, ist er normalerweise die bessere Wahl.
|
|
Nmap hat weniger Einfluss auf den <function>connect</function>-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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sU</option> (UDP-Scan)
|
|
<indexterm><primary><option>-sU</option></primary></indexterm>
|
|
<indexterm><primary>UDP-Scan</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Obwohl die meisten bekannten Dienste im Internet über das TCP-Protokoll
|
|
laufen, sind <ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc768.txt">UDP</ulink>-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.</para>
|
|
|
|
<para>Ein UDP-Scan wird mit der Option <option>-sU</option> aktiviert.
|
|
Er kann mit einem TCP-Scan-Typ wie einem SYN-Scan (<option>-sS</option>)
|
|
kombiniert werden, um beide Protokolle im gleichen Durchlauf zu
|
|
prüfen.</para>
|
|
|
|
<para>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 <literal>geschlossen</literal>. Andere ICMP Unreachable-Fehler
|
|
(Typ 3, Codes 1, 2, 9, 10 oder 13) markieren den Port als
|
|
<literal>filtered</literal>. Gelegentlich wird ein Dienst mit einem
|
|
UDP-Paket antworten, was beweist, das er <literal>offen</literal> ist.
|
|
Falls nach einigen erneuten Übertragungen keine Antwort erhalten wird,
|
|
wird der Port als <literal>offen|gefiltert</literal> klassifiziert.
|
|
Das heißt, der Port könnte offen sein, oder aber es gibt Paketfilter,
|
|
die die Kommunikation blockieren. Man kann eine Versionserkennung
|
|
(<option>-sV</option>) benutzen, um bei der Unterscheidung der wirklich
|
|
offenen von den geschlossenen Ports zu helfen.</para>
|
|
|
|
<para>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<indexterm><primary>Ratenbeschränkung</primary></indexterm>
|
|
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 <filename>net/ipv4/icmp.c</filename>).</para>
|
|
|
|
<para>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
|
|
<option>--host-timeout</option> benutzen, um langsame Hosts
|
|
auszulassen.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sN</option>; <option>-sF</option>; <option>-sX</option> (TCP-NULL-, FIN- und -Xmas-Scans)
|
|
<indexterm><primary><option>-sN</option></primary></indexterm>
|
|
<indexterm><primary><option>-sF</option></primary></indexterm>
|
|
<indexterm><primary><option>-sX</option></primary></indexterm>
|
|
<indexterm><primary>NULL-Scan</primary></indexterm>
|
|
<indexterm><primary>FIN-Scan</primary></indexterm>
|
|
<indexterm><primary>Xmas-Scan</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Diese drei Scan-Typen (noch mehr sind mit der im nächsten Abschnitt
|
|
beschriebenen Option <option>--scanflags</option> möglich)
|
|
beuten ein subtiles Schlupfloch im <ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc793.txt">TCP RFC</ulink>
|
|
aus, um zwischen <literal>offenen</literal> und
|
|
<literal>geschlossenen</literal> Ports zu unterscheiden. Seite 65 von
|
|
RFC 793 besagt: <quote>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.</quote>
|
|
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:
|
|
<quote>Es ist unwahrscheinlich, dass Sie hierhin kommen, aber wenn doch,
|
|
dann verwerfen Sie das Segment und springen Sie zurück.</quote></para>
|
|
|
|
<para>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:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry><term>Null-Scan (<option>-sN</option>)</term>
|
|
<listitem><para>Setzt keinerlei Bits (der TCP-Flag-Header ist 0).</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>FIN-Scan (<option>-sF</option>)</term>
|
|
<listitem><para>Setzt nur das TCP-FIN-Bit.</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>Xmas-Scan (<option>-sX</option>)</term>
|
|
<listitem><para>Setzt die FIN-, PSH- und URG-Flags und beleuchtet
|
|
das Paket wie einen Weihnachtsbaum (engl. Xmas).</para></listitem></varlistentry>
|
|
</variablelist>
|
|
|
|
<para>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 <literal>geschlossen</literal> betrachtet, während
|
|
keine Antwort bedeutet, dass er <literal>offen|gefiltert</literal> ist.
|
|
Der Port wird als <literal>gefiltert</literal> markiert, falls ein
|
|
ICMP Unreachable-Fehler (Type 3, Code 1, 2, 3, 9, 10 oder 13)
|
|
empfangen wird.</para>
|
|
|
|
<para>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 <literal>geschlossen</literal> 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 <literal>offenen</literal> und bestimmten
|
|
<literal>gefilterten</literal> Ports machen, sondern lediglich das
|
|
Ergebnis <literal>offen|gefiltert</literal> ausgeben.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sA</option> (TCP-ACK-Scan)
|
|
<indexterm><primary><option>-sA</option></primary></indexterm>
|
|
<indexterm><primary>ACK-Scan</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Dieser Scan unterscheidet sich insofern von den bisher hier
|
|
vorgestellten, als er nie <literal>offene</literal> (oder auch nur
|
|
<literal>offene|gefilterte</literal>) Ports bestimmt. Er wird dazu benutzt,
|
|
Firewall-Regeln zu bestimmen, festzustellen, ob sie zustandsbehaftet sind
|
|
oder nicht, und welche Ports gefiltert werden.</para>
|
|
|
|
<para>Beim Testpaket eines ACK-Scans wird nur das ACK-Flag gesetzt
|
|
(es sei denn, Sie benutzen <option>--scanflags</option>). Beim Scannen
|
|
ungefilterter Systeme werden sowohl <literal>offene</literal> als auch
|
|
<literal>geschlossene</literal> Ports ein RST-Paket zurückgeben. Nmap
|
|
markiert sie dann als <literal>ungefiltert</literal>, d.h. sie werden
|
|
vom ACK-Paket erreicht, aber es kann nicht bestimmt werden, ob sie
|
|
<literal>offen</literal> oder <literal>geschlossen</literal> sind.
|
|
Ports, die nicht antworten oder bestimmte ICMP-Fehlermeldungen
|
|
zurückgeben (Type 3, Code 1, 2, 3, 9, 10 oder 13), werden als
|
|
<literal>gefiltert</literal> markiert.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sW</option> (TCP-Window-Scan)
|
|
<indexterm><primary><option>-sW</option></primary></indexterm>
|
|
<indexterm><primary>Window-Scan</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <literal>ungefiltert</literal> 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 <literal>ungefiltert</literal>
|
|
aufzulisten, wenn von dort ein RST zurückkommt, listet der Window-Scan
|
|
den Port als <literal>offen</literal> oder <literal>geschlossen</literal>
|
|
auf, je nachdem, ob die TCP-Fenstergröße in diesem Reset jeweils positiv
|
|
oder Null ist.</para>
|
|
|
|
<para>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
|
|
<literal>geschlossen</literal> zurückgeben. Natürlich ist es möglich, dass
|
|
auf dem Rechner wirklich keine offenen Ports sind. Falls die meisten
|
|
gescannten Ports <literal>geschlossen</literal>, aber einige Ports
|
|
mit geläufigen Nummern (wie 22, 25 und 53) <literal>gefiltert</literal> 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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sM</option> (TCP-Maimon-Scan)
|
|
<indexterm><primary><option>-sM</option></primary></indexterm>
|
|
<indexterm><primary>Maimon-Scan</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Der Maimon-Scan wurde nach seinem Erfinder, Uriel
|
|
Maimon,<indexterm><primary>Maimon, Uriel</primary></indexterm> benannt.
|
|
Er hat diese Methode im
|
|
<citetitle>Phrack</citetitle>-Magazin, Ausgabe #49 (November 1996),<indexterm><primary><citetitle>Phrack</citetitle></primary></indexterm>
|
|
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 <ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc793.txt">RFC 793</ulink> (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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--scanflags</option> (Benutzerdefinierter TCP-Scan)
|
|
<indexterm><primary><option>--scanflags</option></primary></indexterm></term>
|
|
<listitem>
|
|
|
|
|
|
<para>Wirklich fortgeschrittene Nmap-Benutzer brauchen sich nicht auf die
|
|
vorgefertigten Scan-Typen zu beschränken. Mit der Option
|
|
<option>--scanflags</option> können Sie Ihren eigenen Scan entwerfen,
|
|
für den Sie beliebige TCP-Flags angeben
|
|
können.<indexterm><primary>TCP-Flags</primary></indexterm>
|
|
Lassen Sie Ihrer Kreativität freien Lauf und umgehen Sie
|
|
Intrusion-Detection-Systeme,<indexterm><primary>Intrusion-Detection-Systeme</primary><secondary>umgehen</secondary></indexterm>
|
|
deren Hersteller einfach die Nmap-Manpage durchgeblättert und spezifische
|
|
Regeln dafür angegeben haben!</para>
|
|
|
|
<para>Das Argument für <option>--scanflags</option> 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
|
|
<literal>URG</literal>, <literal>ACK</literal>, <literal>PSH</literal>,
|
|
<literal>RST</literal>, <literal>SYN</literal> und
|
|
<literal>FIN</literal>. So setzt z.B. <option>--scanflags
|
|
URGACKPSHRSTSYNFIN</option> alle Flags, auch wenn das beim Scannen nicht
|
|
besonders hilfreich ist. Die Reihenfolge, in der Sie diese Flags angeben,
|
|
spielt keine Rolle.</para>
|
|
|
|
<para>Zusätzlich zu den gewünschten Flags können Sie einen TCP-Scan-Typen
|
|
(z.B. <option>-sA</option> oder <option>-sF</option>) 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 <literal>gefilterten</literal> Port, während ein FIN-Scan das als einen
|
|
Hinweis auf einen<literal>offen|gefilterten</literal> 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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sI <replaceable>zombie host</replaceable><optional>:<replaceable>probeport</replaceable></optional></option> (Idle-Scan)
|
|
<indexterm><primary><option>-sI</option></primary></indexterm>
|
|
<indexterm><primary>Idle-Scan</primary></indexterm>
|
|
</term>
|
|
|
|
<listitem>
|
|
|
|
<para>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).
|
|
<man>
|
|
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
|
|
<ulink url="https://nmap.org/book/idlescan.html" /> veröffentlicht.
|
|
</man>
|
|
<notman>
|
|
Alle Details zu diesem faszinierenden Scan-Typ finden Sie in
|
|
<xref linkend="idlescan"/>.
|
|
</notman>
|
|
</para>
|
|
|
|
<para>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
|
|
<emphasis>aus der Sicht des Zombie-Hosts</emphasis> an. Also können
|
|
Sie versuchen, ein Ziel mit verschiedenen Zombies zu scannen, von
|
|
denen Sie denken, dass sie vertrauenswürdig
|
|
sind<indexterm><primary>Vertrauensbeziehungen</primary></indexterm>
|
|
(über Router-/Paketfilterregeln).
|
|
</para>
|
|
|
|
<para>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).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sO</option> (IP-Protokoll-Scan)
|
|
<indexterm><primary><option>-sO</option></primary></indexterm>
|
|
<indexterm><primary>IP-Protokoll-Scan</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<option>-p</option> 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.</para>
|
|
|
|
<para>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<indexterm><primary>Rieger, Gerhard</primary></indexterm>
|
|
die Idee, schrieb einen exzellenten Patch als Implementation und sendete
|
|
ihn an die Mailingliste
|
|
<citetitle>nmap-hackers</citetitle>.<indexterm><primary><citetitle>nmap-hackers</citetitle> Mailingliste</primary></indexterm>
|
|
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!</para>
|
|
|
|
<para>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 <emphasis>Protocol</emphasis> unreachable.
|
|
Falls Nmap zu irgendeinem Protokoll eine Antwort vom Zielhost erhält,
|
|
markiert es das Protokoll als <literal>offen</literal>. Bei einem
|
|
ICMP Protocol-unreachable-Fehler (Typ 3, Code 2) wird das Protokoll
|
|
als <literal>geschlossen</literal> markiert. Bei anderen
|
|
ICMP Unreachable-Fehlern (Typ 3, Code 1, 3, 9, 10 oder 13) wird das
|
|
Protokoll als <literal>gefiltert</literal> markiert (auch wenn sie
|
|
gleichzeitig beweisen, dass ICMP <literal>offen</literal> ist).
|
|
Falls nach einigen erneuten Übertragungen keine Antwort erhalten wird,
|
|
wird das Protokoll als <literal>offen|gefiltert</literal> markiert.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-b <replaceable>FTP relay host</replaceable></option> (FTP-Bounce-Scan)
|
|
<indexterm><primary><option>-b</option></primary></indexterm>
|
|
<indexterm><primary>FTP-Bounce-Scan</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Eine interessante Eigenschaft des FTP-Protokolls (<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc959.txt">RFC 959</ulink>)
|
|
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 <option>-b</option>. Sie erwartet ein
|
|
Argument der Form
|
|
<replaceable>username</replaceable>:<replaceable>password</replaceable>@<replaceable>server</replaceable>:<replaceable>port</replaceable>.
|
|
Dabei ist <replaceable>Server</replaceable> der Name oder die IP-Adresse
|
|
eines anfälligen FTP-Servers. Wie bei einer normalen URL können Sie
|
|
<replaceable>username</replaceable>:<replaceable>password</replaceable>
|
|
auch weglassen, wobei dann eine anonyme Anmeldung erfolgt (username:
|
|
<literal>anonymous</literal> password:<literal>-wwwuser@</literal>).
|
|
Die Portnummer (samt Doppelpunkt davor) können Sie ebenfalls weglassen,
|
|
wobei dann auf <replaceable>server</replaceable> der
|
|
Standard-FTP-Port (21) benutzt wird.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id='man-port-specification'>
|
|
<title>Port-Angabe und Scan-Reihenfolge</title>
|
|
<indexterm><primary>Port-Angabe</primary></indexterm>
|
|
|
|
<para>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.
|
|
<indexterm><primary>vorgegebene Ports</primary></indexterm>
|
|
</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-p <replaceable>port ranges</replaceable></option> (scannt nur angegebene Ports)
|
|
<indexterm><primary><option>-p</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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.
|
|
<literal>1-1023</literal>). 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 <option>-p-</option>
|
|
alle Ports von 1 bis 65535 scannen. Es ist erlaubt, den Port Null<indexterm><primary>Port Null</primary></indexterm>
|
|
zu scannen, wenn Sie ihn explizit angeben. Bei IP-Protokoll-Scans
|
|
(<option>-sO</option>) gibt diese Option die Protokollnummern an,
|
|
die Sie scannen möchten (0–255).</para>
|
|
|
|
<para>Wenn Sie sowohl TCP- als auch UDP-Ports scannen, können Sie ein
|
|
bestimmtes Protokoll angeben, indem Sie den Portnummern ein
|
|
<literal>T:</literal> bzw. <literal>U:</literal> voranstellen.
|
|
Dieser Kennzeichner gilt so lange, bis Sie einen anderen angeben.
|
|
Zum Beispiel werden bei dem Argument
|
|
<option>-p U:53,111,137,T:21-25,80,139,8080</option> die UDP-Ports
|
|
53, 111 und 137 sowie die angegebenen TCP-Ports gescannt. Beachten
|
|
Sie, dass Sie
|
|
<option>-sU</option> und mindestens einen TCP-Scan-Typ (z.B.
|
|
<option>-sS</option>, <option>-sF</option> oder <option>-sT</option>) angeben müssen,
|
|
um sowohl UDP als auch TCP zu scannen. Falls kein Protokollkennzeichner
|
|
angegeben ist, werden die Portnummern zu allen Protokolllisten
|
|
hinzugefügt.</para>
|
|
|
|
<indexterm><primary>Port-Angabe</primary><secondary>Joker in</secondary></indexterm>
|
|
<indexterm><primary>Wildcards</primary><see>Port-Auswahl, Joker in</see></indexterm>
|
|
<para>
|
|
Ports können auch mit dem Namen angegeben werden, der für diesen Port
|
|
in <filename>nmap-services</filename> 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 <quote>http</quote> anfangen, benutzen Sie
|
|
<option>-p ftp,http*</option>. Passen Sie auf eine eventuelle Erweiterung
|
|
durch die Shell auf und setzen Sie das Argument von <option>-p</option>
|
|
in Anführungszeichen, wenn Sie unsicher sind.</para>
|
|
|
|
<para>Port-Bereiche können in eckigen Klammern angegeben werden, um Ports
|
|
innerhalb dieses Bereiches anzugeben, die in
|
|
<filename>nmap-services</filename> vorkommen.
|
|
Zum Beispiel scannt Folgendes alle Ports in <filename>nmap-services</filename>
|
|
kleiner oder gleich 1024: <option>-p [-1024]</option>.
|
|
Passen Sie auf eine eventuelle Erweiterung
|
|
durch die Shell auf und setzen Sie das Argument von <option>-p</option>
|
|
in Anführungszeichen, wenn Sie unsicher sind.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-F</option> (schneller (beschränkter Port-) Scan)
|
|
<indexterm significance="preferred"><primary><option>-F</option></primary></indexterm>
|
|
<indexterm><primary>schneller Scan</primary><see><option>-F</option></see></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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 <option>-F</option> werden diese
|
|
auf 100 beschränkt.</para>
|
|
|
|
<para>Nmap benötigt die Datei <filename>nmap-services</filename> mit
|
|
Informationen zur Häufigkeit, um zu wissen, welche Ports am häufigsten
|
|
benutzt werden<notman> (see <xref linkend="nmap-services"/>
|
|
for more about port frequencies)</notman>. Wenn keine Angaben über
|
|
die Port-Häufigkeit verfügbar sind, vielleicht weil eine benutzerdefinierte
|
|
<filename>nmap-services</filename>-Datei verwendet wird,
|
|
dann bedeutet <option>-F</option>, dass nur Ports gescannt werden,
|
|
die in der Dienstedatei mit Namen vorkommen (normalerweise scannt Nmap
|
|
alle benannten Ports plus die Ports 1–1024).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-r</option> (Ports nicht randomisieren)
|
|
<indexterm><primary><option>-r</option></primary></indexterm>
|
|
<indexterm><primary>Randomisierung von Ports</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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 <option>-r</option> für einen sequentiellen
|
|
Port-Scan angeben.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--port-ratio <decimal number between 0 and 1></option>
|
|
</term>
|
|
<listitem>
|
|
<indexterm><primary>--port-ratio</primary></indexterm>
|
|
<para>Scannt alle Ports in der Datei
|
|
<filename>nmap-services</filename> mit einem größeren Bruchteil als
|
|
die Zahl, die als Argument angegeben wird.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--top-ports <integer of 1 or greater></option>
|
|
</term>
|
|
<listitem>
|
|
<indexterm><primary>--top-ports</primary></indexterm>
|
|
<para>Scannt die N Ports mit dem höchsten Bruchteil
|
|
in der Datei <filename>nmap-services</filename>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id='man-version-detection'>
|
|
<title>Dienst- und Versionserkennung</title>
|
|
<indexterm class="startofrange" id="man-version-detection-indexterm"><primary>Versionserkennung</primary></indexterm>
|
|
|
|
<para>Lassen Sie Nmap auf einen entfernten Rechner los, und Sie
|
|
erfahren z.B. dass die Ports <literal>25/tcp</literal>,
|
|
<literal>80/tcp</literal> und <literal>53/udp</literal> offen sind.
|
|
Dank der über 2200 bekannten Dienste in seiner Datenbank in
|
|
<filename>nmap-services</filename><indexterm><primary><filename>nmap-services</filename></primary></indexterm> 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.<indexterm><primary>Nicht-Standard-Ports</primary></indexterm>
|
|
</para>
|
|
|
|
<para>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.
|
|
</para>
|
|
|
|
<para>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
|
|
<filename>nmap-service-probes</filename><indexterm><primary><filename>nmap-service-probes</filename></primary></indexterm>
|
|
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<indexterm><primary>SSL</primary><secondary>in Versionserkennung</secondary></indexterm>
|
|
lauschenden Dienst zu ermitteln.
|
|
Wenn RPC-Dienste erkannt werden, wird automatisch Nmaps
|
|
RPC-Holzhammer<indexterm><primary>RPC-Holzhammer</primary></indexterm>
|
|
(<option>-sR</option>)<indexterm><primary><option>-sR</option></primary></indexterm>
|
|
benutzt, um die RPC-Programm- und Versionsnummern zu bestimmen. Manche
|
|
UDP-Ports bleiben im Zustand <literal>offen|gefiltert</literal>, 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. <literal>Offene|gefilterte</literal> TCP-Ports werden
|
|
genauso behandelt. Beachten Sie, dass die Nmap-Option <option>-A</option>
|
|
unter anderem auch die Versionserkennung einschaltet.
|
|
<man>
|
|
A paper documenting the workings, usage, and customization of version
|
|
detection is available at
|
|
<ulink url="https://nmap.org/book/vscan.html" />.
|
|
</man>
|
|
<notman>
|
|
Die Versionserkennung wird detailliert in <xref linkend="vscan"/> behandelt.
|
|
</notman>
|
|
</para>
|
|
|
|
<para>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.<indexterm><primary>Einsenden von Dienst-Fingerprints</primary></indexterm>
|
|
</para>
|
|
|
|
<para>Die Versionserkennung wird mit den folgenden Optionen aktiviert und
|
|
gesteuert:</para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sV</option> (Versionserkennung)
|
|
<indexterm><primary><option>-sV</option></primary></indexterm></term>
|
|
<listitem>
|
|
|
|
<para>Aktiviert die Versionserkennung wie oben beschrieben.
|
|
Alternativ dazu können Sie <option>-A</option> benutzen, was unter
|
|
anderem auch die Versionserkennung aktiviert.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--allports</option> (keine Ports von der Versionserkennung ausschließen)
|
|
<indexterm><primary><option>--allports</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <literal>Exclude</literal>-Anweisung in
|
|
<filename>nmap-service-probes</filename> verändert oder entfernt, oder
|
|
Sie geben <option>--allports</option> an, um alle Port zu scannen,
|
|
unabhängig von einer <literal>Exclude</literal>-Anweisung.
|
|
<indexterm><primary><literal>Exclude</literal> Anweisung (<filename>nmap-service-probes</filename>)</primary></indexterm>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--version-intensity <replaceable>intensity</replaceable></option> (Intensität des Versions-Scans setzen)
|
|
<indexterm><primary><option>--version-intensity</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Bei einem Versions-Scan (<option>-sV</option>) 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.
|
|
<indexterm><primary>Versionserkennung</primary><secondary>Intensität</secondary></indexterm>
|
|
Die Standardeinstellung ist 7.
|
|
<indexterm><primary>Versionserkennung</primary><secondary>Standardintensität</secondary></indexterm>
|
|
Wenn ein Testpaket mit der <literal>ports</literal>-Anweisung in
|
|
<filename>nmap-service-probes</filename> 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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--version-light</option> (leichten Modus setzen)
|
|
<indexterm><primary><option>--version-light</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Das ist ein Alias für <option>--version-intensity 2</option> aus
|
|
Bequemlichkeitsgründen. Dieser leichte Modus macht die Versionserkennung
|
|
wesentlich schneller, identifiziert die Dienste aber mit geringerer
|
|
Wahrscheinlichkeit.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--version-all</option> (benutze alle Testpakete)
|
|
<indexterm><primary><option>--version-all</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Das ist ein Alias für <option>--version-intensity 9</option>, der
|
|
garantiert, dass jedes einzelne Testpaket bei jedem Port ausprobiert
|
|
wird.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--version-trace</option> (verfolge Aktivität des Versions-Scans)
|
|
<indexterm significance="preferred"><primary><option>--version-trace</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>Das bewirkt, dass Nmap umfangreiche Debugging-Information darüber
|
|
ausgibt, was die Versionserkennung gerade macht. Das ist eine Untermenge
|
|
dessen, was Sie mit <option>--packet-trace</option> erhalten.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sR</option> (RPC-Scan)
|
|
<indexterm significance="preferred"><primary><option>-sR</option></primary></indexterm>
|
|
<indexterm><primary>RPC scan</primary><see>RPC-Holzhammer</see></indexterm>
|
|
<indexterm><primary>RPC-Holzhammer</primary></indexterm>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>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
|
|
<command>rpcinfo -p</command>, 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.<indexterm><primary>Köder</primary><secondary>von Scans benutzte</secondary></indexterm>
|
|
Das wird automatisch als Teil einer Versionserkennung aktiviert
|
|
(<option>-sV</option>), wenn Sie diese verlangen. Da die
|
|
Versionserkennung das enthält und wesentlich umfangreicher ist,
|
|
wird <option>-sR</option> selten benötigt.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
<indexterm class="endofrange" startref="man-version-detection-indexterm"/>
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id='man-os-detection'>
|
|
|
|
<title>Betriebssystem-Erkennung</title>
|
|
<indexterm class="startofrange" id="man-os-detection-indexterm"><primary>Betriebssystemerkennung</primary></indexterm>
|
|
|
|
<para>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
|
|
<filename>nmap-os-db</filename><indexterm><primary><filename>nmap-os-db</filename></primary></indexterm>
|
|
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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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. <quote>worthy challenge</quote> oder
|
|
<quote>trivial joke</quote> zu benutzen. Das wird nur in der normalen
|
|
Ausgabe im ausführlichen Modus (<option>-v</option>) ausgegeben. Wenn
|
|
dieser Modus zusammen mit <option>-O</option> aktiviert ist, wird auch
|
|
die IP-ID-Sequenzerzeugung berichtet. Die meisten Rechner finden sich
|
|
in der Klasse <quote>incremental</quote>, 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.</para>
|
|
|
|
<indexterm><primary>Betriebszeit-Schätzung</primary></indexterm>
|
|
<para>
|
|
Eine weitere zusätzliche Information, die die Betriebssystem-Erkennung
|
|
aktiviert, ist eine Schätzung der Betriebszeit des Zielhosts. Dabei
|
|
wird die TCP-Timestamp-Option
|
|
(<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc1323.txt">RFC 1323</ulink>)
|
|
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.
|
|
</para>
|
|
|
|
<para>
|
|
<man>
|
|
A paper documenting the workings, usage, and customization of OS
|
|
detection is available at
|
|
<ulink url="https://nmap.org/book/osdetect.html" />.
|
|
</man>
|
|
|
|
<notman>
|
|
Die Betriebssystem-Erkennung wird in <xref linkend="osdetect"/> behandelt.
|
|
</notman>
|
|
</para>
|
|
|
|
<para>Eingeschaltet und gesteuert wird die Betriebssystem-Erkennung
|
|
mit den folgenden Optionen:</para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-O</option> (Betriebssystem-Erkennung aktivieren)
|
|
<indexterm significance="preferred"><primary><option>-O</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>Aktiviert die Betriebssystem-Erkennung wie oben beschrieben.
|
|
Alternativ dazu können Sie <option>-A</option> benutzen, um eine
|
|
Betriebssystem-Erkennung zusammen mit anderen Dingen einzuschalten.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--osscan-limit</option> (Betriebssystem-Erkennung auf vielversprechende Ziele beschränken)
|
|
<indexterm significance="preferred"><primary><option>--osscan-limit</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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 <option>-PN</option> auf
|
|
vielen Hosts. Diese Option gilt nur, wenn eine Betriebssystem-Erkennung
|
|
mit <option>-O</option> oder <option>-A</option> verlangt wird.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--osscan-guess</option>; <option>--fuzzy</option> (Ergebnisse der Betriebssystem-Erkennung raten)
|
|
<indexterm significance="preferred"><primary><option>--osscan-guess</option></primary></indexterm>
|
|
<indexterm><primary><option>--fuzzy</option></primary><see><option>--osscan-guess</option></see></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--max-os-tries</option> (setzt die maximale Anzahl der Versuche für eine Betriebssystem-Erkennung bei einem Ziel)
|
|
<indexterm significance="preferred"><primary><option>--max-os-tries</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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 <option>--max-os-tries</option> (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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
<indexterm class="endofrange" startref="man-os-detection-indexterm"/>
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id='man-nse'>
|
|
<title>Nmap Scripting Engine (NSE)</title>
|
|
<indexterm class="startofrange" id="man-nse-indexterm"><primary>Nmap Scripting Engine (NSE)</primary></indexterm>
|
|
|
|
<para>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
|
|
<ulink url="http://lua.org">Programmiersprache Lua</ulink>
|
|
<indexterm><primary>Programmiersprache Lua</primary></indexterm>),
|
|
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.</para>
|
|
|
|
<para>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.
|
|
</para>
|
|
|
|
<para>
|
|
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:
|
|
<literal>safe</literal>, <literal>intrusive</literal>,
|
|
<literal>malware</literal>, <literal>version</literal>,
|
|
<literal>discovery</literal>, <literal>vuln</literal>,
|
|
<literal>auth</literal> und <literal>default</literal>.
|
|
Sie alle werden
|
|
<man>at <ulink url="https://nmap.org/book/nse-usage.html#nse-categories" />.</man>
|
|
<notman>in <xref linkend="nse-categories"/> beschrieben.</notman>
|
|
</para>
|
|
|
|
<para>
|
|
Die Nmap Scripting Engine wird detailliert
|
|
<man>at <ulink url="https://nmap.org/book/nse.html" /></man>
|
|
<notman>in <xref linkend="nse"/></notman> beschrieben und wird mit den
|
|
folgenden Optionen gesteuert:
|
|
</para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term><option>-sC</option>
|
|
<indexterm significance="preferred">
|
|
<primary><option>-sC</option></primary>
|
|
</indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>Führt einen Script-Scan mit dem Standardsatz an Scripts durch.
|
|
Das ist äquivalent zu <option>--script=default</option>. Manche der
|
|
Scripts in dieser Kategorie werden als
|
|
aufdringlich betrachtet und sollten nicht ohne Genehmigung auf einem
|
|
Zielnetzwerk ausgeführt werden.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--script <replaceable>script-categories</replaceable>|<replaceable>directory</replaceable>|<replaceable>filename</replaceable>|all</option><indexterm significance="preferred"><primary><option>--script</option></primary></indexterm></term>
|
|
|
|
<listitem>
|
|
<para>Führt einen Script-Scan (wie z.B. <option>-sC</option>) 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:<indexterm><primary>Datendateien</primary><secondary>Verzeichnis-Suchreihenfolge</secondary></indexterm><indexterm><primary>Scripts, Orte</primary></indexterm>
|
|
<filename>--datadir/</filename>;
|
|
<filename>$NMAPDIR/</filename>;<indexterm><primary><envar>NMAPDIR</envar> Umgebungsvariable</primary></indexterm>
|
|
<filename>~/.nmap/</filename> (wird unter Windows nicht durchsucht);<indexterm><primary sortas="nmap Verzeichnis"><filename>.nmap</filename> Verzeichnis</primary></indexterm>
|
|
<literal>NMAPDATADIR</literal>/ oder<indexterm><primary>NMAPDATADIR</primary></indexterm>
|
|
<filename>./</filename>.
|
|
In all diesen Verzeichnissen wird außerdem auch ein
|
|
<filename>scripts/</filename>-Unterverzeichnis ausprobiert.
|
|
</para>
|
|
|
|
<para>Falls ein Verzeichnis angegeben und gefunden wird, lädt Nmap alle
|
|
NSE-Scripts (alle Dateinamen, die mit <literal>.nse</literal> enden)
|
|
aus diesem Verzeichnis. Dateinamen ohne die Endung <literal>nse</literal>
|
|
werden ignoriert. Nmap sucht keine Unterverzeichnisse rekursiv durch,
|
|
um Scripts zu finden. Wenn individuelle Dateinamen angegeben werden,
|
|
dann muss deren Dateierweiterung nicht <literal>nse</literal> lauten.
|
|
</para>
|
|
|
|
<para>Nmap-Scripts werden standardmäßig in einem
|
|
<filename>scripts</filename>-Unterverzeichnis des Nmap-Datenverzeichnisses
|
|
gespeichert
|
|
<man>(see <ulink url="https://nmap.org/book/data-files.html"/>).</man>
|
|
<notman>(siehe <xref linkend="data-files"/>).</notman> Aus Effizienzgründen
|
|
werden Scripts in einer Datenbank indiziert, die in <filename>scripts/script.db</filename>.<indexterm><primary><filename>script.db</filename></primary></indexterm>
|
|
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 <literal>all</literal> an.
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--script-args <replaceable>name1</replaceable>=<replaceable>value1</replaceable>,<replaceable>name2</replaceable>={<replaceable>name3</replaceable>=<replaceable>value3</replaceable>},<replaceable>name4</replaceable>=<replaceable>value4</replaceable></option>
|
|
<indexterm significance="preferred"><primary><option>--script-args</option></primary></indexterm>
|
|
<indexterm><primary>Script-Argumente</primary><seealso><option>--script-args</option></seealso></indexterm></term>
|
|
|
|
<listitem>
|
|
<para>Hiermit können Sie Argumente für NSE-Scripts angeben. Argumente
|
|
werden als <literal>name=value</literal>-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 <literal>argument-table</literal> als Schlüssel
|
|
gespeichert. Die Werte sind ihrerseits entweder Strings oder Tabellen
|
|
(innerhalb von ‘<literal>{</literal>’ und
|
|
‘<literal>}</literal>’).
|
|
Sie könnten z.B. diese mit Kommmata getrennten Argumente angeben:
|
|
<literal>user=bar,pass=foo,whois={whodb=nofollow+ripe}</literal>.
|
|
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.
|
|
<literal>whois</literal>).
|
|
</para>
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
<term><option>--script-trace</option>
|
|
<indexterm significance="preferred"><primary><option>--script-trace</option></primary></indexterm></term>
|
|
|
|
<listitem>
|
|
<para>
|
|
Diese Option macht das, was <option>--packet-trace</option> 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 <option>--packet-trace</option> schaltet diese
|
|
Mitverfolgung von Scripts ein.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--script-updatedb</option>
|
|
<indexterm significance="preferred"><primary><option>--script-updatedb</option></primary></indexterm></term>
|
|
<listitem>
|
|
<para>Diese Option aktualisiert die Script-Datenbank in
|
|
<filename>scripts/script.db</filename>, 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 <filename>scripts</filename> hinzufügt oder
|
|
von dort entfernt, oder wenn man die Kategorie eines Scripts ändert.
|
|
Diese Option wird ohne Argumente benutzt:
|
|
<command>nmap --script-updatedb</command>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<indexterm class="endofrange" startref="man-nse-indexterm"/>
|
|
</refsect1>
|
|
|
|
<refsect1 id='man-performance'>
|
|
<title>Timing und Performance</title>
|
|
<indexterm class="startofrange" id="man-performance-timing-indexterm"><primary>Timing</primary></indexterm>
|
|
<indexterm class="startofrange" id="man-performance-indexterm"><primary>Performance</primary></indexterm>
|
|
|
|
<para>Bei der Entwicklung von Nmap hatte dessen Performance immer eine der
|
|
höchsten Prioritäten. Ein Standardscan (<command>nmap
|
|
<replaceable>hostname</replaceable></command>) 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Manche Optionen erwarten einen <literal>time</literal>-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
|
|
<option>--host-timeout</option> haben die Argumente
|
|
<literal>900000</literal>, <literal>900s</literal> und
|
|
<literal>15m</literal> alle denselben Effekt.</para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--min-hostgroup <replaceable>numhosts</replaceable></option>;
|
|
<option>--max-hostgroup
|
|
<replaceable>numhosts</replaceable></option> (Größe der parallel gescannten Gruppen anpassen)
|
|
<indexterm><primary><option>--min-hostgroup</option></primary></indexterm>
|
|
<indexterm><primary><option>--max-hostgroup</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Falls mit <option>--max-hostgroup</option> eine maximale Gruppengröße
|
|
angegeben wird, wird Nmap diese nie überschreiten. Und wenn Sie mit
|
|
<option>--min-hostgroup</option> 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.</para>
|
|
|
|
<para>Diese Optionen haben während der Host-Entdeckungsphase eines Scans
|
|
keinen Effekt. Dazu gehören einfache Ping-Scans (<option>-sP</option>).
|
|
Die Host-Entdeckung funktioniert immer in großen Gruppen von Hosts,
|
|
um die Geschwindigkeit und Genauigkeit zu verbessern.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--min-parallelism <replaceable>numprobes</replaceable></option>;
|
|
<option>--max-parallelism
|
|
<replaceable>numprobes</replaceable></option> (Parallelität von Testpaketen anpassen)
|
|
<indexterm><primary><option>--min-parallelism</option></primary></indexterm>
|
|
<indexterm><primary><option>--max-parallelism</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Meistens setzt man <option>--min-parallelism</option> 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.</para>
|
|
|
|
<para>Die Option <option>--max-parallelism</option> wird manchmal auf eins
|
|
gesetzt, um zu verhindern, dass Nmap mehr als ein Testpaket auf einmal an
|
|
Hosts sendet. In Kombination mit <option>--scan-delay</option> (wird
|
|
später behandelt) kann das nützlich sein, auch wenn Letzteres diesen Zweck
|
|
gut genug allein erfüllt.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--min-rtt-timeout <replaceable>time</replaceable></option>,
|
|
<option>--max-rtt-timeout <replaceable>time</replaceable></option>,
|
|
<option>--initial-rtt-timeout
|
|
<replaceable>time</replaceable></option> (Timeouts von Testpaketen anpassen)
|
|
<indexterm><primary><option>--min-rtt-timeout</option></primary></indexterm>
|
|
<indexterm><primary><option>--max-rtt-timeout</option></primary></indexterm>
|
|
<indexterm><primary><option>--initial-rtt-timeout</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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.
|
|
<notman>Die genaue Formel finden Sie in
|
|
<xref linkend="port-scanning-algorithms" />.</notman>
|
|
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.</para>
|
|
|
|
<para>
|
|
Werden Werte für <option>--max-rtt-timeout</option> und
|
|
<option>--initial-rtt-timeout</option> angegeben, die kleiner als deren
|
|
Standardwerte sind, so kann die Scan-Zeit erheblich verkürzt werden.
|
|
Das gilt besonders für pinglose (<option>-PN</option>) 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.</para>
|
|
|
|
<para>Falls alle Hosts in einem lokalen Netzwerk sind, sind 100 Millisekunden
|
|
ein vernünftig aggressiver Wert für <option>--max-rtt-timeout</option>.
|
|
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
|
|
<command>hping2</command>,<indexterm><primary><command>hping2</command></primary></indexterm>
|
|
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 <option>--initial-rtt-timeout</option>
|
|
verdoppeln und für <option>--max-rtt-timeout</option> 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.</para>
|
|
|
|
<para>Die Option <option>--min-rtt-timeout</option> 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 <citetitle>nmap-dev</citetitle>-Mailingliste<indexterm><primary><citetitle>nmap-dev</citetitle> Mailingliste</primary></indexterm>
|
|
berichtet werden.
|
|
</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--max-retries <replaceable>numtries</replaceable></option> (gibt die
|
|
maximale Anzahl erneuter Sendeversuche bei Port-Scan-Testpaketen an)
|
|
<indexterm><primary><option>--max-retries</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<option>--max-retries 0</option> 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.
|
|
</para>
|
|
|
|
<para>Der Standardwert (ohne <option>-T</option>-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 <option>--max-retries</option> 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 <option>--host-timeout</option> zu erreichen und alle
|
|
Informationen über das Ziel zu verlieren.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--host-timeout <replaceable>time</replaceable></option> (bei langsamen Zielhosts aufgeben)
|
|
<indexterm><primary><option>--host-timeout</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Bei manchen Hosts braucht es einfach <emphasis>lange</emphasis>,
|
|
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 <option>--host-timeout</option>
|
|
mit der gewünschten maximalen Wartezeit an. Sie können z.B.
|
|
<literal>30m</literal> 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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--scan-delay <replaceable>time</replaceable></option>;
|
|
<option>--max-scan-delay
|
|
<replaceable>time</replaceable></option> (Verzögerung zwischen Testpaketen anpassen)
|
|
<indexterm><primary><option>--scan-delay</option></primary></indexterm>
|
|
<indexterm><primary><option>--max-scan-delay</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Diese Option bewirkt, dass Nmap mindestens die angegebene Zeit
|
|
zwischen zwei Testpaketen an einen Host wartet. Das ist besonders bei
|
|
einer Ratenbeschränkung<indexterm><primary>Ratenbeschränkung</primary></indexterm>
|
|
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
|
|
<option>--scan-delay</option> von <literal>1s</literal> 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.</para>
|
|
|
|
<para>Wenn Nmap die Scan-Verzögerung nach oben anpasst, um mit der
|
|
Ratenbeschränkung klarzukommen, verlangsamt sich der Scan dramatisch.
|
|
Die Option <option>--max-scan-delay</option> gibt die größte Verzögerung
|
|
an, die Nmap erlaubt. Ein kleiner Wert für <option>--max-scan-delay</option>
|
|
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.</para>
|
|
|
|
<para>Ein weiterer Einsatz von <option>--scan-delay</option> liegt bei
|
|
der Umgehung schwellwertbasierter Intrusion-Detection- und
|
|
-Prevention-Systeme (IDS/IPS).<indexterm><primary>intrusion detection
|
|
systems</primary><secondary>evading</secondary></indexterm> <notman>Diese
|
|
Methode wird in <xref linkend="defeating-ids-snort-portscan" /> benutzt,
|
|
um den standardmäßigen Port-Scan-Detektor im Snort-IDS zu besiegen.
|
|
Auf dieselbe Weise können auch die meisten anderen Intrusion-Detection-Systeme
|
|
besiegt werden.</notman>
|
|
</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--min-rate <replaceable>number</replaceable></option>; <option>--max-rate <replaceable>number</replaceable></option>
|
|
(direkte Steuerung der Scan-Rate)
|
|
<indexterm><primary><option>--min-rate</option></primary></indexterm>
|
|
<indexterm><primary><option>--max-rate</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <option>--min-rate</option>
|
|
und <option>--max-rate</option> vorgesehen.</para>
|
|
|
|
<para>Bei der Option <option>--min-rate</option> 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 <option>--min-rate 300</option> 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.</para>
|
|
|
|
<para>Umgekehrt beschränkt <option>--max-rate</option> die Senderate auf
|
|
das angegebene Maximum. Bei <option>--max-rate 100</option> wird sie
|
|
auf 100 Pakete pro Sekunde bei einem schnellen Netzwerk beschränkt. Und
|
|
bei <option>--max-rate 0.1</option> wird der Scan auf ein Paket pro
|
|
zehn Sekunden verlangsamt. Mit <option>--min-rate</option> und
|
|
<option>--max-rate</option> gleichzeitig können Sie die Rate in einem
|
|
bestimmten Bereich halten.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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 <emphasis>länger</emphasis> braucht als bei
|
|
einer kleineren Rate. Das liegt daran, dass Nmaps Algorithmen für die
|
|
<notman><link linkend="scan-methods-adaptive-retransmission">adaptive erneute Übertragung</link><indexterm><primary>adaptive erneute Übertragung</primary><see>erneute Übertragung</see></indexterm><indexterm><primary>erneute Übertragung</primary></indexterm>
|
|
</notman>
|
|
<man>adaptive retransmission</man>
|
|
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 <option>--max-retries</option>, wenn Sie eine
|
|
obere Grenze für die gesamte Scan-Zeit setzen müssen.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--defeat-rst-ratelimit</option>
|
|
<indexterm><primary><option>--defeat-rst-ratelimit</option></primary></indexterm></term>
|
|
<listitem>
|
|
|
|
<para>Viele Hosts haben lange eine
|
|
Ratenbeschränkung<indexterm><primary>Ratenbeschränkung</primary></indexterm>
|
|
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 <option>--defeat-rst-ratelimit</option> 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
|
|
<emphasis>nicht</emphasis> als <literal>offen</literal> behandeln).</para>
|
|
|
|
<para>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 <literal>gefiltert</literal> und
|
|
<literal>geschlossen</literal> 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
|
|
<literal>geschlossenen</literal> und <literal>gefilterten</literal> Ports
|
|
die zusätzliche Zeit nicht wert ist.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-T
|
|
paranoid|sneaky|polite|normal|aggressive|insane</option>
|
|
(setzt ein Timing-Template)
|
|
<indexterm><primary><option>-T</option></primary></indexterm>
|
|
<indexterm><primary>Timing-Templates</primary><seealso><literal>paranoid</literal>, <literal>sneaky</literal>, <literal>polite</literal>, <literal>normal</literal>, <literal>aggressive</literal> und <literal>insane</literal></seealso></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<indexterm><primary><option>-T0</option></primary><see><literal>paranoid</literal> Timing-Template</see></indexterm>
|
|
<indexterm><primary><option>-T1</option></primary><see><literal>sneaky</literal> Timing-Template</see></indexterm>
|
|
<indexterm><primary><option>-T2</option></primary><see><literal>polite</literal> Timing-Template</see></indexterm>
|
|
<indexterm><primary><option>-T3</option></primary><see><literal>normal</literal> Timing-Template</see></indexterm>
|
|
<indexterm><primary><option>-T4</option></primary><see><literal>aggressive</literal> Timing-Template</see></indexterm>
|
|
<indexterm><primary><option>-T5</option></primary><see><literal>insane</literal> Timing-Template</see></indexterm>
|
|
|
|
<para>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 <option>-T</option> und ihrer Nummer (0–5) oder mit
|
|
ihrem Namen angeben. Diese Template-Namen lauten:
|
|
<option>paranoid</option> (<option>0</option>),
|
|
<option>sneaky</option> (<option>1</option>),
|
|
<option>polite</option> (<option>2</option>),
|
|
<option>normal</option> (<option>3</option>),
|
|
<option>aggressive</option> (<option>4</option>)
|
|
und <option>insane</option> (<option>5</option>).
|
|
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. <option>-T3</option> 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<indexterm><primary><literal>insane</literal> (<option>-T5</option>) Timing-Template</primary></indexterm>
|
|
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.</para>
|
|
|
|
<para>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 <option>-T4</option>,<indexterm><primary><literal>aggressive</literal> (<option>-T4</option>) Timing-Template</primary></indexterm>
|
|
dass die dynamische Scan-Verzögerung bei TCP-Ports über 10 ms ansteigt,
|
|
und <option>-T5</option> 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 <option>-T4</option> 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.</para>
|
|
|
|
<para>Falls Sie eine anständige Breitband- oder Ethernet-Verbindung haben,
|
|
würde ich empfehlen, immer <option>-T4</option> zu benutzen. Manche Leute
|
|
lieben <option>-T5</option>, was für meinen Geschmack aber zu aggressiv
|
|
ist. Manchmal geben Leute <option>-T2</option> 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
|
|
<option>-T polite</option><indexterm><primary><literal>polite</literal> (<option>-T2</option>) Timing-Template</primary></indexterm>
|
|
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 (<option>-T3</option>) 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.</para>
|
|
|
|
<para>Zwar sind
|
|
<option>-T0</option><indexterm><primary><literal>paranoid</literal> (<option>-T0</option>) Timing-Template</primary></indexterm>
|
|
und <option>-T1</option><indexterm><primary><literal>sneaky</literal> (<option>-T1</option>) Timing-Template</primary></indexterm>
|
|
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 <option>-T0</option> und <option>-T1</option> zu verlassen.</para>
|
|
|
|
<para>Die Haupteffekte von <option>T0</option> sind die Serialisierung des
|
|
Scans, bei der immer nur ein Port gescannt wird, und eine Wartezeit von
|
|
fünf Minuten zwischen zwei Testpaketen. <option>T1</option> und
|
|
<option>T2</option> sind ähnlich, warten aber jeweils nur 15 bzw.
|
|
0,4 Sekunden zwischen zwei Testpaketen. <option>T3</option> ist die
|
|
Standardeinstellung in Nmap, die eine
|
|
Parallelisierung<indexterm><primary><literal>normal</literal> (<option>-T3</option>) Timing-Template</primary></indexterm>
|
|
beinhaltet. <option>-T4</option> macht das Äquivalent von
|
|
<option>--max-rtt-timeout 1250 --initial-rtt-timeout 500 --max-retries 6</option>
|
|
und setzt die maximale TCP-Scan-Verzögerung auf 10 Millisekunden.
|
|
<option>T5</option> macht das Äquivalent von
|
|
<option>--max-rtt-timeout 300 --min-rtt-timeout 50
|
|
--initial-rtt-timeout 250 --max-retries 2 --host-timeout 15m</option>
|
|
und setzt die maximale TCP-Scan-Verzögerung auf 5 ms.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
<indexterm class="endofrange" startref="man-performance-indexterm"/>
|
|
<indexterm class="endofrange" startref="man-performance-timing-indexterm"/>
|
|
</refsect1>
|
|
|
|
<refsect1 id='man-bypass-firewalls-ids'>
|
|
<title>Firewall-/IDS-Umgehung und -Täuschung</title>
|
|
<indexterm class="startofrange" id="man-bypass-filewalls-indexterm"><primary>Firewalls</primary><secondary>umgehen</secondary></indexterm>
|
|
<indexterm class="startofrange" id="man-bypass-ids-indexterm"><primary>Intrusion-Detection-Systeme</primary><secondary>umgehen</secondary></indexterm>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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-<emphasis>Prevention</emphasis>-Systeme
|
|
(IPS)<indexterm><primary>Intrusion-Prevention-Systeme</primary><seealso>Intrusion-Detection-Systeme</seealso></indexterm>
|
|
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.
|
|
</para>
|
|
|
|
<para>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.
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-f</option> (Pakete fragmentieren);
|
|
<option>--mtu</option> (benutzt angegebene MTU)
|
|
<indexterm significance="preferred"><primary><option>-f</option></primary></indexterm>
|
|
<indexterm significance="preferred"><primary><option>--mtu</option></primary></indexterm>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>Die Option <option>-f</option> 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 <option>-f</option> an,
|
|
um 16 Bytes pro Fragment zu benutzen (was die Anzahl der Fragmente
|
|
verkleinert).<indexterm><primary><option>-f</option></primary><secondary>zweimal angeben</secondary></indexterm>
|
|
Oder Sie geben eine eigene Offset-Größe mit der Option
|
|
<option>--mtu</option> (für engl. maximum transmission unit) an.
|
|
Wenn Sie <option>--mtu</option> angeben,
|
|
sollten Sie nicht auch <option>-f</option> 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
|
|
<varname>CONFIG_IP_ALWAYS_DEFRAG</varname> 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.<indexterm><primary>iptables</primary></indexterm>
|
|
Führen Sie einen Scan aus, während ein Sniffer wie z.B.
|
|
<application>Wireshark</application><indexterm><primary><application>Wireshark</application></primary></indexterm>
|
|
läuft, um sicherzustellen, dass die gesendeten Pakete fragmentiert sind.
|
|
Falls Ihr Host-Betriebssystem Probleme macht, probieren Sie die Option
|
|
<option>--send-eth</option><indexterm><primary><option>--send-eth</option></primary></indexterm>
|
|
aus, um die IP-Schicht zu umgehen und rohe Ethernet-Rahmen zu
|
|
schicken.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-D <replaceable>decoy1</replaceable><optional>,<replaceable>decoy2</replaceable></optional><optional>,ME</optional><optional>,...</optional></option>
|
|
(verdeckt einen Scan mit Ködern)
|
|
<indexterm><primary><option>-D</option></primary></indexterm>
|
|
<indexterm><primary>Köder</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
|
|
<para>Trennen Sie alle Köder mit Kommata voneinander, wobei Sie
|
|
optional
|
|
<literal>ME</literal><indexterm><primary><literal>ME</literal> (Köder-Adresse)</primary></indexterm>
|
|
als einen der Köder angeben können, um die Position Ihrer echten
|
|
IP-Adresse zu bestimmen. Falls Sie <literal>ME</literal> an
|
|
sechster Stelle oder später setzen, zeigen einige verbreitete
|
|
Port-Scan-Detektoren (wie z.B. der hervorragende
|
|
Scanlogd<indexterm><primary><application>Scanlogd</application></primary></indexterm>
|
|
von Solar Designer<indexterm><primary>Solar Designer</primary></indexterm>)
|
|
Ihre IP-Adresse wahrscheinlich überhaupt nicht an. Wenn Sie kein
|
|
<literal>ME</literal> angeben, setzt es Nmap an eine zufällig gewählte
|
|
Position. Sie können auch
|
|
<literal>RND</literal><indexterm><primary><literal>RND</literal> (Köder-Adresse)</primary></indexterm>
|
|
benutzen, um eine zufällige, nicht-reservierte IP-Adresse zu
|
|
erzeugen, oder <literal>RND:<replaceable>number</replaceable></literal>,
|
|
um <replaceable>number</replaceable> Adressen zu erzeugen.</para>
|
|
|
|
<para>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).</para>
|
|
|
|
<para>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
|
|
(<option>-O</option>) 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.</para>
|
|
|
|
<para>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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-S <replaceable>IP_Address</replaceable></option> (Quelladresse vortäuschen)
|
|
<indexterm><primary><option>-S</option></primary></indexterm>
|
|
<indexterm><primary>Vortäuschen der Quelladresse</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <option>-S</option> mit der IP-Adresse
|
|
der Schnittstelle, über die Sie die Pakete senden möchten.</para>
|
|
|
|
<para>Eine weitere mögliche Anwendung dieses Flags ist eine Vortäuschung
|
|
des Scans, um die Ziele glauben zu machen, dass <emphasis>jemand
|
|
anderes</emphasis> 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 <option>-e</option> und
|
|
<option>-PN</option> 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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-e <replaceable>interface</replaceable></option> (angegebene Schnittstelle benutzen)
|
|
<indexterm><primary><option>-e</option></primary></indexterm>
|
|
<indexterm><primary>interface</primary><seealso><option>-e</option></seealso></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Sagt Nmap, auf welcher Schnittstelle es Pakete senden und
|
|
empfangen soll. Nmap sollte das automatisch erkennen können,
|
|
sagt Ihnen aber Bescheid, wenn nicht.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--source-port <replaceable>portnumber</replaceable>;</option>
|
|
<option>-g <replaceable>portnumber</replaceable></option> (Quell-Portnummer vortäuschen)
|
|
<indexterm significance="preferred"><primary><option>--source-port</option></primary></indexterm>
|
|
<indexterm significance="preferred"><primary><option>-g</option></primary></indexterm>
|
|
<indexterm><primary>Quellportnummer</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Nmap bietet die Optionen <option>-g</option> und
|
|
<option>--source-port</option> (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 <option>--source-port</option>-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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--data-length <replaceable>number</replaceable></option> (Zufallsdaten an gesendete Pakete anfügen)
|
|
<indexterm><primary><option>--data-length</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>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
|
|
(<option>-O</option>) sind davon nicht
|
|
betroffen,<indexterm><primary><option>--data-length</option></primary><secondary>kein Effekt in der Betriebssystemerkennung</secondary></indexterm>
|
|
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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--ip-options <replaceable>S|R [route]|L [route]|T|U ... </replaceable>;</option>
|
|
<option>--ip-options <replaceable>hex string</replaceable></option> (sendet Pakete mit angegebenen IP-Optionen)
|
|
<indexterm><primary><option>--ip-options</option></primary></indexterm>
|
|
<indexterm><primary>IP-Optionen</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Laut
|
|
<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc791.txt">IP-Protokoll</ulink>
|
|
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.</para>
|
|
|
|
<para>Die meisten Möglichkeiten bei der Angabe von IP-Optionen hat man,
|
|
wenn man einfach Werte als Argumente für <option>--ip-options</option>
|
|
angibt. Stellen Sie vor jede Hex-Zahl ein <literal>\x</literal> 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. <literal>\x01\x07\x04\x00*36\x01</literal> ein Hex-String mit
|
|
36 NUL-Bytes.</para>
|
|
|
|
<para>Nmap bietet auch einen verkürzten Mechanismus für die Angabe
|
|
von Optionen. Geben Sie einfach die Buchstaben <literal>R</literal>,
|
|
<literal>T</literal> oder <literal>U</literal> an, um jeweils
|
|
Record Route,<indexterm><primary>Record-Route-IP-Option</primary></indexterm>
|
|
Record Timestamp<indexterm><primary>Record-Timestamp-IP-Option</primary></indexterm>
|
|
oder beide Optionen gemeinsam anzugeben.
|
|
Loose oder Strict Source
|
|
Routing<indexterm><primary>Source Routing</primary></indexterm>
|
|
kann man mit <literal>L</literal> bzw. <literal>S</literal>, gefolgt von
|
|
einem Leerzeichen und einer mit Leerzeichen getrennten Liste von
|
|
IP-Adressen angeben.</para>
|
|
|
|
<para>Wenn Sie die Optionen in den gesendeten und empfangenen Paketen
|
|
sehen möchten, geben Sie <option>--packet-trace</option> an. Mehr
|
|
Informationen und Beispiele zum Einsatz von IP-Optionen mit Nmap finden
|
|
Sie unter <ulink url="http://seclists.org/nmap-dev/2006/q3/0052.html"/>.
|
|
</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--ttl <replaceable>value</replaceable></option> (setzt IP-Time-to-live-Feld)
|
|
<indexterm><primary><option>--ttl</option></primary></indexterm>
|
|
<indexterm><primary>Time-To-Live (TTL)</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>Setzt bei IPv4 das Time-to-live-Feld in gesendeten Paketen
|
|
auf den angegebenen Wert.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--randomize-hosts</option> (randomisiert Reihenfolge der Zielhosts)
|
|
<indexterm significance="preferred"><primary><option>--randomize-hosts</option></primary></indexterm>
|
|
<indexterm><primary>Randomisierung von Hosts</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<varname>PING_GROUP_SZ</varname><indexterm><primary><varname>PING_GROUP_SZ</varname></primary></indexterm>
|
|
in <filename>nmap.h</filename><indexterm><primary><filename>nmap.h</filename></primary></indexterm>
|
|
erhöhen und neu kompilieren.
|
|
Eine alternative Lösung ist es, die Liste der Ziel-IPs mit einem List-Scan
|
|
(<option>-sL -n -oN <replaceable>filename</replaceable></option>) zu
|
|
erzeugen, dann z.B. mit einem Perl-Script zu randomisieren, um sie
|
|
schließlich als Ganzes mit
|
|
<option>-iL</option><indexterm><primary><option>-iL</option></primary><secondary>Hosts randomisieren mit</secondary></indexterm>
|
|
an Nmap zu übergeben.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--spoof-mac <replaceable>MAC address, prefix, or vendor
|
|
name</replaceable></option> (MAC-Adresse vortäuschen)
|
|
<indexterm significance="preferred"><primary><option>--spoof-mac</option></primary></indexterm>
|
|
<indexterm><primary>Vortäuschen einer MAC-Adresse</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Verlangt von Nmap, dass es in allen gesendeten rohen Ethernet-Rahmen
|
|
die angegebene MAC-Adresse<indexterm><primary>MAC-Adresse</primary></indexterm>
|
|
benutzt. Diese Option impliziert
|
|
<option>--send-eth</option>,<indexterm><primary><option>--send-eth</option></primary><secondary>impliziert von <option>--spoof-mac</option></secondary></indexterm>
|
|
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 <literal>0</literal> 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
|
|
<filename>nmap-mac-prefixes</filename> 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)<indexterm><primary>Organizationally Unique Identifier (OUI)</primary><seealso><filename>nmap-mac-prefixes</filename></seealso></indexterm>
|
|
und füllt die verbleibenden drei Bytes mit Zufallswerten. Gültige
|
|
Beispiele für Argumente von <option>--spoof-mac</option> sind
|
|
<literal>Apple</literal>, <literal>0</literal>,
|
|
<literal>01:02:03:04:05:06</literal>, <literal>deadbeefcafe</literal>,
|
|
<literal>0020F2</literal> und <literal>Cisco</literal>.
|
|
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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--badsum</option> (sendet Pakete mit falschen TCP/UDP-Prüfsummen)
|
|
<indexterm><primary><option>--badsum</option></primary></indexterm>
|
|
<indexterm><primary>TCP-Prüfsumme</primary></indexterm>
|
|
<indexterm><primary>Prüfsummen</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <ulink url="https://nmap.org/p60-12.html"/>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
<indexterm class="endofrange" startref="man-bypass-ids-indexterm"/>
|
|
<indexterm class="endofrange" startref="man-bypass-filewalls-indexterm"/>
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id='man-output'>
|
|
<title>Ausgabe</title>
|
|
<indexterm class="startofrange" id="man-output-indexterm"><primary>Ausgabeformate</primary></indexterm>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Nmap erzeugt seine Ausgabe in fünf verschiedenen Formaten.
|
|
Das Standardformat heißt
|
|
<firstterm>interaktive Ausgabe</firstterm><indexterm><primary>interaktive Ausgabe</primary></indexterm>
|
|
und wird an die Standardausgabe (stdout)<indexterm><primary>Standardausgabe</primary></indexterm>
|
|
gesendet.
|
|
Es gibt auch die
|
|
<firstterm>normale Ausgabe</firstterm>,<indexterm><primary>normale Ausgabe</primary></indexterm>
|
|
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.</para>
|
|
|
|
<para>Die <firstterm>XML-Ausgabe</firstterm><indexterm><primary>XML-Ausgabe</primary></indexterm>
|
|
ist eines der wichtigsten Ausgabeformate, da sie einfach nach HTML
|
|
konvertiert, von Programmen wie Nmap-GUIs geparst oder in Datenbanken
|
|
importiert werden kann.</para>
|
|
|
|
<para>Die zwei verbleibenden Ausgabeformate sind die einfache
|
|
<firstterm>grepbare Ausgabe</firstterm>,<indexterm><primary>grepbare Ausgabe</primary></indexterm>
|
|
in der die meiste Information über einen Zielhost in einer einzigen
|
|
Zeile enthalten ist, und
|
|
<firstterm>sCRiPt KiDDi3 0utPUt</firstterm><indexterm><primary sortas="script kiddie Ausgabe">scR1pT kIddI3-Ausgabe</primary></indexterm>
|
|
für Benutzer, die sich selbst als |<-r4d sehen.</para>
|
|
|
|
<para>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 <option>-oX myscan.xml -oN myscan.nmap</option>.
|
|
Auch wenn in diesem Kapitel der Kürze wegen einfache Namen wie
|
|
<literal>myscan.xml</literal> 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.</para>
|
|
|
|
<para>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 <command>nmap -oX myscan.xml target</command>
|
|
XML in <filename>myscan.xml</filename> und füllt die
|
|
Standardausgabe mit demselben interaktiven Ergebnis, wie es auch ohne Angabe von
|
|
<option>-oX</option> 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
|
|
<command>nmap -oX - target</command> schreibt nur die XML-Ausgabe auf
|
|
die Standardausgabe.<indexterm><primary>Ausgabe</primary><secondary>auf stdout mit <literal>-</literal></secondary></indexterm>
|
|
Ernste Fehler werden weiterhin auf den normalen
|
|
Standardfehlerstrom, stderr,<indexterm><primary>Standardfehlerausgabe</primary></indexterm>
|
|
ausgegeben.</para>
|
|
|
|
<para>Anders als bei anderen Nmap-Argumenten ist das Leerzeichen zwischen
|
|
dem Options-Flag für eine Ausgabedatei (z.B. <option>-oX</option>) und dem
|
|
Dateinamen oder Minuszeichen obligatorisch. Falls Sie die Leerzeichen weglassen
|
|
und Argumente wie z.B. <option>-oG-</option> oder <option>-oXscan.xml</option>
|
|
angeben, erzeugt Nmap aus Gründen der Rückwärtskompatibilität Ausgabedateien
|
|
im <emphasis>normalen Format</emphasis>, die jeweils die Namen
|
|
<filename>G-</filename> und <filename>Xscan.xml</filename> haben.</para>
|
|
|
|
<para>All diese Argumente unterstützen
|
|
<function>strftime</function>-ähnliche<indexterm><primary><function>strftime</function> Konvertierungen in Dateinamen</primary></indexterm>
|
|
Umwandlungen im Dateinamen. <literal>%H</literal>, <literal>%M</literal>,
|
|
<literal>%S</literal>, <literal>%m</literal>, <literal>%d</literal>,
|
|
<literal>%y</literal> und <literal>%Y</literal> sind alle exakt gleich
|
|
wie in <function>strftime</function>. <literal>%T</literal> entspricht
|
|
<literal>%H%M%S</literal>, <literal>%R</literal> entspricht
|
|
<literal>%H%M</literal> und <literal>%D</literal> entspricht
|
|
<literal>%m%d%y</literal>. Ein <literal>%</literal>, dem ein anderes Zeichen
|
|
folgt, ergibt nur genau dieses Zeichen (<literal>%%</literal> ergibt ein
|
|
Prozentzeichen). Also erzeugt <option>-oX 'scan-%T-%D.xml'</option> eine
|
|
XML-Datei in der Form <filename>scan-144840-121307.xml</filename>.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<variablelist><title>Nmap-Ausgabeformate</title>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-oN <replaceable>filespec</replaceable></option> (normale Ausgabe)
|
|
<indexterm><primary><option>-oN</option></primary></indexterm>
|
|
<indexterm><primary>normale Ausgabe</primary></indexterm></term>
|
|
<listitem>
|
|
|
|
<para>Verlangt, dass eine <literal>normale Ausgabe</literal> in der
|
|
angegebenen Datei gespeichert wird. Wie oben erwähnt, unterscheidet
|
|
sich das leicht von der <literal>interaktiven Ausgabe</literal>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-oX <replaceable>filespec</replaceable></option> (XML-Ausgabe)
|
|
<indexterm><primary><option>-oX</option></primary></indexterm>
|
|
<indexterm><primary>XML-Ausgabe</primary></indexterm></term>
|
|
<listitem>
|
|
|
|
<para>Verlangt, dass eine <literal>XML-Ausgabe</literal> 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
|
|
<ulink url="https://nmap.org/data/nmap.dtd"/> verfügbar.</para>
|
|
|
|
<para>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
|
|
<ulink url="http://sourceforge.net/projects/nmap-scanner/">Nmap::Scanner</ulink>
|
|
<indexterm><primary>Nmap::Scanner</primary></indexterm>
|
|
und <ulink url="http://nmapparser.wordpress.com/">Nmap::Parser</ulink>
|
|
<indexterm><primary>Nmap::Parser</primary></indexterm>
|
|
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.</para>
|
|
|
|
<para>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 <filename>nmap.xsl</filename>
|
|
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 <option>--webxml</option> oder
|
|
<option>--stylesheet</option> benutzen.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-oS <replaceable>filespec</replaceable></option> (ScRipT KIdd|3-Ausgabe)
|
|
<indexterm><primary><option>-oS</option></primary></indexterm>
|
|
<indexterm><primary sortas="script kiddie Ausgabe">scR1pT kIddI3-Ausgabe</primary></indexterm></term>
|
|
<listitem>
|
|
|
|
<para>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 <quote>ihnen helfe</quote>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-oG <replaceable>filespec</replaceable></option> (grepbare Ausgabe)
|
|
<indexterm><primary><option>-oG</option></primary></indexterm>
|
|
<indexterm><primary>grepbare Ausgabe</primary></indexterm></term>
|
|
<listitem>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Die grepbare Ausgabe besteht aus Kommentaren (Zeilen, die mit einem
|
|
# anfangen)<indexterm><primary>grepbare Ausgabe</primary><secondary>Kommentare in</secondary></indexterm>
|
|
sowie aus Zielzeilen. Eine Zielzeile enthält eine Kombination aus sechs
|
|
benannten Feldern, durch Tabulatoren getrennt, gefolgt von einem
|
|
Doppelpunkt. Diese Felder lauten <literal>Host</literal>,
|
|
<literal>Ports</literal>, <literal>Protocols</literal>,
|
|
<literal>Ignored State</literal>, <literal>OS</literal>,
|
|
<literal>Seq Index</literal>, <literal>IP ID</literal> und
|
|
<literal>Status</literal>.</para>
|
|
|
|
<para>Das wichtigste dieser Felder ist im Allgemeinen <literal>Ports</literal>,
|
|
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: <literal>Port number</literal>,
|
|
<literal>State</literal>, <literal>Protocol</literal>,
|
|
<literal>Owner</literal>, <literal>Service</literal>,
|
|
<literal>SunRPC info</literal> und <literal>Version info</literal>.</para>
|
|
|
|
<para>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
|
|
<man>from <ulink url="https://nmap.org/book/output-formats-grepable-output.html" />.</man>
|
|
<notman>in <xref linkend="output-formats-grepable-output"/>.</notman>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-oA <replaceable>basename</replaceable></option> (Ausgabe in allen Formaten)
|
|
<indexterm significance="preferred"><primary><option>-oA</option></primary></indexterm></term>
|
|
<listitem>
|
|
|
|
<para>
|
|
Aus Gründen der Bequemlichkeit können Sie Scan-Ergebnisse mit
|
|
<option>-oA <replaceable>basename</replaceable></option> gleichzeitig
|
|
in normalem, in XML- und in grepbarem Format speichern. Sie werden
|
|
jeweils in
|
|
<filename><replaceable>basename</replaceable>.nmap</filename>,
|
|
<filename><replaceable>basename</replaceable>.xml</filename> und
|
|
<filename><replaceable>basename</replaceable>.gnmap</filename>,
|
|
gespeichert.
|
|
Wie in den meisten Programmen können Sie vor den Dateinamen ein Präfix
|
|
mit einem Verzeichnispfad darin setzen, z.B.
|
|
<filename>~/nmaplogs/foocorp/</filename> unter Unix oder
|
|
<filename>c:\hacking\sco</filename> unter Windows.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
<variablelist><title>Optionen für Ausführlichkeit und Debugging</title>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-v</option> (größere Ausführlichkeit)
|
|
<indexterm><primary><option>-v</option></primary></indexterm>
|
|
<indexterm><primary>Ausführlichkeit</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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.
|
|
<indexterm><primary><option>-v</option></primary><secondary>mehrmals angeben</secondary></indexterm>
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-d [level]</option> (erhöhe oder setze Debugging-Stufe)
|
|
<indexterm><primary><option>-d</option></primary></indexterm>
|
|
<indexterm><primary>Debugging</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 (<option>-v</option>) wird auch das Debugging mit einem
|
|
Kommandozeilen-Flag eingeschaltet (<option>-d</option>), und die Debug-Stufe
|
|
kann durch eine mehrfache Angabe gesteigert
|
|
werden.<indexterm><primary><option>-d</option></primary><secondary>mehrmals angeben</secondary></indexterm>
|
|
Alternativ dazu können Sie eine Debug-Stufe auch als Argument an
|
|
<option>-d</option> übergeben. So setzt z.B. <option>-d9</option> 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.</para>
|
|
|
|
<para>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: <computeroutput>Timeout
|
|
vals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987
|
|
rttvar: 14987 to: 100000</computeroutput>. Wenn Sie eine Zeile nicht
|
|
verstehen, ist Ihre einzige Zuflucht, sie zu ignorieren, im Quellcode
|
|
nachzuschauen oder Hilfe auf der Entwicklerliste
|
|
(<citetitle>nmap-dev</citetitle>).<indexterm><primary><citetitle>nmap-dev</citetitle> Mailingliste</primary></indexterm>
|
|
zu erfragen.
|
|
Manche Einträge sind selbsterklärend, aber je höher die Debug-Stufe ist,
|
|
desto obskurer werden die Meldungen.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--reason</option> (Gründe für Host- und Portzustände)
|
|
<indexterm><primary><option>--reason</option></primary></indexterm>
|
|
<indexterm><primary>Angabe von Gründen</primary><see><option>--reason</option></see></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>
|
|
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 <literal>RST</literal>-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 (<option>-sS</option> und
|
|
<option>-PS</option>) sind sehr detailliert, aber der TCP-Connect-Scan
|
|
(<option>-sT</option>) wird durch die Implementierung des
|
|
<function>connect</function>-Systemaufrufs beschränkt. Dieses Merkmal
|
|
wird automatisch von der Debug-Option
|
|
(<option>-d</option>)<indexterm><primary><option>--reason</option></primary><secondary>impliziert von <option>-d</option></secondary></indexterm>
|
|
aktiviert, und die Ergebnisse werden auch dann in XML-Protokolldateien
|
|
gespeichert, wenn diese Option gar nicht angegeben wird.
|
|
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--stats-every <replaceable>time</replaceable></option> (periodische Timing-Statistik ausgeben)
|
|
<indexterm><primary><option>--stats-every</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Gibt periodisch eine Timing-Statusmeldung nach einem Intervall der
|
|
Länge <replaceable>time</replaceable> aus. Dabei kann diese Zeitangabe
|
|
beschrieben werden, wie in <xref linkend="man-performance"/> dargestellt,
|
|
d.h. Sie können z.B. <command>--stats-every 10s</command> benutzen, um
|
|
alle 10 Sekunden eine Statusaktualisierung zu erhalten. Diese erscheint
|
|
in der interaktiven Ausgabe (auf dem Bildschirm) und in der XML-Ausgabe.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--packet-trace</option> (gesendete und empfangene Pakete und Daten mitverfolgen)
|
|
<indexterm><primary><option>--packet-trace</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<option>-p20-30</option>. Wenn Sie nur wissen möchten, was
|
|
im Versionserkennungssubsystem vor sich geht, benutzen Sie stattdessen
|
|
<option>--version-trace</option>. Wenn Sie nur an einer Script-Mitverfolgung
|
|
interessiert sind, geben Sie <option>--script-trace</option> an.
|
|
Mit <option>--packet-trace</option> erhalten Sie all das zusammen.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--open</option> (zeige nur offene (oder möglicherweise offene) Ports an)
|
|
<indexterm><primary><option>--open</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Manchmal interessieren Sie sich nur für Ports, mit denen Sie tatsächlich
|
|
eine Verbindung herstellen können (<literal>offene</literal> Ports), und
|
|
wollen Ihre Ergebnisse nicht mit anderen Ports überhäufen, die
|
|
<literal>geschlossen</literal>, <literal>gefiltert</literal> und
|
|
<literal>geschlossen|gefiltert</literal> sind. Die Ausgabe wird normalerweise
|
|
nach dem Scan mit Werkzeugen wie <application>grep</application>,
|
|
<application>awk</application> und <application>Perl</application>
|
|
angepasst, aber dieses Merkmal wurde auf überwältigend vielfachen
|
|
Wunsch hinzugefügt. Geben Sie <option>--open</option> an, um nur
|
|
<literal>offene</literal>, <literal>offene|gefilterte</literal> und
|
|
<literal>ungefilterte</literal> Ports zu sehen. Diese drei Ports werden
|
|
ganz wie gewöhnlich behandelt, d.h. dass <literal>offen|gefiltert</literal>
|
|
und <literal>ungefiltert</literal> in Zählungen zusammengefasst werden,
|
|
wenn es eine sehr große Anzahl davon gibt.
|
|
</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--iflist</option> (liste Schnittstellen und Routen auf)
|
|
<indexterm><primary><option>--iflist</option></primary></indexterm>
|
|
</term><listitem>
|
|
<para>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).</para>
|
|
</listitem> </varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--log-errors</option> (protokolliere Fehler/Warnungen in eine Datei im normalen Ausgabeformat)
|
|
<indexterm significance="preferred"><primary><option>--log-errors</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Von Nmap ausgegebene Warnungen und Fehlermeldungen gehen normalerweise
|
|
nur auf den Bildschirm (interaktive Ausgabe), was die Ordnung aller
|
|
Ausgabedateien im normalen Format (üblicherweise mit <option>-oN</option>
|
|
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.</para>
|
|
|
|
<para>Eine Alternative zu <option>--log-errors</option> 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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
<variablelist><title>Weitere Ausgabeoptionen</title>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--append-output</option> (an Ausgabedateien hinzufügen, statt sie zu überschreiben)
|
|
<indexterm><primary><option>--append-output</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Wenn Sie einen Dateinamen für ein Ausgabeformat wie z.B.
|
|
<option>-oX</option> oder <option>-oN</option> 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 <option>--append-output</option>.
|
|
Dann wird bei allen angegebenen Ausgabedateinamen dieses Nmap-Aufrufs
|
|
an die Dateien angehängt, statt sie zu überschreiben. Mit XML-Scandaten
|
|
(<option>-oX</option>) funktioniert das nicht so gut, da die erzeugte Datei
|
|
im Allgemeinen nicht mehr sauber geparst wird, es sei denn, Sie reparieren sie
|
|
von Hand.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--resume <replaceable>filename</replaceable></option> (abgebrochenen Scan fortsetzen)
|
|
<indexterm><primary><option>--resume</option></primary></indexterm>
|
|
<indexterm><primary>Scans fortsetzen</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <keycap>ctrl-C</keycap> eingibt. Und den ganzen Scan von vorne neu
|
|
zu starten, ist eventuell nicht wünschenswert. Wenn ein normales
|
|
(<option>-oN</option>) oder ein grepbares (<option>-oG</option>) 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 <option>--resume</option> 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 <command>nmap --resume
|
|
<replaceable>logfilename</replaceable></command> 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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--stylesheet <replaceable>path or URL</replaceable></option> (setze XSL-Stylesheet, um eine XML-Ausgabe zu transformieren)
|
|
<indexterm significance="preferred"><primary><option>--stylesheet</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Die Nmap-Distribution enthält ein
|
|
XSL-Stylesheet<indexterm><primary>XSL</primary></indexterm>
|
|
<indexterm><primary>Stylesheet</primary></indexterm>
|
|
namens <filename>nmap.xsl</filename>
|
|
<indexterm><primary><filename>nmap.xsl</filename></primary></indexterm>
|
|
zum Betrachten oder Übersetzen einer XML-Ausgabe nach HTML.
|
|
<indexterm><primary>HTML aus XML-Ausgabe</primary></indexterm>
|
|
Die XML-Ausgabe enthält eine <literal>xml-stylesheet</literal>-Anweisung,
|
|
die auf <filename>nmap.xml</filename> 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 <filename>nmap.xsl</filename> im Dateisystem
|
|
finden und benutzen, um die Ergebnisse darzustellen. Wenn Sie ein anderes
|
|
Stylesheet benutzen möchten, geben Sie es als Argument für
|
|
<option>--stylesheet</option> an. Dabei müssen Sie den vollständigen
|
|
Pfadnamen oder die URL angeben. Sehr häufig wird
|
|
<option>--stylesheet https://nmap.org/data/nmap.xsl</option> benutzt.
|
|
Das sagt einem Browser, dass er die neueste Version des Stylesheets
|
|
von Nmap.Org laden soll. Die Option <option>--webxml</option>
|
|
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
|
|
<filename>nmap.xsl</filename>) installiert ist. Daher ist die URL oft
|
|
nützlicher, doch aus Datenschutzgründen wird standardmäßig das
|
|
<filename>nmap.xsl</filename> im lokalen Dateisystem benutzt.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--webxml</option> (lade Stylesheet von Nmap.Org)
|
|
<indexterm significance="preferred"><primary><option>--webxml</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Diese bequeme Option ist nur ein Alias für
|
|
<option significance="preferred">--stylesheet https://nmap.org/data/nmap.xsl</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option significance="preferred">--no-stylesheet</option> (lasse XSL-Stylesheet-Deklaration im XML weg)
|
|
<indexterm significance="preferred"><primary><option>--no-stylesheet</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Geben Sie diese Option an, wenn Nmap in seiner XML-Ausgabe auf
|
|
keinerlei XSL-Stylesheet verweisen soll. Die
|
|
<literal>xml-stylesheet</literal>-Anweisung wird dann weggelassen.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
<indexterm class="endofrange" startref="man-output-indexterm"/>
|
|
</refsect1>
|
|
|
|
<refsect1 id='man-misc-options'>
|
|
<title>Verschiedene Optionen</title>
|
|
<para>Dieser Abschnitt beschreibt einige wichtige (und weniger wichtige)
|
|
Optionen, für die es keinen anderen richtig passenden Ort gibt.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-6</option> (schaltet IPv6-Scans ein)
|
|
<indexterm significance="preferred"><primary><option>-6</option></primary></indexterm>
|
|
<indexterm><primary>IPv6</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <option>-6</option> 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:
|
|
<literal>3ffe:7501:4819:2000:210:f3ff:fe03:14d0</literal>, d.h. es
|
|
empfehlen sich Hostnamen. Die Ausgabe sieht genauso aus
|
|
wie üblich. Nur die IPv6-Adresse in der Zeile der
|
|
<quote>interessanten Ports</quote> deutet auf IPv6.</para>
|
|
|
|
<para>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,<indexterm><primary>IPv6-Tunnel-Broker</primary></indexterm>
|
|
die mit Nmap funktionieren. Weitere Tunnel-Broker sind
|
|
<ulink url="http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers">in Wikipedia aufgelistet</ulink>.
|
|
Ein weiterer freier Ansatz sind 6to4-Tunnels.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-A</option> (aggressive Scan-Optionen)
|
|
<indexterm significance="preferred"><primary><option>-A</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 (<option>-O</option>),
|
|
die Versionserkennung (<option>-sV</option>),
|
|
das Scannen mit Scripts (<option>-sC</option>) und
|
|
traceroute (<option>--traceroute</option>) ein.
|
|
<indexterm><primary><option>-A</option></primary><secondary>eingeschaltete Merkmale von</secondary></indexterm>
|
|
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 <option>-A</option> nicht ohne Genehmigung auf Zielnetzwerke loslassen.
|
|
Diese Option aktiviert nur Eigenschaften, aber keine Optionen für das
|
|
Timing (z.B. <option>-T4</option>) oder die Ausführlichkeit
|
|
(<option>-v</option>), die Sie eventuell auch benutzen möchten.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--datadir <replaceable>directoryname</replaceable></option> (gibt benutzerdefinierten Ort für Nmap-Datendateien an)
|
|
<indexterm significance="preferred"><primary><option>--datadir</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<!-- DG: siehe data-files.xml (UID) -->
|
|
<para>Nmap erhält einige spezielle Daten zur Laufzeit aus Dateien namens
|
|
<filename>nmap-service-probes</filename>,
|
|
<filename>nmap-services</filename>,
|
|
<filename>nmap-protocols</filename>,
|
|
<filename>nmap-rpc</filename>,
|
|
<filename>nmap-mac-prefixes</filename> und
|
|
<filename>nmap-os-db</filename>.
|
|
Falls der Ort einer dieser Dateien angegeben wurde (mit den Optionen
|
|
<option>--servicedb</option> oder <option>--versiondb</option>),
|
|
wird dieser Ort für diese Datei benutzt. Danach sucht Nmap diese
|
|
Dateien im Verzeichnis, das mit der Option <option>--datadir</option>
|
|
angegeben wurde (sofern vorhanden). Dateien, die dort nicht gefunden
|
|
werden, werden in einem Verzeichnis gesucht, das durch die
|
|
Umgebungsvariable NMAPDIR angegeben
|
|
wird<indexterm><primary><envar>NMAPDIR</envar> Umgebungsvariable</primary></indexterm>.
|
|
Danach kommt
|
|
<filename>~/.nmap</filename><indexterm><primary sortas="nmap Verzeichnis"><filename>.nmap</filename> Verzeichnis</primary></indexterm>
|
|
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.
|
|
<filename>/usr/local/share/nmap</filename> oder
|
|
<filename>/usr/share/nmap</filename>. Als letzte Rettung sucht Nmap
|
|
im aktuellen Arbeitsverzeichnis.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--servicedb <replaceable>services file</replaceable></option> (gibt benutzerdefinierte Dienstedatei an)
|
|
<indexterm significance="preferred"><primary><option>--servicedb</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Verlangt von Nmap, die angegebene Dienstedatei zu benutzen statt
|
|
der Datendatei <filename>nmap-services</filename>, die in Nmap enthalten
|
|
ist. Bei dieser Option wird außerdem auch ein schneller Scan
|
|
(<option>-F</option>) benutzt. Weitere Details zu Nmaps Datendateien
|
|
finden Sie in der Beschreibung zu <option>--datadir</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--versiondb <replaceable>service probes file</replaceable></option> (gibt benutzerdefinierte Dienstepakete an)
|
|
<indexterm significance="preferred"><primary><option>--versiondb</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Verlangt von Nmap, die angegebene Dienstepaketedatei zu benutzen statt
|
|
der Datendatei <filename>nmap-service-probes</filename>, die in Nmap enthalten
|
|
ist. Weitere Details zu Nmaps Datendateien
|
|
finden Sie in der Beschreibung zu <option>--datadir</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--send-eth</option> (sendet rohe Ethernet-Pakete)
|
|
<indexterm significance="preferred"><primary><option>--send-eth</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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)<indexterm><primary>rohe Sockets</primary></indexterm>
|
|
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).</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--send-ip</option> (sendet auf der rohen IP-Schicht)
|
|
<indexterm significance="preferred"><primary><option>--send-ip</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <option>--send-eth</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--privileged</option> (nimmt an, dass der Benutzer alle Sonderrechte genießt)
|
|
<indexterm significance="preferred"><primary><option>--privileged</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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<indexterm><primary>Benutzer mit Sonderrechten</primary></indexterm><indexterm><primary>autorisierte Benutzer</primary><see>Benutzer mit Sonderrechten</see></indexterm>
|
|
benötigen. Standardmäßig terminiert Nmap, wenn solche Operationen
|
|
verlangt werden, aber <function>geteuid</function> nicht null ist.
|
|
<option>--privileged</option> 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 <option>--privileged</option>
|
|
kann die Umgebungsvariable
|
|
<envar>NMAP_PRIVILEGED</envar><indexterm><primary><envar>NMAP_PRIVILEGED</envar> Umgebungsvariable</primary></indexterm>
|
|
gesetzt werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--unprivileged</option> (nimmt an, dass der Benutzer keine Sonderrechte für rohe Sockets genießt)
|
|
<indexterm significance="preferred"><primary><option>--unprivileged</option></primary></indexterm>
|
|
<indexterm><primary>Benutzer ohne Sonderrechte</primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Diese Option ist das Gegenteil von <option>--privileged</option>.
|
|
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 <option>--unprivileged</option>
|
|
kann die Umgebungsvariable
|
|
<envar>NMAP_UNPRIVILEGED</envar><indexterm><primary><envar>NMAP_UNPRIVILEGED</envar> Umgebungsvariable</primary></indexterm>
|
|
gesetzt werden.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--release-memory</option> (gibt Speicher vor Terminierung frei)
|
|
<indexterm><primary><option>--release-memory</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--interactive</option> (startet im interaktiven Modus)
|
|
<indexterm><primary><option>--interactive</option></primary></indexterm>
|
|
<indexterm><primary><option>interactive mode</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Startet Nmap im interaktiven Modus, in dem es eine interaktive
|
|
Nmap-Eingabeaufforderung gibt, bei der man mehrere Scans ausführen kann
|
|
(entweder synchron oder im Hintergrund). Das ist nützlich für Leute,
|
|
die von Mehrbenutzersystemen scannen, weil sie ihre Sicherheit meist
|
|
testen wollen, ohne dass alle anderen im selben System genau mitbekommen,
|
|
welche Systeme sie scannen. Benutzen Sie <option>--interactive</option>,
|
|
um diesen Modus zu aktivieren, und geben Sie dann <keycap>h</keycap> ein,
|
|
um eine Hilfe zu erhalten. Diese Option wird selten benutzt, weil echte
|
|
Shells für die Leute vertrauter sind und ihnen viel mehr Möglichkeiten
|
|
bieten. Diese Option enthält einen bang(!)-Operator zur Ausführung von
|
|
Shell-Befehlen, was einer der vielen Gründe dafür ist, Nmap nicht mit
|
|
setuid root<indexterm><primary>setuid, warum nicht für Nmap</primary></indexterm>
|
|
zu installieren.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-V</option>; <option>--version</option> (gibt Versionsnummer aus)
|
|
<indexterm><primary><option>-V</option></primary></indexterm>
|
|
<indexterm><primary><option>--version</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>Gibt Nmaps Versionsnummer aus und terminiert.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-h</option>; <option>--help</option> (gibt zusammengefasste Hilfeseite aus)
|
|
<indexterm><primary><option>-h</option></primary></indexterm>
|
|
<indexterm><primary><option>--help</option></primary></indexterm>
|
|
</term>
|
|
<listitem>
|
|
<para>Gibt eine kurze Hilfeseite mit den am meisten benutzten
|
|
Optionen aus. Sie kommt auch dann, wenn man Nmap ganz ohne Argumente
|
|
startet.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id='man-runtime-interaction'>
|
|
<title>Laufzeit-Interaktion<indexterm><primary>Laufzeitinteraktion</primary></indexterm></title>
|
|
|
|
<para>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
|
|
<emphasis>Kleinbuchstaben vergrößert</emphasis> und durch
|
|
<emphasis>Großbuchstaben verkleinert</emphasis> wird.
|
|
Sie können auch ‘<emphasis>?</emphasis>’ drücken,
|
|
um eine Hilfe zu erhalten.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>v</option> / <option>V</option>
|
|
</term>
|
|
<listitem>
|
|
<para>Vergrößert/verkleinert die Ausführlichkeit</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<option>d</option> / <option>D</option>
|
|
</term>
|
|
<listitem>
|
|
<para>Vergrößert/verkleinert die Debugging-Stufe</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<option>p</option> / <option>P</option>
|
|
</term>
|
|
<listitem>
|
|
<para>Schaltet Paketverfolgung ein/aus</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<option>?</option>
|
|
</term>
|
|
<listitem>
|
|
<para>Gibt einen Hilfeschirm zur Laufzeit-Interaktion aus</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
Alles andere
|
|
</term>
|
|
<listitem>
|
|
<para>Gibt eine Statusmeldung wie die folgende aus:</para>
|
|
<para>Stats: 0:00:08 elapsed; 111 hosts completed (5 up),
|
|
5 undergoing Service Scan</para>
|
|
<para>Service scan Timing: About 28.00% done; ETC: 16:18
|
|
(0:00:15 remaining)</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id='man-examples'>
|
|
<title>Beispiele</title>
|
|
|
|
<para>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
|
|
<emphasis>Ihrem eigenen Netzwerk</emphasis> 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.</para>
|
|
|
|
<para>Zu Testzwecken haben Sie die Genehmigung, den Host
|
|
<literal>scanme.nmap.org</literal> 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 <computeroutput>Failed to resolve given hostname/IP:
|
|
scanme.nmap.org</computeroutput> ausgeben. Diese Genehmigung gilt auch
|
|
für die Hosts <literal>scanme2.nmap.org</literal>,
|
|
<literal>scanme3.nmap.org</literal> usw., auch wenn diese Hosts noch
|
|
nicht existieren.</para>
|
|
|
|
<para>
|
|
<indexterm><primary><option>-v</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
<command>nmap -v scanme.nmap.org</command>
|
|
</para>
|
|
<para>Diese Option scannt alle reservierten TCP-Ports auf dem Rechner
|
|
<literal>scanme.nmap.org</literal>. Die Option <option>-v</option>
|
|
schaltet den ausführlichen Modus an.</para>
|
|
<para>
|
|
<indexterm><primary><option>-sS</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
<indexterm><primary><option>-O</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
<command>nmap -sS -O scanme.nmap.org/24</command>
|
|
</para>
|
|
<para>Startet einen Stealth-SYN-Scan auf allen aktiven Rechnern unter
|
|
den 256 IPs im Netzwerk der Größe <quote>Klasse C</quote>, 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.</para>
|
|
<para>
|
|
<indexterm><primary><option>-p</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
<command>nmap -sV -p 22,53,110,143,4564
|
|
198.116.0-255.1-127</command>
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>
|
|
<indexterm><primary><option>-iR</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
<indexterm><primary><option>-PN</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
<command>nmap -v -iR 100000 -PN -p 80</command>
|
|
</para>
|
|
|
|
<para>Verlangt von Nmap, 100.000 Hosts zufällig auszuwählen und sie nach
|
|
Webservern (Port 80) zu scannen. Eine Host-Auflistung wird mit
|
|
<option>-PN</option> 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.</para>
|
|
|
|
<para>
|
|
<indexterm><primary><option>-oX</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
<indexterm><primary><option>-oG</option></primary><secondary>Beispiel</secondary></indexterm>
|
|
<command>nmap -PN -p80 -oX logs/pb-port80scan.xml -oG
|
|
logs/pb-port80scan.gnmap 216.163.128.20/20</command>
|
|
</para>
|
|
<para>Das scannt 4096 IPs nach Webservern (ohne sie anzupingen)
|
|
und speichert die Ausgabe im grepbaren und im XML-Format.</para>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1 id='man-book'>
|
|
<title>Das Nmap-Buch</title>
|
|
<!-- This paragraph is a bit jumbled together for man page rendering purposes, where extra newlines were causing problems -->
|
|
<para>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
|
|
<notweb><citetitle>Nmap Network Scanning: The Official
|
|
Nmap Project Guide to Network Discovery and Security
|
|
Scanning</citetitle>.</notweb><web><ulink url="https://nmap.org/book/"><citetitle>Nmap Network Scanning: The Official
|
|
Nmap Project Guide to Network Discovery and Security
|
|
Scanning</citetitle></ulink> veröffentlicht.</web>
|
|
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
|
|
<ulink url="https://nmap.org/book"/>.</para>
|
|
<para>Die deutsche Übersetzung dieses Buches von Dinu Gherman ist im Mai
|
|
2009 unter dem Titel
|
|
<citetitle><ulink url="https://www.opensourcepress.de/index.php?26&backPID=178&tt_products=270">Nmap: Netzwerke scannen, analysieren und absichern</ulink></citetitle>
|
|
im <ulink url="http://www.opensourcepress.de">Open Source Press</ulink>-Verlag
|
|
erschienen.</para>
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id='man-bugs'>
|
|
<title>Fehler</title>
|
|
<indexterm><primary>Fehlerberichte</primary></indexterm>
|
|
|
|
<para>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
|
|
<ulink url="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
|
|
<ulink url="http://insecure.org/search.html"/> oder bei Google. Stöbern
|
|
Sie in den <citetitle>nmap-dev</citetitle>-Archiven unter
|
|
<ulink url="http://seclists.org/" />.<indexterm><primary><citetitle>nmap-dev</citetitle> Mailingliste</primary></indexterm>
|
|
Lesen Sie auch diese Manpage vollständig. Wenn Sie keine Lösung finden,
|
|
schicken Sie einen Fehlerbericht per E-Mail an
|
|
<email>dev@nmap.org</email>. 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 <email>dev@nmap.org</email> 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
|
|
<ulink url="https://nmap.org/mailman/listinfo/dev"/>.</para>
|
|
|
|
<para>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
|
|
<ulink url="https://nmap.org/data/HACKING" /> verfügbar. Patches können
|
|
an <citetitle>nmap-dev</citetitle> (empfohlen) oder direkt an Fyodor
|
|
geschickt werden.</para>
|
|
</refsect1>
|
|
|
|
<refsect1 id='man-author'>
|
|
<title>Autor</title>
|
|
<para>Fyodor
|
|
<email>fyodor@nmap.org</email>
|
|
(<ulink url="http://insecure.org" />)
|
|
</para>
|
|
|
|
<para>Über die Jahre haben hunderte von Menschen wertvolle Beiträge
|
|
zu Nmap geleistet. Sie sind detailliert in der Datei
|
|
<filename>CHANGELOG</filename><indexterm><primary>changelog</primary></indexterm>
|
|
aufgeführt, die mit dem Nmap-Quellcode verbreitet wird und auch unter
|
|
<ulink url="https://nmap.org/changelog.html" /> verfügbar ist.</para>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1 id='man-legal'>
|
|
<para>Sorry, this section has not yet been translated to German. Please see the <ulink url="https://nmap.org/book/man-legal.html">English version</ulink>.</para>
|
|
</refsect1>
|
|
</refentry>
|
|
<indexterm class="endofrange" startref="man-nmap1-indexterm"/>
|
|
</article>
|