Heimliche Netzwerkscans mit Nmap durchführen

NmapBeginner
Jetzt üben

Einführung

In diesem Labor lernen Sie, wie Sie mit Nmap, einem leistungsstarken Open-Source-Tool für die Netzwerkerkennung und Sicherheitsaudits, heimliche Netzwerkscans durchführen. Heimliche Scans sind im Bereich der Cybersicherheit unerlässlich, da sie es Sicherheitsfachkräften ermöglichen, Netzwerk-Schwachstellen zu identifizieren, gleichzeitig aber das Risiko der Erkennung zu minimieren.

Sie werden verschiedene Nmap-Scan-Techniken erkunden, beginnend mit grundlegenden heimlichen Scans und fortfahrend zu fortgeschritteneren verdeckten Methoden. Diese Fähigkeiten sind für Sicherheitsfachkräfte unerlässlich, die Netzwerk-Audits durchführen, ohne bestehende Sicherheitssysteme zu aktivieren oder potenzielle Bedrohungen im Netzwerk zu alarmieren. Am Ende des Labors erhalten Sie praktische Erfahrungen mit den heimlichen Scans von Nmap und wissen, wie Sie diese Techniken in realen Sicherheitsbewertungen anwenden können.

Einrichtung Ihrer Testumgebung

In diesem Schritt bereiten wir Ihre Umgebung für das heimliche Netzwerkaudit vor. Wir richten einen einfachen Webserver ein, der als Ziel für unsere Scans fungieren wird. Ein kontrolliertes Ziel wie dieses ist entscheidend, da Sie so heimliche Scan-Techniken üben können, ohne reale Systeme zu beeinträchtigen.

Zuerst müssen Sie ein Terminal öffnen. Das Terminal ist wie eine Befehlszeilenschnittstelle, über die Sie Befehle eingeben können, um mit Ihrem Computer zu interagieren. Sobald Sie das Terminal geöffnet haben, navigieren Sie zu Ihrem Arbeitsbereich. Ihr Arbeitsbereich ist ein bestimmter Verzeichnispfad, in dem Sie alle projektbezogenen Dateien speichern. Verwenden Sie dazu den folgenden Befehl:

cd /home/labex/project

Der Befehl cd steht für "change directory" (Verzeichnis wechseln). Er weist das System an, Sie von Ihrem aktuellen Standort in das angegebene Verzeichnis zu verschieben, in diesem Fall /home/labex/project.

Nachdem Sie sich in Ihrem Arbeitsbereich befinden, erstellen wir ein neues Verzeichnis namens stealth. Verzeichnisse sind wie Ordner auf Ihrem Computer, und die Erstellung eines dedizierten Verzeichnisses hilft Ihnen, Ihre Arbeit zu organisieren. Verwenden Sie den folgenden Befehl, um das Verzeichnis zu erstellen:

mkdir -p /home/labex/project/stealth

Der Befehl mkdir dient zum Erstellen eines neuen Verzeichnisses. Die Option -p stellt sicher, dass, falls Zwischendateien im Pfad nicht existieren, diese ebenfalls erstellt werden.

Nachdem Sie das Verzeichnis erstellt haben, müssen Sie sich darin navigieren. Auf diese Weise werden alle von Ihnen erstellten Dateien im Verzeichnis stealth gespeichert. Verwenden Sie erneut den Befehl cd:

cd /home/labex/project/stealth

Als Nächstes erstellen wir eine einfache HTML-Datei. HTML (Hypertext Markup Language) ist die Standardsprache zum Erstellen von Webseiten. Diese Datei wird von unserem Webserver bereitgestellt und simuliert einen realen Webdienst. Verwenden Sie den folgenden Befehl, um die Datei zu erstellen:

echo "Robotics Server läuft..." > index.html

Der Befehl echo gibt den Text "Robotics Server läuft..." im Terminal aus. Das Symbol > leitet diese Ausgabe um und schreibt sie in eine neue Datei namens index.html.

Nun müssen wir einen DNS-Resolver einrichten. DNS (Domain Name System) ist wie ein Telefonbuch für das Internet. Es übersetzt Domainnamen (wie google.com) in IP-Adressen. Durch die Einrichtung eines DNS-Resolvers stellen wir sicher, dass unser System ordnungsgemäß mit anderen Netzwerken verbinden kann. Verwenden Sie den folgenden Befehl:

sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'

Der Befehl sudo gewährt Ihnen Administratorrechte, um Aktionen auszuführen, die besondere Berechtigungen erfordern. sh -c wird verwendet, um einen Shell-Befehl auszuführen. Wir schreiben die Zeile "nameserver 8.8.8.8" in die Datei /etc/resolv.conf, in der das System die DNS-Konfiguration speichert.

Schließlich starten wir einen einfachen Webserver mit dem Befehl nc (netcat). Netcat ist ein vielseitiges Netzwerk-Dienstprogramm, das für verschiedene Aufgaben verwendet werden kann, einschließlich der Einrichtung eines einfachen Servers. Dieser Server hört auf Port 8080 und stellt die zuvor erstellte HTML-Datei bereit. Verwenden Sie den folgenden Befehl:

nc -lvp 8080 < index.html &

Lassen Sie uns diesen Befehl aufschlüsseln:

  • nc ist das Netcat-Dienstprogramm für Netzwerkverbindungen. Es ermöglicht Ihnen, Verbindungen zwischen verschiedenen Netzwerkendpunkten herzustellen.
  • -l weist Netcat an, auf eingehende Verbindungen zu warten. Anstatt zu versuchen, eine Verbindung zu einem anderen Server herzustellen, wartet es darauf, dass andere eine Verbindung zu ihm herstellen.
  • -v aktiviert eine ausführliche Ausgabe. Das bedeutet, dass Netcat detailliertere Informationen darüber liefert, was es tut.
  • -p 8080 gibt den Port an, auf dem zugehört wird. Ports sind wie Türen auf einem Computer, und in diesem Fall öffnen wir Port 8080 für eingehende Verbindungen.
  • < index.html speist den Inhalt von index.html an jede Verbindung. Wenn ein Client eine Verbindung zu unserem Server herstellt, erhält er den Inhalt der Datei index.html.
  • & führt den Prozess im Hintergrund aus. Auf diese Weise können Sie weiterhin das Terminal verwenden, um andere Befehle auszuführen, während der Server läuft.

Nach Ausführung des Befehls sollten Sie eine Ausgabe sehen, die anzeigt, dass der Server auf Port 8080 lauscht:

Listening on 0.0.0.0 8080

Sie haben nun einen Webserver auf Port 8080, der als Ziel für die heimlichen Scan-Übungen dient.

Durchführung grundlegender verdeckter Scans mit Nmap

In diesem Schritt lernen wir, wie man einen grundlegenden heimlichen Scan mit Nmap durchführt. Aber zuerst wollen wir verstehen, was ein heimlicher Scan ist. Heimliche Scans, auch SYN-Scans genannt, sind eine sehr nützliche Technik im Bereich der Netzwerksicherheit. Wenn Sie herausfinden möchten, welche Ports auf einem Zielsystem geöffnet sind, kann ein heimlicher Scan Ihnen dabei helfen, dies zu tun, und gleichzeitig die Wahrscheinlichkeit zu verringern, vom Ziel erkannt zu werden. Dies ist wichtig, da das Zielsystem, falls es Ihren Scan erkennt, möglicherweise Abwehrmaßnahmen ergreift oder Ihre Aktivität protokolliert.

Bevor wir mit dem Scan beginnen, müssen wir uns vergewissern, dass wir uns am richtigen Ort befinden. Wir navigieren zurück zu unserem Hauptarbeitsbereich. Dies ist wie das Zurückkehren zu Ihrem Ausgangspunkt, in dem alle projektbezogenen Dateien gespeichert sind. Dazu verwenden wir den folgenden Befehl:

cd /home/labex/project

Verständnis heimlicher Scans

Um vollständig zu verstehen, wie ein heimlicher Scan funktioniert, müssen wir zunächst traditionelle TCP-Verbindungen kennen. Eine traditionelle TCP-Verbindung folgt einem Drei-Wege-Handshake-Prozess. Dies ist eine Reihe von Schritten, die Client und Server durchlaufen, um eine Verbindung herzustellen.

  1. Der Client sendet ein SYN-(Synchronisierungs-)Paket an den Server. Dies ist wie wenn der Client sagt: "Hey, ich möchte ein Gespräch beginnen."
  2. Wenn der Server bereit ist zu sprechen, antwortet er mit einem SYN-ACK-(Synchronisiere-Bestätige-)Paket. Dies ist wie wenn der Server sagt: "Sicher, ich bin bereit zu sprechen."
  3. Schließlich sendet der Client ein ACK-(Bestätigungs-)Paket, um die Verbindung abzuschließen. Dies ist wie wenn der Client sagt: "Großartig, lassen Sie uns das Gespräch beginnen."

