Service-Banner in Nmap erkennen

NmapNmapBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Labyrinth lernst du, wie du mit Nmap Service-Banner erkennen kannst. Das Hauptziel besteht darin, Informationen über die auf einem Zielcomputer laufenden Netzwerkdienste zu sammeln, wie z. B. Dienstnamen, Versionen und Betriebssysteme. Du wirst das Banner-Script auf eine Ziel-IP ausführen, bestimmte Ports scannen, die Ausführlichkeit des Scans erhöhen, die Ergebnisse speichern und die Banner im Xfce-Terminal überprüfen und vergleichen.

Du wirst beginnen, indem du den Befehl nmap --script banner verwendest, um alle Standard-Ports eines Ziels zu scannen. Anschließend wirst du bestimmte Ports scannen, die Ausführlichkeit für detailliertere Ausgabe erhöhen, die Ergebnisse in eine Datei speichern und schließlich die Banner analysieren, um die auf dem Ziel laufenden Dienste zu verstehen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/scripting_basics("Scripting Engine Basics") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") subgraph Lab Skills nmap/output_formats -.-> lab-547095{{"Service-Banner in Nmap erkennen"}} nmap/save_output -.-> lab-547095{{"Service-Banner in Nmap erkennen"}} nmap/port_scanning -.-> lab-547095{{"Service-Banner in Nmap erkennen"}} nmap/target_specification -.-> lab-547095{{"Service-Banner in Nmap erkennen"}} nmap/verbosity -.-> lab-547095{{"Service-Banner in Nmap erkennen"}} nmap/os_version_detection -.-> lab-547095{{"Service-Banner in Nmap erkennen"}} nmap/service_detection -.-> lab-547095{{"Service-Banner in Nmap erkennen"}} nmap/scripting_basics -.-> lab-547095{{"Service-Banner in Nmap erkennen"}} nmap/script_management -.-> lab-547095{{"Service-Banner in Nmap erkennen"}} end

In diesem Schritt werden wir das Banner-Grabbing-Script von Nmap verwenden, um die auf einem Zielcomputer laufenden Dienste zu identifizieren. Banner-Grabbing ist eine Technik, die verwendet wird, um Informationen über einen Netzwerkdienst zu sammeln, indem man den Banner untersucht, das er beim Aufbau einer Verbindung sendet. Dieses Banner enthält oft Details wie den Dienstnamen, die Version und das Betriebssystem.

Zunächst wollen wir uns den Befehl ansehen, den wir verwenden werden:

nmap --script banner 192.168.1.1

  • nmap: Dies ist der Befehlszeilen-Netzwerkscanner.
  • --script banner: Diese Option 告诉 Nmap, das banner-Skript zu verwenden, das dazu gedacht ist, Banners von offenen Ports zu erfassen.
  • 192.168.1.1: Dies ist die Ziel-IP-Adresse. Du musst dies durch die tatsächliche IP-Adresse eines Computers im Netzwerk ersetzen, für den du die Erlaubnis zur Durchführung eines Scans hast. Für diese Lab-Umgebung werden wir 127.0.0.1 (localhost) als Ziel verwenden. Dadurch wird sichergestellt, dass du deinen eigenen Computer scannst und dass keine potenziellen ethischen oder rechtlichen Probleme auftreten.

Nun führen wir den Befehl aus. Öffne deinen Xfce-Terminal und tippe Folgendes ein:

nmap --script banner 127.0.0.1

Dieser Befehl wird alle Standard-Ports auf 127.0.0.1 scannen und versuchen, Banners von offenen Diensten zu erfassen.

Du könntest eine Ausgabe ähnlich der folgenden sehen (die genaue Ausgabe hängt von den auf deinem Computer laufenden Diensten ab):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_

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

In diesem Beispiel hat Nmap einen SSH-Dienst auf Port 22 gefunden. Das Banner zeigt, dass es OpenSSH Version 8.2p1 auf Ubuntu ist.

Wenn du keine Dienste auf deinem Computer laufen hast, wirst du möglicherweise keine Banner-Informationen sehen. Mach dir keine Sorgen, der Befehl funktioniert trotzdem. In späteren Schritten werden wir die Dienste konfigurieren, um sicherzustellen, dass wir Banners zu erfassen haben.

