Network Mapper (nmap)
Erweiterte Scanning-Techniken mit dem Network Mapper (nmap)
Geschrieben von Marc Ruef <marc.ruef@computec.ch> für http://www.computec.ch/
Version 1.0a 28. April 2000


1.0 Inhaltsverzeichnis
1.0 Inhaltsverzeichnis

2.0 Einführung

2.1 Erweiterte Parameter
3.0 Die möglichen Scan-Techniken
3.1 Ping-Suchlauf
3.1.1 Einführung

3.1.2 Besonderheiten

3.1.3 Beispiel

3.2 TCP-Port-Scan mit Verbindungsaufbau
3.2.1 Einführung

3.2.2 Besonderheiten

3.2.3 Beispiel bei BeOS 4.5

3.2.4 Beispiel bei Microsoft Windows 98

3.2.5 Beispiel bei SuSE Linux 6.3

3.3 TCP-SYN-Stealth-Port-Scan
3.3.1 Einführung

3.3.2 Besonderheiten

3.3.3 Beispiel bei BeOS 4.5

3.3.4 Beispiel bei Microsoft Windows 98

3.3.5 Beispiel bei SuSE Linux 6.3

3.4 Stealth-FIN-Port-Scan
3.4.1 Einführung

3.4.2 Besonderheiten

3.4.3 Beispiel bei BeOS 4.5

3.4.4 Beispiel bei Microsoft Windows 98

3.4.5 Beispiel bei SuSE Linux 6.3

3.5 TCP-Xmas-Tree-Port-Scan
3.5.1 Einführung

3.5.2 Besonderheiten

3.5.3 Beispiel bei BeOS 4.5

3.5.4 Beispiel bei Microsoft Windows 98

3.5.5 Beispiel bei SuSE Linux 6.3

3.6 TCP-Null-Port-Scan
3.6.1 Einführung

3.6.2 Besonderheiten

3.6.3 Beispiel bei BeOS 4.5

3.6.4 Beispiel bei Microsoft Windows 98

3.6.5 Beispiel bei SuSE Linux 6.3

3.7 UDP-Port-Scan
3.7.1 Einführung

3.7.2 Besonderheiten

3.7.3 Beispiel bei BeOS 4.5

3.7.4 Beispiel bei Microsoft Windows 98

3.8 FTP-"Bounce-Attack"-Port-Scan
3.8.1 Einführung

3.8.2 Besonderheiten

4.0 Parameter für zusätzliche Optionen
4.1 Sehr kleine fragmentierte Pakete benutzen
4.1.1 Einführung

4.1.2 Besonderheiten

4.2 Hosts nicht mit "ping" ansprechen
4.2.1 Einführung
4.3 TCP-Pings
4.3.1 Einführung
4.4 ICMP-Pings
4.4.1 Einführung
4.5 Parallele Ausführung von TCP- und ICMP-Ping
4.5.1 Einführung
4.6 TCP-SYN-Suchlauf bei TCP-Ping-Scan
4.6.1 Einführung
4.7 Fingerprints zur Ermittlung des Betriebssystems
4.7.1 Einführung

4.7.2 Besonderheiten

4.7.3 Beispiel bei Microsoft Windows 98

4.7.4 Beispiel bei SuSE Linux 6.3

4.7.5 Beispiel bei unbekanntem Betriebssystem

4.8 Nur gewisse Ports ansprechen
4.8.1 Einführung
4.9 Scan von falschen Hosts mit richtigen Hosts zusammenführen
4.9.1 Einführung
4.10 Der schnelle Scan
4.10.1 Einführung
4.11 Besitzer eines Prozesses ermitteln
4.11.1 Einführung

4.11.2 Besonderheiten

4.11.3 Beispiel bei Microsoft Windows 98

4.11.4 Beispiel bei SuSE Linux 6.3