Ein heimlicher Scan folgt jedoch nicht diesem vollständigen Prozess. Stattdessen:

  1. Der Client sendet ein SYN-Paket an den Server, genau wie bei einer normalen Verbindung.
  2. Wenn der Port auf dem Server geöffnet ist, antwortet der Server mit einem SYN-ACK-Paket.
  3. Aber hier ist der Unterschied. Anstatt ein ACK-Paket zu senden, um die Verbindung abzuschließen, sendet der Client ein RST-(Reset-)Paket. Dies unterbricht die vollständige Verbindungsaufbau.

Der Grund, warum dies nützlich ist, ist, dass das Zielsystem diese Art von Interaktion weniger wahrscheinlich protokolliert, da die Verbindung nie vollständig aufgebaut wird. Es ist also eine heimliche Methode, um herauszufinden, welche Ports geöffnet sind, ohne eine große Spur zu hinterlassen.

Ausführung eines heimlichen Scans

Nachdem wir nun verstehen, wie ein heimlicher Scan funktioniert, führen wir einen solchen gegen unseren lokalen Webserver aus. Wir verwenden den folgenden Nmap-Befehl:

sudo nmap -sS -p 8080 localhost > /home/labex/project/stealth_scan.txt

Lassen Sie uns diesen Befehl aufschlüsseln, damit Sie genau wissen, was jeder Teil tut:

  • sudo wird verwendet, da heimliche Scans Rohsocket-Zugriff benötigen. Der Rohsocket-Zugriff ist eine Low-Level-Methode zur Interaktion mit dem Netzwerk und erfordert besondere Berechtigungen. Daher verwenden wir sudo, um den Befehl mit Administratorrechten auszuführen.
  • nmap ist das von uns verwendete Scan-Tool. Es ist ein sehr beliebtes und leistungsstarkes Werkzeug für die Netzwerkerkundung und Sicherheitsaudits.
  • -sS gibt an, dass wir einen SYN-heimlichen Scan durchführen möchten. Dies teilt Nmap mit, dass die gerade erlernte heimliche Scan-Technik verwendet werden soll.
  • -p 8080 teilt Nmap mit, nur Port 8080 zu scannen. Manchmal möchten Sie möglicherweise mehrere Ports scannen, aber in diesem Fall interessieren wir uns nur für Port 8080.
  • localhost ist das Ziel unseres Scans. Da wir dies auf unserem lokalen Rechner ausführen, bezieht sich localhost auf unseren eigenen Computer.
  • > /home/labex/project/stealth_scan.txt leitet die Ausgabe des Scans in eine Textdatei um. Auf diese Weise können wir die Ergebnisse speichern und später betrachten.

Nach dem Scan möchten wir die Ergebnisse sehen. Dazu verwenden wir den folgenden Befehl:

cat /home/labex/project/stealth_scan.txt

Wenn Sie diesen Befehl ausführen, sollten Sie eine Ausgabe ähnlich dieser sehen:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-25 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy

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

Beachten Sie, dass Nmap korrekt identifiziert hat, dass Port 8080 geöffnet ist. Dies bedeutet, dass unser heimlicher Scan erfolgreich den in Schritt 1 eingerichteten Webserver erkannt hat.

Verständnis von Portzuständen

Bei der Analyse der Scan-Ergebnisse werden Sie feststellen, dass Nmap Ports in verschiedenen Zuständen meldet:

  1. open - Ein Dienst akzeptiert aktiv Verbindungen über diesen Port.
  2. closed - Der Port ist zugänglich, aber kein Dienst hört zu.
  3. filtered - Ein Firewall- oder Netzwerk-Hindernis blockiert den Port.
  4. unfiltered - Der Port ist zugänglich, aber Nmap kann nicht feststellen, ob er geöffnet oder geschlossen ist.
  5. open|filtered - Nmap kann nicht feststellen, ob der Port geöffnet oder gefiltert ist.

In unserem Scan wird Port 8080 als open gemeldet, was darauf hinweist, dass unser Webserver aktiv Verbindungen akzeptiert.

