Nmap

aus ANOther Wiki, der freien Wissensdatenbank

 

Nmap ist ein mächtiges Prot-Scan-Tool, dessen Funktionsumfang und Plattformvielfalt (Windows, Linux, BSD, OSX) es zu einem der weltweit beliebtesten Scanner macht

Inhaltsverzeichnis

Bezugsquellen

Die jeweils neuesten stabilen Versionen sind unter http://insecure.org/nmap/download.html">insecure.org verfügbar

Installation

Linux:

entpacken:

tar xvfz nmap*.tar.gz
cd nmap*

installieren:

./configure
make
[su root]
make install

Funktionen

BezeichnungParameterBeschreibung
ping scan -sP Manchmal möchte man nur wissen, welche Hosts in einem Netz aktiv sind. Mit diesem Parameter sendet Nmap ein ICMP Echo Request Paket an jede IP des angegebenen Netzes. Einige Server antworten nicht auf Pings - Nmap kann jedoch trotzdem feststellen ob der Host verfügbar ist. Dazu wird TCP ACK Paket an Port 80 gesendet - wird ein TCP RST Paket zurÜckgesendet, so steht fest, daß dieser Host verfügbar ist.
portscan [IP-Adresse] macht einen normalen Portscan
TCP SYN

Stealth-Scan

-sS ACK Paket geantwortet, so "lauscht" auf dem Port ein Serverdienst - kommt ein RST Packet zurück, dann ist der Port geschlossen. Nach dem Empfang des ACK-Paketes, sendet Nmap sofort ein RST-Paket um die im Aufbau befindliche Verbindung wieder zu schließen. Der Vorteil liegt darin, daß ein solcher Verbindungsversuch von vielen Servern nicht aufgezeichnet wird. Es werden root-Rechte benötigt um diese Scanart zu verwenden, wenn das SUID-Flag nicht gesetzt ist
TCP connect()scan -sT Es handelt sich hierbei um das einfachste TCP-Scan Verfahren. Dabei wird der connect() Ruf des verwendeten Betriebssystems genutzt um eine Verbindung zu einem beliebigen Port aufzubauen. Lauscht auf diesem Port ein Server, so ist der connect() Ruf erfolgreich, andernfalls ist der Port nicht erreichbar. Diese Art des Scans ist sehr leicht zu entdecken.
UDP-Scan -sU Mit diesem Scan läßt sich feststellen, welche UDP-Ports offen sind. Dabei wird ein 0 Byte UDP Paket an jeden Port des Ziel-Hosts gesendet. Erhält Nmap ein IMCP Port unreachable Nachricht, so ist der Port geschlossen. Ansonsten wird angenommen, daß der Port offen ist. UDP-Port Scans können sehr langsam sein, da viele System nach http://www.faqs.org/rfcs/rfc1812.html">RFC 1812 implementiert wurden. Dort ist spezifiziert, daß die ICMP Fehlermeldungs - Rate limitiert wird.
IP protocol scan -sO Dieser Scan stellt fest, welche IP Protokolle auf dem Zielrechner unterstÜtzt werden. Es wird ein einfaches IP Paket ohne weitere Header-Informationen an jeden Port gesendet. Wird ein ICMP Protocol unreachable Nachricht zurÜckgesendet, so wird davon ausgegangen, daß das Protokoll auf dem Zielrechner nicht verfügbar ist. Wird diese nicht gesendet, so wird davon ausgegangen, daß das Protokoll erreichbar ist. Dabei ist zu beachten, daß einige Hosts (HP-UX, AIX, Digital UNIX) und Firewalls keine ICMP Protocol unreachable Meldungen versenden.
No-Ping-Scan -P0 Mit dieser Option wird das Anpingen des Hosts vor Scanbeginn verhindert - so können Rechner gescannt werden, die nicht auf einen Ping antworten. Damit können nur IPs, aber keine Domains gescannt werden.


Neben diesen einfachen Scanmethoden gibt es noch erweiterte Optionen, die den Ursprung eines Scans verschleiern sollen bzw. dazu beitragen das Ergebnis zu verbessern: Steahlt Scan (-sF), Xmas Tree-Scan (-sX) und Null-Scan (-sN) können eingesetzt werden, wenn ein SYN-Scan nicht verborgen genug ist, um einige Paketfilter oder Firewalls zu täuschen. Mit Hilfe dieser Optionen kann es möglich sein, auch solche Schutzmaßnahmen zu täuschen. Der Grundgedanke ist, daß beim Scannen eines geschlossenen Ports eigentlich ein RST Paket gesendet werden müsste - offene Ports antworten dabei gar nicht. Der FIN-Scan nutzt ein einzelnes FIN Paket für den Scan. Während der Xmas Tree-Scan die FIN, URG und Push Flags aktiviert, schaltet der Null-Scan alle Flags aus.

Ein weiteres Feature von Nmap ist der Fingerprint-Scan (-O) - TCP/IP Fingerprint Identifikation - damit lässt sich feststellen, welches Betriebssystem auf dem Zielhost installiert ist. Aufgrund der fleissigen Entwickler verfügt Nmap über eine sehr große Datenbasis zum Vergleich der Fingerprints.

 

Scannen von mehreren IPs

Um mehrere IPs bzw. ein ganzes Subnet gleichzeitig zu scannen, gibt es verschiedene Möglichkeiten:

nmap 192.168.0.1,2,3,4,5

Dies würde die Hosts 192.168.0.1 bis 192.168.0.5 scannen. Den gleichen Erfolg erzielt man durch

nmap 192.168.0.1-10

Für das Scannen ganzer Netze kann auch die Maskierung herangezogen werden

nmap 192.168.0.0/24

