Nmap Scanning Flags verwenden: Eine Anleitung

NmapBeginner
Jetzt üben

Einführung

Nmap (Network Mapper) ist ein grundlegendes Werkzeug in der Netzwerksicherheit und -administration. Dieses Lab führt Sie in die Nmap-Scan-Flags ein, mit denen Sie effektive Netzwerkaufklärung und Schwachstellenbewertung durchführen können. Durch praktische Übungen lernen Sie, wie Sie verschiedene Nmap-Befehle verwenden, um Hosts zu entdecken, Ports zu scannen und Dienste in einem Netzwerk zu identifizieren. Diese Fähigkeiten sind für Netzwerkadministratoren und Sicherheitsexperten unerlässlich, um sichere Netzwerkumgebungen zu erhalten.

Installation von Nmap und grundlegendes Scannen

Installation von Nmap

Nmap ist auf den meisten Systemen nicht vorinstalliert, daher ist unser erster Schritt die Installation. Öffnen Sie ein Terminal in Ihrer LabEx-Umgebung und führen Sie die folgenden Befehle aus:

sudo apt update
sudo apt install nmap -y

Nachdem die Installation abgeschlossen ist, überprüfen Sie, ob Nmap korrekt installiert wurde, indem Sie die Version überprüfen:

nmap --version

Sie sollten eine ähnliche Ausgabe wie diese sehen:

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1f libssh2-1.8.0 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

Grundlagen von Nmap verstehen

Nmap funktioniert, indem es speziell erstellte Pakete an Ziel-Hosts sendet und die Antworten analysiert. Dies hilft bei der Bestimmung:

  • Welche Hosts im Netzwerk verfügbar sind
  • Welche Dienste (Ports) sie anbieten
  • Welche Betriebssysteme sie ausführen
  • Welche Art von Paketfiltern/Firewalls verwendet werden

Die grundlegende Syntax eines Nmap-Befehls lautet:

nmap [scan type] [options] target

Wobei:

  • [scan type] den auszuführenden Scantyp angibt
  • [options] zusätzliche Parameter zur Anpassung des Scans sind
  • target die IP-Adresse, der Hostname oder der IP-Bereich ist, der gescannt werden soll

Ihr erster Scan: Scannen des Localhost

Beginnen wir mit einem einfachen Scan Ihres eigenen Rechners (localhost). Führen Sie aus:

nmap localhost

Dieser Befehl scannt die gängigsten 1000 TCP-Ports auf Ihrem lokalen Rechner. Die Ausgabe sieht ähnlich aus wie:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Die Ausgabe zeigt:

  • Die Scan-Startzeit
  • Den gescannten Host (localhost/127.0.0.1)
  • Offene Ports und die zugehörigen Dienste
  • Scan-Abschlusszeit und -Statistiken

Scan-Ergebnisse verstehen

Analysieren wir die Ausgabe:

  • PORT: Zeigt die Portnummer und das Protokoll (z. B. 22/tcp)
  • STATE: Gibt an, ob der Port offen, geschlossen oder gefiltert ist
  • SERVICE: Zeigt den Dienst an, der typischerweise mit diesem Port verbunden ist

Die häufigsten Port-Zustände sind:

  • open: Der Port akzeptiert Verbindungen
  • closed: Der Port ist erreichbar, aber keine Anwendung lauscht darauf
  • filtered: Nmap kann nicht feststellen, ob der Port offen ist, da Paketfilterung seine Probes blockiert

Scannen eines bestimmten Ports

Um einen bestimmten Port zu scannen, verwenden Sie das Flag -p gefolgt von der Portnummer:

nmap -p 22 localhost

Die Ausgabe konzentriert sich nur auf Port 22:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).

PORT   STATE SERVICE
22/tcp open  ssh

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

Scannen eines Portbereichs

Sie können einen Portbereich mit einem Bindestrich scannen:

nmap -p 20-25 localhost

Dies scannt die Ports 20 bis 25:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).