Der Vorteil der Verwendung heimlicher Scans besteht darin, dass wir genaue Ergebnisse erhalten, während sie weniger aufdringlich sind als ein vollständiger TCP-Connect-Scan. Ein vollständiger TCP-Connect-Scan durchläuft den gesamten Drei-Wege-Handshake, was eher von dem Zielsystem bemerkt und auf überwachten Systemen Alarme auslösen wird.

Erweiterte verdeckte Scan-Techniken

In diesem Schritt werden wir erweiterte Scan-Techniken untersuchen, die ein noch höheres Maß an Geheimhaltung bieten. Diese Techniken sind in der Cybersicherheit entscheidend, da sie es Ihnen ermöglichen, Informationen über ein Zielnetzwerk zu sammeln, ohne leicht entdeckt zu werden. Eine solche leistungsstarke Technik ist der Idle-Scan, auch bekannt als Zombie-Scan. Diese Methode ermöglicht es Ihnen, ein Ziel zu scannen, während Sie Ihre Identität hinter einem anderen Host maskieren.

Bevor wir beginnen, ist es wichtig sicherzustellen, dass Sie sich in Ihrem Arbeitsbereich befinden. Hier werden alle projektbezogenen Dateien und Befehle ausgeführt. Um zu Ihrem Arbeitsbereich zu navigieren, führen Sie den folgenden Befehl in Ihrem Terminal aus:

cd /home/labex/project

Verständnis des Idle-Scans

Der Idle-Scan ist eine der heimlichsten Scan-Techniken, die in Nmap verfügbar sind. Aber wie funktioniert er? Nun, er verwendet einen Host eines Drittanbieters, den wir einen "Zombie" nennen, um den Scan durchzuführen. Dadurch scheint der Scan vom Zombie-Host und nicht von Ihnen zu stammen.

Lassen Sie uns den Prozess eines Idle-Scans Schritt für Schritt aufschlüsseln:

  1. Zuerst sendet der Scanner eine Sonde an den Zombie-Host. Diese Sonde hilft dem Scanner, die aktuelle IP-ID-Sequenz des Zombies zu ermitteln. Die IP-ID-Sequenz ist eine eindeutige Nummer, die der Host jedem gesendeten IP-Paket zuweist.
  2. Als Nächstes sendet der Scanner ein SYN-Paket an das Ziel. Allerdings setzt er die Quell-IP-Adresse dieses Pakets auf die IP-Adresse des Zombies. Ein SYN-Paket wird verwendet, um eine TCP-Verbindung einzurichten.
  3. Wenn der Port auf dem Ziel geöffnet ist, antwortet das Ziel mit einem SYN-ACK-Paket. Dieses Paket wird an den Zombie gesendet, da dies die Quell-IP-Adresse ist, die es im SYN-Paket gesehen hat.
  4. Der Zombie, der dieses SYN-ACK-Paket nicht erwartet hat, sendet ein RST-Paket zurück an das Ziel. Ein RST-Paket wird verwendet, um eine TCP-Verbindung abzubrechen.
  5. Der Scanner sondiert dann erneut den Zombie. Er prüft, ob sich die IP-ID-Sequenz des Zombies erhöht hat.
  6. Wenn sich die IP-ID-Sequenz erhöht hat, deutet dies darauf hin, dass der Port auf dem Ziel geöffnet ist. Dies liegt daran, dass der Zombie als Antwort auf das SYN-ACK vom Ziel ein RST-Paket gesendet hat.

Das Besondere an dieser Technik ist ihre Geheimhaltung. Das Ziel sieht nur die Kommunikation vom Zombie, nicht vom tatsächlichen Scanner. Daher ist es für das Ziel sehr schwierig zu erkennen, dass es gescannt wird.

Ausführung eines Idle-Scans

Führen wir nun einen Idle-Scan mit Nmap aus. In einer realen Situation würden Sie einen externen Zombie-Host verwenden. Für dieses Labor simulieren wir den Prozess jedoch mit Ihrem lokalen Rechner.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

sudo nmap -sI 127.0.0.1 localhost -p 8080 > /home/labex/project/idle_scan.txt

