Portscanner-nmap

by

http://www.nwlab.net/tutorials/portscanner/nmap-tutorial.html

Portscanner sind eines der wichtigsten Arbeitsmittel von Administratoren. Dieses HowTo beschreibt den Einsatz des populären Portscanner Nmap unter Linux & Windows Systemen.

  • Protokolle & Ports

Um einen Dienst auf einen IP-Host eindeutig zu identifizieren werden drei Angaben benötigt:

  • das Protokoll (z.B. TCP)
  • die IP-Adresse (z.B. 10.0.0.1)
  • die Portnummer (z.B. 80 für HTTP)

Diese drei Angaben identifizieren einen Webserver (HTTP) der auf dem Host mit der IP-Adresse 10.0.0.1 läuft. Die Portnummer ist eine 16-Bit-Zahl zwischen 0 und 65535. Für Standarddienste werden die Portnummern von der IANA vergeben. Dort finden Sie auch die aktuelle Liste der Portnummern. Die Aufgabe eines Portscanners ist es nun, die offenen Ports eines Systems zu ermitteln. Also die Ports, auf denen ein Service angeboten wird.

Beispiel:

Sehen wir uns dazu ein erstes Beispiel an.

Mit dem Linux Kommando: nmap -sT brual-billig.com untersucht nmap den Host brutal-billig.com auf offene TCP-Ports. Dabei überprüft nmap standartmässig nicht alle 65535 TCP-Ports. Per Default werden nur die 1611 „wichtigsten“ Portnummern gescannt. Auf dem Host brutal-billig.com wird ein offener Port entdeckt (HTTP). Der Scan dauert etwa 9 Sekunden. Grundsätzlich sollten auf einem Server nur die Ports offen sein, die auch wirklich benötigt werden.

  • TCP Portscans

TCP ist das verbindungsorientierte Protokoll der TCP/IP-NetzwerkFamilie auf dem OSI-Layer 4. Vor jeder Datenübertragung baut der Client eine TCP-Session zum Server auf. TCP nutzt dazu den Dreiwege Handshake (three-way handshake). Hierfür tauschen Server & Client 3 TCP-Segmente mit bestimmten Flags aus.

Client Server SYN ———> SYN + ACK <———- ACK ———->

Der Client sendet zuerst ein Segment mit gesetztem SYN-Flag (synchronisieren) an den Server. Dieses Datenpaket wird enthält auch die Portnummer des gewünschten Dienstes auf dem Server. Akzepiert der Server den Verbindungsaufbau, antwortet er mit einen gesetzten SYN- und ACK-Flag (Acknowledgement). Der Client bestätigt mit einem ACK-Segment. Bietet der Server auf dem angesprochenen Port keinen Dienst an, gibt es mehrere Möglichkeiten der Reaktion. Ein RST-Segement (RESET) könnte an den Client gesendet werden, der Server könnte eine ICMP-Meldung versenden oder er tut einfach nichts.

TCP SYN-Scan -sS

Die Option -sS veranlasst Nmap einen SYN-Scan auszuführen. Auch dabei beginnt der Scanner mit einem SYN-Segment. Es wird jedoch keine vollständige TCP-Session aufgebaut. Ist der Port auf dem Zielhost im LISTENING und antwortet mit einem SYN/ACK, sendet Nmap sofort ein RST-Segment (RESET). Dadurch wird die halboffene (half-open) Verbindung wieder abgebaut. Mit der SYN-Scan Technik kann unter Umständen eine Erkennung des Portscans durch das Target vermieden werden.

TCP connect-Scan -sT

Mit der Option -sT für Nmap einen connect-Scan aus. Der Scanner verhält sich dabei wie ein normaler Client und verbindet sich (connect) mit dem Zielsystem. Ist der Port auf dem Zielhost im Status LISTENING, wird ein Three-way Handshake ausgeführt. Eine solche Verbindung kann vom Zielhost leicht protokolliert werden und auch jedes IDS sollte einen connect-Scan erkennen.

Stealth Scans

Mit den Optionen -sF wird ein FIN-Scan ausgeführt. Nmap sendet dazu FIN-Segmente an das Target. Diese werden eigentlich zum Beenden einer TCP-Sitzung genutzt. Das Zielsystem sollte an geschlossenen Ports mit einem RST reagieren und auf listening (abhören) Ports das FIN-Segment einfach verwerfen.

Beim Xmas-Tree-Scan (Option -sX) sind in einem Segment das FIN, URG und PSH-Flag gesetzt. Je nach Implementierung reagieren die Zielsysteme recht verschieden auf ein solches Segment.