PORT   STATE  SERVICE
20/tcp closed ftp-data
21/tcp closed ftp
22/tcp open   ssh
23/tcp closed telnet
24/tcp closed priv-mail
25/tcp closed smtp

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

Nun haben Sie gelernt, wie man Nmap installiert und grundlegendes Port-Scanning durchführt. Im nächsten Schritt werden wir erweiterte Scantechniken mit verschiedenen Nmap-Flags untersuchen.

Erkundung wesentlicher Nmap-Scan-Flags

Nachdem Sie die Grundlagen von Nmap verstanden haben, wollen wir uns einige wichtige Scan-Flags ansehen, die Ihnen mehr Kontrolle und Informationen aus Ihren Scans geben.

TCP SYN Scan (-sS)

Der TCP SYN Scan ist der Standard-Scantyp, wenn er als Root ausgeführt wird. Er wird oft als "halb-offener" Scan bezeichnet, da er TCP-Verbindungen nie abschließt. Er ist relativ heimlich und schnell.

Führen wir einen SYN-Scan auf localhost aus:

sudo nmap -sS localhost

Die Ausgabe sieht ähnlich aus wie:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

TCP Connect Scan (-sT)

Der TCP Connect Scan ist der Standard-Scan, wenn Nmap nicht mit Root-Rechten ausgeführt wird. Er schließt den vollständigen TCP-Handshake ab, wodurch er besser erkennbar, aber in manchen Fällen auch zuverlässiger ist.

nmap -sT localhost

Ausgabe:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Service Version Detection (-sV)

Das Version Detection Flag weist Nmap an, zu versuchen, die Version der Dienste zu ermitteln, die auf offenen Ports ausgeführt werden:

nmap -sV localhost

Ausgabe:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Beachten Sie, wie die Ausgabe jetzt detaillierte Versionsinformationen für jeden Dienst enthält. Dies ist für Sicherheitsbewertungen von unschätzbarem Wert, da bestimmte Versionen bekannte Schwachstellen aufweisen können.

OS Detection (-O)

Das OS Detection Flag versucht, das Betriebssystem des Ziels zu ermitteln:

sudo nmap -O localhost

Ausgabe:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.57 seconds

Beachten Sie, dass Nmap erkannt hat, dass das System die Linux-Kernel-Version 4.X oder 5.X ausführt.

Kombinieren von Flags für umfassendes Scannen

Sie können mehrere Flags kombinieren, um umfassendere Ergebnisse zu erhalten. Kombinieren wir beispielsweise die Service Version Detection und OS Detection:

sudo nmap -sV -O localhost

Ausgabe:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00015s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.23 seconds

Aggressive Scanning (-A)

Das Aggressive Scan Flag kombiniert mehrere Scan-Optionen, einschließlich OS Detection, Version Detection, Script Scanning und Traceroute:

sudo nmap -A localhost

Ausgabe (gekürzt für die Kürze):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp      CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
| mysql-info:
|   Protocol: 10
|   Version: 8.0.30-0ubuntu0.20.04.2
|   Thread ID: 11
|   Capabilities flags: 65535
|   Some Capabilities: SupportsLoadDataLocal, Support41Auth, Speaks41ProtocolOld, IgnoreSigpipes, DontAllowDatabaseTableColumn, FoundRows, SupportsCompression, ConnectWithDatabase, LongPassword, InteractiveClient, SwitchToSSLAfterHandshake, ODBCClient, Speaks41ProtocolNew, IgnoreSpaceBeforeParenthesis, LongColumnFlag, SupportsTransactions, SupportsMultipleResults, SupportsAuthPlugins, SupportsMultipleStatments
|   Status: Autocommit
|   Salt: \x14\x12\x1Fjw\x182\x15\x0D\x12\x13C\x1F\x14\x0D\x07
|_  Auth Plugin Name: caching_sha2_password
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.12 seconds

Beachten Sie die erhebliche Menge an zusätzlichen Informationen, die der aggressive Scan liefert, einschließlich SSH-Schlüsselinformationen, HTTP-Serverdetails und detailliertere MySQL-Dienstinformationen.