Lassen Sie uns jeden Teil dieses Befehls verstehen:

  • sudo wird verwendet, da Nmap für die Durchführung des Idle-Scans Rohsocket-Zugriff benötigt. Der Rohsocket-Zugriff ermöglicht es Nmap, benutzerdefinierte IP-Pakete zu erstellen und zu senden, was für diese Art von Scan erforderlich ist.
  • nmap ist das bekannte Scan-Tool, das wir für diese Aufgabe verwenden.
  • -sI 127.0.0.1 gibt an, dass wir einen Idle-Scan durchführen und 127.0.0.1 (das der localhost ist) als Zombie-Host verwenden.
  • localhost ist das Ziel, das wir scannen möchten.
  • -p 8080 teilt Nmap mit, nur Port 8080 auf dem Ziel zu scannen.
  • > /home/labex/project/idle_scan.txt leitet die Ausgabe des Scans in eine Textdatei um. So können wir die Ergebnisse später leicht überprüfen.

Nach dem Scan untersuchen wir die Ergebnisse. Verwenden Sie den folgenden Befehl, um den Inhalt der Ausgabedatei anzuzeigen:

cat /home/labex/project/idle_scan.txt

Sie sehen möglicherweise eine Ausgabe ähnlich dieser:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-25 12:10 UTC
Idle scan using zombie 127.0.0.1 (127.0.0.1:80); Class: Incremental
Skipping Idle Scan against localhost (127.0.0.1) -- you can't idle scan your own machine (localhost).
Nmap scan report for localhost (127.0.0.1)
Host is up.

PORT     STATE   SERVICE
8080/tcp unknown http-proxy

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

Beachten Sie, dass Nmap meldet, dass der Idle-Scan übersprungen wird. Dies liegt daran, dass Sie versuchen, Ihren eigenen Computer sowohl als Zombie als auch als Ziel zu verwenden. In einer realen Umgebung mit separaten Hosts wäre diese Technik sehr effektiv für verdeckte Scans.

Auch wenn wir diese Einschränkung in unserer Laborumgebung haben, zeigt diese Übung dennoch, wie man den Idle-Scan-Befehl verwendet. In der Praxis würden Sie einen anderen Host als Zombie auswählen, und der Scan würde ohne diese Warnmeldung ausgeführt.

Diese erweiterte Technik ist sehr wertvoll, wenn Sie maximale Geheimhaltung benötigen. Sie erschwert es dem Ziel erheblich, den Scan auf den tatsächlichen Scanner zurückzuführen.

Vergleich der Scan-Ergebnisse

Vergleichen wir die Ausgaben beider Scan-Typen, um die Unterschiede zu sehen:

echo "=== Stealth Scan Results ===" && cat /home/labex/project/stealth_scan.txt
echo "=== Idle Scan Results ===" && cat /home/labex/project/idle_scan.txt

Beide Scans haben den offenen Port 8080 erfolgreich erkannt, aber der Idle-Scan zeigt zusätzliche Informationen über die verwendete Scan-Technik.

Bereinigung

Bevor wir beenden, bereinigen wir unsere Umgebung, indem wir den Webserver stoppen:

pkill -f "nc -lvp 8080"

Dies beendet den netcat-Prozess, der unseren Webserver auf Port 8080 ausführt.

Zusammenfassung

In diesem Labor haben Sie gelernt, wie man heimliche Netzwerkscans mit Nmap durchführt, eine wichtige Fähigkeit für Cybersecurity-Experten. Sie haben mit der Einrichtung einer Testumgebung mit einem einfachen Webserver begonnen, um das Scannen in einer kontrollierten Umgebung zu üben. Anschließend haben Sie grundlegende heimliche Scans mit der SYN-Scan-Technik erkundet, die genaue Ergebnisse liefert und das Risiko der Erkennung reduziert. Dies macht sie nützlich für Sicherheitsaudits, ohne überwachte Systeme zu alarmieren.

Schließlich haben Sie sich mit fortgeschritteneren verdeckten Scan-Methoden wie dem Idle-Scan auseinandergesetzt, der den Ursprung des Scans verbergen kann. Obwohl seine Anwendung im Laborumfeld begrenzt war, haben Sie gelernt, wie er in realen Szenarien funktioniert. Sie haben auch die Interpretation von Scan-Ergebnissen geübt, indem Sie verschiedene Portzustände verstanden und die Ausgaben verschiedener Scan-Techniken verglichen haben. Die Beherrschung dieser heimlichen Scan-Techniken rüstet Sie für gründliche Netzwerkbewertungen in der Cybersecurity-Arbeit aus.