Nmap Installation und grundlegende Nutzung lernen

NmapBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie die Installation und die grundlegende Verwendung von Nmap kennen, einem leistungsstarken Netzwerk-Scanning- und Sicherheits-Auditing-Tool. Nmap, auch als Network Mapper bekannt, ist ein Open-Source-Programm, das von Systemadministratoren und Sicherheitsexperten weit verbreitet eingesetzt wird, um Hosts, Dienste und Sicherheitslücken in einem Netzwerk zu finden.

In diesem Lab werden Sie durch die Installation von Nmap geführt, einen lokalen Dienst für das Scannen einrichten und grundlegende Scans durchführen, um die Funktionen von Nmap zu verstehen.

Installation von Nmap

In diesem Schritt führen wir Sie durch den Prozess der Installation von Nmap auf Ihrem Ubuntu Linux-System. Nmap ist ein leistungsstarkes Netzwerk-Scanning-Tool, das in der Cybersicherheit häufig für Aufgaben wie Netzwerkermittlung und Sicherheits-Auditing eingesetzt wird. Es ist in den Standard-Ubuntu-Repositories verfügbar, was bedeutet, dass der Installationsprozess recht einfach ist.

Zunächst müssen Sie Ihr Terminal öffnen. Das Terminal ist eine textbasierte Schnittstelle, die es Ihnen ermöglicht, mit Ihrem System zu interagieren, indem Sie Befehle eingeben. Standardmäßig sollten Sie sich im Verzeichnis /home/labex/project befinden. Wenn Sie sich nicht in diesem Verzeichnis befinden, können Sie dort navigieren, indem Sie den folgenden Befehl verwenden. Dieser Befehl wechselt Ihr aktuelles Arbeitsverzeichnis zu /home/labex/project.

cd /home/labex/project
Terminal mit Nmap-Installation

Nachdem Sie sich nun im richtigen Verzeichnis befinden, ist es an der Zeit, die Paketliste zu aktualisieren und Nmap zu installieren. Die Paketliste enthält Informationen über alle in den Ubuntu-Repositories verfügbaren Softwarepakete. Durch die Aktualisierung wird sichergestellt, dass Sie die neueste Version von Nmap erhalten.

sudo apt update
sudo apt install nmap -y

Der Befehl sudo wird verwendet, um Befehle mit administrativen Rechten auszuführen. Da die Installation von Software administrative Zugriffsrechte erfordert, müssen Sie sudo verwenden. Die Option -y wird mit dem Befehl apt install verwendet. Sie beantwortet automatisch mit "ja" auf alle Abfragen während des Installationsprozesses, sodass Sie nicht jedes einzelne Schritt manuell bestätigen müssen.

Nachdem die Installation abgeschlossen ist, ist es wichtig zu überprüfen, ob Nmap korrekt installiert wurde. Sie können dies tun, indem Sie die Version von Nmap überprüfen. Die Option --version für den Befehl nmap zeigt die Versionsinformationen von Nmap an.

nmap --version

Sie sollten eine Ausgabe ähnlich der folgenden sehen (beachten Sie, dass Ihre Version unterschiedlich sein kann):

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

Diese Ausgabe bestätigt, dass Nmap auf Ihrem System installiert ist. Sie enthält auch Informationen über die Version von Nmap und die verwendeten Kompilierungsoptionen, die für die Fehlerbehebung oder das Verständnis der Funktionen Ihrer installierten Nmap-Version nützlich sein können.

Einrichten eines lokalen Dienstes zum Scannen

Bevor wir mit der Verwendung von Nmap zum Scannen beginnen, ist es wichtig, dass ein Zieldienst (target service) läuft. Auf diese Weise können wir die Scan-Fähigkeiten von Nmap effektiv testen. In diesem Schritt richten wir einen einfachen HTTP-Server mit dem in Python integrierten Modul http.server ein. Das Python-Modul http.server ist ein praktisches Werkzeug, mit dem wir schnell einen HTTP-Server starten können, ohne dass komplexe Konfigurationen erforderlich sind.

Erstellen wir zunächst ein neues Verzeichnis für unseren HTTP-Server. Ein Verzeichnis ist wie ein Ordner auf Ihrem Computer, in dem wir alle Dateien speichern können, die sich auf unseren Server beziehen.

mkdir -p /home/labex/project/http-server
cd /home/labex/project/http-server