In diesem Schritt haben Sie mehrere wichtige Nmap-Scan-Flags kennengelernt und wie Sie diese für umfassendere Ergebnisse kombinieren können. Im nächsten Schritt werden wir praktische Scan-Strategien für verschiedene Szenarien untersuchen.

Netzwerk-Scanning-Strategien und Timing-Kontrollen

In diesem Schritt lernen wir Netzwerk-Scanning-Strategien kennen und wie man das Timing und die Leistung von Nmap-Scans steuert. Dies ist entscheidend, wenn Sie größere Netzwerke scannen oder diskreter vorgehen müssen.

Scannen mehrerer Hosts

Nmap kann mehrere Hosts auf verschiedene Weise scannen:

Scannen einer Liste von IPs

Sie können mehrere IP-Adressen durch Leerzeichen getrennt angeben:

nmap 127.0.0.1 127.0.0.2

Scannen eines IP-Bereichs

Sie können einen Bereich von IP-Adressen mit der CIDR-Notation scannen:

nmap 127.0.0.1/30

Dieser Befehl scannt 127.0.0.0 bis 127.0.0.3. Die Ausgabe zeigt:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

Nmap scan report for 127.0.0.2
Host is up (0.00015s latency).
All 1000 scanned ports on 127.0.0.2 are closed

Nmap scan report for 127.0.0.3
Host is up (0.00013s latency).
All 1000 scanned ports on 127.0.0.3 are closed

Nmap done: 4 IP addresses (3 hosts up) scanned in 0.92 seconds

Host Discovery Optionen

Ping Scan (-sn)

Manchmal möchten Sie nur wissen, welche Hosts online sind, ohne Ports zu scannen. Der Ping Scan ist dafür perfekt geeignet:

nmap -sn 127.0.0.1/24

Dieser Befehl scannt das gesamte 127.0.0.1/24 Subnetz, führt aber nur Host Discovery ohne Port-Scanning durch. Aufgrund der Ausgabegröße zeigen wir nur einen Ausschnitt:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Nmap scan report for 127.0.0.2
Host is up (0.00013s latency).
Nmap scan report for 127.0.0.3
Host is up (0.00014s latency).
...
Nmap done: 256 IP addresses (256 hosts up) scanned in 2.34 seconds

Überspringen der Host Discovery (-Pn)

Manchmal blockieren Firewalls Ping-Anfragen. Um dies zu umgehen und alle Hosts unabhängig von Ping-Antworten zu scannen, verwenden Sie das Flag -Pn:

nmap -Pn localhost

Ausgabe:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:45 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Timing- und Leistungssteuerung

Nmap bietet verschiedene Timing-Vorlagen, die verschiedene Scan-Parameter anpassen:

  • -T0: Paranoid - Sehr langsam, wird zur IDS-Vermeidung verwendet
  • -T1: Sneaky - Langsam, wird zur IDS-Vermeidung verwendet
  • -T2: Polite - Verlangsamt sich, um weniger Bandbreite zu verbrauchen
  • -T3: Normal - Standard, gleicht Geschwindigkeit mit Zuverlässigkeit aus
  • -T4: Aggressive - Schneller, geht von einem einigermaßen schnellen und zuverlässigen Netzwerk aus
  • -T5: Insane - Sehr schnell, geht von einem extrem schnellen Netzwerk aus

Versuchen wir einen aggressiven Scan:

nmap -T4 localhost

Ausgabe:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:50 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Beachten Sie, dass der Scan etwas schneller abgeschlossen wurde als der Standard-Scan.

Ausgabeformate

Nmap kann Scan-Ergebnisse in verschiedenen Formaten für die spätere Analyse oder Berichterstellung speichern:

Normale Ausgabe (-oN)

Speichern Sie die Scan-Ergebnisse in einem normalen Format in einer Datei:

nmap -oN scan_results.txt localhost

Dieser Befehl speichert die Scan-Ausgabe in scan_results.txt im aktuellen Verzeichnis.

XML-Ausgabe (-oX)