Im vorherigen Schritt haben wir alle Standard-Ports mit dem Banner-Script gescannt. Jetzt werden wir uns auf das Scannen bestimmter Ports konzentrieren. Dies ist nützlich, wenn du weißt, welche Dienste du interessierst, oder wenn du die Scandauer reduzieren möchtest.

Der Befehl, den wir verwenden werden, lautet:

nmap --script banner -p 22,80 127.0.0.1

Lassen Sie uns den Befehl aufteilen:

  • nmap: Der Netzwerkscanner.
  • --script banner: Gibt das Banner-Grabbing-Script an.
  • -p 22,80: Diese Option 告诉 Nmap, nur die Ports 22 und 80 zu scannen. Port 22 wird üblicherweise für SSH (Secure Shell) verwendet, und Port 80 wird üblicherweise für HTTP (Webserver) verwendet.
  • 127.0.0.1: Die Ziel-IP-Adresse (localhost).

Bevor wir den Befehl ausführen, stellen wir sicher, dass auf diesen Ports Dienste laufen. Die LabEx VM sollte standardmäßig SSH auf Port 22 laufen. Wir werden einen einfachen Webserver auf Port 80 installieren.

Öffnen Sie Ihren Xfce-Terminal und führen Sie die folgenden Befehle aus, um einen grundlegenden HTTP-Server mit Python zu installieren:

sudo apt update
sudo apt install -y python3-pip
sudo python3 -m pip install http.server

Stellen Sie jetzt den HTTP-Server auf Port 80 ein. Navigieren Sie zunächst zu Ihrem ~/project-Verzeichnis.

cd ~/project
python3 -m http.server 80

Halten Sie dieses Terminalfenster geöffnet und den HTTP-Server laufen lassen. Öffnen Sie ein neues Xfce-Terminalfenster, um mit dem Nmap-Scan fortzufahren.

Jetzt führen Sie im neuen Terminalfenster den Nmap-Befehl aus:

nmap --script banner -p 22,80 127.0.0.1

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_
80/tcp open  http
| banner: Server: SimpleHTTP/3.10 Python/3.10
|_

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

Diese Ausgabe zeigt, dass Nmap die Ports 22 und 80 gescannt, die Banners erfasst und die Dienstinformationen angezeigt hat. Du kannst das SSH-Banner und das SimpleHTTP-Server-Banner sehen.

Denken Sie daran, den python http-server nach Abschluss dieses Schritts zu stoppen, indem Sie in dem Terminal, in dem er läuft, Strg+C drücken.

In diesem Schritt werden wir der Nmap-Scan Ausführlichkeit hinzufügen. Die Ausführlichkeit liefert detailliertere Informationen über den Scanprozess, was für das Problembehandlung oder das Verständnis dessen hilfreich sein kann, was Nmap im Hintergrund macht.

Der Befehl, den wir verwenden werden, lautet:

nmap -v --script banner 127.0.0.1

Lassen Sie uns den Befehl aufteilen:

  • nmap: Der Netzwerkscanner.
  • -v: Diese Option erhöht das Ausführlichkeitsniveau. Sie können -vv verwenden, um noch mehr Ausführlichkeit zu erhalten.
  • --script banner: Gibt das Banner-Grabbing-Script an.
  • 127.0.0.1: Die Ziel-IP-Adresse (localhost).

Bevor Sie den Befehl ausführen, stellen Sie sicher, dass der python http-Server aus dem vorherigen Schritt noch läuft. Wenn nicht, starten Sie ihn erneut in einem separaten Terminalfenster:

cd ~/project
python3 -m http.server 80

Jetzt führen Sie im neuen Terminalfenster den Nmap-Befehl mit Ausführlichkeit aus:

nmap -v --script banner 127.0.0.1