Der Befehl mkdir -p erstellt ein Verzeichnis namens http-server im angegebenen Pfad. Die Option -p stellt sicher, dass alle Zwischenverzeichnisse (intermediate directories), die nicht existieren, ebenfalls erstellt werden. Der Befehl cd ändert dann unser aktuelles Arbeitsverzeichnis in das neu erstellte Verzeichnis http-server.

Erstellen wir nun eine einfache HTML-Datei, die unser Server bereitstellen soll. HTML ist die Standardauszeichnungssprache (standard markup language) zum Erstellen von Webseiten.

echo "<html><body><h1>Welcome to the Nmap Lab</h1></body></html>" > index.html

Dieser Befehl verwendet den Befehl echo, um den HTML-Code im Terminal auszugeben und diese Ausgabe dann in eine Datei namens index.html umzuleiten. Wir haben also eine Datei mit einer grundlegenden HTML-Struktur und einer Willkommensnachricht erstellt.

Als Nächstes starten wir den Python HTTP-Server.

python3 -m http.server 8000

Dieser Befehl verwendet den python3-Interpreter, um das Modul http.server als Skript auszuführen. Die Option -m weist Python an, das Modul als Skript auszuführen. Wir geben Port 8000 an, was bedeutet, dass unser Server an diesem Port auf eingehende Anfragen (incoming requests) lauscht.

Open a new terminal tab or window to continue

Wichtig: Öffnen Sie einen neuen Terminal-Tab oder ein neues Fenster, um fortzufahren. Lassen Sie den HTTP-Server in diesem Terminal laufen und verwenden Sie das neue Terminal für alle nachfolgenden Nmap-Befehle in diesem Lab. Dies stellt sicher, dass der HTTP-Server aktiv bleibt, während Sie die Scans durchführen.

Um zu überprüfen, ob der Server läuft, können Sie den Befehl curl im neuen Terminal verwenden. curl ist ein Befehlszeilentool (command-line tool), das zum Übertragen von Daten von oder zu einem Server verwendet wird.

curl http://localhost:8000

Wenn Sie diesen Befehl ausführen, sendet curl eine Anfrage an den HTTP-Server, der auf localhost (was sich auf Ihren eigenen Computer bezieht) auf Port 8000 läuft. Wenn der Server korrekt läuft, sollten Sie den HTML-Inhalt sehen, den wir zuvor erstellt haben.

127.0.0.1 - - [13/Sep/2024 15:24:21] "GET / HTTP/1.1" 200 -
<html>
  <body>
    <h1>Welcome to the Nmap Lab</h1>
  </body>
</html>

Diese Ausgabe zeigt, dass der Server die Anfrage empfangen, erfolgreich verarbeitet (angezeigt durch den Statuscode 200) und den HTML-Inhalt der Datei index.html zurückgegeben hat.

Grundlegende Nmap-Scans

Nachdem wir Nmap erfolgreich installiert und einen lokalen Dienst eingerichtet haben, ist es an der Zeit, einige grundlegende Scans durchzuführen. Dies hilft Ihnen zu verstehen, wie Nmap funktioniert und welche Art von Informationen es liefern kann.

Zunächst führen wir einen einfachen TCP Connect Scan auf unserem lokalen HTTP-Server durch. Ein TCP Connect Scan ist eine grundlegende Scan-Art in Nmap. Er versucht, eine vollständige TCP-Verbindung zum Zielport herzustellen. Wenn die Verbindung erfolgreich ist, bedeutet dies, dass der Port geöffnet ist.

Hier ist der Befehl für diesen Scan:

nmap -sT -p 8000 localhost

Lassen Sie uns diesen Befehl analysieren:

  • -sT ist eine Option, die einen TCP Connect Scan angibt. Dies teilt Nmap mit, die TCP Connect-Methode zur Überprüfung des Status der Ports zu verwenden.
  • -p 8000 gibt an, dass wir möchten, dass Nmap nur Port 8000 scannt. Sie können diese Zahl ändern, um andere Ports zu scannen, wenn erforderlich.
  • localhost ist das Ziel unseres Scans. Es bezieht sich auf die lokale Maschine, auf der der Dienst läuft.

Nachdem Sie diesen Befehl ausgeführt haben, sollten Sie eine Ausgabe ähnlich der folgenden sehen:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE
8000/tcp open  http-alt

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

