Keine der folgenden Optionen ist zwingend erforderlich. Einige von ihnen sind
jedoch äußerst sinnvoll.
Der Parameter -p legt fest, welche Ports gescannt werden
sollen. Wird bei der Wahl der Zielports auf diese Option verzichtet, werden
sämtliche well-known Ports zwischen 1 und 1024 sowie alle in
der services - Datei von nmap gelisteten Dienste gescannt.
Für einen IP - Protokoll - Scan (-sO) legt der Parameter
-p die zu scannende Protokoll-Nummer (0-255) fest.
Beispiele: -p 23 wird lediglich einen Zugriff auf den Port 23
(Telnet) der Zielsysteme durchführen. -p 20-30,139,60000-
scannt die Ports zwischen 20 und 30, Port 139 und alle Ports größer als 60000.
Bei gleichzeitigem TCP- und UDP - Portscan wird das jeweilige Protokoll durch
ein vorangestelltes T: oder U: angewählt. Für
die übergebenen Ports gilt so lange das spezifizierte Übertragungsprotokoll, bis
ein anderes angegeben wird (Beispiel -p U:53,111,137,T:21-25,80
= UDP-Ports 53, 111 und 137 sowie die TCP - Ports 21 bis 25 und 80). Bei einem
gleichzeitigen TCP- und UDP - Scan muss mindestens eine TCP - Scan - Variante
(-sS, -sF oder -sT)
angegeben werden.
|
Die Option --resume <Protokoll-Dateiname> reaktiviert
einen Netzwerk-Scan, der durch das Drücken von Control-C unterbrochen wurde.
|
Mit der Funktion F wird ähnlich wie beim
Strobe
(einfacher und schneller TCP-Portscanner) ein ziemlich schneller Scan
durchgeführt, da nur die Ports angesprochen werden, die in
/etc/services angeführt wurden. Normalerweise reicht ein Scan auf
diese Standard-Ports aus, da damit die gängigsten Dienste in Erfahrung gebracht
werden können.
|
Um einen Ping-Scan zu beschleunigen, kann mit der Option -n
die DNS-Auflösung ausgeschaltet werden.
|
Mit -M <Maximale Sockets> wird die maximale Anzahl der
Sockets bei einem parallel durchgeführten TCP connect()-Scan festgelegt. Dies
ist zum Beispiel in Situationen nützlich, wenn der Scanvorgang künstlich
verlangsamt werden soll, damit das Zielsystem nicht unter der Last der Zugriffe
zusammenbricht. Eine andere Herangehensweise ist die Verwendung von
-sS.
|
|
Der Parameter -P0 verhindert das Pingen eines Hosts, bevor
dieser gescannt wird. So können ganze Netzwerke gescannt werden, die aufgrund
einer restriktiv konfigurierten Firewall keine ICMP echo requests/responses)
zulassen. Microsoft.com ist ein Beispiel für ein solch gut geschütztes Netzwerk,
in dem nur die Verwendung dieser Option zum gewünschten Resultat führt.
|
Durch die zusätzlich Option -f werden sehr kleine
fragmentierte Pakete für SYN-, FIN-, Xmas- oder NULL- Scans verwendet. Das
bedeutet, dass die TCP - Header auf mehrere Pakete verteilt werden. Ziel ist es,
den Scan vor Firewall- und
IDS - Systemen zu verstecken. Gerade bei älteren
Geräten werden die Pakete oftmals nicht zuerst defragmentiert. Heutzutage
reihen Paketfilter in den meisten Fällen die einzelnen Pakete in eine
Warteschlange ein, bevor sie mit der Auswertung / Filterung beginnen. Damit
rückt das Ziel dieser Option in weite Ferne.
Bei verschiedenen Testläufen ist wurde festgestellt, dass ein SYN - Scan mit
einer großen Anzahl klein fragmentierter Pakete in einer kleinen Anzahl Versuche
nmap verfälschte Daten ausgab. Der Test lief von einem SuSE
Linux 6.3-Client mit 10 MBit/Sek. (Koaxial-Kabel) gegen ein SuSE Linux
6.3-Gateway. Nmap behauptete in einigen Fällen, dass zwischen
dem zweitletzten wirklich offenen Port 139 (netbios-ssn) und dem allerletzten
Port 8080 (http-proxy) ein gefilterter TCP - Port offen sei.
|
Mit Nmap können Scans weitestgehend unentdeckt bleiben. In
einigen Fällen kann mit zusätzlichen Optionen das Timing noch feiner abgestimmt
werden.
Mit den -T Optionen Paranoid, Sneaky, Polite, Normal,
Aggressive und Insane lässt sich das Timing der Scans auf das Zielsystem
einstellen:
-
Der Paranoid - Modus scannt sehr langsam, in der Hoffnung, nicht von Intrusion
Detection-Systemen entdeckt zu werden. Er serialisiert alle Scand und wartet im
Normalfall einfach fünf Minuten bis zur Sendung des Folgepaketes.
-
Der Sneaky - Modus (dt. schleichend) ist mit dem Paranoid-Modus vergleichbar,
allerdings sendet dieser die Pakete im Abstand von 15 Sekunden.
-
Der Polite - Modus (dt. höflich) verringert die Netzlast und verkleinert die
Gefahr des Zusammenbrechens der Zielmaschine. Er serialisiert ebenfalls die zu
sendenden Pakte und wartet dazwischen mindestens 0.4 Sekunden.
-
Der Normal-Modus scannt so schnell wie möglich, ohne das Netz dabei zu überlasten.
-
Im Aggressive-Modus (dt. aggressiv) wird eine Wartezeit von 5 Minuten zwischen
den einzelnen Hosts hinzugefügt, jedoch wird nie länger als 1.25 Sekunden auf
Antworten gewartet.
-
Der Insane - Modus (dt. geisteskrank) ist lediglich in sehr schnellen Netzwerken
verwendbar, oder überall dort zu empfehlen, wo einzelne Resultatsinformationen
verloren gehen dürfen. Zwischen den einzelnen Systemen werden 75 Sekunden und
zwischen den Zugriffen 300 ms gewartet.
Weiterhin sind verschiedene sehr feingranulare Einstellungen mit verschiedenen
Parametern wie z. B. --host_timeout,
--max_rtt_timeout, --initial_rtt_timeout,
--max_parallelism, --scan_delay, etc.
möglich.
|
Mit -O wird ein so genannter Fingerabdruck des gescannten
Systems angefertigt. Es wird eine Anzahl spezifischer Tests mit dem Ziel
ausgeführt, das typische Verhalten der jeweiligen TCP/IP - Implementierungen zu
erkennen. Die erhaltenen Informationen stellen quasi einen
Fingerabdruck des Systems dar, der mit bekannten
Betriebssystem-Fingerabdrücken verglichen wird. Diese sind in der
nmap-os-fingerprints Datei zu finden.
Es kommt nahezu nie vor, dass ein falsches Betriebssystem prognostiziert wird,
solange die Protokollstapel beim Host nicht manipuliert wurden. Es kann
höchstens vorkommen, dass nmap dem Fingerabdruck des
Computers kein Betriebssystem zuordnen kann. Sollte es einem Endanwender von
nmap möglich sein das Betriebssystem zu identifizieren, kann
er per CGI-Script auf
http://www.insecure.org/cgi-bin/nmap-submit.cgi
aktiv zur Perfektionierung von nmap beitragen.
Die Option -O aktiviert weiterhin einige zusätzliche Tests
wie z. B. das Messen der Uptime (wann wurde das Zielsystem das
letzte Mal neu gestartet) oder die Klassifizierung der Berechenbarkeit der
TCP-Sequenznummer (wie schwer es ist, eine bestehende Verbindung zu entführen).
Mit Eingriffen in die Handhabung des Betriebssystems bei
Verbindungs-Anforderungen und direkt beim Protokollstapel könnte ein anderes
Betriebssystem vorgetäuscht werden. Diese Aktion ist jedoch mit dem bitteren
Beigeschmack eines möglichen Performance- und Stabilitäts-Verlusts des
Betriebssystems verbunden. Beispiele:
bei Microsoft Windows 98
root@linux #
nmap 192.168.0.3 -O
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Interesting ports on rieekan.matrix.net (192.168.0.3): Port State Protocol Service 139 open tcp netbios-ssn
TCP Sequence Prediction: Class=trivial time dependency Difficulty=0 (Trivial joke) Remote operating system guess: Windows NT4 / Win95 / Win98
Nmap run completed -- 1 IP address (1 host up) scanned in 7 seconds
|
bei SuSE Linux 6.3
root@linux #
nmap 192.168.0.3 -O
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Interesting ports on gateway.matrix.net (192.168.0.1): Port State Protocol Service 21 open tcp ftp 23 open tcp telnet 139 open tcp netbios-ssn 8080 open tcp http-proxy
TCP Sequence Prediction: Class=random positive increments Difficulty=2150475 (Good luck!) Remote operating system guess: Linux 2.1.122 - 2.2.12
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
|
bei unbekanntem Betriebssystem
root@linux #
nmap 192.168.0.6 -O
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Interesting ports on hidden.matrix.net (192.168.0.6): Port State Protocol Service 7 open tcp echo 9 open tcp discard 13 open tcp daytime 17 open tcp qotd 19 open tcp chargen [...] 465 open tcp smtps 1030 open tcp iad1 1433 open tcp ms-sql-s 6667 open tcp irc 6668 open tcp irc
TCP Sequence Prediction: Class=trivial time dependency Difficulty=11 (Easy) No OS matches for host (If you know what OS is running on it, see http://www.insecure.org/cgi-bin/nmap-submit.cgi). TCP/IP fingerprint: TSeq(Class=RI%gcd=1%SI=F4F9) TSeq(Class=TD%gcd=1%SI=A) TSeq(Class=TD%gcd=1%SI=B) T1(Resp=Y%DF=Y%W=4470%ACK=S++%Flags=AS%Ops=M) T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=) T3(Resp=Y%DF=Y%W=4470%ACK=S++%Flags=AS%Ops=M) T4(Resp=Y%DF=N%W=0%ACK=O%Flags=R%Ops=) T5(Resp=Y%DF=N%W=0%ACK=S++%Flags=AR%Ops=) T6(Resp=Y%DF=N%W=0%ACK=O%Flags=R%Ops=) T7(Resp=Y%DF=N%W=0%ACK=S++%Flags=AR%Ops=) T7(Resp=N) PU(Resp=Y%DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=F%ULEN=134%DAT=E)
Nmap run completed -- 1 IP address (1 host up) scanned in 19 seconds
|
|
Mit dem Parameter -I wird die identd - Information laut
RFC 1413 über die
laufenden Prozesse auf dem Ziel-System eingeholt. Beispiele:
bei Microsoft Windows 98
root@linux #
nmap 192.168.0.3 -I
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Interesting ports on rieekan.matrix.net (192.168.0.3): Port State Protocol Service Owner 139 open tcp netbios-ssn
Nmap run completed -- 1 IP address (1 host up) scanned in 6 seconds
|
bei SuSE Linux 6.3
root@linux #
nmap 192.168.0.1 -I
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Interesting ports on gateway.matrix.net (192.168.0.1): Port State Protocol Service Owner 21 open tcp ftp mruef 23 open tcp telnet 139 open tcp netbios-ssn rieekan 8080 open tcp http-proxy lanman
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
|
|
Diese Funktion ist immer dann anzuwenden, wenn die Erreichbarkeit von Systemen
oder Netzwerken identifiziert werden soll und eine Überprüfung mittels ICMP vom
Zielsystem nicht zugelassen wird.
Der Parameter -PT <Port> verwendet einen TCP-Ping-Scan
um zu verifizieren, welche Hosts im Netzwerk erreichbar sind. Diese Option kann
auch ohne die Definierung eines Ports verwendet werden (standardmäßig wird
HTTP-Port TCP/80 verwendet).
Ansprechbare Systeme sollten auf das gesendete TCP-Datagramm (ACK-Flag gesetzt)
mit einem RST antworten.
|
Hierbei kann mit der Option -PS ein SYN-Suchlauf anstelle des
standardmäßigen ACK-Suchlaufs bei TCP - Ping - Scans verwendet werden. Das
Setzen des Zielports erfolgt auf die selbe Art und Weise wie bei den zuvor
erläuterten TCP - Pings.
|
Mit Option -I wird das TCP reverse ident - Scanning
aktiviert. Wie Dave Goldsmith in einem Bugtraq-Posting aus dem Jahre 1996
publiziert hat, ermöglicht das ident - Protokoll (RFC 1413) das Identifizieren
des Besitzers eines TCP - Dienstes.
|
Die Option -PI nutzt einen klassischen Ping (ICMP echo
request), um die Erreichbarkeit von Systemen und Broadcast - Adressen von
Subnetzen zu identifizieren. Letztere sind extern erreichbare IP - Adressen, die
eine Umwandlung zu einem internen Broadcast des Subnetzes durchführen. Sie
stellen die Voraussetzung für eine Reihe von Denial of Service-Attacken (Smurf
ist die bekannteste Variante) dar und sollten deshalb verhindert werden.
|
Die Option -PP benutzt eine ICMP timestamp - Anfrage (Typ 13, Code 0), um
ansprechbare Hosts zu finden.
|
Der Parameter -PB <Port> ist der standardmäßig
gewählte Ping - Typus. Es werden beide o. g. Techniken (-PT
und -PI) parallel durchgeführt. Auf diese Weise können
Firewall - Elemente ausgetrickst werden, die nur eine der beiden Protokolle
herausfiltern. Der Zielport wird analog der zuvor erklärten Optionen angegeben.
|
Es wird ein ICMP address mask request (Typ 17, Code 0) verwendet.
|
|
Die Option -R versucht, während eines Scan-Vorgangs alle
Host-Namen aufzulösen, und zwar nicht nur die Aktiven. Durch die explizite
Anweisung auch inaktive Rechner-Namen in Erfahrung zu bringen, kann diese
Funktion unter Umständen einen Durchlauf extrem in die Länge ziehen.
|
Im Verbose-Modus, der mit -v aktiviert wird und sehr zu
empfehlen ist, werden Informationen in ausführlicher Form ausgegeben. Die
doppelte Verwendung -vv erhöht den Umfang der Ausgabe
nochmals. Ebenso kann -d einige Male aktiviert werden, falls
Sie wirklich vor einem vollem Bildschirm verrückt werden wollen!
|
Mit Parameter -oN <Protokoll-Dateiname> werden die
Resultate des Scans in einem normalen, für Menschen lesbaren Format
abgespeichert. Der Paraemter -oX hingeggen protokolliert die
Resultate in einer XML-Datei. Sollen die Informationen mit
grep gefiltert werden, bietet sich der Parameter
-oG an. Sind alle drei Formate von Belang, so kann man mit
Option -oA <Basisdateiname> alle Formate bekommen.
Weiterhin existiert die Möglichkeit, mit Parameter -oS ein
für s|<ripT kiDd|3 lesbares Format auszuwählen.
|
Mit --append_output werden die Scan - Resultate an die
spezifizierte Protokoll-Datei angehängt, anstatt diese zu überschreiben.
|
|
Ganz offensichtlich kann ein
Intrusion Detection System (IDS) nmap - Scans oftmals
erkennen. Neben der Deaktivierung der ICMP - Pings sind weitere Manipulationen
möglich, die in den folgenden Abschnitten beschrieben werden.
Unter bestimmten Umständen ist nmap nicht in der Lage, Ihre
Quell - IP - Adresse zu identifizieren (nmap wird Ihnen dies
mitteilen). In einer solchen Situation kann mit der Hilfe der Option
-S die IP-Adresse (der gewünschten Schnittstelle) festgelegt
werden.
Eine andere Möglichkeit dieser Option ist, die Quelle des Scans zu
spoofen, so
dass das Zielsystem glaubt, dass jemand anderes den Scan durchführt.
Diese wirklich exzellent ausgedachte und umgesetzte Funktion kann unter
Umständen auch für Denial of Service-Attacken genutzt werden (angegebener Host
nicht ansprechbar).
|
Mit der Option -D <Decoy1 [,Decoy2][,ME],...> wird ein
so genannter Decoy-Scan (dt. Lockvolgel) veranlasst. Für einen unabhängigen
Betrachter sieht es so aus, als würde eine Reihe zusätzlicher Hosts die
Zielumgebung scannen. Durch die Option
-D host.fake1.com,ME,test.fake2.com verfälscht
nmap die Scan-Pakete mit den Absendeadressen von
host.fake1.com und test.fake2.com.
|
Die Option --data_length <Anzahl> legt die Länge der zu
versendenden Pakete fest. Normalerweise verschickt nmap
möglichst kleine Pakete, die lediglich aus dem Header bestehen. So weisen
TCP - Datagramme im Normalfall eine Länge von 40 und ICMP echo request-Anfragen
28 Bytes auf. Diese Option weist nmap an, die verschickten
Pakete um Null-Bytes zu verlängern. Pakete zur Erkennung des Betriebssystens
(-O) sind im Gegensatz zu Ping-Zugriffen und Portscan-Paketen
nicht betroffen. Natürlich verlangsamt sich dadurch das Scannen - aber ebenso
erhöht es die Unauffälligkeit des Scans.
Spielt Zeit eine untergeordnete Rolle, können durch Verwendung der Option
-q ein unauffälliges Verhalten eingestellt werden. (Siehe
auch Bugtraq, FTP, ICMP, IP, Linux, Networking, nmap, Ping, Port, RFC 792,
RFC 793, RFC 1413, Scanning, Security, Strobe, TCP, UDP, Unix, Windows)
|
|
Mit -g <Portadresse> wird der Ursprungsport eines Scans
definiert. Die Ports 20 und 53 sind erfahrungsgemäss eine gute Wahl.
|
Mit -e <Gerätename> wird bestimmt, an welcher
Schnittstelle (Device) die Datenpakete auf die Reise geschickt werden sollen. Je
nach dem muss für den Gerätename eth0, eth1 oder ppp0 definiert werden.
|
IPv6 wir mit der Option -6 erreicht. Momentan werden nur TCP
connect()- und Ping - Scans von nmap unterstützt. Sollen
UDP- oder andere Scan - Typen genutzt werden, lohnt sich ein Blick auf
http://nmap6.sourceforge.net/.
|
|
|