Sie sollten eine Ausgabe ähnlich der folgenden sehen (die genaue Ausgabe hängt von den auf Ihrem Computer laufenden Diensten ab):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Initiating Ping Scan at 10:10
Scanning localhost (127.0.0.1) [2 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:10
Completed Parallel DNS resolution of 1 host. at 10:10, 0.00s elapsed
Initiating Connect Scan at 10:10
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Completed Connect Scan at 10:10, 0.00s elapsed (1000 total ports)
Initiating Service scan at 10:10
Scanning 2 services on localhost (127.0.0.1)
Completed Service scan at 10:10, 0.01s elapsed (2 services total)
Initiating NSE script scan at 10:10
Scanning localhost (127.0.0.1)
Completed NSE script scan at 10:10, 0.09s elapsed
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_
80/tcp open  http
| banner: Server: SimpleHTTP/3.10 Python/3.10
|_

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

Bemerken Sie die zusätzlichen Informationen, die von der -v-Option bereitgestellt werden. Sie können die verschiedenen Phasen des Scans sehen, wie z. B. den Ping Scan, die DNS-Auflösung und den Connect Scan. Dies kann sehr nützlich sein, um zu verstehen, wie Nmap funktioniert und um Probleme zu diagnostizieren.

Denken Sie daran, den python http-Server nach Abschluss dieses Schritts zu stoppen, indem Sie in dem Terminal, in dem er läuft, Strg+C drücken.

In diesem Schritt werden wir die Ergebnisse unseres Nmap-Scans in eine Datei speichern. Dies ist nützlich für spätere Analysen oder Berichterstattungen.

Der Befehl, den wir verwenden werden, lautet:

nmap --script banner -oN banners.txt 127.0.0.1

Lassen Sie uns den Befehl aufteilen:

  • nmap: Der Netzwerkscanner.
  • --script banner: Gibt das Banner-Grabbing-Script an.
  • -oN banners.txt: Diese Option 告诉 Nmap, die Ergebnisse im "normalen" Format in eine Datei namens banners.txt zu speichern. Es stehen auch andere Ausgabeformate zur Verfügung (z. B. -oG für grepbarer Ausgabe, -oX für XML-Ausgabe), aber -oN ist ein menschenlesbares Format.
  • 127.0.0.1: Die Ziel-IP-Adresse (localhost).

Bevor Sie den Befehl ausführen, stellen Sie sicher, dass der python http-Server aus dem vorherigen Schritt noch läuft. Wenn nicht, starten Sie ihn erneut in einem separaten Terminalfenster:

cd ~/project
python3 -m http.server 80

Jetzt führen Sie im neuen Terminalfenster den Nmap-Befehl aus, um die Ergebnisse in eine Datei zu speichern:

nmap --script banner -oN banners.txt 127.0.0.1

Diesmal werden Sie die Scanergebnisse nicht in der Konsole sehen. Stattdessen wird Nmap die Ausgabe in die banners.txt-Datei im aktuellen Verzeichnis (~/project) speichern.

Um zu überprüfen, dass die Datei erstellt wurde und die Scanergebnisse enthält, können Sie den Befehl cat verwenden:

cat banners.txt

Sie sollten in der Konsole eine Ausgabe ähnlich der folgenden sehen:

## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_
80/tcp open  http
| banner: Server: SimpleHTTP/3.10 Python/3.10
|_

## Nmap done at Fri Oct 27 10:15:00 2023 -- 1 IP address (1 host up) scanned in 0.10 seconds

Dies bestätigt, dass die Scanergebnisse in die banners.txt-Datei gespeichert wurden.

Denken Sie daran, den python http-Server nach Abschluss dieses Schritts zu stoppen, indem Sie in dem Terminal, in dem er läuft, Strg+C drücken.

In diesem Schritt werden wir die Banner-Details überprüfen, die wir im vorherigen Schritt in die banners.txt-Datei gespeichert haben. Wir werden den Xfce-Terminal verwenden, um den Inhalt der Datei anzuzeigen und die darin enthaltenen Informationen zu verstehen.

Stellen Sie zunächst sicher, dass die banners.txt-Datei sich im Verzeichnis ~/project befindet. Wenn Sie den vorherigen Schritt nicht abgeschlossen haben, tun Sie dies bitte, bevor Sie fortfahren.

Um den Inhalt der banners.txt-Datei anzuzeigen, öffnen Sie ein Terminalfenster und verwenden Sie den Befehl cat:

cat banners.txt

Die Ausgabe wird den Inhalt der Datei anzeigen, der ungefähr so aussehen sollte:

## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_
80/tcp open  http
| banner: Server: SimpleHTTP/3.10 Python/3.10
|_

## Nmap done at Fri Oct 27 10:20:00 2023 -- 1 IP address (1 host up) scanned in 0.10 seconds

Lassen Sie uns die Ausgabe analysieren:

  • Nmap scan report for localhost (127.0.0.1): Dies zeigt an, dass der Scan auf dem localhost (127.0.0.1) durchgeführt wurde.
  • Host is up: Dies bestätigt, dass der Zielhost erreichbar ist.
  • PORT STATE SERVICE: Dieser Abschnitt liefert Informationen über die geöffneten Ports auf dem Zielhost.
  • 22/tcp open ssh: Dies zeigt an, dass der Port 22 geöffnet ist und den SSH-Dienst ausführt.
  • | banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5: Dies sind die Banner-Informationen für den SSH-Dienst. Sie zeigen die SSH-Version und das Betriebssystem an.
  • 80/tcp open http: Dies zeigt an, dass der Port 80 geöffnet ist und den HTTP-Dienst ausführt.
  • | banner: Server: SimpleHTTP/3.10 Python/3.10: Dies sind die Banner-Informationen für den HTTP-Dienst. Sie zeigen die Server-Software und die Version an.

Indem Sie die Banner-Details überprüfen, können Sie wertvolle Informationen über die auf dem Zielhost laufenden Dienste erhalten. Diese Informationen können für die Schwachstellenanalyse oder die Identifizierung potenzieller Sicherheitsrisiken verwendet werden.

Denken Sie daran, den python http-Server nach Abschluss dieses Schritts zu stoppen, indem Sie in dem Terminal, in dem er läuft, Strg+C drücken.

In diesem Schritt werden wir die Banner-Informationen, die von verschiedenen Ports erhalten wurden, vergleichen. Dies kann uns helfen, die auf diesen Ports laufenden Dienste zu identifizieren und ihre Versionen zu verstehen. Wir werden den Xfce-Terminal und den grep-Befehl verwenden, um die Banner-Informationen aus der banners.txt-Datei zu extrahieren und zu vergleichen.

Stellen Sie zunächst sicher, dass die banners.txt-Datei sich im Verzeichnis ~/project befindet, die die Nmap-Scan-Ergebnisse aus den vorherigen Schritten enthält.

Um die Banner-Informationen für Port 22 (SSH) zu extrahieren, verwenden Sie folgenden Befehl:

grep "22/tcp" banners.txt

Dies wird die Zeile ausgeben, die Informationen über Port 22 enthält, einschließlich des Banners:

22/tcp open  ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_

Ähnlich verwenden Sie folgenden Befehl, um die Banner-Informationen für Port 80 (HTTP) zu extrahieren:

grep "80/tcp" banners.txt

Dies wird die Zeile ausgeben, die Informationen über Port 80 enthält, einschließlich des Banners:

80/tcp open  http
| banner: Server: SimpleHTTP/3.10 Python/3.10
|_

Jetzt vergleichen wir die Banner-Informationen. Wir können sehen, dass:

  • Port 22 läuft SSH, und das Banner zeigt an, dass es OpenSSH Version 8.2p1 auf Ubuntu ist.
  • Port 80 läuft HTTP, und das Banner zeigt an, dass es ein SimpleHTTP-Server ist, der in Python 3.10 implementiert ist.

Indem wir die Banner-Informationen vergleichen, können wir schnell die auf diesen Ports laufenden Dienste und ihre Versionen identifizieren. Diese Informationen sind wertvoll für Sicherheitsbewertungen und Schwachstellenanalyse. Beispielsweise ermöglicht das Wissen um die spezifische Version von SSH oder HTTP-Server, die bekannten Schwachstellen, die mit diesen Versionen assoziiert sind, zu überprüfen.

In diesem einfachen Beispiel haben wir nur zwei Ports verglichen. Sie können jedoch diese Technik erweitern, um Banner von vielen verschiedenen Ports und Hosts zu vergleichen, um ein umfassendes Verständnis der im Netzwerk laufenden Dienste in Ihrer Umgebung zu erhalten.

Denken Sie daran, den python http-Server nach Abschluss dieses Schritts zu stoppen, indem Sie in dem Terminal, in dem er läuft, Strg+C drücken.

Zusammenfassung

In diesem Lab lernen die Teilnehmer, Nmap zur Erkennung von Service-Bannern zu verwenden. Sie beginnen, indem sie das Banner-Skript mit nmap --script banner auf eine Ziel-IP ausführen, wobei sie 127.0.0.1 verwenden, um ethische und rechtliche Probleme zu vermeiden. Sie lernen auch, bestimmte Ports zu scannen, die Ausführlichkeit des Scans zu erhöhen und die Ergebnisse in eine Datei zu speichern. Schließlich überprüfen und vergleichen sie die Banner-Details im Xfce-Terminal.