Diese Ausgabe zeigt, dass Port 8000 geöffnet ist und einen HTTP-Dienst ausführt. Die Spalte STATE gibt den Status des Ports an, und in diesem Fall ist er open. Die Spalte SERVICE gibt einen Hinweis darauf, welche Art von Dienst möglicherweise auf diesem Port läuft.

Jetzt führen wir einen detaillierteren Scan durch. Manchmal reicht es nicht aus, nur zu wissen, dass ein Port geöffnet ist. Wir möchten möglicherweise mehr über den auf diesem Port laufenden Dienst wissen, wie beispielsweise seine Version.

Hier ist der Befehl für einen detaillierteren Scan:

nmap -sV -p 8000 localhost

Die Option -sV wird verwendet, um Nmap anzuweisen, geöffnete Ports zu untersuchen, um Dienst- und Versionsinformationen zu ermitteln. Dies bedeutet, dass Nmap versuchen wird, herauszufinden, welche spezifische Software und Version auf dem geöffneten Port läuft.

Nachdem Sie diesen Befehl ausgeführt haben, sollten Sie eine Ausgabe ähnlich der folgenden sehen:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE VERSION
8000/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)

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

Diese Ausgabe liefert detailliertere Informationen über den auf Port 8000 laufenden Dienst. Sie sagt uns, dass es sich um einen Python SimpleHTTPServer handelt und gibt uns sogar die Versionsnummer.

Sie können die Nmap-Anfragen in den Protokollen des Terminals anzeigen, in dem Sie den Python-HTTP-Server gestartet haben. Dies kann für die Fehlersuche oder eine weitere Analyse nützlich sein.

Scannen mehrerer Ports

In realen Szenarien müssen Sie oft mehrere Ports oder sogar ganze Portbereiche scannen. Lassen Sie uns untersuchen, wie Sie dies mit Nmap tun können.

Wenn es um Netzwerkscans geht, möchten Sie möglicherweise mehrere Ports auf einmal überprüfen. Dies ist nützlich, da verschiedene Dienste auf verschiedenen Ports laufen, und durch das Scannen mehrerer Ports können Sie einen umfassenden Überblick über die auf einem Ziel verfügbaren Dienste erhalten.

Zunächst scannen wir die 1000 am häufigsten verwendeten Ports auf localhost. Localhost bezieht sich auf das aktuelle Gerät, auf dem Sie arbeiten, dargestellt durch die IP-Adresse 127.0.0.1. Das Scannen der 1000 am häufigsten verwendeten Ports ist eine schnelle Möglichkeit, einen Überblick über die auf Ihrem lokalen Rechner laufenden Dienste zu erhalten.

nmap localhost

Nachdem Sie diesen Befehl ausgeführt haben, sehen Sie eine Ausgabe ähnlich der folgenden:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:29 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8000/tcp open  http-alt

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

Dieser Befehl ohne jegliche Portangabe scannt die 1000 am häufigsten verwendeten Ports. Sie sollten eine Liste der offenen, geschlossenen und gefilterten Ports sehen. Die Ausgabe zeigt die Portnummer, ihren Zustand (offen, geschlossen oder gefiltert) und den zugehörigen Dienst.

Jetzt scannen wir alle 65535 Ports. Im TCP/IP-Protokoll sind insgesamt 65535 Ports verfügbar. Das Scannen aller Ports kann Ihnen ein vollständiges Bild der auf dem Ziel laufenden Dienste geben, aber es dauert länger.

nmap -p- localhost

Die Option -p- teilt Nmap mit, alle Ports von 1 bis 65535 zu scannen. Dieser Scan wird länger dauern, da er jeden einzelnen Port überprüfen muss.

Schließlich scannen wir einen bestimmten Portbereich. Manchmal haben Sie eine Vorstellung davon, auf welchen Ports ein bestimmter Dienst laufen könnte, und Sie möchten nur diese Ports scannen.

nmap -p 1-1000 localhost

Dieser Befehl scannt die Ports von 1 bis 1000. Durch die Angabe eines Portbereichs können Sie Ihren Scan auf die Ports konzentrieren, die für Ihre Bedürfnisse am relevantesten sind.

Ausgabeformate und Speichern von Ergebnissen

