ubuntuusers.de

nmap

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

./nmap_logo.png Nmap 🇬🇧 oder auch "Network Mapper" ist ein Portscanner, der seit 1997 vom "Nmap-Developer-Team" entwickelt wird. Mit Nmap lassen sich Netzwerke und / oder Computer im Internet (d.h. mit eigener IP-Adresse) auf offene Ports und den darauf lauschenden Diensten prüfen. Nmap kann z.B. zum Testen der eigenen Firewall-Konfiguration eingesetzt werden oder auch zum Testen des eigenen Computers auf offene Ports und (eventuell unerwünschte) im Hintergrund laufende Dienste.

Achtung!

Das Scannen von Ports auf fremden Rechnern ist zwar nicht generell verboten, aber dennoch rechtlich umstritten. Nmap als Portscanner sollte daher nur für eigene Rechner verwendet werden.

Installation

./nmap.png Folgendes Paket muss installiert [1] werden:

  • nmap

Paketliste zum Kopieren:

sudo apt-get install nmap 

Oder mit apturl installieren, Link: apt://nmap

Aus dem Quelltext

Alternativ kann auch die neueste Version von nmap kompiliert [2] werden, da die Version aus den offiziellen Paketquellen meist etwas älter ist. Zuerst lädt man den aktuellen Quelltext als Archivdatei nmap-VERSION.tar.bz2 ⮷ herunter. Um Nmap zu kompilieren, öffnet man ein Terminal [3] und führt die folgenden Befehle im Downloadverzeichnis aus:

bzip2 -cd nmap-VERSION.tar.bz2 | tar xvf -
cd nmap-VERSION
./configure
make
sudo checkinstall              ## oder sudo make install 

Der letzte Befehl checkinstall erstellt und installiert ein DEB-Paket. Nur so lässt sich eine selbstkompilierte Version auch wieder sauber deinstallieren (im Gegensatz zu sudo make install).

Bedienung

Um Nmap zu starten, öffnet man ein Terminal [3] und führt den folgenden Befehl aus:

sudo nmap [Art des Scans] <Optionen> Ziel 

Als Ziel sollte eine IP-Adresse (oder ein Adressbereich) angegeben werden. Wird Nmap ohne Angabe eines Ziels aufgerufen, so erhält man als Ausgabe eine kurze Übersicht über die verschiedenen Scan-Techniken und Optionen.

Hinweis:

Nmap kann auch ohne Root-Rechte gestartet werden, allerdings ist der Funktionsumfang (also die Art der möglichen Scans) dann stark eingeschränkt.

Scan-Techniken

Nmap kennt verschiedene Scan-Techniken, die wie folgt aufgerufen werden können:

nmap - Scan-Techniken
Scan TechnikBeschreibung
-sT Einfacher Connect Scan. Hierbei wird pro zu scannendem Port eine volle TCP-Verbindung auf- und wieder abgebaut. Dieser Scan steht auch zur Verfügung, wenn nmap ohne Root-Recht aufgerufen wird.
-sS "SYN-Stealth-Scan": Ähnlich -sT, allerdings wird keine komplette TCP-Verbindung aufgebaut, daher unauffälliger. (Standard bei Root-Rechten)
-sUScannt UDP-Ports statt TCP.
-snPing-Scan: Prüft nur auf Erreichbarkeit über ICMP-Echo-Request, TCP-SYN-Paket auf Port 443, TCP-ACK-Paket auf Port 80 und ICMP-Timestamp-Request. Sinnvoll, um ganze Netzbereiche auf aktive Hosts zu testen. Dieser Scan steht auch zur Verfügung, wenn nmap ohne Root-Recht aufgerufen wird (dann allerdings nur mit SYN-Paketen auf Port 80 und 443).

Experten-Info:

Folgende etwas exotischere Techniken (und noch weitere) können in Einzelfällen sinnvoll sein. Es empfiehlt sich aber das vorherige Studium der Manpage oder der Homepage 🇬🇧 von nmap, um die Besonderheiten und möglichen Erkenntnisse zu verstehen.

Besondere Scantechniken
Scan TechnikBeschreibung
-sF , -sN , -sXnmap sendet an die zu scannenden Ports bewusst manipulierte bzw. falsche TCP-Pakete. Anhand der Reaktion des Ports (bzw. des Servers) lassen sich ggf. Rückschlüsse ziehen, ob der Port offen oder von einer Firewall geschützt ist. Im Vergleich zu -sT oder -sR ebenfalls unauffälliger.
-sA, -sWDient ebenfalls zum Testen, ob ein Port offen oder geschlossen bzw. geschützt ist. Besonders gut zum Erkennen von Firewalls.

Optionen

Nmap kennt diverse Optionen, die mit den oben genannten Scan-Techniken kombiniert werden können:

Versions- und OS-Erkennung

nmap - Optionen (Version und OS)
OptionBeschreibung
-sRWird ein RPC-Dienst erkannt, so werden zusätzliche RPC-Pakete gesendet, da so evtl. weitere Informationen zum dem auf dem betreffenden Port lauschenden Dienst herausgefunden werden können.
-sVVersucht durch zusätzliche Tests, den Dienst auf jedem offenen Port zu identifizieren. Beinhaltet -sR.
-OOS-Detection: Versucht über besondere Eigenarten der Netzwerkimplementierungen das Betriebssystem des Zieles zu identifizieren.
-AKurzform für -sV -O

