Nmap ist ein leistungsstarkes Netzwerk-Scan-Tool für Sicherheitsaudits und Penetrationstests. Es ist eines der wichtigsten Tools, das von Netzwerkadministratoren zur Fehlerbehebung bei Netzwerkverbindungsproblemen und zum Scannen von Ports verwendet wird.
Nmap kann auch die Mac-Adresse, den Betriebssystemtyp, die Dienstversion und vieles mehr erkennen.
Dieser Artikel erklärt die Grundlagen zur Verwendung von nmap
Befehl, um verschiedene Netzwerkaufgaben auszuführen.
Installieren von Nmap #
Nmap ist ein plattformübergreifendes Programm, das auf allen gängigen Betriebssystemen installiert werden kann. Es wurde ursprünglich als reines Linux-Tool veröffentlicht und später auf andere Systeme wie BSD, Windows und macOS portiert.
Wenn Sie eine grafische Benutzeroberfläche der Befehlszeile vorziehen, bietet Nmap auch eine grafische Benutzeroberfläche namens Zenmap.
Die offiziellen Binärpakete können von der Nmap-Download-Seite heruntergeladen werden.
Der Installationsvorgang ist unkompliziert und variiert je nach Betriebssystem.
Installieren von Nmap auf Ubuntu und Debian #
Nmap ist in den standardmäßigen Ubuntu- und Debian-Repositories verfügbar. Um es zu installieren, führen Sie Folgendes aus:
sudo apt update
sudo apt install nmap
Installieren von Nmap auf CentOS und Fedora #
Unter CentOS und anderen Red Hat-Derivaten wird Folgendes ausgeführt:
sudo dnf install nmap
Installieren von Nmap unter macOS #
macOS-Benutzer können Nmap installieren, indem sie das Installationspaket „.dmg“ von der Nmap-Site oder über Homebrew herunterladen:
brew install nmap
Installieren von Nmap unter Windows #
Die Windows-Version von Nmap hat einige Einschränkungen und ist im Allgemeinen etwas langsamer als die UNIX-Version.
Die einfachste Möglichkeit, Nmap unter Windows zu installieren, besteht darin, die exe-Datei zur Selbstinstallation herunterzuladen und auszuführen.
Sie können Nmap unter Windows entweder über die Befehlszeile oder durch Starten des Zenmap-Programms ausführen. Weitere Informationen zur Verwendung von Nmap unter Windows finden Sie in den Gebrauchsanweisungen nach der Installation.
Mit Nmap #
Nmap wird normalerweise verwendet, um die Netzwerksicherheit zu prüfen, Netzwerkzuordnungen vorzunehmen, offene Ports zu identifizieren und nach Online-Geräten zu suchen.
Die vereinfachte Syntax von nmap
Befehl lautet wie folgt:
nmap [Options] [Target...]
Das grundlegendste Beispiel für die Verwendung von Nmap ist das Scannen eines einzelnen Ziels als Standardbenutzer ohne Angabe von Optionen:
nmap scanme.nmap.org
Beim Aufruf als Nicht-Root-Benutzer, der keine Raw-Paket-Privilegien hat, nmap
führt den TCP-Verbindungsscan aus. Die (-sT
) ist standardmäßig im unprivilegierten Modus aktiviert.
Die Ausgabe sieht in etwa so aus, einschließlich grundlegender Informationen über den Scan und einer Liste offener und gefilterter TCP-Ports.
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-16 20:19 CET
Nmap scan report for cast.lan (192.168.10.121)
Host is up (0.048s latency).
Not shown: 981 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
143/tcp open imap
443/tcp open https
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
1025/tcp open NFS-or-IIS
1080/tcp open socks
8080/tcp open http-proxy
8081/tcp open blackice-icecap
Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds
Die beliebteste Scan-Option ist der TCP-SYN-Scan (-sS
), die schneller als die Connect-Option ist und gegen alle kompatiblen TCP-Stacks funktioniert.
-sS
ist standardmäßig eingeschaltet, wenn nmap
wird als Benutzer mit Administratorrechten aufgerufen:
sudo nmap 192.168.10.121
Verwenden Sie für eine detailliertere Ausgabe die Erhöhung der Ausführlichkeit mit -v
oder -vv
:
sudo nmap -vv 192.168.10.121
Um einen UDP-Scan durchzuführen, rufen Sie den Befehl mit dem Befehl (-sU
) Option als Root-Benutzer:
sudo nmap -sU 192.168.10.121
Eine vollständige Liste der Port-Scanning-Methoden finden Sie auf der Nmap-Dokumentationsseite.
Nmap unterstützt auch IPv6-Adressen. Um einen IPv6-Host anzugeben, verwenden Sie den -6
Möglichkeit:
sudo nmap -6 fd12:3456:789a:1::1
Zielhosts angeben #
Nmap behandelt alle Argumente, die keine Optionen sind, als Zielhosts.
Argumente gelten als Optionen, wenn sie mit einem einfachen oder doppelten Bindestrich beginnen (-
, --
). Die einfachste Möglichkeit besteht darin, eine oder mehrere Zieladressen oder Domänennamen zu übergeben:
nmap 192.168.10.121 host.to.scan
Sie können die CIDR-Notation verwenden, um einen Netzwerkbereich anzugeben:
nmap 192.168.10.0/24
Um einen Oktettbereich anzugeben, verwenden Sie das Bindestrichzeichen. Zum Beispiel, um 192.168.10.1
zu scannen , 192.168.11.1
und 192.168.12.1
:
nmap 192.168.10-12.1
Ein weiteres Zeichen, mit dem Sie die Ziele angeben können, ist das Komma. Der folgende Befehl zielt auf dieselben Hosts ab wie der obige:
nmap 192.168.10,11,12.1
Sie können alle Formen kombinieren:
nmap 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Um sicherzustellen, dass Sie vor dem Scannen die richtigen Hosts angegeben haben, verwenden Sie die Listen-Scan-Option (-sL
), die nur die Ziele auflistet, ohne einen Scan auszuführen:
nmap -sL 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Wenn Sie Ziele ausschließen möchten, die in dem von Ihnen angegebenen Bereich enthalten sind, verwenden Sie --exclude
Möglichkeit:
nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12
Festlegen und Scannen von Ports #
Standardmäßig führt Nmap einen schnellen Scan für die 1000 beliebtesten Ports durch. Diese Ports sind nicht die ersten 1000 aufeinanderfolgenden Ports, sondern die 1000 am häufigsten verwendeten Ports im Bereich von 1 bis 65389.
Um nach allen Ports von 1 bis 65535 zu suchen, verwenden Sie -p-
Möglichkeit:
nmap -p- 192.168.10.121
Jeder Port kann sich in einem der folgenden Zustände befinden:
- open - Das auf dem Port laufende Programm antwortet auf Anfrage.
- geschlossen - Auf dem Port läuft kein Programm, und der Host antwortet auf Anfragen.
- gefiltert – Der Host antwortet nicht auf die Anfrage.
Um beispielsweise nur Port 443 zu scannen, würden Sie den folgenden Befehl verwenden:
nmap -p 443 192.168.10.121
Um mehr als einen Port anzugeben, trennen Sie die Zielports durch ein Komma:
nmap -p 80,443 192.168.10.121
Portbereiche können mit dem Bindestrichsymbol angegeben werden. Um beispielsweise alle UDP-Ports von 1 bis 1024 zu scannen, würden Sie Folgendes ausführen:
sudo nmap -sU -p 1-1024 192.168.10.121
Alle zusammen:
nmap -p 1-1024,8080,9000 192.168.10.121
Ports können auch über den Portnamen angegeben werden. Um beispielsweise nach Port 22 zu scannen, können Sie ssh verwenden:
nmap -p ssh 192.168.10.121
Ping-Scannen #
Um einen Ping-Scan oder eine Host-Erkennung durchzuführen, rufen Sie nmap
auf Befehl mit dem -sn
Möglichkeit:
sudo nmap -sn 192.168.10.0/24
Das -sn
Die Option weist Nmap an, nur Online-Hosts zu erkennen und keinen Port-Scan durchzuführen. Dies ist nützlich, wenn Sie schnell feststellen möchten, welche der angegebenen Hosts aktiv sind.
DNS-Namensauflösung deaktivieren #
Das Standardverhalten von Nmap besteht darin, für jeden erkannten Host eine Reverse-DNS-Auflösung durchzuführen, was die Scanzeit verlängert.
Beim Scannen großer Netzwerke empfiehlt es sich, die Reverse-DNS-Auflösung zu deaktivieren und die Scans zu beschleunigen. Rufen Sie dazu den Befehl mit dem -n
auf Möglichkeit:
sudo nmap -n 192.168.10.0/16
Betriebssystem-, Dienst- und Versionserkennung #
Nmap kann das Betriebssystem des Remote-Hosts mithilfe von TCP/IP-Stack-Fingerprinting erkennen. Um die Betriebssystemerkennung auszuführen, rufen Sie den Befehl mit -O
auf Möglichkeit:
sudo nmap -O scanme.nmap.org
Wenn Nmap das Host-Betriebssystem erkennen kann, wird es Folgendes ausgeben:
...
Device type: general purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5
OS details: Linux 5.0 - 5.4
Network Distance: 18 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.47 seconds
Typischerweise lauschen Systemdienste auf Standardports, die bekannt und für sie reserviert sind. Wenn beispielsweise Port 22, der dem SSH-Dienst entspricht, offen ist, gehen Sie davon aus, dass auf dem Host ein SSH-Server läuft. Sie können sich jedoch nicht absolut sicher sein, da Benutzer Dienste auf beliebigen Ports ausführen können.
Mit Dienst- und Versionserkennung zeigt Ihnen Nmap, welches Programm auf dem Port lauscht, und die Programmversion.
Um nach Service und Version zu suchen, verwenden Sie -sV
Möglichkeit:
sudo nmap -sV scanme.nmap.org
...
PORT STATE SERVICE VERSION
19/tcp filtered chargen
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
9929/tcp open nping-echo Nping echo
31337/tcp open tcpwrapped
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
...
Sie können auch nach Betriebssystem und Versionen suchen und Traceroute in einem Befehl mit -A
ausführen Möglichkeit:
sudo nmap -A 192.168.10.121
Nmap-Ausgabe #
Standardmäßig gibt Nmap die Informationen auf der Standardausgabe (stdout) aus.
Wenn Sie ein großes Netzwerk scannen oder die Informationen zur späteren Verwendung benötigen, können Sie die Ausgabe in einer Datei speichern.
Nmap bietet mehrere Ausgabetypen. Um die Ausgabe im normalen Format zu speichern, verwenden Sie den -oN
Option gefolgt vom Dateinamen:
sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt
Die beliebteste Option ist das Speichern der Ausgabe im XML-Format. Verwenden Sie dazu das -oX
Möglichkeit:
sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml
Ein weiteres nützliches Format ist die Grepable-Ausgabe, die mit den Standard-Unix-Tools wie grep
geparst werden kann , awk
und cut
. Die Grepable-Ausgabe wird mit dem -oG
angegeben Möglichkeit:
sudo nmap -sU -p 1-1024 192.168.10.121 -oG output
Nmap Scripting Engine #
Eine der leistungsstärksten Funktionen von Nmap ist seine Skript-Engine. Nmap wird mit Hunderten von Skripten ausgeliefert, und Sie können auch Ihre eigenen Skripte in der Sprache Lua schreiben.
Sie können Skripte verwenden, um Malware und Backdoors zu erkennen, Brute-Force-Angriffe durchzuführen und vieles mehr.
Um beispielsweise zu überprüfen, ob ein bestimmter Host kompromittiert ist, können Sie Folgendes verwenden:
nmap -sV --script http-malware-host scanme.nmap.org
Schlussfolgerung #
Nmap ist ein Open-Source-Tool, das hauptsächlich von Netzwerkadministratoren verwendet wird, um Host- und Scan-Ports zu erkennen.
Bitte beachten Sie, dass es in einigen Ländern nicht legal ist, Netzwerke ohne Genehmigung zu scannen.