4.12 DNS-Auflösung deaktivieren
4.12.1 Einführung
4.13 Komplette DNS-Auflösung erzwingen
4.13.1 Einführung
4.14 Ausgabe in einer Protokolldatei
4.14.1 Einführung
4.14.1a Vom Menschen lesbar

4.14.1b Von der Maschine auswertbar

4.15 Nutzen einer Eingabedatei
4.15.1 Einführung
4.16 Ursprungsort der Ports festlegen
4.16.1 Einführung

4.16.2 Besonderheiten

4.17 IP-Source manipulieren
4.17.1 Einführung

4.17.2 Besonderheiten

4.18 Die Verbose-Funktion
4.18.1 Einführung

4.18.2 Besonderheiten

4.19 Auswahl der Device
4.19.1 Einführung
4.20 argv beeinflussen
4.20.1 Einführung

4.20.2 Besonderheiten

2.0 Einführung
Das kleine Tool namens nmap, welches standartmässig oft bei verschiedenen Linux-Distributionen installierbar ist - man kann es sonst auch separat unter http://www.insecure.org/nmap/ heruntergeladen werden kann -, wird hier von mir versucht durchleuchtet zu werden, um den Umgang damit und die schier erschreckend erscheinenden Funktionen in vollem Umfang nutzen zu können.

Nmap von Fyodor bietet ausser den bei den meisten Port-Scanning-Tools implementierten Funktionen erweiterte TCP- und UDP-Funktionalitäten, die mit einem Portion Wissen das Leben eines Netzwerk-Administrators extrem erleichtern können. Selten war ein Netzwerk-Tool erhältlich, welches so viele ausgereifte Funktionen bietet, wie nmap.

Wie bei den meisten zeilenorientierten Programmen in einer Linux-Umgebung wird mit dem Parameter -h von nmap oder dem Nutzen gar keines Parameters die Hilfefunktion auf dem Bildschirm ausgegeben, wobei darin der Syntax für das kleine Wunderding wie folgt angegeben wird (Ins Deutsche übersetzt):

nmap [Scan-Typ(en)] [Optionen] <Host oder Netz #1 ... [#N]> Scan-Typen
Folgend nun die original Ausgabe von nmap ohne Parameter-Eingabe:
mruef@prometheus:~ > nmap