Weiters kann ein Asterix (*, auch Wildcard)verwendet werden, und da in jedem Oktett

nmap 192.168.0.*
nmap 192.168.*.1
...

Scangeschwindigkeit

Da das Scannen größerer Netze einige Zeit in Anspruch nehmen kann, hat nmap verschiedene Timeouts, nach dem es zum nächsten Port weiter geht.

Diese Geschwindigkeiten sind:

 

NummerStufeZeit
0 Paranoid 300-400 Sekunden pro Port
1 Sneaky 15 Sekunden pro Port
2 Polite 35 Ports in 15 Sekunden
3 Normal  
4 Aggressive eine komplette IP in 100 Sekunden
5 Insane 10-15 Sekunden für 10.000 Ports


Wobei "0" die genaueste bzw. sicherste Variante darstellt. Bei "5" wird in vielen Fällen vor der Antwort des Hosts abgebrochen Der Parameter wird mit "-T" und der gewünschten Nummer bzw. der gewünschten Bezeichnung der Geschwindigkeitsstufe angegeben.

MB:/home/another> nmap -T 5 127.0.0.1

gibt das Ergebnis

Starting nmap 3.81 ( http://www.insecure.org/nmap/">http://www.insecure.org/nmap/ ) at 2007-02-15 17:55 CET
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1652 ports scanned but not shown below are in state: closed)
PORT      STATE SERVICE
22/tcp    open  ssh
.
Nmap finished: 1 IP address (1 host up) scanned in 0.223 seconds

Ein weiterer Grund für die verschiedenen Geschwindigkeiten ist, dass IDS (wie z.B. snort) die Scanmuster von nmap relativ schnell erkennen und eventuell die scan-IP sperren. Mit -T 0 oder -T 1 braucht snort wesentlich länger...

 

Weitere Parameter

ParameterFunktion
-F berücksichtigt nur Ports, die in /etc/services eingetragen sind, was den scan sehr schnell macht

Timeouts:

ParameterFunktion
--max_parallelism <ANZAHL> Hier wird die Anzahl der gleichzeitigen scans definiert. "1" würde bedeuten
--min_parallelism <ANZAHL> Das Gegenteil, hier wird angegeben, wie viele scans mindestens Gleichzeitig laufen. Eine zu hohe Zahl kann allerdings die Zuverlässigkeit einschränken
--host_timeout <MILLISEKUNDEN> Nach der hier angegebenen Zeit wird der scan der aktuellen IP abgebrochen und zur nächsten IP gegangen
--scan_delay <MILLISEKUNDEN> Um diverde IDS zu verwirren kann eine Zeit angegeben werden, die zwischen zwei scans verstreichen soll

Logdateien

ParameterFunktion
-oN <DATEI> erzeugt eine lesbare Datei
-oX <DATEI> erzeugt eine Datei im XML-Format
-gG grep <MUSTER> schnell nach Ports/Protokollen/Betriebssystemen/... gesucht werden
-oA <DATEI> legt Dateien in allen drei oben genannten Formaten an und speichert sie mit der jeweiligen Dateiendung
-oS <DATEI> erzeugt eine Script-Kiddie-Ausgabe des scans (sinnfrei)
--resume <DATEI> hiermit können mit SrrgC abgebrochene Scans wieder fortgesetzt werden
--append_output <DATEI> neue Ergebnisse werden an die Datei angehängt statt überschrieben

Expertenparameter

ParameterFunktion
-S IP IP spoofing [sollte getestet werden]
-iR Dieser Parameter läaat nmap nach zufälligen IPs suchen und scannt diese (sinnfrei)
-sA ACK-scan; Dieser Parameter dient der Identifizierung einer Firewall. Es werden hier keine geöffneten Ports angezeigt! Dagegen die von der Firewall gefilterten Ports. Dazu werden ACK-Pakete mit zufälliger Sequenznummer an den Zielport geschickt. Sollten keine Ports angezeigt werden, so ist die Wahrscheinlichkeit hoch, das die Firewall keine Ports blockiert.
-PT[Portnummer] Es wird standardmässig auf Port 80(http) ein TCP-Ping geschickt. Nützlich, falls ICMP teils oder ganz gesperrt wurde. Ziel ist dabei die Feststellung, ob der Host erreichbar ist. Danach folgt der Obligatorische Standardscan
--randomize_host Nmap scannt in einer Gruppe von max. 2048 Zielen zufällig. Besonders in Hinblick auf ausgereifte Sicherheitssysteme sehr sinnvoll um nicht erkannt zu werden.
-r Sagt Nmap das Gegenteil von „--randomize_host“, das keine Zufällige Wahl getroffen werden darf.
-R Der DNS-Name wird immer aufgelöst
-iL Die Ziel-IP-Adressen werden aus der angegebenen Liste ausgelesen, danach werden die IPs der Kommandozeile ausgewertet
-f SYN-, FIN-, Xmas- oder Null-Scan werden Fragmentiert. Viele IDS können dies nicht filtern. Vorsicht! Viele Netzwerkanwendungen kommen hiermit nicht klar...

Probleme

Gewisse Nmap-Parameter benötigen root-Rechte. Sollen auch andere User diese Funktionen nützen, muss ein SUID-Flag gesetzt werden:

chmod 4751 /usr/local/nmap-3.*/nmap

Allerdings können nun alle User des Systems diese Funktionen nutzen. Das Rücksetzten erfolgt über

chmod 0751 /usr/local/nmap-3.*/nmap

Weiteres

Eine "Erweiterung" zu Nmap stellt Amap dar

Auf http://www.syhunt.com/section.php?id=sc download">Syhunt hiegt ein Windows Freeware front-end für nmap bereit