Ports

Standardmäßig scannt Nmap alle Ports von 1 bis 1024, sowie die höheren, die in der Datei /usr/share/nmap/nmap-services aufgeführt sind. Folgende Optionen erzeugen ein abweichendes Verhalten:

nmap - Optionen (Ports)
OptionBeschreibung
-p XScannt nur Port X
-p X-YScannt nur Port X bis Y
-p X,Y,ZScannt die Ports X, Y und Z
-p-Alle Ports scannen
-FSchneller Scan, scannt nur die bekannten Ports, welche in der Datei nmap-services aufgeführt sind.
-rScannt alle Ports in numerischer Reihenfolge, was zu besserer Übersichtlichkeit mit der Option -v führen kann. Standardmäßig wählt nmap eine zufällige Reihenfolge.

sonstige Optionen

nmap - Optionen (Sonstige)
OptionBeschreibung
-PnNormalerweise überprüft nmap vor einem vollen Portscan, ob der Rechner überhaupt existiert und online ist (s. Scan-Technik -sn). Diese Option schaltet das ab und wird benötigt um Hosts zu scannen, auf denen kein Webserver läuft und die Ping blockieren.
-e eth0Weist nmap explizit an, die Netzwerkschnittstelle eth0 zu nutzen. Normalerweise wählt nmap die Schnittstelle selber aus.
-oN DATEIProtokolliert den Scan in DATEI
-vGibt zusätzliche Informationen während des Scans aus. Kann nie schaden.

Skripte

Neben dem einfachen Scannen von Ports unterstützt Nmap auch das Ausführen von komplexen Skripten. Dieses sind Textdateien in der Programmiersprache LUA und werden im Verzeichnis /usr/share/nmap/scripts gespeichert. Jede Datei enthält am Anfang eine kurze Funktionsbeschreibung und die Aufrufparameter. Nmap-Skripte können für folgende Aufgaben eingesetzt werden:

  • Erweiterte Informationen zu einem Port

  • Schwachstellenanalyse - Für viele bekannte Schwachstellen existieren Nmap-Skripte die anzeigen, ob der jeweilige Server davon betroffen ist (z.B. ssl-heartbleed).

  • Brute-Force-Angriffe - Viele der Skripte versuchen sich über eine Liste mit Benutzernamen und Passwörtern auf einem bestimmten Server-Dienst anzumelden (z.B. ssh-brute).

Achtung!

Das Ausnutzen von Schwachstellen oder das Überwinden von Passwortsperren (egal ob Brute-Force oder das einmalige Eintippen) sind rechtswidrig und können strafrechtlich verfolgt werden, wenn dies auf fremde Systeme erfolgt und ohne Absprache mit dem Systemverantwortlichen durchgeführt wird. Die jeweiligen Nmap-Skripte sollten daher nur für eigene Rechner verwendet werden.

Beispiel für das Auflisten aller unterstützten Verschlüsselungsfunktionen eines Webservers:

sudo nmap --script ssl-enum-ciphers -p 443 ubuntuusers.de 

Starting Nmap 7.60 ( https://nmap.org ) at 2018-08-25 10:01 CEST
Nmap scan report for ubuntuusers.de (213.95.41.4)
Host is up (0.044s latency).
Other addresses for ubuntuusers.de (not scanned): 2001:780:0:25:dead:beef:cafe:1
rDNS record for 213.95.41.4: ha.ubuntu-eu.org

PORT    STATE SERVICE
443/tcp open  https
| ssl-enum-ciphers: 
|   TLSv1.0: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|     compressors: 
|       NULL
|     cipher preference: server
|     warnings: 
|       Key exchange (dh 2048) of lower strength than certificate key
|       Key exchange (secp256r1) of lower strength than certificate key
|   TLSv1.1: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|     compressors: 
|       NULL
|     cipher preference: server
|     warnings: 
|       Key exchange (dh 2048) of lower strength than certificate key
|       Key exchange (secp256r1) of lower strength than certificate key
|   TLSv1.2: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|     compressors: 
|       NULL
|     cipher preference: server
|     warnings: 
|       Key exchange (dh 2048) of lower strength than certificate key
|       Key exchange (secp256r1) of lower strength than certificate key
|_  least strength: A

Nmap done: 1 IP address (1 host up) scanned in 15.99 seconds

Zenmap

./Zenmap_625.png

Zenmap 🇬🇧 ist ein grafische Benutzeroberfläche für Nmap. Zenmap wird über folgendes Paket installiert [1]:

  • zenmap (universe)

Paketliste zum Kopieren:

sudo apt-get install zenmap 

Oder mit apturl installieren, Link: apt://zenmap

Gestartet wird Zenmap aus dem GNOME Menü unter

  • "Anwendungen → Internet → Zenmap"

Auch mit Zenmap sind alle Scantechniken nur verfügbar, wenn das Programm mit Root-Rechten gestartet wird.

Mit Hilfe von Zenmap kann man die verschiedenen oben beschriebenen Scan-Techniken und Optionen bequem aus diversen Auswahlmenüs zusammenstellen. Zenmap stellt dann den entsprechenden Aufruf von Nmap in einer Zeile am unteren Rand des Fensters dar.

Diese Revision wurde am 25. April 2019 21:28 von ubot erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Internet, Shell, Server, Netzwerk, Sicherheit