Speichern Sie die Scan-Ergebnisse im XML-Format, was für die Analyse mit anderen Tools nützlich ist:

nmap -oX scan_results.xml localhost

Alle Formate (-oA)

Speichern Sie die Scan-Ergebnisse in allen Formaten (normal, XML und grepable):

nmap -oA scan_results localhost

Dies erstellt drei Dateien: scan_results.nmap, scan_results.xml und scan_results.gnmap.

Untersuchen wir den Inhalt der normalen Ausgabedatei:

cat scan_results.txt

Ausgabe:

## Nmap 7.80 scan initiated Thu Sep 14 16:55:23 2023 as: nmap -oN scan_results.txt localhost
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

## Nmap done at Thu Sep 14 16:55:23 2023 -- 1 IP address (1 host up) scanned in 0.12 seconds

Praktische Scan-Strategie

Kombinieren wir das Gelernte, um eine praktische Scan-Strategie für einen umfassenden Scan zu erstellen:

sudo nmap -sS -sV -O -T4 -oA comprehensive_scan localhost

Dieser Befehl:

  • Verwendet SYN Stealth Scan (-sS)
  • Erkennt Service-Versionen (-sV)
  • Versucht OS Detection (-O)
  • Verwendet aggressives Timing (-T4)
  • Speichert Ergebnisse in allen Formaten (-oA)

Ausgabe:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.42 seconds

Jetzt können Sie die umfassenden Scan-Ergebnisse in einer der Ausgabedateien anzeigen:

ls comprehensive_scan.*

Ausgabe:

comprehensive_scan.gnmap  comprehensive_scan.nmap  comprehensive_scan.xml

Ethische Überlegungen

Denken Sie daran, dass Netzwerk-Scanning nur in Netzwerken durchgeführt werden sollte, die Sie besitzen oder für die Sie eine ausdrückliche Erlaubnis zum Scannen haben. Unbefugtes Scannen kann sein:

  1. In vielen Gerichtsbarkeiten illegal
  2. Von Netzwerkadministratoren als feindselige Handlung angesehen
  3. Möglicherweise störend für Netzwerkdienste

In dieser Laborumgebung haben wir nur localhost gescannt, was immer zulässig ist, da es sich um Ihr eigenes System handelt.

Sie haben nun verschiedene Netzwerk-Scanning-Strategien, Timing-Kontrollen und Ausgabeformate kennengelernt. Sie verfügen über das gesamte grundlegende Wissen, das Sie benötigen, um effektive Netzwerk-Reconnaissance mit Nmap durchzuführen.

Script-Scanning und gezielte Service-Analyse

In diesem Schritt werden wir die leistungsstarke Scripting Engine (NSE) von Nmap untersuchen und lernen, wie man eine gezielte Service-Analyse durchführt. NSE-Skripte erweitern die Funktionalität von Nmap, indem sie detailliertere Scans für bestimmte Dienste und Schwachstellen ermöglichen.

Einführung in die Nmap Scripting Engine (NSE)

Die Nmap Scripting Engine ermöglicht es Benutzern, Skripte zu schreiben und auszutauschen, um eine Vielzahl von Netzwerkaufgaben zu automatisieren. Nmap wird mit Hunderten von vorgefertigten Skripten geliefert, die in verschiedene Gruppen eingeteilt sind:

  • auth: Authentifizierungsbezogene Skripte
  • default: Skripte, die standardmäßig mit -sC ausgeführt werden
  • discovery: Host- und Service-Discovery
  • exploit: Versuche, Schwachstellen auszunutzen
  • malware: Malware und Backdoors erkennen
  • safe: Sichere, nicht-intrusive Skripte
  • vuln: Skripte zur Erkennung von Schwachstellen

Ausführen von Standard-Skripten (-sC)

Das Flag -sC führt den Standardsatz von Skripten aus, die im Allgemeinen sicher sind und nützliche Informationen liefern:

nmap -sC localhost

Ausgabe:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql
|_mysql-info: ERROR: Script execution failed (use -d to debug)

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