Der Null-Scan wird über die Option -sN aktiviert. Nmap sendet Segmente ohne gesetzte Flags an das Target.

Wie bei allen Scan-Techniken können die Resultate durch Firewalls und Filter zwischen Nmap und Target beeinflusst werden. Auf jeden Fall sollte der Admin das Verhalten seiner eigenen Systeme bei diesen Portscans kennen.

  • UDP Portscans -sU

UDP ist das verbindungslose Protokoll der TCP/IP-Suite. Normalerweise sollte ein System auf ein UDP-Segment an einen geschlossenen Port mit einem „ICMP Port Unreachable“ reagieren. Offene UDP-Ports sollten keine Reaktion erzeugen. Heute wird allerdings ICMP oft rigoros gefiltert. Dadurch sind UDP-Scans mitunter nicht sehr zuverlässig. Viele Betriebssysteme begrenzen die Rate von ICMP-Paketen. Dadurch sind UDP-Scans bei vielen Systemen sehr langsam.

Allgemeine Optionen

Die Arbeitsweise von Nmap kann durch viele weitere Optionen beeinflusst werden.

Kein Ping -P0

Mit der Option -P0 wird ein ICMP-Ping vor dem eigentlichen Scan unterdrückt. Das kann notwendig sein, wenn eine Firewall oder das Target ICMP filtert.

Fingerprint -O

Jede Implementierung von TCP/IP hat ihre Eigenheiten. Mit der Option -O versucht Nmap diese Eigenheiten zu erkennen und das Betriebssystem des Targets zu identifizieren.

[root] ~ $ nmap -sT -O brutal-billig.com Starting nmap 3.20 ( www.insecure.org/nmap/ ) at 2005-03-01 14:49 CEST
Interesting ports on brutal-billig.com (10.0.0.1): (The 1610 ports scanned but not shown below are in state: closed)
Port State Service 80/tcp open
http Remote operating system guess: Debian-3-RELEASE Uptime 40.088 days (since Mo Jan 1 15:51:18 2005)
Nmap run completed — 1 IP address (1 host up) scanned in 17.254 seconds

Im gezeigten Beispiel erkennt Nmap auf dem Zielsystem ein Debian 3.

Fragmentierung -f

Nmap kann zum Beispiel beim SYN-Scan mit fragmentierten IP-Paketen arbeiten. Mitunter lassen sich dadurch Firewalls oder Intrusion Detection Syteme (IDS) verwirren.

Verbose -v

Mit -v können Sie Nmap etwas gesprächiger machen. Es werden Meldungen über die aktuellen Aktivitäten angezeigt.

Port-Bereiche -p

Um bestimmte Ports oder Bereiche zu untersuchen, können diese mit der Option -p bestimmt werden. Einzelne Ports werden als -p 22 notiert, Bereiche können mit -p 40-45, 100-120 angegeben werden.

Quell-IP-Adresse -S und Interface -e

Unter bestimmten Umständen ist es notwendig Nmap eine Absender-IP-Adresse und eine Schnittstelle mitzuteilen. Das kann zum Beispiel auf einem virtuellen Server hilfreich sein. Das erste Beispiel zeigt einen Aufruf von Nmap auf einem vServer:

Eigentlich nutzt dieser vServer das Interface eth0:vs4 mit der IP-Adresse 10.0.0.4. Der Aufruf von Nmap könnte so aussehen:

Timing -T Paranoid|Sneaky|Polite|Normal|Aggressive|Insane

Ãœber die Option -T kann das Timing von Nmap verändert werden. Mit -T Paranoid wartet Nmap bis zu 5 Minuten zwischen den einzelnen Packeten. Dadurch soll die Entdeckung durch ein IDS erschwert werden. Bei „Insane“ wird das Target praktisch mit Packeten bombardiert.

Zielsystem angeben

Der Scanner Nmap bietet vielfältige Möglichkeiten zur Angabe des Ziels. Es können einzelne System über Hostname oder IP-Adresse oder ganze IP-Netze gescannt werden. IP-Netze können in CIDR-Notation (z.B. /24) oder mit Sternchen (z.B. 192.168.*.*) angegeben werden.

Beispiele

Im Folgenden sehen Sie einige Beispiele für den Einsatz von Nmap. Sie sollten nur eigene Systeme und Netze mit Nmap scannen. Admins mögen exzessive Portscans auf ihre Systeme nicht besonders gerne.