Je nach dem welche Optionen verwendet wurden, ist nmap in
der Lage, Auskunft über die folgenden Charakteristiken des Zielsystems zu geben:
-
Genutztes Betriebssystem
-
TCP- Sequenznummern
-
Benutzername, unter der die an die Ports gebundene Software abläuft
-
DNS-Name
-
ob es sich um ein Smurf - System handelt und viele mehr.
Die Kombination verschiedener Optionen ist immer dann möglich, wenn ein
Zusammenspiel auch Sinn macht. Einige Parameter können nur in Verbindung mit
spezifischen Scan-Methoden genutzt werden.
Mit dem Parameter -sP kann nmap die
aktiven Hosts in einem Netzwerk zu ermitteln. Dabei wird traditionell ein
ICMP-ECHO-(Typ 8)-Paket an ein Ziel geschickt, wobei bei dessen Erreichbarkeit
mit einem ICMP-ECHO-REPLY-(Typ 0)-Paket als Antwort signalisiert wird.
Viele gewissenhafte Firewall- und Systemadministratoren filtern unnötigen ICMP -
Verkehr. nmap greift in diesem Falle auf eine andere Technik
zurück - es wird ein TCP - Datagramm mit gesetztem ACK - Flag an einen
potentiell offenen Port des Zielsystems geschickt. Der Empfang eines RST-Paketes
bedeutet, dass das Zielsystem vorhanden und ansprechbar ist.
Führt auch diese Technik nicht zum Erfolg, so versucht nmap
eine weitere Methode, die auf ein SYN - Datagramm zurückgreift, das auf ein
RST oder SYN/ACK wartet.
Wichtig ist zu wissen, dass der Ping - Zugriff standardmäßig erfolgt. Wird dies
nicht gewünscht, so ist mit dem Parameter
-P0
dieses Verhalten zu deaktivieren.
Für Mass-Pings sind andere Tools nutzbar, deren Herangehensweise oftmals zu
besseren Resultaten führt (Zum Beispiel fping,
gping und hping).
user@linux $
nmap -sP 192.168.0.0/24
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Host gateway.matrix.net (192.168.0.1) appears to be up. Host prometheus.matrix.net (192.168.0.2) appears to be up. Host rieekan.matrix.net (192.168.0.3) appears to be up. Host margrit.matrix.net (192.168.0.4) appears to be up. Host roadrunner.matrix.net (192.168.0.5) appears to be up. Nmap run completed -- 256 IP addresses (5 hosts up) scanned in 1 second
|
|
Der Parameter -sT führt einen normalen TCP - Port Scan durch,
bei dem eine Verbindung zum Ziel - Port aufgebaut wird. Der Client beginnt mit
der Übertragung eines SYN-Paketes an den Server. Jener quittiert den Empfang mit
einem SYN-/ACK-Paket und wartet dann auf den Erhalt einer weiteren Bestätigung
durch ein ACK-Paket von Seiten des Clients (3-Way-Handshake).
Diese Scanning - Technik ist sehr leicht zu entdecken und wird mit größter
Wahrscheinlichkeit in den Protokoll-Dateien des Zielsystems auftauchen. Dies ist
die einzige Scan - Technik für unprivilegierte Anwender.
BeOS 4.5
user@linux $
nmap -sT 192.168.0.2
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Interesting ports on prometheus.matrix.net (192.168.0.2): Port State Protocol Service 23 open tcp telnet
Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds
|
Microsoft Windows 98
user@linux $
nmap -sT 192.168.0.3
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
Nmap run completed -- 1 IP address (1 host up) scanned in 8 seconds
|
SuSE Linux 6.3
user@linux $
nmap -sT 192.168.0.1
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
Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds
|
|
Mit Stealth - Scans (Tarnkappen) kann die Netzwerkanalyse verdeckt erfolgen.
Viele Firewall- und
IDS - Systeme sind gegen solche Scans machtlos.
Wie funktioniert das? Das 3-Way Handshake Protokoll wird missachtet oder anders
gesagt: ein Stealth - Scan führt keinen kompletten Verbindungsaufbau durch. Die
Interpretation der Antworten der Opferrechner führt zu den gewünschten
Erkenntnissen. Weil keine vollständige TCP - Verbindung zustande kommt, spricht
man auch vom halboffenen Scan.
Der Parameter -sS erlaubt es, einen halboffenen Scan
durchzuführen. Es wird einfach ein SYN-Paket zum Ziel-Port übertragen. Antwortet
der Ziel-Port mit SYN/ACK, kann davon ausgegangen werden, dass der Port den
Listening - Status besitzt. Wird RST/ACK zurückgegeben, kann mit ziemlicher
Wahrscheinlichkeit ein inaktiver Port zugeordnet werden. (Das Client-System
überträgt nach dem Empfang des Paketes des Hosts ein RST/ACK-Paket, sodass keine
vollständige Verbindung hergestellt wird.)
Diese Scanning - Technik funktioniert normalerweise nur bei UNIX-basierenden
TCP - Stacks. Es zeigt sich wieder einmal die inkorrekte Implementierung der
Windows - Stacks.
BeOS 4.5
root@linux #
nmap -sS 192.168.0.2
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Interesting ports on prometheus.matrix.net (192.168.0.2): Port State Protocol Service 23 open tcp telnet
Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds
|
Microsoft Windows 98
root@linux #
nmap -sS 192.168.0.3
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 41 open tcp graphics 134 open tcp ingres-net 139 open tcp netbios-ssn 168 open tcp rsvd 174 open tcp mailq [...] 2430 open tcp venus 2604 open tcp ospfd 4500 open tcp sae-urn 6110 open tcp softcm 7006 open tcp afs3-errors
Nmap run completed -- 1 IP address (1 host up) scanned in 20 seconds
|
SuSE Linux 6.3
root@linux #
nmap -sS 192.168.0.1
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
Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds
|
|
Die zugrundeliegende Idee besteht darin, dass laut RFC 793, S.64 geschlossene
Ports auf derartige Zugriffe mit einem RST - Datagramm antworten während
ansprechbare Ports die Anfragen ignorieren. Der FIN-Scan nutzt ein TCP -
Datagramm mit gesetztem FIN - Flag, während der Xmas - Tree - Scan die TCP -
Flags FIN, URG und PSH aktiviert. Der Null - Scan schaltet alle optionalen
Flags ab.
Einige Firewall - Systeme (z. B. Paket-Filter) sind in der Lage, verdächtige
SYN-Aktivitäten zu erkennen. Ebenso können Programme wie Synlogger oder Courtney
diese SYN - Portscans als solche ausweisen.
Der Parameter -sF veranlasst nmap, einen Stealth - FIN Scan
durchzuführen. Dabei wird einfach ein FIN-Paket zum Ziel-Port übertragen. Nach
der Empfehlung von
RFC 793 müsste
der Host danach RST für alle geschlossenen Ports zurückgeben. Beispiele:
bei BeOS 4.5
root@linux #
nmap -sF 192.168.0.2
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Interesting ports on prometheus.matrix.net (192.168.0.2): Port State Protocol Service 23 open tcp telnet
Nmap run completed -- 1 IP address (1 host up) scanned in 4 seconds
|
bei Microsoft Windows 98
root@linux #
nmap -sF 192.168.0.3
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) No ports open for host rieekan.matrix.net (192.168.0.3) Nmap run completed -- 1 IP address (1 host up) scanned in 21 seconds
|
bei SuSE Linux 6.3
root@linux #
nmap -sF 192.168.0.1
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
Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds
|
|
Der Parameter -sX ermöglicht das Senden eines FIN-, URG- und
PUSH - Paketes zum gewünschten Ziel-Port. Nach den Empfehlungen von
RFC 792
müsste der Host RST für alle geschlossenen Ports zurückgeben.
Es sind root - Rechte für
das Durchführen eines solchen Scans von Nöten. Meistens funktioniert dieser Scan
nur bei Systemen mit UNIX-Protokollstapeln. Beispiele
bei BeOS 4.5
root@linux #
nmap -sX 192.168.0.2
Interesting ports on prometheus.matrix.net (192.168.0.2): Port State Protocol Service 23 open tcp telnet
Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds
|
bei Microsoft Windows 98
root@linux #
nmap -sX 192.168.0.3
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) No ports open for host rieekan.matrix.net (192.168.0.3) Nmap run completed -- 1 IP address (1 host up) scanned in 19 seconds
|
bei SuSE Linux 6.3
root@linux #
nmap -sX 192.168.0.1
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
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
|
|
Mit dem Parameter -sN führt nmap einen
sogenannten TCP-Null-Scan durch, bei dem alle Markierungen (Flags) ausgeschaltet
werden. Nach den Empfehlungen aus
RFC 793 müsste
das Ziel-System RST für alle geschlossenen Ports retournieren.
Für den TCP-Null-Scan sind wieder Root-Rechte notwendig. Dieser Scan
funktioniert meist nur bei Systemen mit UNIX-IP-Stacks. Beispiele:
bei BeOS 4.5
root@linux #
nmap -sX 192.168.0.2
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Interesting ports on prometheus.matrix.net (192.168.0.2): Port State Protocol Service 23 open tcp telnet
Nmap run completed -- 1 IP address (1 host up) scanned in 4 seconds
|
bei Microsoft Windows 98
root@linux #
nmap -sX 192.168.0.3
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) No ports open for host rieekan.matrix.net (192.168.0.3) Nmap run completed -- 1 IP address (1 host up) scanned in 19 seconds
|
bei SuSE Linux 6.3
root@linux #
nmap -sN 192.168.0.1
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
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
|
|
|
|
Mit der Option -sA wird diese erweiterte Scan - Technik
angewendet, um ein Paketfilter- Regelwerk zu identifizieren. Zusätzlich kann
diese Methode eine Stateful Inspection ( iptables)
aufzeigen.
Dieser Scan - Typ schickt ein ACK - Paket an den spezifizierten Zielport. Kommt
ein RST zurück, wird der besagte Port als unfiltered
(dt. ungefiltert) eingestuft. Wird keine Rückantwort empfangen (oder kommt ein
ICMP unreachable zurück), so weist nmap den Port als filtered
(dt. gefiltert) aus. Wichtig ist, dass nmap normalerweise
keine unfiltered-Meldung ausgibt. So sind keine Ports in der
Ausgabe ein Indiz dafür, dass alle Zugriffe durchgekommen sind (und ein RST
verursacht haben). Dieser Scan wird die Ports nie in einem open
(dt. offenen) Status zeigen.
|
Diese erweiterte Scan - Technik, die mit Parameter -sW
ausgewählt wird, ist dem ACK - Scan sehr ähnlich, außer, dass hiermit manchmal
auch offene, ungefilterte und gefilterte Ports durch eine Anomalie in der durch
die Betriebssysteme gewählten TCP - Window - Size entdeckt werden können.
|
Mit dem Parameter sU führt nmap einen
UDP - Portscan durch, bei dem lediglich ein UDP-Paket (siehe RFC 768) zum
Ziel-Port übertragen wird. Wenn der Ziel-Port mit der Nachricht
ICMP Port unreachable den Erhalt quittiert, ist der Port
inaktiv und somit geschlossen.
Entgegen der weitläufigen Meinung, UDP-Scanning sei sinnlos, soll in diesem
Zusammenhang auf die Lücke in Solaris' rpcbind hingewiesen werden. rpcbind
kann am undokumentierten UDP - Port 32770 gefunden werden. Es ist also
vollkommen irrelevant, ob Port 111 durch eine Firewall blockiert wird oder
nicht. Als zweites Beispiel für die Sicherheitsrelevanz von UDP sei die
populäre, von cDc entwickelte Backdoor namens Back - Orifice genannt, durch die
Windows-Maschinen über einen frei wählbaren UDP - Port gesteuert werden können.
Und drittens sollten die vielen potentiell verwundbaren UDP - basierten Dienste
nicht vergessen werden: SNMP, TFTP, NFS, etc.
Ein UDP - Scan kann sich extrem in die Länge ziehen, wenn im großen Umfang
Paketfilter eingesetzt werden. nmap ist in der Lage,
Limitierungen hinsichtlich der maximalen Anzahl ausgehender
ICMP-Fehlernachrichten (RFC 1812 Abs. 4.3.2.8) zu erkennen und mit einer
dynamischen Geschwindigkeitsreduzierung zu reagieren. Dies verhindert das
Verstopfen des Netzwerks mit unnötigen Paketen, die sowieso vom Zielsystem
ignoriert werden würden.
Einmal mehr typisch, ignoriert Microsoft die Empfehlungen des RFCs, weshalb eine
Einschränkung ausgehender ICMP - Fehlermeldungen gänzlich bei der TCP/IP -
Implementierung auf Windows 9x und NT fehlt. Das Scannen sämtlicher UDP-Ports
auf einer Windows - Maschine ist somit kein größeres Problem. Beispiele:
bei BeOS 4.5
root@linux #
nmap -sU 192.168.0.2
Starting nmap V. 2.3BETA6 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Interesting ports on prometheus.matrix.net (192.168.0.2): Port State Protocol Service 1 open udp tcpmux 2 open udp compressnet 3 open udp compressnet 4 open udp unknown 5 open udp rje [...] 10080 open udp amanda 17007 open udp isode-dua 18000 open udp biimenu 31337 open udp BackOrifice 47557 open udp dbbrowse
Nmap run completed -- 1 IP address (1 host up) scanned in 23 seconds
|
bei Microsoft Windows 98
root@linux #
nmap -sU 192.168.0.3
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 137 open udp netbios-ns 138 open udp netbios-dgm 1025 open udp blackjack
Nmap run completed -- 1 IP address (1 host up) scanned in 15 seconds
|
|
Diese Methode kommt dann zum Tragen, wenn herausgefunden werden soll, welche
IP - Protokolle das Zielsystem unterstützt. Bei dieser Technik wird für jedes
IP - Protokoll ein RAW - IP - Paket mit fehlendem Protokoll - Header
(ohne Daten) an das Zielsystem geschickt wird. Wird darauf mit einer
ICMP protocol unreachable - Fehlermeldung reagiert, so ist
davon auszugehen, dass das Zielsystem das Protokoll nicht beherscht. Nun kann
nmap eine Liste der unterstützten Protokolle erstellen.
Einige Betriebssysteme (z.B. AIX, HP-UX und Digital UNIX) und Firewall-Lösungen
verzichten gänzlich auf das Versenden der
ICMP protocol unreachable - Fehlermeldungen. Als Resultat eines
solchen Verhaltens behauptet nmap, dass sämtliche Protokolle
offen sind.
|
Diese erweiterte Scan - Technik, die mit Parameter -sI
gewählt wird, ermöglicht ein verstecktes Scannen der TCP-Ports
eines Zielssystems (dies bedeutet, dass keinerlei Pakete mit der richtigen
IP - Absenderadresse verschickt werden).
Neben der absoluten Gewissheit, nicht direkt erkannt zu werden, können durch
einen derartigen Scan IP - basierte Vertrauensbeziehungen aufgedeckt werden.
Das Port - Listing zeigt die offenen Ports aus der Sicht eines beliebigen
Zombie-Systems, welches durch den Parameter (-sI <Zombie-Host[:Zielport]>)
explizit angegeben werden kann.
|
Diese Methode arbeitet in Kombination mit den meisten möglichen Scan - Typen
von nmap zusammen. Jeder als offen identifizierte TCP- bzw.
UDP - Port wird mit einer Vielzahl von SunRPC - Nullkommandos überflutet, um
eine Identifizierung des am RPC - Port lauschenden Dienstes vorzunehmen.
Kann ein solcher Dienst ermittelt werden, wird dessen Programmname und die
Version ausgelesen. Beim Einsatz eines Portmappers sei hier das Verwenden von
rpcinfo -p erwähnt.
|
Diese Scanning - Technik spielt heutzutage fast keine Rolle mehr, denn es
basiert auf einem Feature des FTP-Protokolls, welches bei den
meisten Servern mittlerweile deaktiviert wurde. Es wird mit Parameter
-b <ftp_relay_host> aktiviert und ermöglicht das
erfolgreiche und graziöse Vertuschen der Scan - Herkunft.
Die Technik wurde von Hobbit bei
Bugtraq 1995
veröffentlicht: Es wird versucht, Verbindungen zu einem FTP-Server durch den
Missbrauch des Ports für FTP - Proxy - Verbindungen zu vertuschen. Wie Hobbit
relativ detailliert im o. g. Bericht beschreibt, können solche Angriffe für die
Übermittlung von fast nicht zurückverfolgbaren Mails und News, für Attacken auf
beliebige Systeme durch das Füllen von Festplatten oder das Durchbrechen von
Firewalls genutzt werden.
Zugleich sind hohe Anforderungen für das Gelingen dieser Attacke nötig: Der
FTP-Server muss ein beschreibbares Verzeichnis haben sowie falsche
Port-Informationen mit dem PORT - Befehl von nmap erlauben.
Es sei erwähnt, dass diesen Anforderungen an das Zielsystem ein solcher Scan
sehr zeitintensiv sein kann.
|
|