Beachten Sie, wie die Skripte zusätzliche Informationen über jeden Dienst bereitgestellt haben, wie z. B. SSH-Hostschlüssel und HTTP-Seitentitel.

Ausführen bestimmter Skripte

Sie können bestimmte Skripte mit dem Flag --script ausführen, gefolgt vom Skriptnamen oder der Kategorie:

nmap --script=http-title localhost

Dies führt nur das Skript http-title aus, das den Titel von HTTP-Seiten abruft:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql

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

Ausführen von Skripten nach Kategorie

Sie können alle Skripte in einer bestimmten Kategorie ausführen:

nmap --script=discovery localhost

Dies führt alle Discovery-Skripte aus, die eine Fülle von Informationen über Netzwerkdienste liefern können (Ausgabe für die Kürze gekürzt):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
| http-methods:
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
| cups-info:
|   CUPS Server:
|     Server: CUPS/2.3 IPP/2.1
|_    Authentication-Method: Basic
| http-methods:
|_  Supported Methods: GET HEAD OPTIONS POST
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql
| mysql-info:
|   Protocol: 10
|   Version: 8.0.30-0ubuntu0.20.04.2
|   Thread ID: 15
|   Capabilities flags: 65535
|   Some Capabilities: ConnectWithDatabase, SupportsLoadDataLocal, SupportsTransactions, DontAllowDatabaseTableColumn, Support41Auth, InteractiveClient, Speaks41ProtocolOld, FoundRows, IgnoreSigpipes, ODBCClient, SwitchToSSLAfterHandshake, IgnoreSpaceBeforeParenthesis, LongColumnFlag, Speaks41ProtocolNew, SupportsMultipleStatments, LongPassword, SupportsCompression, SupportsMultipleResults, SupportsAuthPlugins
|   Status: Autocommit
|   Salt: \x7FeL)\x0C\x5C#S\x06N%\x1E\x7EYaC
|_  Auth Plugin Name: caching_sha2_password

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

Kombinieren von Script-Scanning mit Service-Erkennung

Für die umfassendsten Ergebnisse kombinieren Sie Script-Scanning mit Service-Erkennung:

nmap -sV -sC localhost

Ausgabe:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp     CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql   MySQL 8.0.30-0ubuntu0.20.04.2
|_mysql-info: ERROR: Script execution failed (use -d to debug)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.03 seconds

Gezielte Service-Analyse

Konzentrieren wir uns auf die detailliertere Analyse bestimmter Dienste.

Analyse von HTTP-Diensten

Um HTTP-Dienste detailliert zu analysieren, können wir die http-*-Skripte verwenden:

nmap --script="http-*" -p 80 localhost

Dies führt alle HTTP-bezogenen Skripte gegen Port 80 aus:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).

PORT   STATE SERVICE
80/tcp open  http
|_http-chrono: Request times for /; avg: 32.68ms; min: 32.68ms; max: 32.68ms
|_http-comments-displayer: Couldn't find any comments.
|_http-date: Thu, 14 Sep 2023 17:30:24 GMT; +6s from local time.
|_http-devframework: Couldn't determine the underlying framework or CMS. Try increasing 'httpspider.maxpagecount' value to spider more pages.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
|_http-feed: Couldn't find any feeds.
|_http-fetch: Please enter the complete path of the directory to save data in.
|_http-generator: Couldn't find any generator in the HTML headers and body
| http-methods:
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-mobileversion-checker: No mobile version detected.
|_http-referer-checker: Couldn't find any cross-domain scripts.
|_http-security-headers:
| http-server-header:
|   Apache/2.4.41
|_  Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-traceroute: ERROR: Script execution failed (use -d to debug)
|_http-useragent-tester:
|_http-xssed: No previously reported XSS vuln.

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

Analyse von SSH-Diensten

In ähnlicher Weise können wir SSH-Dienste analysieren:

nmap --script="ssh-*" -p 22 localhost

Ausgabe:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).