nmap V. 2.3BETA6 usage: nmap [Scan Type(s)] [Options] <host or net #1 ... [#N]>
Scan types
   -sT tcp connect() port scan
   -sS tcp SYN stealth port scan (must be root)
   -sF,-sX,-sN Stealth FIN, Xmas, or Null scan (only works against UNIX).
   -sP ping "scan". Find which hosts on specified network(s) are up but don't
       port scan them
   -sU UDP port scan, must be r00t
   -sR RPC scan (use in addition to other TCP and/or UDP scan type(s)
   -b <ftp_relay_host> ftp "bounce attack" port scan
Options (none are required, most can be combined):
   -f use tiny fragmented packets for SYN, FIN, Xmas, or NULL scan.
   -P0 Don't ping hosts (needed to scan www.microsoft.com and others)
   -PT Use only "TCP Ping" to see what hosts are up (for normal & ping scans).
   -PI Use only ICMP ping to determines hosts that are up (default is ICMP&TCP)
   -PS Use TCP SYN sweep rather than the default ACK sweep used in "TCP ping"
   -O Use TCP/IP fingerprinting to guess what OS the remote host is running
   -p <range> ports: ex: '-p 23' will only try port 23 of the host(s)
                  '-p 20-30,63000-' scans 20-30 and 63000-65535. default: 1-1024 + /etc/services
   -Ddecoy_host1,decoy2,decoy3[,...] Launch scans from decoy host(s) along
      with the real one.
   -T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> Use specified timing policy.
   -F fast scan. Only scans ports in /etc/services, a la strobe(1).
   -I Get identd (rfc 1413) info on listening TCP processes.
   -n Don't DNS resolve anything unless we have to (makes ping scans faster)
   -R Try to resolve all hosts, even down ones (can take a lot of time)
   -o <logfile> Output scan logs to <logfile> in human readable.
   -m <logfile> Output scan logs to <logfile> in machine parseable format.
   -i <inputfile> Grab IP numbers or hostnames from file.  Use '-' for stdin
   -g <portnumber> Sets the source port used for scans.  20 and 53 are good choices.
   -S <your_IP> If you want to specify the source address of SYN or FYN scan.
   -v Verbose. Its use is recommended.  Use twice for greater effect.
   -h help, print this junk.  Also see http://www.insecure.org/nmap/
   -V Print version number and exit.
   -e <devicename>. Send packets on interface <devicename> (eth0,ppp0,etc.).
Hostnames specified as internet hostname or IP address.  Optional '/mask' specifies subnet. For example:  cert.org/24 or 192.88.209.5/24 or 192.88.209.0-255 or '128.88.209.*' all scan CERT's Class C.
SEE THE MAN PAGE FOR MORE THOROUGH EXPLANATIONS AND EXAMPLES.

mruef@prometheus:~ > _

3.0 Die möglichen Scan-Techniken
3.1 Ping-Suchlauf
3.1.1 Einführung
Der Parameter -sP  ermöglicht die Degradierung von nmap zu einem normalen Ping-Befehl um 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.
3.1.2 Besonderheiten
Für Mass-Pings sind andere Tools für Unix-Derivate nutzbar, die weit effizienter als nmap an die Sache herangehen (Zum Beispiel fping, gping und Hping.).
3.1.3 Beispiel
mruef@prometheus:~ > 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

mruef@prometheus:~ > _

3.2 TCP-Port-Scan mit Verbindungsaufbau
3.2.1 Einführung
Der Parameter -sT  führt einen normalen TCP-Port-Scan bei dem eine Verbindung zum Ziel-Port zwangsweise aufgebaut werden muss, und dadurch die Prozedur des 3-Wege-Handshakes von TCP-Verbindungen durchgeführt werden muss.

Um eine komplette TCP-Verbindung herzustellen muss der Client als erstes mit der Übertragung eines SYN-Paketes an den Server beginnen. 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.2.2 Besonderheiten
Diese Scanning-Technik ist sehr leicht zu erkennen, wird standartmässig von nmap ohne Scan-Technik-Parameter angewandt und kann von jedem User auf jedes beliebige System ausgeführt werden.
3.2.3 Beispiel bei BeOS 4.5
mruef@gateway:~ > 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

mruef@gateway:~ > _


3.2.4 Beispiel bei Microsoft Windows 98

mruef@prometheus:~ > 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

mruef@prometheus:~ > _

3.2.5 Beispiel bei SuSE Linux 6.3
mruef@prometheus:~ > 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

mruef@prometheus:~ > _

3.3 TCP-SYN-Stealth-Port-Scan
3.3.1 Einführung
Der Parameter -sS erlaubt es Root auf einem System mit nmap einen halboffenen Scan durchzuführen. Diese Technik verdient den Namen daher, da keine vollständige TCP-verbindung zustande kommt. Stattdessen wird ein SYN-Paket zum Ziel-Port übertragen. Wenn der Ziel-Port mit SYN/ACK antwortet, kann davon ausgegangen werden, dass der Port den Listening-Status besitzt. Wenn RST/ACK zurückgegeben wird, kann mit ziemlicher Wahrscheinlichkeit ein inaktiver Port dadurch angedeutet worden sein. Das Client-System überträgt nach dem Empfang des Paketes des Hosts ein RST/ACK-Paket, so dass keine vollständige Verbindung hergestellt wird.
3.3.2 Besonderheiten
Diese Technik hat den Vorteil, dass sie viel unauffälliger auf das Ziel-System einwirkt und somit schwieriger zu erkennen ist, da die meisten Systeme nur vollständige Verbindungen protokollieren.

Interessant ist die arg verfälschte Ausgabe eines TCP-SYN-Stealth-Port-Scans, wenn er auf ein Windows 98-System ausgerichtet ist.

3.3.3 Beispiel bei BeOS 4.5
gateway:~ > 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

gateway:~ > _

3.3.4 Beispiel bei Microsoft Windows 98
prometheus:~ > 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

prometheus:~ > _

3.3.5 Beispiel bei SuSE Linux 6.3
prometheus:~ > 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

prometheus:~ > _

3.4 Stealth-FIN-Port-Scan
3.4.1 Einführung
Der Parameter -sF kann den Network Mapper als Root veranlassen einen Stealth-FIN-Scan durchzuführen, bei jener Technik ein FIN-Paket zum Ziel-Port übertragen wird. Nach der Empfehlung von RFC 793 (http://www.ietf.org/rfc/rfc0793.txt) müsste der Host danach RST für alle geschlossenen Ports zurückgeben.
3.4.2 Besonderheiten
Dies ist eine weitere Scanning-Möglichkeit, die zur Nutzung den Status Root voraussetzt.

Diese Scanning-Technik funktioniert normalerweise nur bei UNIX-basierenden TCP-Stacks, was wiedereinmal sehr gut bei der inkorrekten Implementierung von Microsoft in ihr Windows 98 deutlich wird.

3.4.3 Beispiel bei BeOS 4.5
gateway:~ > 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

gateway:~ > _

3.4.4 Beispiel bei Microsoft Windows 98
prometheus:~ > nmap -sF 192.168.0.3

tarting 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

prometheus:~ > _

3.4.5 Beispiel bei SuSE Linux 6.3
prometheus:~ > 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

prometheus:~ > _

3.5 TCP-Xmas-Tree-Port-Scan
3.5.1 Einführung
Der Parameter -sX ermöglicht eine Technik, bei der der Scanner ein FIN-, ein URG- und ein PUSH-Paket zum Ziel-Port schickt. Nach den Empfehlungen von RFC 792 (http://www.ietf.org/rfc/rfc0792.txt) müsste der Host RST für alle geschlossenen Ports zurückgeben.
3.5.2 Besonderheiten
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; siehe Windows 98.

3.5.3 Beispiel bei BeOS 4.5
gateway:~ > 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

gateway:~ > _

3.5.4 Beispiel bei Microsoft Windows 98
prometheus:~ > 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

prometheus:~ > _

3.5.5 Beispiel bei SuSE Linux 6.3
prometheus:~ > 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

prometheus:~ > _

3.6 TCP-Null-Port-Scan
3.6.1 Einführung
Mit dem Parameter -sN führt nmap einen sogenannten TCP-Null-Scan durch, bei dem alle Flaggen ausgeschaltet werden. Nach den Empfehlungen von RFC 793 (http://www.ietf.org/rfc/rfc0793.txt) müsste das Ziel-System RST für alle geschlossenen Ports retournieren.
3.6.2 Besonderheiten
Um einen TCP-Null-Scan durchzuführen ist der Besitz des Status von Root nötig.

Auch dieser Scan funktioniert meist nur bei Systemen mit UNIX-IP-Stacks.

3.6.3 Beispiel bei BeOS 4.5
gateway:~ > 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

gateway:~ > _

3.6.4 Beispiel bei Microsoft Windows 98
prometheus:~ > 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

prometheus:~ > _

3.6.5 Beispiel bei SuSE Linux 6.3
prometheus:~ > 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

prometheus:~ > _

3.7 UDP-Port-Scan
3.7.1 Einführung
Mit dem Parameter -sU führt nmap einen UDP-Port-Scan durch, bei dem lediglich ein UDP-Paket 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. Falls diese ICMP-Nachricht nicht an den scannenden Clienten zurückgeschickt wird, kann davon ausgegangen werden, dass der Port horcht.
3.7.2 Besonderheiten
Als erstes muss erwähnt sein, dass auch diese Scanning-Technik Root-Rechte benötigt.

UDP ist als verbindungsloses Protokoll bekannt und bietet daher nicht so genaue Transaktionen wie TCP. Aus diesem Grunde hängt die Genauigkeit dieser Scan-Technik von vielen kleineren Faktoren wie zum Beispiel der Auslastung des Netzwerks oder den Systemressourcen ab. Desweiteren kann sich ein UDP-Scan extrem in die Länge ziehen, wenn im grossen Umfang Paketfilter eigesetzt werden sollten. UDP-Scans über das Internet sind eine sehr undankbare Aufgabe.

Sehr interessant ist, dass der Scan einwandfreie Informationen über Microsoft Windows 98 offenbart, jedoch den User mit einer absolut korrupierten Ausgabe bei Scans, die auf BeOS 4.5 losgelassen werden, konfrontiert wird.

3.7.3 Beispiel bei BeOS 4.5
gateway:~ > 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

gateway:~ > _

3.7.4 Beispiel bei Microsoft Windows 98
prometheus:~ > 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

prometheus:~ > _

3.8 FTP-"Bounce-Attack"-Port-Scan
3.8.1 Einführung
Mit dem Nutzen des Parameters -b <ftp_relay_host> greift nmap auf eine Technik zurück, die von Hobbit in seiner Veröffentlichung bei Bugtraq 1995 (http://geek-girl.com/bugtraq/1995_3/0047.html) bekannt gemacht hat. In jenem Dokument wird auf eine Schwäche des FTP-Protokolls hingewiesen, welches in RFC 959 (http://www.ietf.org/rfc/rfc0959.txt) näher erläutert wird. Im Grunde genommen ist diese Technik eine hinterlistige Methode, die versucht Verbindungen zu einem FTP-Server durch den Missbrauch des Ports für FTP-Proxy-Verbindungen zu vertuschen. Wie Hobbit relativ detailliert in jenem Bericht umschreibt, 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.
3.8.2 Besonderheiten
Diese Scanning-Technik ermöglicht das erfolgreiche und graziöse Vertuschen der Scan-Herkunft.

Zugleich sind hohe Anforderungen für die Durchführung dieser Funktion nötig: Der FTP-Server ein beschreibbares Verzeichnis haben sowie falsche Port-Informationen mit dem PORT-Befehl von nmap erlauben.

Neben diesen Anforderungen an den Host kann ein solcher Scan sehr zeitintensiv sein.

4.0 Parameter für zusätzliche Optionen
4.1 Sehr kleine fragmentierte Pakete benutzen
4.1.1 Einführung
Durch das zusätzliche Nutzen der 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, wodurch bei Firewall-Elementen und Intruder-Detection-Systeme unter Umständen ohne Aufsehen Scans durchgeführt werden können, da bei älteren Geräten eventuell bei der Einstellung für volle Datendurchsatz-Rate die Pakete nicht zuerst defragmentiert werden. Heutzutage werden in den meisten Fällen jedoch die Paket-Filter die einzelnen Pakete in eine Warteschlange stellen, bevor die Pakete ausgwertet werden, was das Ziel dieser Option dadurch in weite Ferne rücken lässt.
4.1.2 Besonderheiten
Diese Option benötigt automatisch Root-Rechte zur Durchführung.

Bei verschiedenen Test-Läufen in meinem Netzwerk ist mir aufgefallen, dass ein SYN-Scan mit einer grossen 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. durch ein Koaxial-Kabel gegen mein 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.

4.2 Hosts nicht mit "ping" ansprechen
4.2.1 Einführung
Der Parameter -P0 verhindert das Nutzen der Ping-Funktion während eines Scans, und ermöglicht so das Abscannen von Domains wie zum Beispiel www.domain.org .
4.3 TCP-Pings
4.3.1 Einführung
Der Parameter -PT <Port> verwendet einen TCP-Ping-Scan um festzustellen, welche Hosts im Netzwerk erreichbar sind. Diese Option kann auch ohne die Definierung eines Ports verwendet werden.
4.4 ICMP-Pings
4.4.1 Einführung
Der Parameter -PI lässt sich verwenden wie der Parameter -PT <Port> für TCP-Ping-Scans, wobei bei dieser Funktion jedoch stattdessen ICMP-Pakete für das Auskundschaften der Erreichbarkeit der Computer im Netzwerk zuständig ist.
4.5 Parallele Ausführung von TCP- und ICMP-Ping
4.5.1 Einführung
Der Parameter -PB <Port> eröffnet dem Anwender die Option des Nutzens eines parallelen Ping-Scans mit TCP- und ICMP-Paketen.
4.6 TCP-SYN-Suchlauf bei TCP-Ping-Scan
4.6.1 Einführung
Hierbei kann mit dem Anhängsel -PS ein SYN-Suchlauf statt des standartmässigen ACK-Suchlaufs bei TCP-Ping-Scans verwendet werden.
4.7 Fingerprints zur Ermittlung des Betriebssystems
4.7.1 Einführung
Mit -O wird ein sogenannter Fingerprint des gescannten Systems angefertigt, wodurch das verwendete Betriebssystem mit ziemlicher Wahrscheinlichkeit korrekt ermittelt werden kann.
4.7.2 Besonderheiten
Diese Option erwartet verständlicherweise Root-Privilegien, da mit dem gewussten Nutzen dieser Option einem Angreifer der erste Schritt für das Eindringen in ein System im Netzwerk ermöglicht wird.

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.

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 in Angriff zu nehmen.

4.7.3 Beispiel bei Microsoft Windows 98
prometheus:~ > 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

prometheus:~ > _

4.7.4 Beispiel bei SuSE Linux 6.3
prometheus:~ > 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

prometheus:~ > _

4.7.5 Beispiel bei unbekanntem Betriebssystem
prometheus:~ > 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

prometheus:~ > _

4.8 Nur gewisse Ports ansprechen
4.8.1 Einführung
Mit der Option -p <Bereich> können nur einzelne Ports oder ein Port-Bereich angesprochen werden, was einen deutlischen Geschwindigkeits-Vorteil mit sich bringt.
4.9 Scan von falschen Hosts mit richtigen Hosts zusammenführen
4.9.1 Einführung
Dfalscher_Host1, falscher_Host2, ME, falscher_Host3 [,...] führt Scans von falschen Hosts zusammen mit echten Hosts aus. Wenn Sie sich für eine Reihenfolge interessieren, in der die Hostadresse erscheint, führen Sie ME in der Liste auf. Sollte ein Ziel den Scan entdecken, ist es unwahrscheinlich, dass die echte IP-Adresse unter den falschen Adressen erkannt wird.
4.10 Der schnelle Scan
4.10.1 Einführung
Mit der Funktion -F wird ähnlich "Strobe" ein ziemlich schneller Scan durchgeführt, da nur die Ports angesprochen werden, die in /etc/services verewigt wurden. Normalerweise reicht ein Scan auf diese Standart-Ports aus, da damit die gängigsten Dienste in Erfahrung gebracht werden können.
4.11 Besitzer eines Prozesses ermitteln
4.11.1 Einführung
Mit dem Parameter -I wird die identd-Information laut RFC 1413 (http://www.ietf.org/rfc/rfc1413.txt) über die laufenden Prozesse auf dem Ziel-System eingeholt.
4.11.2 Besonderheiten
Wie die Funktion zum erstellen von Fingerprints ist auch diese Option in den Händen eines potentiellen Eindringlings ungern gesehen und erfordert daher Root-Rechte zur Ausführung.
4.11.3 Beispiel bei Microsoft Windows 98
prometheus:~ > 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

prometheus:~ > _

4.11.4 Beispiel bei SuSE Linux 6.3
prometheus:~ > 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

prometheus:~ > _

4.12 DNS-Auflösung deaktivieren
4.12.1 Einführung
Um einen Ping-Scan zu beschleunigen kann mit der Option -n die DNS-Auflösung ausgeschaltet werden.
4.13 Komplette DNS-Auflösung erzwingen
4.13.1 Einführung
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.
4.14 Ausgabe in eine Protokolldatei
4.14.1 Einführung
Es gibt zwei differente Optionen, die auch jeweils zu verschiedenen Zwecken gedacht sind aber jeweils das gleiche Ziel haben: Die Weiterverarbeitung der gewonnenen Informationen soll ermöglicht werden.

4.14.1a Vom Menschen lesbar

Mit der Option -o <Protokolldatei> wird die Ausgabe des Scan-Durchlaufs in ein für einen Menschen lesbares Format in die spezifizierte Protokolldatei geschrieben.
4.14.1b Von der Maschine auswertbar
Der Parameter -m <Protokolldatei> ermöglicht einem Computer die Weiterverarbeitung der durch das Nutzen von nmap gewonnene Erkenntnisse, da die Protokolldatei in einer für den Maschinen sehr einfach lesbare Form geschrieben wurde.
4.15 Nutzen einer Eingabedatei
4.15.1 Einführung
Mit -i <Eingabedatei> wird aus einer dafür vorgesehenen Datei eine Liste mit IP-Adressen oder Host-Namen eingelesen. Der Bindestrich sollte für das Benutzen von stdin angewandt werden.
4.16 Ursprungsort der Ports festlegen
4.16.1 Einführung
Mit -g <Portadresse> wird der Ursprungsport eines Scans definiert.
4.16.2 Besonderheiten
Die Ports 20 und 53 sind erfahrungsgemäss eine gute Wahl.
4.17 IP-Source manipulieren
4.17.1 Einführung
Eine für potentielle Angreifer oft gern genutzte Funktion ist das angeben einer falschen Source-IP-Adresse bei SYN- oder FIN-Scans, wodurch das Herausfinden der Scan-Quelle erschwert werden soll. Um dies zu realisieren wird auf -S <IP-Adresse> zurückgegriffen.
4.17.2 Besonderheiten
Diese wirklich exzellent ausgedachte und durchgesetzte Funktion kann unter Umständen auch für Denial of Service-Attacken genutzt werden, falls ein Host angegeben wird, der nicht ansprechbar ist.
4.18 Die Verbose-Funktion
4.18.1 Einführung
Durch Hilfe von -v werden einzelne Schritte von nmap auskommentiert, was vor allem Neulingen die Arbeit erleichtern kann.
4.18.2 Besonderheiten
Durch die Wahl von -vv kann eine noch detailliertere Kommentierung in Anspruch genommen werden.
4.19 Auswahl der Device
4.19.1 Einführung
Mit -e <Gerätename> wird bestimmt auf welche Device die Datenpakete auf die Reise geschickt werden sollen. Jenachdem muss für den Gerätename eth0, eth1 oder ppp0 definiert werden.
4.20 argv beeinflussen
4.20.1 Einführung
-q stellt argv auf ein bestimmtes Verhalten ein.
4.20.2 Besonderheiten
Dadurch können Scans unauffälliger durchgeführt werden, was von Angreifern meist ausgenutzt wird, falls der Faktor Zeit nur eine untergeordnete Rolle spielt.

Siehe auch Bugtraq, FTP, ICMP, IP, Linux, Networking, nmap, Ping, Port, RFC 792, RFC 793, RFC 1413, Scanning, Security, Strobe, TCP, UDP, Unix, Windows
Ein empfehlesnwertes Print-Medium zu Scanning und nmap ist "Das Anti-Hacker-Buch" (ISBN 3-8266-4072-1), erschienen im mitp-Verlag (http://www.mitp.de/).

Dank für freundliche Hilfe und kooperative Zusammenarbeit mit mir an diesem Dokument ernten in erster Linie Snakebyte, Anthraxx und DukeCS von Kryptocrew.


Dieser Text ist unverfälscht frei kopierbar!
Marc Ruef <marc.ruef@computec.ch>
http://www.computec.ch/