mirror of
https://github.com/nmap/nmap.git
synced 2025-12-06 04:31:29 +00:00
992 lines
50 KiB
Groff
992 lines
50 KiB
Groff
.\" This definition swiped from the gcc(1) man page
|
|
.de Sp
|
|
.if n .sp
|
|
.if t .sp 0.4
|
|
..
|
|
.TH NMAP 1
|
|
.SH NAME
|
|
nmap - Auswertungstool fuer Netzwerke und Security Scanner
|
|
.SH SYNTAX
|
|
.B nmap
|
|
[Scan-Typ(en)] [Optionen] <Host oder Netz #1 ... [#N]>
|
|
.SH BESCHREIBUNG
|
|
|
|
.I Nmap
|
|
wurde entwickelt, um Systemadministratoren und kuriosen Individuen die
|
|
Moeglichkeit zu geben, ansprechbare Systeme und die durch sie bereitgestellten
|
|
Dienste in grossen Netzwerken zu identifizieren.
|
|
.I nmap
|
|
unterstuetzt eine Vielzahl verschiedener Scanning-Techniken, wie zum Beispiel
|
|
UDP, TCP connect(), TCP SYN (half open), FTP-Proxy (bounce attack),
|
|
Reverse-ident, ICMP (Ping-Suchlauf), FIN, ACK-Suchlauf, Xmas-Tree,
|
|
SYN-Suchlauf, IP-Protocol und Null-Scan.
|
|
Siehe Absatz
|
|
.I Scan-Typen
|
|
fuer mehr Informationen. Ebenso ermoeglicht nmap eine Vielzahl von
|
|
zusaetzlichen Moeglichkeiten, wie das Erkennen von Betriebssystemen mittels
|
|
TCP/IP-Fingerprinting, Stealth-Scanning, dynamische Verzoegerungen und
|
|
Uebertragungswiederholungs-Berechnungen, paralleles Scanning, Entdecken
|
|
abgeschalteter Systeme mittels parallelem Scanning, Decoy-Scanning, entdecken
|
|
von Port-Filtering, direktes RPC-Scanning (ohne Portmapper), fragmentiertes
|
|
Scanning sowie flexible Ziel und Port Spezifizierung.
|
|
.PP
|
|
Ein Grossteil der Arbeit wurde in die Moeglichkeiten fuer non-root Benutzer
|
|
investiert. Leider benoetigen viele exotische Techniken (z.B. die Kernel-nahen
|
|
raw sockets) root-Privilegien. Aus diesem Grund sollte nmap stets als root
|
|
genutzt werden, sofern dies moeglich ist (natuerlich kein setuid root).
|
|
.PP
|
|
Das Resultat eines nmap-Durchlaufs ist normalerweise eine Liste saemtlicher
|
|
interessanter Ports der gescannten Geraete (falls vorhanden). Sofern eine
|
|
Zuweisung stattfinden kann, benennt nmap die well-known Ports direkt mit ihrem
|
|
Service-Namen, Portnummer, Status und Protokoll. Der Status ist
|
|
entweder 'open', 'filtered' oder 'unfiltered'. Open (dt. offen) bedeutet, dass
|
|
das Zielsystem auf diesem Port Verbindungen anzunehmen in der Lage ist.
|
|
Filtered (dt. gefiltert) weist darauf hin, dass ein dediziertes
|
|
Firewall-System, TCP/IP-Filter oder Netzwerk-Element die Arbeit von nmap
|
|
behindert und somit keine verlaesslichen Rueckschluesse gemacht werden
|
|
koennen. Unfiltered (dt. ungefiltert) heisst, dass nmap den Port kennt, jedoch
|
|
beim Zugriff keinerlei Filter-Mechanismen ausgemacht werden konnten. Der
|
|
ungefilterte Status wird in den meisten aller Faelle vorhanden sein, weshalb
|
|
ein solcher nur immer dann ausgwiesen wird, wenn die meisten der gescannten
|
|
Ports gefiltert (engl. filtered) sind.
|
|
.PP
|
|
Jenachdem, welche Optionen angewandt wurden, ist nmap in der Lage Auskunft
|
|
ueber die folgenden Charakteristiken des Zielsystems zu geben: Genutztes
|
|
Betriebssystem, TCP-Sequenznummern, Benutzername der an die Ports gebundene
|
|
Software, DNS-Name, ob es sich um ein Smurf-System handelt und viele mehr.
|
|
.SH OPTIONEN
|
|
Das Zusammenspiel verschiedener Optionen ist immer dann moeglich, wenn dies
|
|
auch Sinn macht. Einige Parameter koennen nur in Verbindung mit spezifischen
|
|
Scan-Methoden genutzt werden.
|
|
.I nmap
|
|
versucht unlogische und nicht unterstuetzte Kombinationen von Parametern
|
|
abzufangen und den Benutzer entsprechend zu warnen.
|
|
.Sp
|
|
Falls Sie ungeduldig sind, koennen Sie den Abschnitt
|
|
.I Beispiele
|
|
ueberspringen. Darin werden typische Befehlseingaben gezeigt. Ebenso kann
|
|
.B nmap -h
|
|
ausgefuehrt werden, um eine kurze Optionsreferenz ausgeben zu lassen.
|
|
.TP
|
|
.B SCAN-TYPEN
|
|
.TP
|
|
.B -sS
|
|
TCP SYN-Scan: Diese Technik wird oft als "halb-offen" (engl. "half-open")
|
|
bezeichnet, da keine volle TCP-Verbindung zustande kommt. Der Scanner schickt
|
|
ein TCP-Datagramm mit gesetzter SYN-Flagge an das Zielsystem, so wie dies im
|
|
Rahmen des Drei-Wege-Handschlags von TCP normalerweise auch der Fall ist. Nun
|
|
wird auf eine positive Rueckmeldung des Zielsystems gewartet. Kommt ein Paket
|
|
mit gesetzter SYN/ACK-Flagge zurueck, so wird der Zielport als im Status
|
|
LISTENING (dt. abhoerend) identifiziert. Im Gegenzug deutet ein RST-Datangramm
|
|
auf einen geschlossenen Port (engl. closed) hin. Wird ein SYN/ACK-Datagramm
|
|
entgegengenommen, schickt nmap (bzw. der Betriebssystem-Kernel) automatisch
|
|
ein RST zurueck, um den Verbindungsaufbau zu abzubrechen. Der primaere Vorteil
|
|
dieser Vorgehensweise ist, dass viele Systeme solcherlei Zugriffe nicht
|
|
protokollieren (Die meisten Applikationen interessieren sich nur fuer
|
|
vollstaendig etablierte Verbindungen). Leider setzt diese Scan-Technik
|
|
root-Privilegien voraus, da eine Generierung verhaeltnismaessig exotischer
|
|
Paket-Sequenzen von Noeten ist. Dies ist die standardmaessige Scan-Methode
|
|
fuer priviligierte Benutzer.
|
|
.TP
|
|
.B -sT
|
|
TCP connect()-Scan: Dies ist die klassische Form des TCP-Portscannings. Der
|
|
connect()-System-Call, der das Betriebssystem zur Verfuegung stellt, wird
|
|
immer dann genutzt, wenn eine Verbindung zum Port eines Zielsystems
|
|
hergestellt werden soll. Befindet sich der Zielport im Status LISTENING, so
|
|
wird der connect()-Zugriff erfolgreich ausfallen. Der entscheidende Vorteil
|
|
dieser Methode ist, dass keine erweiterten Rechte zur Durchfuehrung
|
|
erforderlich sind. Jeder Benutzer der meisten UNIX-Systeme ist in der Lage
|
|
solcherlei Zugriffe durchzufuehren.
|
|
.Sp
|
|
Diese Scan-Technik ist einfach zu entdecken und wird mit groesster
|
|
Wahrscheinlichkeit in den Protokoll-Dateien des Zielsystems auftauchen. Dies
|
|
ist der standardmaessig aktivierte Scan-Typ fuer unprivilegierte Anwender.
|
|
.TP
|
|
.B -sF -sX -sN
|
|
Stealth FIN-, Xmas-Tree- oder Null-Scan-Modis: Es gibt Momente, wo SYN-Scans
|
|
nicht heimlich genug ausfallen. Einige Firewall-Systeme (z.B. Packet-Filter)
|
|
sind in der Lage verdaechtige SYN-Aktivitaeten zu erkennen; ebenso koennen
|
|
Programme wie Synlogger oder Courtney die SYN-Portscans als solche ausweisen.
|
|
Diese erweiterten Scan-Techniken koennen somit in manchen Faellen ungehindert
|
|
die gewuenschten Resultate liefern.
|
|
.Sp
|
|
Die Idee ist, dass geschlossene Ports auf solcherlei Zugriffe mit einem
|
|
RST-Datagramm antworten muessten, waehrend ansprechbare Ports die Anfragen
|
|
ignorieren sollten (siehe RFC 793, S. 64). Der FIN-Scan nutzt ein
|
|
TCP-Datagramm mit gesetzter FIN-Flagge, waehrend der Xmas-Tree-Scan die
|
|
TCP-Flaggen FIN, URG und PSH aktiviert. Der Null-Scan schaltet alle optionalen
|
|
Flags ab. Leider ignoriert einmal mehr Microsoft die gaengigen Standards und
|
|
reagiert auf die exotischen Scan-Techniken ganz unerwartet. Dies bedeutet,
|
|
dass diese Scanning-Methoden nicht gegen Windows 9x, ME, NT, 2000 und XP
|
|
funktionieren. Auf der anderen Seite ist dies natuerlich hervorragend, wenn es
|
|
um das Identifizieren der TCP/IP-Implementierung von Microsoft geht: Findet
|
|
einer dieser Scans einen offenen Port, so kann davon ausgegangen werden, dass
|
|
es sich beim Zielsystem nicht um ein Windows handelt - Im Gegenzug deuten
|
|
unrealistisch viele offene Ports auf eine Windows-Maschine hin. Es gilt sich
|
|
jedoch noch die Meinung einer klassischen Scan-Methode (z.B. SYN) einzuholen.
|
|
Es gibt noch einige andere Betriebssysteme, die sich aehnlich demjenigen von
|
|
Microsoft verhalten. Dies sind zum Beispiel Cisco, BSDI, HP/UX, MVS und IRIX.
|
|
All diese retournieren ein Reset, auch wenn es sich um einen ansprechbaren
|
|
Port handelt. Mittlerweile ist diese knifflige Unterscheidungs-Arbeit mittels
|
|
exotischer Scanning-Techniken eher weniger wichtig, da nmap eine erweiterte
|
|
Methode fuer das Erkennen des eingesetzten Betriebssystems mitbringt.
|
|
.TP
|
|
.B -sP
|
|
Ping-Scanning: Manchmal ist es lediglich gefragt, welche Hosts in einem
|
|
Netzwerk aktiv sind. nmap kann diese Frage beantworten, indem eine ICMP echo
|
|
request-Anfrage an jede IP-Adresse im spezifizierten Netzwerk geschickt wird.
|
|
Hosts, die mit einer ICMP echo reply antworten, koennen als aktiv ausgewiesen
|
|
werden. Viele gewissenhafte Firewall- und Systemadministratoren filtern bzw.
|
|
verwerfen unnoetigen ICMP-Verkehr. nmap greift sodann auf eine andere Technik
|
|
zurueck. Es wird ein TCP-Datagramm mit gesetzter ACK-Flagge an einen
|
|
potentiell offenen Port des Zielsystems geschickt (standardmaessig TCP-Port
|
|
80). Wird ein RST zurueckgeschickt, so ist das Zielsystem vorhanden und
|
|
ansprechbar. Eine dritte Technik greift auf ein SYN-Datagramm zurueck, das auf
|
|
ein RST oder SYN/ACK wartet. Alle non-root Benutzer fuehren einen
|
|
connect()-Zugriff durch.
|
|
.Sp
|
|
Standardmaessig (bei root-Benutzern) fuehrt nmap beides - ICMP- und
|
|
ACK-Technik - parallel durch. Dies kann durch das Heranziehen der spaeter noch
|
|
detaillierter beschriebenen Option
|
|
.B -P
|
|
geaendert werden.
|
|
.Sp
|
|
Wichtig ist zu wissen, dass der Ping-Zugriff standardmaessig stets erfolgt.
|
|
Abhaengig der Erreichbarkeit eines Systems wird ein solches dann gescannt.
|
|
Benutzen Sie diese Option lediglich dann, wenn es um das Durchfuehren eines
|
|
Ping-Suchlaufs (
|
|
.B ohne
|
|
Portscan) geht.
|
|
.TP
|
|
.B -sU
|
|
UDP-Scans: Diese Methode wird stets dann herangezogen, wenn es um das
|
|
Identifizieren der offenen UDP-Ports (siehe RFC 768) eines Systems geht. Diese
|
|
Technik basiert darauf, dass ein UDP-Datagramm mit 0 Byte an Nutzdaten an
|
|
jeden Port des Zielsystems geschickt wird. Erhalten wir eine ICMP port
|
|
unreachable-Nachricht, so ist der Zielport geschlossen. Andererseits handelt
|
|
es sich um einen offenen Port.
|
|
.Sp
|
|
Einige Leute denken, dass UDP-Scanning sinnlos ist. Ich moechte in diesem
|
|
Zusammenhang auf die Luecke in Solaris' rpcbind hinweisen. rpcbind kann an
|
|
einem undokumentierten UDP-Port ueber 32770 gefunden werden. Bei diesem
|
|
Angriff und der vorangehenden Auswertung ist es sodann zu einem hohen Grad
|
|
irrelevant, ob Port 111 durch eine Firewall blockiert wird oder nicht. Ebenso
|
|
existiert das populaere, von cDc entwickelte Backdoor namens Back Orifice, das
|
|
durch einen frei waehlbaren UDP-Port Windows-Maschinen kontrollieren laesst.
|
|
Und nicht zu vergessen die vielen potentiell verwundbaren Dienste, die auf UDP
|
|
zurueckgreifen: SNMP, TFTP, NFS, etc.
|
|
.Sp
|
|
Traurigerweise ist UDP-Scanning in den meisten Faellen schmerzhaft langsam,
|
|
seitdem viele Betriebssystem-Entwickler der Empfehlung von RFC 1812 (Absatz
|
|
4.3.2.8) nachgekommen sind, die Anzahl ausgehender ICMP-Fehlernachrichten zu
|
|
limitieren. Zum Beispiel definiert der Linux-Kernel (in net/ipv4/icmp.h) die
|
|
Anzahl ausgehender ICMP destination unreachable-Fehlermeldungen auf 80 fuer 4
|
|
Sekunden, mit einer 1/4 Sekunde Zusatz fuer jeden Uebertritt. Solaris weist
|
|
einiges striktere Limitierungen auf (2 Nachrichten pro Sekunde), weshalb ein
|
|
UDP-Portscan gegen ein Solaris-System sehr lange dauert.
|
|
.I nmap
|
|
ist in der Lage solcherlei Limitierungen zu erkennen und mit einem dynamischen
|
|
Verlangsamen der Geschwindigkeit zu reagieren. Dies verhindert das Verstopfen
|
|
des Netzwerks mit unnoetigen Paketen, die sowieso vom Zielsystem ignoriert
|
|
werden wuerden.
|
|
.Sp
|
|
Einmal mehr typisch, ignoriert Microsoft die Empfehlungen des RFCs, weshalb
|
|
eine Einschraenkung ausgehender ICMP-Fehlermeldungen gaenzlich bei der
|
|
TCP/IP-Implementierung auf Windows 9x und NT fehlt. Das scannen saemtlicher
|
|
UDP-Ports auf einer Windows-Maschine ist somit kein groesseres Problem.
|
|
.TP
|
|
.B -sO
|
|
IP protocol-Scans: Diese Methode kommt dann zum Tragen, wenn herausgefunden
|
|
werden will, welche IP-Protokolle vom Zielsystem unterstuetzt werden. Diese
|
|
Technik basiert darauf, dass fuer jedes IP-Protokoll ein RAW IP-Paket mit
|
|
fehlendem Protokoll-Header an das Zielsystem geschickt wird. Erhalten wir eine
|
|
ICMP protocol unreachable-Fehlermeldung, so koennen wir davon ausgehen, dass
|
|
das besagte Protokoll nicht unterstuetzt wird. Faellt das Resultat anders aus,
|
|
kann mit einer Protokoll-Unterstuetzung gerechnet werden. Es ist wichtig zu
|
|
bemerken, dass einige Betriebssysteme (z.B. AIX, HP-UX und Digital UNIX) und
|
|
Firewall-Loesungen auf das Versenden der ICMP protocol
|
|
unreachable-Fehlermeldungen gaenzlich verzichten. Das Resultat eines solchen
|
|
Verhaltens ist die durch nmap generierte Ausgabe, dass saemtliche Protokolle
|
|
"offen" sind.
|
|
.Sp
|
|
Aufgrund dessen, dass diese Scan-Methode in ihren Grundzuegen auf den
|
|
Prinzipien des UDP-Portscannings aufbaut, spielt die Rate der potentiell
|
|
generierten ICMP-Fehlermeldungen eine beachtliche Wichtigkeit. Da das
|
|
IP-Protokoll Feld nur 8 Bits hat, muessen lediglich 256 Protokolle gescannt
|
|
werden, was sich in einem angemessenen Zeitrahmen erledigen laesst.
|
|
.TP
|
|
.B -sI <Zombie-Host[:Zielport]>
|
|
Idlescan: Diese erweiterte Scan-Technik ermoeglicht ein blindes Scannen der
|
|
TCP-Port eines Ziels (dies bedeutet, dass keinerlei Pakete mit der richtigen
|
|
IP-Absenderadresse verschickt werden). Stattdessen wird eine einzigartige
|
|
Attacke angewandt, die die Berechenbarkeit der IP Fragmentation ID eines
|
|
Zombie-Hosts ausnutzt. Intrusion Detection-Systeme werden den Scan-Versuch
|
|
dem spezifizierte Zombie-System zuschreiben (welches ansprechbar sein und
|
|
bestimmte Kriterien erfuellen muss). Ich habe eine Publikation zu diesem
|
|
Thema verfasst, die sich unter http://www.insecure.org/nmap/idlescan.html
|
|
findet.
|
|
.Sp
|
|
Neben der vollkommenen Sicherheit, nicht direkt erkannt werden zu koennen,
|
|
ermoeglicht dieser Scan-Typ das Erkennen von IP-basierenden
|
|
Vertrauensbeziehungen zwischen Geraeten. Das Port-Listing zeigt die offenen
|
|
Ports
|
|
.I aus der Sicht des Zombie-Systems.
|
|
Es ist sodann Moeglich das effektive Zielsystem durch verschiedene Zombies
|
|
scannen zu lassen, die eine bestehende Vertrauensbeziehung haben (via Router-
|
|
oder Packetfilter-Regeln). Ganz offensichtlich ist dies eine gewichtige
|
|
Information, wenn es um das Priorisieren von Angriffszielen geht. Andererseits
|
|
muessten Penetration Tester zuerst muehsam ein System kompromittieren, bis
|
|
verlaesslich gesagt werden kann, ob ueberhaupt die erforderliche
|
|
Vertrauensbeziehung besteht.
|
|
.Sp
|
|
Durch einen Doppelpunkt laesst sich die Portnummer des Zombiesystems
|
|
definieren. Ohne diese Angabe waehlt nmap den Standardport, der auch bei
|
|
TCP-Pings Verwendung findet (TCP-Port 80).
|
|
.TP
|
|
.B -sA
|
|
ACK-Scan: Auf diese erweiterte Scan-Technik wird normalerweise immer dann
|
|
zurueckgegriffen, wenn es um das Identifizieren eines Firewall-Regelwerks
|
|
geht. Zusaetzlich kann diese Methode eine Determinierung des Vorhandenseins
|
|
einer Stateful Inspection, die eingehende SYN-Pakete blockt, ermoeglichen.
|
|
.Sp
|
|
Dieser Scan-Typ schickt ein ACK-Paket (mit zufaellig gewaehlten
|
|
Bestaetigungs-/Sequenznummern) an den spezifizierten Zielport. Kommt ein RST
|
|
zurueck, wird der besagte Port als "unfiltered" (dt. ungefiltert) eingestuft.
|
|
Erhalten wir keine Rueckantwort (oder kommt ein ICMP unreachable zurueck), so
|
|
weist nmap den Port als "filtered" (dt. gefiltert) aus. Wichtig ist, dass
|
|
.I nmap
|
|
normalerweise keine "unfiltered" ausgibt. So sind
|
|
.B keine
|
|
Ports in der Ausgabe ein Indiz dafuer, dass alle Zugriffe durchgekommen sind
|
|
(und ein RST verursacht haben). Dieser Scan wird die Ports nie in einem
|
|
"open" (dt. offenen) Status zeigen.
|
|
.TP
|
|
.B -sW
|
|
Window-Scan: Diese erweiterte Scan-Technik ist dem ACK-Scan sehr aehnlich.
|
|
Ausser, dass hiermit manchmal auch offene, ungefilterte und gefilterte Ports
|
|
durch eine Anomalie in der durch die Betriebssysteme gewaehlten TCP window
|
|
size entdeckt werden koennen. Systeme, die gegen diese Attacke verwundbar sind,
|
|
sind einige Versionen von AIX, Amiga, BeOS, BSDI, Cray, Tru64 UNIX, DG/UX,
|
|
OpenVMS, Digital UNIX, FreeBSD, HP-UX, OS/2, IRIX, MacOS, NetBSD, OpenBSD,
|
|
OpenStep, QNX, Rhapsody, SunOS 4.x, Ultrix, VAX and VxWorks. Siehe das Archiv
|
|
der nmap-Hackers Mailingliste fuer eine vollstaendige Auflistung.
|
|
.TP
|
|
.B -sR
|
|
RPC-Scan: Diese Methode arbeitet in Kombination mit den meisten moeglichen
|
|
Scan-Typen von nmap zusammen. Jeder als offen identifizierte TCP- und UDP-Port
|
|
wird mit einer Vielzahl von SunRPC-Nullkommandos ueberflutet, um eine
|
|
Identifizierung von RPC-Ports vorzunehmen. Falls ein solcher gefunden wurde,
|
|
wird der Programmname und die Version ausgelesen, sofern diese Information zur
|
|
Verfuegung gestellt wird. Diese Vorgehensweise ist ebenso mit dem Heranziehen
|
|
von 'rpcinfo -p' moeglich; besonders dann, wenn des Zielsystems Portmapper
|
|
hinter einer restriktiven Firewall steht oder durch einen TCP-Wrapper
|
|
geschuetzt wird. Decoy-Scans arbeiten zur Zeit nicht mit RPC-Scans zusammen.
|
|
Irgendwann wird vielleicht Decoy-Scanning im Zusammenhang mit UDP-RPC-Scans
|
|
moeglich sein.
|
|
.TP
|
|
.B -sL
|
|
List-Scan: Diese simple Methode generiert eine Liste aller IP-Adressen und
|
|
Hostnamen, ohne die Zielsysteme direkt anzusprechen (Ping oder Portscan).
|
|
Eine Namensaufloesung ueber DNS findet stets statt, sofern dies nicht durch
|
|
das Heranziehen von -n unterbunden wird.
|
|
.TP
|
|
.B -b <FTP-Relay Host>
|
|
FTP-Bounce Attacke: Ein interessantes "Feature" des File Transport Protocols
|
|
(RFC 959) ist die Unterstuetzung von "Proxy"-FTP-Verbindungen. Mit anderen
|
|
Worten ist es moeglich, sich von boese.com auf ziel.com zu verbinden und
|
|
eine Datei ueberall hin zu schicken. Nun, dies hat wohl ausgezeichnet
|
|
funktioniert, als 1985 das besagte RFC geschrieben wurde. In der heutigen
|
|
Zeit ist es nicht mehr ohne weiteres Moeglich, sich auf fremde FTP-Server zu
|
|
verbinden und nach Belieben Dateien zu versenden. *Hobbit* schrieb 1995
|
|
folgendes zu dieser Schwachstelle: "[This protocol flaw] can be used to post
|
|
virtually untraceable mail and news, hammer on servers at various sites, fill
|
|
up disks, try to hop firewalls, and generally be annoying and hard to track
|
|
down at the same time." Bei dieser Scanning-Methode wird ein als Proxy
|
|
fungierender FTP-Server genutzt, um die offenen Ports eines Zielsystems
|
|
ausfindig zu machen. Beispielsweise kann dadurch zu einem hinter einer
|
|
Firewall positionierten FTP-Server verbunden werden, um danach interne, durch
|
|
das Firewall-Element gegen externe Zugriffe geschuetzte Ports (z.B. die
|
|
NetBIOS-Ports) anzusprechen. Falls auf dem FTP-Server ein Verzeichnis
|
|
existiert, bei dem sowohl Lese- als auch Schreibrechte vorhanden sind (z.B.
|
|
/incoming), kann eine semi-manuelle Uebergabe von Daten an die Zielports
|
|
durchgefuehrt werden (nmap nimmt einem diese Arbeit nicht ab).
|
|
.Sp
|
|
Das mit der Option '-b' uebergebene Argument, spezifiziert den als Proxy
|
|
gewollten Host, wobei die standard URL-Notation gilt. Das Format lautet
|
|
.I Benutzername:Passwort@Server:Port.
|
|
Alles, ausser
|
|
.I Server
|
|
ist optional. Wie eine Determinierung der gegen diese Zugriffsform verwundbare
|
|
Server vorgenommen werden kann, kann in meinem Artikel in
|
|
.I Phrack
|
|
51 nachgelesen werden. Eine aktualisierte Version ist auf der
|
|
.I nmap
|
|
Webseite (http://www.insecure.org/nmap) verfuegbar.
|
|
.TP
|
|
.B GENERELLE OPTIONEN
|
|
Keine der folgenden Optionen ist erforderlich. Einige von ihnen koennen jedoch
|
|
nuetzlich sein.
|
|
.TP
|
|
.B -P0
|
|
Verhindert das Pingen eines Hosts, bevor er gescannt wird. Dies ermoeglicht
|
|
das Scannen von Netzwerken, die keine ICMP echo requests (oder responses)
|
|
aufgrund einer restriktiv konfigurierten Firewall zulassen. microsoft.com ist
|
|
ein Beispiel fuer ein solches Netzwerk, in dem diese Funktion stets genutzt
|
|
werden sollte. Gebrauchen Sie
|
|
.B -P0
|
|
oder
|
|
.B -PT80
|
|
wenn ein Portscan gegen microsoft.com durchgefuehrt werden soll.
|
|
.TP
|
|
.B -PT
|
|
Benutzt einen TCP-Ping, um die Erreichbarkeit eines Hosts zu verifizieren.
|
|
Anstatt ICMP echo request-Abfragen zu verschicken und auf die entsprechenden
|
|
ICMP echo reply-Rueckantworten zu warten, wird auf ein TCP-Datagramm mit
|
|
gesetzter ACK-Flagge gesetzt. Ansprechbare Systeme sollten mit einem RST
|
|
antworten. Diese Funktion ist immer dann anzuwenden, wenn Systeme oder
|
|
Netzwerke gescannt werden sollen, die keine Erreichbarkeitsueberpruefung
|
|
mittels ICMP zulassen und trotzdem zuerst die Erreichbarkeit identifiziert
|
|
werden soll. Bei non-root Benutzern wird connect() angewandt. Um den Zielport
|
|
des Zugriffs zu spezifizieren, kann -PT<Portnummer> herangezogen werden. Der
|
|
Standardport ist einmal mehr TCP/80 (HTTP), da dieser eher selten durch einen
|
|
Filter gedeckt wird.
|
|
.TP
|
|
.B -PS
|
|
Diese Option benutzt fuer root-Benutzer SYN (Verbindungsanforderungen) anstatt
|
|
ACK-Pakete. Ansprechbare Hosts sollten mit einem RST (oder in seltenen Faellen
|
|
mit einem SYN/ACK) antworten. Das Setzen des Zielports kann auf die selbe Art
|
|
wie beim zuvor erlaeuterten -PT umgesetzt werden.
|
|
.TP
|
|
.B -PI
|
|
Diese Option 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 durchfuehren. Solcherlei
|
|
sollten verhindert werden, denn sie sind Voraussetzung fuer eine Reihe von
|
|
Denial of Service-Attacken (Smurf ist die bekannteste Variante).
|
|
.TP
|
|
.B -PP
|
|
Benutzt eine ICMP timestamp-Anfrage (Typ 13, Code 0), um ansprechbare Hosts zu
|
|
finden.
|
|
.TP
|
|
.B -PM
|
|
Das Gleiche wie
|
|
.B -PI
|
|
und
|
|
.B -PP
|
|
, ausser, dass eine ICMP address mask request (Typ 17, Code 0) zum Tragen kommt.
|
|
.TP
|
|
.B -PB
|
|
Dies ist der standardmaessig gewaehlte Ping-Typus. Er benutzt beide Techniken,
|
|
ACK (
|
|
.B -PT
|
|
) und ICMP echo requests (
|
|
.B -PI
|
|
), die jeweils parallel durchgefuehrt werden. Auf diese Weise koennen
|
|
Firewall-Elemente ausgetrickst werden, die eine der beiden Protokolle (nicht
|
|
beide) filtern. Der Zielport fuer den TCP-Zugriff kann auf die gleiche Weise
|
|
gesetzt werden, wie im zuvor erklaerten -PT.
|
|
.TP
|
|
.B -O
|
|
Diese Option aktiviert das Identifizieren des am Zielsystem eingesetzten
|
|
Betriebssystems anhand des TCP/IP-Fingerabdrucks (engl. TCP/IP fingerprint).
|
|
Es wird eine Anzahl spezifischer Tests umgesetzt, die das typische Verhalten
|
|
der jeweiligen TCP/IP-Implementierungen erkennen koennen sollen. Die
|
|
gegebenen Informationen stellen quasi einen 'Fingerabdruck' dar, der mit der
|
|
Datenbank der bekannten Betriebssystem-Fingerabdrucke (die
|
|
nmap-os-fingerprints Datei) verglichen wird.
|
|
.Sp
|
|
Falls nmap nicht in der Lage ist, eine mehr oder weniger eindeutige
|
|
Identifikation des am Zielsystem eingesetzten Betriebssystems vorzunehmen und
|
|
die gegebenen Bedingungen gut sind (mindestens ein ansprechbarer Port), gibt
|
|
nmap eine URL aus, bei der neu gefundene Fingerprints eingesendet werden
|
|
koennen. Dies setzt natuerlich voraus, dass Sie sich eindeutig im Klaren
|
|
darueber sind, um was fuer ein Betriebssystem es sich handelt. Durch diesen
|
|
Schritt koennen Sie aktiv an der Erweiterung der Datenbank mithelfen, wodurch
|
|
sie attraktiver fuer saemtliche Benutzer wird. Falls Sie beim Einsenden des
|
|
neuen Fingerabdrucks die IP-Adresse des Zielsystems mitangeben, muessen Sie
|
|
damit rechnen, dass es von uns zu Ueberpruefungszwecken gescannt wird.
|
|
.Sp
|
|
Die Option -O aktiviert ebenso einige weitere Tests. Einer dieser ist das
|
|
Messen der "Uptime". Hierzu wird das Timestamp-Feature von TCP genutzt (RFC
|
|
1323), um erkennen zu koennen, wann das Zielsystem das letzte mal neu
|
|
gestartet wurde. Diese Funktionalitaet wird natuerlich nur dann genutzt werden
|
|
koennen, wenn das Zielsystem diese Information auch entsprechend bereitstellt.
|
|
.Sp
|
|
Ein anderer Check, der durch die Option -O aktiviert wird, ist die
|
|
Klassifizierung der Berechenbarkeit der TCP-Sequenznummer des Zielsystems.
|
|
Das Ergebnis dieses Tests sagt aus, wie schwer es ist, eine bestehende
|
|
Verbindung des Zielsystems zu uebernehmen. Dies ist dann nuetzlich, wenn
|
|
auf IP-Adressen basierende Vertrauensbeziehungen (z.B. rlogin und
|
|
Firewall-Filter) missbraucht oder die Quelle eines Angriffs versteckt werden
|
|
sollen. Die mitgelieferte Difficulty-Number ist statistisch berechnet und kann
|
|
jeweils leicht abweichen. Zusaetzlich wird in knappen Worten (z.B. "worthy
|
|
challenge" or "trivial joke") der Zustand beschrieben. All dies wird nur dann
|
|
ausgegeben, wenn der Parameter -v mitangegeben wurde.
|
|
.Sp
|
|
Wenn die Option -O zusammen mit dem Verbose-Modus (-v) genutzt wird, wird
|
|
ebenso die Sequenz-Generierung der IPID ausgewiesen. Die meisten Geraete
|
|
werden als "incremental" klassifiziert, was bedeutet, dass sie fuer jedes
|
|
verschickte Paket eine Inkrementierung des ID-Felds im IP-Header vornehmen.
|
|
Ein solches Verhalten macht sie verwundbar gegen eine Reihe verschiedener
|
|
Auswertungs- und Spoofing-Attacken.
|
|
.TP
|
|
.B -6
|
|
Diese Option aktiviert die IPv6-Unterstuetzung. Saemtliche Ziele muessen mit
|
|
IPv6 zurecht kommen, sofern diese Option genutzt werden soll. Das
|
|
Spezifizieren der Ziele kann ganz normal ueber den DNS-Namen (AAAA record)
|
|
oder IPv6-Adresse (z.B. 3ffe:501:4819:2000:210:f3ff:fe03:4d0) geschehen.
|
|
Momentan sind TCP connect()- und Ping-Scans von nmap unterstuetzt. Falls UDP-
|
|
oder andere Scan-Typen genutzt werden sollen, lohnt sich ein Blick auf
|
|
http://nmap6.sourceforge.net/ .
|
|
.TP
|
|
.B -I
|
|
Hiermit wird das TCP reverse ident-Scanning aktiviert. Wie Dave Goldsmith in
|
|
einem Bugtraq-Posting aus dem Jahre 1996 publiziert hat, ermoeglicht das
|
|
ident-Protokoll (RFC 1413) das Identifizieren des Besitzers eines
|
|
TCP-Dienstes. So kann zum Beispiel eine Verbindung zum HTTP-Port des
|
|
Zielsystems hergestellt werden, um danach mittels ident herauszufinden, ob
|
|
der Webserver als root laeuft. Dies kann nur mit der Hilfe eines full-connect
|
|
TCP-Portscans (-sT) geschehen. Wenn
|
|
.B -I
|
|
aktiviert wird, wird der identd des Zielsystems fuer jeden als offen
|
|
identifizierten Port abgefragt. Logischerweise funktioniert diese ganze
|
|
Prozedur nicht, wenn das Zielsystem keinen identd aktiv hat.
|
|
.TP
|
|
.B -f
|
|
Diese Option erreicht, dass der durchgefuehrte SYN-, FIN-, Xmas- oder
|
|
Null-Scan mit fragmentierten IP-Paketen arbeitet. Die Idee ist, dass der
|
|
TCP-Header ueber mehrere Pakete verteilt werden soll, wodurch eine
|
|
Inspizierung durch Firewall- oder Intrusion Detection-Systeme erschwert wird.
|
|
Bei dieser Funktion ist Vorsicht geboten, denn viele der verbreiteten
|
|
Netzwerkanwendungen kommen mit derlei Datenverkehr nicht klar. Beispielsweise
|
|
erhielt ich bei meinem liebsten Sniffer ein segemtation fault, nachdem das
|
|
erste 36-byte Fragment eingelesen wurde. Danach kam gar ein 24-byte Paket!
|
|
Waehrend diese Methode keinen Erfolg bei Elementen verspricht, die eine
|
|
Warteschlange fuer IP-Fragmente haben (wie dies mittels der Option
|
|
CONFIG_IP_ALWAYS_DEFRAG unter Linux normalerweise der Fall ist), koennen
|
|
andere Umgebungen den enormen Aufwand fuer eine solche Analyse nicht tragen,
|
|
verzichten darauf und koennen deshalb ausgetrickst werden.
|
|
.Sp
|
|
Es bleibt zu bemerken, dass diese Option nicht auf allen Betriebssystemen
|
|
einwandfrei genutzt werden kann. Es arbeitet ohne Zwischenfaelle auf meinem
|
|
Linux, FreeBSD und OpenBSD; einige Leute berichten gar, dass es auch auf
|
|
anderen *NIX funktioniert.
|
|
.TP
|
|
.B -v
|
|
Verbose-Modus: Diese, eine sehr zu empfehlende Option, ermoeglicht eine
|
|
erweiterte Ausgabe von Informationen. Eine doppelte Nutzung ergibt einen
|
|
doppelt so grossen Effekt. Ebenso kann
|
|
.B -d
|
|
einige Male aktiviert werden, falls Sie wirklich vor einem ueberlasteten
|
|
Bildschirm verrueckt werden wollen!
|
|
.TP
|
|
.B -h
|
|
Diese handliche Funktion zeigt eine Kurzreferenz der nmap-Parameter. Wie Sie
|
|
vielleicht gemerkt haben, handelt es sich bei dieser man-Page nicht unbedingt
|
|
um eine 'handliche Kurzreferenz' :)
|
|
.TP
|
|
.B -oN <Protokoll-Dateiname>
|
|
Dies protokolliert die Resultate des Scans in einem normalen, fuer
|
|
.B Menschen lesbaren
|
|
Format in eine durch ein Argument spezifizierte Datei.
|
|
.TP
|
|
.B -oX <Protokoll-Dateiname>
|
|
Dies protokolliert die Resultate des Scans als
|
|
.B XML
|
|
in die durch ein Argument spezifizierte Datei. Dadurch koennen andere
|
|
Programme unkompliziert die durch nmap generierten Informationen auswerten und
|
|
verarbeiten. Durch das Argument '-' (ohne Anfuehrungszeichen) kann die
|
|
Ausgabe auf stdout (fuer Pipeline-Verarbeitung, etc.) umgeleitet werden. In
|
|
diesem Fall wird die normale Bildschirmausgabe unterdrueckt. Achtung vor
|
|
Fehlermeldungen (diese werden nach wie vor nach stderr geschickt). Ebenso ist
|
|
wichtig, dass '-v' in den meisten Faellen einige zusaetzliche Informationen
|
|
gewaehrleisten koennen wird. Die Dokumententypendefinition (engl. Document
|
|
Type Definition, abk. DTD), die fuer die XML-Ausgabe genutzt wird, steht unter
|
|
http://www.insecure.org/nmap/data/nmap.dtd bereit.
|
|
.TP
|
|
.B -oG <Protokoll-Dateiname>
|
|
Dies protokolliert die Resultate des Scans in eine
|
|
.B grepbare
|
|
Form in eine durch ein Argument spezifizierte Datei. Dadurch wird ein simples
|
|
Format angestrebt, welches alle Informationen auf einer Zeile ausgibt, weshalb
|
|
ganz einfach ein grep fuer Ports, OS-Informationen oder IP-Adressen umgesetzt
|
|
werden kann. Dieses einfache Format stellt meistens nicht so viele
|
|
Informationen bereit, wie dies bei anderen Ausgabevarianten der Fall ist.
|
|
Diese Form war die urspruenglich, fuer die Verarbeitung durch externe Programme
|
|
vorgehesene Dokumentierungs-Ausgabe. Mittlerweile ist jedoch XML empfohlen
|
|
(-oX). Einmal mehr kann die Angabe von '-' (ohne Anfuehrungszeichen) eine
|
|
Ausgabe auf stdout erzwingen (fuer Pipeline-Verarbeitung, etc.). Auch hier
|
|
wird die normale Ausgabe unterdrueckt. Ebenso werden Fehlermeldungen wie
|
|
ueblich auf stderr ausgegeben. Und '-v' wird in den meisten Faellen einige
|
|
zusaetzliche Informationen gewaehrleisten koennen.
|
|
.TP
|
|
.B -oA <Basisdateiname>
|
|
Dies veranlasst nmap in der Form ALLER wichtigen Formate (normal, grepbar und
|
|
XML) zu protokollieren. Sie geben den Dateinamen an, wobei nmap die
|
|
Erweiterungen in Form von basis.nmap, basis.gnmap und basis.xml automatisch
|
|
anfuegen wird.
|
|
.TP
|
|
.B -oS <Protokoll-Dateiname>
|
|
Dies protokolliert die Resultate der Scans in einem fuer
|
|
.B s|<ripT kiDd|3
|
|
lesbaren Format in eine durch ein Argument spezifizierte Datei. Durch die
|
|
Angabe des Arguments '-' (ohne Anfuehrungszeichen) kann die Ausgabe auf
|
|
stdout umgeleitet werden.
|
|
.TP
|
|
.B --resume <Protokoll-Dateiname>
|
|
Ein Netzwerk-Scan, der durch das Druecken von Control-C unterbrochen wurde,
|
|
kann durch diese Option reaktiviert werden. Der Protokoll-Dateiname muss
|
|
entweder eine normale (-oN) oder durch Maschinen verarbeitbare (-oM)
|
|
Scan-Protokoll-Datei sein. Die Angabe abweichender oder zusaetzlicher Optionen
|
|
ist nicht moeglich - Sie werden vom abgebrochenen Scan uebernommen. nmap wird
|
|
mit der zuletzt in der Protokoll-Datei erfolgreich gescannt vermerkten
|
|
Maschine starten.
|
|
.TP
|
|
.B --append_output
|
|
Weist nmap an, die Scan-Resultate an die spezifizierten Protokoll-Datei
|
|
anzuhaengen, anstatt die besagten Dateien zu ueberschreiben.
|
|
.TP
|
|
.B -iL <Eingabe-Dateiname>
|
|
Liest die Ziel-Spezifizierung ZUERST von der angegebenen Datei ein, und erst
|
|
danach von der Kommandozeileneingabe. Die Datei sollte eine Liste von Hosts
|
|
oder Netzwerken enthalten, die jeweils durch ein Leer-, Tabulator- oder
|
|
Neuezeile-Zeichen getrennt sind. Benutzen Sie einen Bindestrich (-) als
|
|
.I Eingabe-Dateiname
|
|
, falls Sie wollen, dass nmap die Zielspezifizierungen von stdin liest (wie
|
|
im Zusammenhang mit einer Pipe). Siehe den Absatz
|
|
.I Ziel-Definition
|
|
fuer zusaetzliche Informationen zu der gueltigen Ausdrucksweise.
|
|
.TP
|
|
.B -iR
|
|
Diese Option weist nmap an, zufaellig generierte Hosts zu scannen :). Dies hat
|
|
kein Ende. Eine solche Funktion ist zum Beispiel fuer eine statistische
|
|
Auswertung innerhalb des Internets nuetzlich. Falls Sie einmal wirklich sehr
|
|
gelangweilt sein sollten, so versuchen Sie
|
|
.I nmap -sS -iR -p 80
|
|
um Webserver-Systeme zu finden.
|
|
.TP
|
|
.B -p <Port-Bereich>
|
|
Diese Option spezifiziert, welche Ports gescannt werden sollen. Zum Beispiel
|
|
wird '-p 23' lediglich einen Zugriff auf den Port 23 (Telnet) der Zielsysteme
|
|
durchfuehren. '-p 20-30,139,60000-' scannt die Ports zwischen 20 und 30,
|
|
Port 139 und alle Ports groesser als 60000. Standardmaessig werden saemtliche
|
|
well-known Ports zwischen 1 und 1024 sowie alle in der services-Datei von nmap
|
|
gelisteten Dienste gescannt. Fuer einen IP-Protokoll-Scan (-sO) kann mit
|
|
dieser Option die zu scannende Protokoll-Nummer (0-255) angegeben werden.
|
|
.Sp
|
|
Werden gleichzeitig TCP- und UDP-Ports gescannt, so kann das jeweilige
|
|
Protokoll durch ein vorangestelltes "T:" oder "U:" angewaehlt werden. Die
|
|
mitgegebenen Ports gelten so lange fuer das spezifizierte
|
|
Uebertragungsprotokoll, bis ein anderes angegeben wird. Zum Beispiel werden
|
|
mit dem Argument "-p U:53,111,137,T:21-25,80,139,8080" die UDP-Ports 53, 111
|
|
und 137 sowie die TCP-Ports 21 bis 25, 80, 139 und 8080 gescannt. Wichtig ist,
|
|
dass bei einem gleichzeitigen TCP- und UDP-Scan neben der Angabe von -sU
|
|
mindestens eine TCP-Scan-Variante mitangegeben werden muss (zum Beispiel -sS,
|
|
-sF oder -sT). Wird bei der Wahl der Zielports auf das spezifizieren eines
|
|
Protokolls verzichtet, bezieht sich die Option auf saemtliche
|
|
Uebertragungsprotokolle.
|
|
.TP
|
|
.B -F
|
|
Schneller Scan-Modus (engl. Fast scan mode): Dies gibt an, dass Sie lediglich
|
|
die in der services-Datei von nmap gelisteten Dienste scannen wollen (oder bei
|
|
-sO die Protokolle der protocols-Datei). Selbstverstaendlich ist dies viel
|
|
schneller, als saemtliche 65535 Ports eines Hosts zu ueberpruefen.
|
|
.TP
|
|
.B -D <Decoy1 [,Decoy2][,ME],...>
|
|
Veranlasst einen sogenannten Decoy-Scan (dt. Lockvolgel). Bei diesem sieht es
|
|
so aus, als wuerde eine Reihe zusaetzlicher Hosts die Zielumgebung scannen.
|
|
Ein Intrusion Detection-System wird zwischen 5 und 10 Portscans verschiedener
|
|
IP-Adressen protokollieren, wobei ohne weiteres nicht genau festgestellt
|
|
werden kann, welches System den Scan wirklich durchfuehrt. Waehrend diese
|
|
Methode durch Router Path Traceing, Response-Dropping und andere "aktive"
|
|
Mechanismen niedergeschlagen werden kann, ist es doch eine extrem effektive
|
|
Technik, um die eigene IP-Adresse zu verstecken.
|
|
.Sp
|
|
Die jeweiligen Lockvoegel koennen durch ein Komma getrennt werden. Optional
|
|
kann durch die Angabe von 'ME' (dt. mich) die eigene Position in der
|
|
Zugriffsreihenfolge gewaehlt werden. Falls 'ME' in die sechste oder noch eine
|
|
spaetere Position gesetzt wird, sind einige Portscan-Detektoren (z.B. Solar
|
|
Designers scanlogd) nicht in der Lage, die richtige IP-Adresse anzuzeigen.
|
|
Falls Sie 'ME' nicht mitangeben, wird nmap eine zufaellige Position bestimmen.
|
|
.Sp
|
|
Achtung, die als Decoys angegebenen Hosts sollten vom Zielsystem erreichbar
|
|
sein. Andernfalls ist es durchaus moeglich, dass dieses durch einen SYN-Flood
|
|
in die Knie gezwungen wird. Zudem ist es relativ einfach zu erkennen, welches
|
|
System den Scan durchfuehrt, wenn nur dieses eine System wirklich im Netzwerk
|
|
aktiv ist. Es lohnt sich IP-Adressen anstatt Hostnamen bei der Spezifizierung
|
|
der Lockvogel-Systeme anzugeben (so ist keine Namensaufloesung noetig und die
|
|
Protokoll-Eintraege in den Nameservern bleibt aus).
|
|
.Sp
|
|
Ebenso weisen einige (dumme) "Portscan-Detektoren" Firewalling-Funktionalitaet
|
|
auf, und sie unterbinden die Verbindungsmoeglichkeit jeglichen Systems, das
|
|
einen Portscan durchfuehrt. So kann es durchaus sein, dass die
|
|
Verbindungsmoeglichkeit des Zielsystems zu den Lockvoegeln verhindert wird.
|
|
Dies ist dann problematisch, wenn es sich um ein wichtiges System, wie zum
|
|
Beispiel das Standard-Gateway, handelt. Also, es gilt vorsichtig im Umgang
|
|
mit dieser Option zu sein. Die Moral dieser Geschichte ist, dass
|
|
Portscan-Detektoren mit automatisierter Strike-Back Funktionalitaet keine gute
|
|
Idee sind - Hinter jedem Portscan koennte sich ein Lockvogel verbergen!
|
|
.Sp
|
|
Die Lockvoegel werden im initialen Ping-Scan (ICMP, SYN oder ACK) und waehrend
|
|
der eigentlichen Portscan-Phase verwendet. Ebenso finden sie beim Durchfuehren
|
|
einer Betriebssystem-Erkennung (
|
|
.B -O
|
|
) Verwendung.
|
|
.Sp
|
|
Es bleibt zu sagen, dass zu viele Lockvoegel einen Scan verlangsamen und
|
|
ineffizienter machen koennen. Ebenso filtern einige ISPs gespoofte Pakete
|
|
heraus, obwohl dies zur Zeit die wenigsten machen.
|
|
.TP
|
|
.B -S <IP-Adresse>
|
|
Unter bestimmten Umstaenden ist
|
|
.I nmap
|
|
nicht in der Lage, Ihre Quell-IP-Adresse zu identifizieren (
|
|
.I nmap
|
|
wird Ihnen dies mitteilen). In einer solchen Situation kann mit der Hilfe der
|
|
Option -S die IP-Adresse (der gewuenschten Schnittstelle) festgelegt werden.
|
|
.Sp
|
|
Eine andere Moeglichkeit dieser Option ist die Quelle des Scans zu spoofen, so
|
|
dass das Zielsystem glaubt, dass
|
|
.B jemand anderes
|
|
die Zugriffe durchfuehrt. Stellen Sie sich vor, dass eine Firma ploetzlich von
|
|
ihrem Konkurrenten einen Scan verzeichnet! Dies ist nicht der Hauptnutzen
|
|
dieser Option. Ich denke lediglich, dass diese Theorie einen guten Grund
|
|
bereitstellt, nicht sofort jeden als Scanner zu beschimpfen, nur weil es
|
|
scheint, dass von ihm ein Scan gestartet wurde.
|
|
.TP
|
|
.B -e <Schnittstelle>
|
|
Weist nmap an, ueber welche Schnittstelle die Daten verschickt und empfangen
|
|
werden sollen. nmap sollte in der Lage sein diesen Umstand von sich aus zu
|
|
erkennen. Falls dem nicht so ist, kann diese Option herangezogen werden.
|
|
.TP
|
|
.B -g <Portnummer>
|
|
Definiert den Quellport fuer die Scans. Einige naive
|
|
Firewall-Implementierungen machen bei DNS (53) und FTP-DATA (20) eine Ausnahme
|
|
und lassen solcherlei Verbindung entgegen der Bestimmungen im Regelwerk zu.
|
|
Obschon dieser Umstand ganz einfach durch Angreifer ausgenutzt werden kann, um
|
|
sich als FTP- oder DNS-System maskierend einen Vorteil zu verschaffen. Fuer
|
|
einen UDP-Scan sollte 53 als erstes ausprobiert werden. Bei einem TCP-Scan
|
|
bieten sich 20 und 53 an. Achtung, es handelt sich bei dieser Option lediglich
|
|
um eine Anfrage, die nicht zwingend in jeder Situation von nmap umgesetzt
|
|
werden will und kann. Zum Beispiel ist eine ISN-Analyse nicht von System:Port
|
|
zu System:Port moeglich, so dass nmap eine dynamische Portzuweisung
|
|
durchfuehrt, auch wenn anderes durch -g angegeben wurde.
|
|
.Sp
|
|
Seien Sie gewarnt, dass diese Option bei einigen Scan-Varianten
|
|
Performance-Einbussen mit sich bringt.
|
|
.TP
|
|
.B --data_length <Anzahl>
|
|
Normalerweise verschickt nmap moeglichst kleine Pakete, die lediglich aus dem
|
|
Header bestehen. So weisen TCP-Datagramme im Normalfall eine Laenge von 40 und
|
|
ICMP echo request-Anfragen 28 Bytes auf. Diese Option weist nmap an, die
|
|
verschickten Pakete um Null-Bytes zu verlaengern. Pakete zur Erkennung des
|
|
Betriebssystens (-O) sind nicht betroffen. Ganz im Gegensatz zu
|
|
Ping-Zugriffen und Portscan-Paketen. Dies verlangsamt natuerlich die Zugriffe
|
|
unter Umstaenden - Aber ebenso kann es die Unauffaelligkeit des Scans
|
|
erhoehen.
|
|
.TP
|
|
.B -n
|
|
Sagt nmap, dass
|
|
.B NIE
|
|
reverse DNS-Aufloesungen von als aktiv identifizierten IP-Adressen
|
|
durchgefuehrt werden sollen. Da DNS oft langsam ist, kann diese Option die
|
|
Zugriffe beschleunigen.
|
|
.TP
|
|
.B -R
|
|
Sagt nmap, dass
|
|
.B IMMER
|
|
reverse DNS-Aufloesungen von als Ziel spezifizierten IP-Adressen durchgefuehrt
|
|
werden sollen. Dies wird im Normalfall nur immer dann durchgefuehrt, wenn ein
|
|
Zielsystem als aktiv identifiziert werden konnte.
|
|
.TP
|
|
.B -r
|
|
Sagt nmap, dass
|
|
.B KEINE
|
|
zufaellige Wahl beim Scannen der Ports gewuenscht ist.
|
|
.TP
|
|
.B --ttl <time to live>
|
|
Setzt den "Time to live" Wert im IPv4 Header.
|
|
.TP
|
|
.B --randomize_hosts (dt. zufaellige Reihenfolge der Hosts)
|
|
Sagt nmap, dass bei einer Gruppe von bis zu 2048 Zielen eine zufaellige
|
|
Reihenfolge gewaehlt werden soll, bevor sie gescannt werden. Dies kann den
|
|
Scanvorgang fuer viele Netzwerk-Monitoring-Systeme schwieriger zu entdecken
|
|
machen; ganz besonders dann, wenn langsame Timing-Optionen angewandt werden
|
|
(siehe unten).
|
|
.TP
|
|
.B -M <Maximale Sockets>
|
|
Setzt die maximale Anzahl der Sockets bei einem parallel durchgefuehrten TCP
|
|
connect()-Scan fest. Dies ist zum Beispiel in Situationen nuetzlich, wenn der
|
|
Scanvorgang kuenstlich verlangsamt werden soll, damit das Zielsystem nicht
|
|
unter der Last der Zugriffe zusammenbricht. Eine andere Herangehensweise ist
|
|
durch -sS gegeben, die durch die Geraete oft einfacher zu handhaben ist.
|
|
.TP
|
|
.B TIMING-OPTIONEN
|
|
Normalerweise macht nmap hervorragende Arbeit, um waehrend eines Scans das
|
|
Maximum an Performance herauszuholen, ohne Fehlermeldungen zu Hosts oder Ports
|
|
zu provozieren. Trotzdem kann es Situationen geben, in denen das Timing von
|
|
nmap nicht dem von Ihnen gewuenschten entspricht. Die folgenden Optionen
|
|
ermoeglichen eine feine Skalierbarkeit der Kontrolle bezueglich des
|
|
Scan-Timings:
|
|
.TP
|
|
.B -T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
|
|
Diese vordefinierten Timing-Richtlinien erlauben Ihnen nmap Ihre Prioritaeten
|
|
mitzuteilen. Der
|
|
.B Paranoid
|
|
-Modus scannt
|
|
.B sehr
|
|
langsam, in der Hoffnung, nicht von Intrusion Detection-Systemen entdeckt zu
|
|
werden. Die Scans werden in Serie geschaltet (kein paralleles Scanning) und im
|
|
Normalfall wird bis zu 5 Minuten zwischen dem Versand der Pakete gewartet.
|
|
.B Sneaky
|
|
(dt. schleichend) ist aehnlich, ausser, dass lediglich 15 Sekunden zwischen
|
|
dem Paket-Versand gewartet wird.
|
|
.B Polite
|
|
(dt. hoeflich) wird dann relevant, wenn die Netzwerkbelastung niedrig gehalten
|
|
werden will. Zum Beispiel, um Abstuerze von Systemen zu vermeiden. Die
|
|
Zugriffe werden wiederum in Serie geschaltet und zwischen den Zugriffen wird
|
|
.B mindestens
|
|
0.4 Sekunden gewartet.
|
|
.B Normal
|
|
spiegelt das normale Verhalten von nmap wieder, was einen Kompromiss zwischen
|
|
maximaler Geschwindigkeit bei absoluter Zuverlaessigkeit darstellt.
|
|
.B Aggressive
|
|
(dt. aggressiv) fuegt eine Wartezeit von 5 Minuten zwischen den einzelnen
|
|
Hosts hinzu. Es wird jedoch nie laenger als 1.25 Sekunden auf Antworten
|
|
gewartet.
|
|
.B Insane
|
|
(dt. geisteskrank) ist lediglich in sehr schnellen Netzwerken moeglich. Oder
|
|
ueberall dort, wo auf die Zuverlaessigkeit des Resultat nicht sonderlich viel
|
|
gegeben wird. Zwischen den einzelnen Systemen wird 75 und zwischen den
|
|
Zugriffen 0.3 Sekunden gewartet. Dies lohnt sich zum Beispiel fuer einen
|
|
schnellen Netzwerk-Suchlauf :). Die einzelnen Modi koennen ebenso durch eine
|
|
Nummer (0-5) referenziert werden. Zum Beispiel gibt '-T 0' den
|
|
Paranoid-Modus an und '-T 5' steht fuer Insane.
|
|
.Sp
|
|
Diese spezifischen Timing-Modi sollten NICHT zusammen mit den nun folgend
|
|
vorgestellten Timing-Optionen verwendet werden.
|
|
.TP
|
|
.B --host_timeout <Millisekunden>
|
|
Spezifiziert den Zeitraum, der nmap gegeben wird, um ein einzelnes System zu
|
|
scannen, bevor sich einer neuen IP-Adresse gewidmet wird. Der Standardwert hat
|
|
kein Timeout fuer Hosts.
|
|
.TP
|
|
.B --max_rtt_timeout <Millisekunden>
|
|
Spezifiziert den Zeitraum, der nmap gegeben wird, um eine Antwort zu warten,
|
|
bevor eine Uebertragunswiederholung eingeleitet wird oder das Timeout in Kraft
|
|
tritt. Der Standardwert ist auf 9000 gesetzt.
|
|
.TP
|
|
.B --min_rtt_timeout <Millisekunden>
|
|
Antwortet ein Host sehr schnell auf unsere Anfragen, wird nmap das Zeitlimit
|
|
fuer zukuenftige Zugriffe auf das besagte Zielsystem verkleinern. Dies bringt
|
|
einen Geschwindigkeitsvorteil mit sich, wobei jedoch auch Pakete verloren
|
|
gehen koennen, falls ploetzlich ein Antworten in der vorhergesehenen
|
|
Zeitspanne nicht mehr moeglich sein sollte. Mit dieser Option kann nmap
|
|
angewiesen werden, dass immer mindestens ein bestimmter Zeitwert gewartet
|
|
werden soll, bevor der Vorgang abgebrochen wird.
|
|
.TP
|
|
.B --initial_rtt_timeout <Millisekunden>
|
|
Spezifiziert das Timetout fuer den initialen Zugriff. Dies ist normalerweise
|
|
nur dann sinnvoll, wenn durch Firewall-Systeme geschuetzte Hosts mit der
|
|
Option -P0 gescannt werden sollen. Normalerweise ist nmap in der Lage den
|
|
RTT-Wert anhand des Ping-Zugriffs und der ersten Auswertungen optimal
|
|
festzulegen. Der Standardwert lautet 6000.
|
|
.TP
|
|
.B --max_parallelism <Anzahl>
|
|
Spezifiziert die maximale Anzahl parallel von nmap durchfuehrbaren Zugriffe.
|
|
Das Setzen dieser Option heisst fuer nmap, dass nie mehr als 1 Port auf einmal
|
|
gescannt werden soll. Ebenso sind andere Scan-Typen betroffen, die
|
|
normalerweise parallel durchgefuehrt werden koennen (z.B. Ping-Suchlauf,
|
|
RPC-Scan, etc.).
|
|
.TP
|
|
.B --min_parallelism <Anzahl>
|
|
Weist nmap an, beim Scan eine gewisse Anzahl von Ports parallel zu scannen.
|
|
Dies kann unter Umstaenden den Auswertungs-Vorgang von Firewall-Systemen
|
|
beschleunigen. Aber seien Sie vorsichtig: Die Resultate werden umso
|
|
unzuverlaessiger, desto hoeher die Anzahl paralleler Zugriffe gesetzt wird.
|
|
.TP
|
|
.B --scan_delay <Millisekunden>
|
|
Spezifiziert das
|
|
.B Minimum
|
|
der Zeit, die nmap zwischen den jeweiligen Zugriffen warten muss. Dies ist
|
|
sehr nuetzlich, um das Datenaufkommen in Netzwerken zu reduzieren oder durch
|
|
den langsameren Scanvorgang vor IDS-Tresholds verborgen zu bleiben.
|
|
.TP
|
|
.B --packet_trace
|
|
Sagt nmap, dass saemtliche verschickten und empfangenen Pakete in einem
|
|
tcpdump-aehnlichen Format dargestellt werden sollen. Dies ist ganz besonders
|
|
fuer Debugging nuetzlich. Ausserdem kann so viel ueber die Funktionsweise
|
|
gelernt werden.
|
|
.SH ZIEL-SPEZIFIKATION
|
|
Alles, das nmap nicht als Option mitgegeben wird (oder ein Argument einer
|
|
Option darstellt) wird als Ziel-Spezifikation angesehen. Die einfachste Form
|
|
dessen, ist das Auflisten von einzelnen Hostnamen oder IP-Adressen in der
|
|
Kommandozeile. Falls Sie ein Subnetz scannen wollen, so koennen Sie
|
|
.B '/Maske'
|
|
am Hostnamen oder der IP-Adresse anfuegen. Die
|
|
.B Maske
|
|
muss einen Wert zwischen 0 (das ganze Internet scannen) und 32 (den einzelnen
|
|
Host scannen) aufweisen. Benutzen Sie /24 fuer das Scannen eines Klasse
|
|
C-Netzwerks und /16 fuer ein Klasse B-Netzwerk.
|
|
.Sp
|
|
nmap greift zudem auf eine sehr maechtige Notation zurueck, die eine sehr
|
|
komfortable Spezifikation von IP-Adressbereichen zulaesst. So kann das Klasse
|
|
B-Netzwerk 192.168.*.* mit der Angabe von '192.168.*.*'
|
|
oder '192.168.0-255.0-255' oder '192.168.1-50,51-255.1,2,3,4,5-255' gescannt
|
|
werden. Und selbstverstaendlich ist auch die verbreitete Netzmasken-Notation
|
|
zulaessig: '192.168.0.0/16'. All diese Eingaben fuehren zum gleichen Ziel.
|
|
Falls Sie das Asteriks-Zeichen (dt. Stern, '*') benutzen wollen, denken Sie
|
|
daran, dass einige Shells das Escapen mittels Backslashes oder das
|
|
Auskommentieren mittels Gaensefuesschen verlangen.
|
|
.Sp
|
|
Eine andere Moeglichkeit ist genau durch das umgekehrte Herangehen gegeben.
|
|
Anstatt ein ganzes Klasse B-Netzwerk zu scannen, kann mit der Angabe
|
|
von '*.*.5.6-7' jede IP-Adresse gescannt werden, die auf .5.6 oder .5.7 endet.
|
|
Fuer zusaetzliche Informationen, konsultieren Sie den Abschnitt
|
|
.I Beispiele
|
|
.SH BEISPIELE
|
|
Hier folgen nun einige Beispiele fuer das Nutzen von nmap. Diese reichen von
|
|
einfachen ueber normale bis hin zu komplexen Ansaetzen. Es werden existente
|
|
IP-Adressen und Domainnamen verwendet, um die Beispiele konkreter zu
|
|
gestalten. Anstatt ihrer Stelle sollten Sie Adressen und Namen
|
|
.B Ihres eigenen Netzwerks
|
|
benutzen. Ich bin der Meinung, dass Portscanning fremder Netzwerke nicht
|
|
illegal ist; ebenso sollten Portscans nicht als Angriffe gewertet werden. Ich
|
|
habe tausende Maschinen gescannt und bisher erst eine Rueckmeldung erfahren.
|
|
Jedoch bin ich kein Anwalt und einige (langweilige) Leute koennten durch
|
|
mittels
|
|
.I nmap
|
|
generierter Zugriffe nervoes werden. Holen Sie sich zuerst eine Erlaubnis fuer
|
|
Ihre Aktivitaeten ein oder tragen Sie die Risiken selbst.
|
|
.Sp
|
|
.B nmap -v ziel.beispiel.com
|
|
.Sp
|
|
Diese Option scannt alle reservierten TCP-Ports am Zielsystem mit dem Namen
|
|
ziel.beispiel.com. Das -v aktiviert den Verbose-Modus.
|
|
.Sp
|
|
.B nmap -sS -O ziel.beispiel.com/24
|
|
.Sp
|
|
Hier wird ein stealth SYN-Scan gegen jede der 255 Maschinen des Klasse
|
|
C-Netzwerks von ziel.beispiel.com gestartet. Ebenso wird versucht das
|
|
Betriebssystem der aktiven Systeme zu ermitteln. Dieser Vorgang erfordert
|
|
root-Privilegien aufgrund des SYN-Scans und der Betriebssystemerkennung.
|
|
.Sp
|
|
.B nmap -sX -p 22,53,110,143,4564 "198.116.*.1-127"
|
|
.Sp
|
|
Startet einen Xmas-Tree-Scan auf die erste Haelfte der 255 moeglichen 8
|
|
Bit Subnetze des Klasse B-Adressraums von 198.116. Wir ueberpruefen, ob am
|
|
Zielsystem SSHD, DNS, POP3D, IMAPD oder der Port 4564 aktiv ist. Wichtig ist,
|
|
dass Xmas-Scans nicht gegen Microsoft-Geraete funktionieren, da einige
|
|
Abweichungen bei der Implementierung des TCP-Stacks gemacht wurden. Das gleiche
|
|
gilt fuer Cisco-, IRIX-, HP/UX- und BSDI-Maschinen.
|
|
.Sp
|
|
.B nmap -v --randomize_hosts -p 80 '*.*.2.3-5'
|
|
.Sp
|
|
Manchmal ist es nicht erforderlich einen IP-Adressbereich zu scannen. So kann
|
|
es durchaus sein, dass in einer Situation das Absuchen spezieller Geraete
|
|
noetig wird. Dieses Kommando findet saemtliche Webserver, die eine IP-Adresse
|
|
aufweisen, die auf .2.3, .2.4 oder .2.5 endet. Falls Sie root sind, so kommt
|
|
eventuell ein Hinzufuegen von -sS in Frage. Ebenso koennten mehr interessante
|
|
Systeme gefunden werden, wenn bei 127 gestartet wird (IMHO). In diesem Fall
|
|
koennen die durch die Sterne gegebenen Platzhalter durch '127-222' ersetzt
|
|
werden.
|
|
.Sp
|
|
.B host -l firma.com | cut '-d ' -f 4 | ./nmap -v -iL -
|
|
.Sp
|
|
Fuehrt einen DNS-Zonetransfer durch, um saemtliche Hosts von firma.com zu
|
|
finden. Die Ausgabe der IP-Adressen wird sodann fuer die weitere Verarbeitung
|
|
zu
|
|
.I nmap
|
|
umgeleitet. Die dokumentierte Kommandofolge funktioniert nur auf Geraeten mit
|
|
GNU/Linux. Vielleicht muessen Sie auf anderen Betriebssystemen andere Kommandos
|
|
und Optionen heranziehen.
|
|
.SH FEHLER
|
|
Fehler? Was fuer Fehler? Senden Sie sie mir, falls sie solche finden.
|
|
Entsprechende Patches waeren auch gleich nett :) Denken Sie ausserdem daran,
|
|
neue OS-Fingerabdruecke einzusenden, damit die Datenbank wachsen kann. nmap
|
|
gibt eine URL zur Uebermittlung des unbekannten Fingerabdrucks aus.
|
|
.SH AUTOR
|
|
.Sp
|
|
Fyodor
|
|
.I <fyodor@insecure.org>
|
|
.SH UEBERSETZUNG
|
|
.Sp
|
|
Marc Ruef
|
|
.I <marc.ruef@computec.ch>
|
|
.Sp
|
|
http://www.computec.ch
|
|
.Sp
|
|
Wettingen, Oktober 2002
|
|
.SH DISTRIBUTION
|
|
Die neueste Version von
|
|
.I nmap
|
|
kann jeweils von
|
|
.I http://www.insecure.org/nmap/
|
|
bezogen werden.
|
|
.Sp
|
|
.I nmap
|
|
is (C) 1995-2002 by Insecure.Com LLC
|
|
.Sp
|
|
Dieses Programm gilt als freie Software; Sie koennen sie unter den
|
|
Lizenzbestimmungen der GNU General Public License, wie sie von der Free
|
|
Software Foundation in der Version 2 publiziert wurde, weitergeben und/oder
|
|
veraendern. Dies weist Ihnen das Recht zu, die Software unter den gegebenen
|
|
Bestimmungen zu nutzen, modifizieren und weiterzugeben. Falls Sie diese
|
|
Lizenzbestimmungen nicht akzeptieren wollen, ist Insecure.Org unter Umstaenden
|
|
in der Lage, eine alternative Lizenzbestimmung auszuhandeln (kontaktieren Sie
|
|
fyodor@insecure.org).
|
|
.Sp
|
|
Der Quelltext dieser Software wird aus diesem Grund zur Verfuegung gestellt,
|
|
weil wir glauben, dass die Benutzer ein Recht darauf haben zu wissen, was die
|
|
von ihnen eingesetzten Programme machen. Dies ermoeglicht zudem das
|
|
Ueberpruefen der Software auf etwaige Sicherheitsschwachstellen (bisher wurden
|
|
keine gefunden).
|
|
.Sp
|
|
Der Quelltext ermoeglicht zudem das Portieren von nmap auf neue Plattformen,
|
|
das Beheben von Fehlern und Hinzufuegen neuer Funktionalitaeten. Ich darf Sie
|
|
bitten entsprechende Aenderungen an fyodor@insecure.org zu schicken, um eine
|
|
etwaige Zusammenarbeit zu besprechen. Durch das Senden von Neuerungen an
|
|
Fyodor oder einem der Mitglieder der Entwickler-Meilingliste erlauben Sie die
|
|
unlimitierte, nicht-exklusive Weiterverwendung, Modifizierung und
|
|
Relizensierung. Dies ist insofern wichtig, da einige andere Free Software
|
|
Projekte (zum Beispiel KDE und NASM) sich mit unnoetigen Lizenzproblemen
|
|
konfrontiert sahen. nmap wird stets als open-source zur Verfuegung stehen.
|
|
Falls Sie sich an andere Lizenzbestimmungen halten moechten, so vermerken Sie
|
|
dies doch bitte beim Einsenden Ihres Materials.
|
|
.Sp
|
|
Dieses Programm wurde in der Hoffnung entwickelt, dass es nuetzlich ist;
|
|
jedoch
|
|
.B OHNE JEGLICHE GARANTIE.
|
|
Siehe die GNU General Public License fuer zusaetzliche Informationen (sie ist
|
|
in der Datei namens COPYING, die mit
|
|
.I nmap
|
|
mitgeliefert wird, enthalten).
|
|
.Sp
|
|
Es muss zusaetzlich erwaehnt werden, dass nmap in der Lage ist, schlecht
|
|
geschriebene Anwendungen, TCP/IP-Stacks und Betriebssysteme abstuerzen zu
|
|
lassen.
|
|
.B nmap sollte nie auf mission-critical Systeme angewandt werden
|
|
, ausser, wenn ein entsprechender Ausfall (engl. downtime) verkraftet werden
|
|
kann. Wir bestaetigen hiermit, dass nmap unter Umstaenden Systeme und Netzwerke
|
|
negativ beeinflussen kann. Wir tragen keine Verantwortung fuer Probleme, die
|
|
beim Nutzen von nmap entstehen koennen.
|
|
.Sp
|
|
Aufgrund dessen, dass das Risiko eines Absturzes besteht und einige Black Hats
|
|
nmap fuer das Auswerten von Angriffszielen missbrauchen, koennen einige
|
|
Administratoren allergisch auf das Scannen ihrer Systeme reagieren. Somit ist
|
|
es stets empfehlenswert, die Erlaubnis fuer das Scannen eines Netzwerks
|
|
einzuholen.
|
|
.Sp
|
|
nmap sollte aus Sicherheitsgruenden nie mit erweiterten Privilegien (z.B. suid
|
|
root) gestartet werden.
|
|
.Sp
|
|
Dieses Produkt beinhaltet Software-Teile, die von der Apache Software
|
|
Foundation (http://www.apache.org/) entwickelt wurden. Die
|
|
.I Libpcap
|
|
portable Bibliothek wird als Teil von nmap mitgeliefert. Libpcap wurde
|
|
urspruenglich durch Van Jacobson, Craig Leres und Steven McCanne,
|
|
alle vom Lawrence Berkeley National Laboratory, Universitaet von Kalifornien,
|
|
Berkeley, CA, entwickelt. Zur Zeit wird sie von http://www.tcpdump.org
|
|
betreut.
|