Nmap bietet eine Vielzahl von Ausgabeformaten, die jeweils auf unterschiedliche Bedürfnisse zugeschnitten sind. Das Verständnis dieser Formate und das Speichern von Scanergebnissen ist für die weitere Analyse und das Teilen Ihrer Erkenntnisse von entscheidender Bedeutung. In diesem Schritt werfen wir einen genaueren Blick auf einige dieser Formate und lernen, wie wir die Scanergebnisse effektiv speichern können.

Zunächst führen wir einen Scan durch und speichern die Ausgabe im normalen Format. Das normale Format ist ein für Menschen lesbares Textformat, das die Scanergebnisse klar und einfach darstellt. Um die Ausgabe in diesem Format zu speichern, verwenden wir den folgenden Befehl:

nmap -oN normal_output.txt localhost

In diesem Befehl wird die Option -oN verwendet, um Nmap anzuweisen, die Ausgabe im normalen Format zu speichern. normal_output.txt ist der Name der Datei, in der die Ergebnisse gespeichert werden. localhost ist das Ziel, das wir scannen, was sich auf die lokale Maschine selbst bezieht.

Jetzt speichern wir die Ausgabe im XML - Format. XML (eXtensible Markup Language) ist ein weit verbreitetes Format für die Datenspeicherung und -austausch. Es hat ein strukturiertes Format, das von Skripten leicht geparst oder in andere Tools für die weitere Verarbeitung importiert werden kann. Um die Ausgabe im XML - Format zu speichern, verwenden wir den folgenden Befehl:

nmap -oX xml_output.xml localhost

Hier teilt die Option -oX Nmap mit, die Ausgabe im XML - Format zu speichern. xml_output.xml ist die Datei, in der die im XML - Format vorliegenden Ergebnisse gespeichert werden.

Schließlich speichern wir die Ausgabe im grepable - Format. Das grepable - Format ist so gestaltet, dass es von Tools wie grep leicht geparst werden kann, einem leistungsstarken Text - Suchwerkzeug in Unix - ähnlichen Systemen. Dieses Format ist nützlich, wenn Sie schnell nach bestimmten Informationen in den Scanergebnissen suchen möchten. Um die Ausgabe im grepable - Format zu speichern, verwenden wir den folgenden Befehl:

nmap -oG grepable_output.txt localhost

Die Option -oG wird verwendet, um die Ausgabe im grepable - Format zu speichern, und grepable_output.txt ist die Datei, in der die Ergebnisse gespeichert werden.

Nachdem Sie die Ergebnisse in verschiedenen Formaten gespeichert haben, möchten Sie möglicherweise den Inhalt dieser Dateien anzeigen. Sie können den cat - Befehl verwenden, um den Inhalt einer Textdatei anzuzeigen. Beispielsweise können Sie den folgenden Befehl verwenden, um die im normalen Format vorliegende Ausgabedatei anzuzeigen:

cat normal_output.txt

Dadurch wird der Inhalt der Datei normal_output.txt im Terminal ausgegeben, sodass Sie die Scanergebnisse sehen können.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen von Nmap kennengelernt, einem leistungsstarken Netzwerkscanner und Sicherheitsprüfungs-Tool. Zunächst haben Sie Nmap auf einem Ubuntu Linux-System installiert und die Installation verifiziert. Anschließend haben Sie einen lokalen HTTP-Server als Ziel für Scans eingerichtet, was zeigt, wie man einen einfachen Dienst zum Testen erstellt.

Sie haben auch verschiedene Scantechniken untersucht, beginnend mit einfachen Portscans bis hin zur detaillierten Erkennung der Dienstversionen. Sie haben gelernt, bestimmte Ports, Portbereiche und alle 65535 Ports auf einem System zu scannen, was für das Verständnis des Netzwerks und das Finden potenzieller Sicherheitslücken von entscheidender Bedeutung ist. Schließlich haben Sie die Ausgabeoptionen von Nmap kennengelernt, wie das Speichern der Ergebnisse im normalen Textformat, im XML-Format und im grepable-Format, was für die Dokumentation und die weitere Analyse unerlässlich ist.

Dieses Lab hat Ihnen praktische Erfahrungen mit der Verwendung von Nmap vermittelt und eine Grundlage für fortgeschrittene Netzwerkscans und Sicherheitsprüfungen gelegt. Denken Sie daran, Nmap verantwortungsvoll und mit entsprechender Genehmigung zu nutzen.