PORT   STATE SERVICE
22/tcp open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
|_ssh-run: ERROR: Script execution failed (use -d to debug)

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

Schwachstellen-Scanning

Nmap enthält Skripte, die potenzielle Schwachstellen erkennen können. Die Verwendung der Kategorie vuln kann helfen, Sicherheitsprobleme zu identifizieren:

nmap --script=vuln localhost

Dies kann einige Zeit dauern, da verschiedene Schwachstellenprüfungen durchgeführt werden. Die Ausgabe könnte so aussehen:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-slowloris-check:
|   VULNERABLE:
|   Slowloris DOS attack
|     State: LIKELY VULNERABLE
|     IDs:  CVE:CVE-2007-6750
|       Slowloris tries to keep many connections to the target web server open and hold
|       them open as long as possible.  It accomplishes this by opening connections to
|       the target web server and sending a partial request. By doing so, it starves
|       the http server's resources causing Denial Of Service.
|
|     Disclosure date: 2009-09-17
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
|_      http://ha.ckers.org/slowloris/
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
631/tcp  open  ipp
3306/tcp open  mysql

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

In diesem Fall hat Nmap festgestellt, dass der Apache-Webserver möglicherweise anfällig für einen Slowloris-DoS-Angriff ist. Diese Informationen können für die Sicherung Ihrer Systeme wertvoll sein.

Erstellen eines umfassenden Scan-Berichts

Kombinieren wir nun alles, was wir gelernt haben, um einen umfassenden Sicherheitsbericht zu erstellen:

sudo nmap -sS -sV -O -sC --script=vuln -T4 -oA comprehensive_security_report localhost

Dieser Befehl:

  • Verwendet SYN Stealth Scan (-sS)
  • Erkennt Service-Versionen (-sV)
  • Versucht OS Detection (-O)
  • Führt Standard-Skripte aus (-sC)
  • Führt Skripte zur Schwachstellenerkennung aus (--script=vuln)
  • Verwendet aggressives Timing (-T4)
  • Speichert Ergebnisse in allen Formaten (-oA)

Die Ausgabe ist umfassend und kann einige Zeit in Anspruch nehmen. Nach Abschluss erhalten Sie einen detaillierten Sicherheitsbericht in verschiedenen Formaten (normal, XML und grepable), auf den Sie sich für die Sicherheitsanalyse beziehen können.

In diesem Schritt haben Sie gelernt, wie Sie die Scripting Engine von Nmap verwenden, um detaillierte Informationen über Dienste zu sammeln und potenzielle Schwachstellen zu erkennen. Diese erweiterten Techniken sind für umfassende Netzwerksicherheitsbewertungen unerlässlich.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Verwendung von Nmap für Netzwerk-Reconnaissance und Sicherheitsbewertung gelernt. Sie verstehen jetzt:

  1. Wie man Nmap installiert und grundlegendes Scannen von Hosts und Ports durchführt
  2. Wie man wichtige Nmap-Scanning-Flags für verschiedene Arten von Scans verwendet
  3. Wie man effektive Scanning-Strategien implementiert und Timing-Parameter steuert
  4. Wie man die Nmap Scripting Engine für detaillierte Service-Analyse und Schwachstellenerkennung nutzt

Diese Fähigkeiten bilden eine Grundlage für Netzwerksicherheitsbewertungen und sind für Cybersicherheitsexperten unerlässlich. Denken Sie daran, diese Techniken stets verantwortungsvoll und nur in Netzwerken zu verwenden, für die Sie eine Scan-Erlaubnis haben.

Wenn Sie Ihre Cybersicherheitsreise fortsetzen, sollten Sie in Erwägung ziehen, erweiterte Nmap-Funktionen wie die Entwicklung benutzerdefinierter NSE-Skripte, Firewall-Vermeidungstechniken und die Integration mit anderen Sicherheitstools zu erkunden. Regelmäßiges Üben mit Nmap wird Ihnen helfen, sicherer darin zu werden, potenzielle Sicherheitsprobleme in Netzwerkumgebungen zu identifizieren.