Nmap SYN-Scans für Netzwerksicherheit durchführen

NmapNmapBeginner
Jetzt üben

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

Einführung

In diesem Lab lernen Sie über Nmap SYN-Scans, eine Schlüsseltechnik in der Netzwerksicherheit für diskrete Port-Recherchen. SYN-Scans identifizieren effizient offene Ports auf einem Zielsystem, ohne eine vollständige TCP-Verbindung herzustellen, was sie weniger erkennbar macht als herkömmliche Methoden. Dies ist für Sicherheitsexperten von entscheidender Bedeutung, um Netzwerkschwachstellen zu bewerten und die Verteidigung zu stärken.

Am Ende dieses Labs werden Sie verstehen, wie Sie SYN-Scans durchführen, ihre Ergebnisse interpretieren und ihre Bedeutung in Netzwerksicherheitsbewertungen erkennen können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") 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/syn_scan("SYN Scan") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") subgraph Lab Skills nmap/installation -.-> lab-415934{{"Nmap SYN-Scans für Netzwerksicherheit durchführen"}} nmap/save_output -.-> lab-415934{{"Nmap SYN-Scans für Netzwerksicherheit durchführen"}} nmap/port_scanning -.-> lab-415934{{"Nmap SYN-Scans für Netzwerksicherheit durchführen"}} nmap/target_specification -.-> lab-415934{{"Nmap SYN-Scans für Netzwerksicherheit durchführen"}} nmap/syn_scan -.-> lab-415934{{"Nmap SYN-Scans für Netzwerksicherheit durchführen"}} nmap/service_detection -.-> lab-415934{{"Nmap SYN-Scans für Netzwerksicherheit durchführen"}} end

Erstellen eines Ziel-Services für das Scannen

In diesem Schritt werden wir eine kontrollierte Umgebung erstellen, in der Sie Nmap SYN-Scans üben können. Bevor Sie mit dem Scannen eines Netzwerks oder Systems beginnen, ist es wichtig zu verstehen, dass ethisches Scannen die entsprechende Genehmigung erfordert. Um rechtliche Probleme zu vermeiden, werden wir unseren eigenen Service einrichten, den wir sicher scannen können.

  1. Zunächst müssen Sie ein Terminal öffnen. Ein Terminal ist eine textbasierte Schnittstelle, die es Ihnen ermöglicht, mit dem Betriebssystem Ihres Computers durch Eingabe von Befehlen zu interagieren. Nachdem Sie das Terminal geöffnet haben, navigieren Sie in das Projektverzeichnis. Das Projektverzeichnis ist der Ort, an dem alle Dateien, die sich auf dieses Experiment beziehen, gespeichert werden. Verwenden Sie den folgenden Befehl, um das aktuelle Verzeichnis in das Projektverzeichnis zu ändern:

    cd /home/labex/project
  2. Jetzt werden wir Python, eine beliebte Programmiersprache, verwenden, um einen einfachen HTTP-Server zu erstellen. Ein HTTP-Server ist eine Software, die Webseiten an Clients wie Webbrowser ausliefern kann. Python hat integrierte Funktionen, die es einfach machen, einen solchen Server einzurichten. Wir werden diesen Server als Ziel für unseren Nmap SYN-Scan verwenden. Führen Sie den folgenden Befehl im Terminal aus:

    python -m http.server --bind localhost 8080 &

    Dieser Befehl startet einen einfachen Webserver auf Port 8080. Ein Port ist ein Kommunikationsendpunkt in einem Computernetzwerk. Verschiedene Dienste verwenden verschiedene Ports für die Kommunikation. Das & am Ende des Befehls lässt den Server im Hintergrund laufen. Das bedeutet, dass der Server weiterläuft und Sie dasselbe Terminalfenster weiterhin verwenden können, um andere Befehle auszuführen.

  3. Nachdem der Server gestartet wurde, müssen wir überprüfen, ob er tatsächlich läuft. Wir können dies tun, indem wir die offenen Netzwerkverbindungen auf unserem System überprüfen. Der ss-Befehl ist ein Tool, das Socket-Statistiken anzeigen kann, die Informationen über offene Netzwerkverbindungen enthalten. Wir werden es verwenden, um zu überprüfen, ob unser Server auf Port 8080 lauscht. Führen Sie den folgenden Befehl aus:

    ss -tulwn | grep 8080

    Das | ist ein Pipe-Operator, der die Ausgabe des ss-Befehls nimmt und sie als Eingabe für den grep-Befehl verwendet. Der grep-Befehl sucht nach der Zeichenkette 8080 in der Ausgabe des ss-Befehls. Wenn der Server läuft, sollten Sie eine Ausgabe ähnlich der folgenden sehen:

    tcp   LISTEN 0      1            0.0.0.0:8080       0.0.0.0:*

    Diese Ausgabe zeigt an, dass der Server auf Port 8080 lauscht, was bedeutet, dass er erfolgreich läuft und zum Scannen bereit ist.

Verständnis und Ausführung eines Nmap SYN-Scans

Nachdem wir nun einen Ziel-Service gestartet und lauffähig haben, ist es an der Zeit, uns mit SYN-Scans zu befassen. SYN-Scans sind ein wesentlicher Bestandteil des Netzwerksicherheitstests und ermöglichen es uns, offene Ports auf einem Zielsystem zu entdecken. In diesem Abschnitt lernen wir, wie SYN-Scans funktionieren, und verwenden dann Nmap, ein leistungsstarkes Netzwerk-Scanning-Tool, um einen SYN-Scan gegen unseren HTTP-Server durchzuführen.

Was ist ein SYN-Scan?

Bevor wir mit dem eigentlichen Scan beginnen, ist es wichtig, den zugrunde liegenden Mechanismus eines SYN-Scans zu verstehen. Dazu schauen wir uns zunächst an, wie eine normale TCP-Verbindung hergestellt wird.

Normale TCP-Verbindung

Bei einer normalen TCP-Verbindung findet eine Drei-Wege-Handshake-Prozedur statt. Dies ist ein grundlegender Prozess zur Herstellung einer zuverlässigen Verbindung zwischen einem Client und einem Server:

  • Schritt 1: SYN-Paket vom Client
    Der Client initiiert die Verbindung, indem er ein SYN (Synchronisieren)-Paket an den Server sendet. Dieses Paket ist wie eine Anfrage, um ein Gespräch zu beginnen und fragt den Server, ob er bereit ist, zu kommunizieren.
  • Schritt 2: SYN-ACK-Paket vom Server
    Wenn der Server verfügbar und bereit zur Kommunikation ist, antwortet er nach Empfang des SYN-Pakets mit einem SYN-ACK (Synchronisieren-Bestätigen)-Paket. Dieses Paket bestätigt die Anfrage des Clients und zeigt auch an, dass der Server bereit ist, die Verbindung zu starten.
  • Schritt 3: ACK-Paket vom Client
    Schließlich sendet der Client ein ACK (Bestätigen)-Paket, um die Drei-Wege-Handshake-Prozedur abzuschließen. Nach diesem Schritt ist die TCP-Verbindung vollständig hergestellt, und Daten können zwischen Client und Server ausgetauscht werden.

SYN-Scan-Prozess

Ein SYN-Scan hingegen folgt einem anderen Ansatz:

  • Schritt 1: SYN-Paket von Nmap
    Nmap, unser Scanning-Tool, sendet das initiale SYN-Paket an den Zielport. Dies entspricht dem ersten Schritt bei einer normalen TCP-Verbindung.
  • Schritt 2: SYN-ACK-Antwort vom Ziel
    Wenn der Zielport geöffnet ist, antwortet er mit einem SYN-ACK-Paket, genau wie bei einer normalen TCP-Verbindung.
  • Schritt 3: Verbindungstermination durch Nmap
    Anstatt das abschließende ACK-Paket zu senden, um die Handshake-Prozedur abzuschließen, beendet Nmap die Verbindung. Dies macht den Scan weniger erkennbar, da die volle Verbindung nie hergestellt wird. Darüber hinaus ist er schneller als ein vollständiger Connect-Scan, der für jeden gescannten Port die gesamte Drei-Wege-Handshake-Prozedur abschließt.

Ausführung des SYN-Scans

Zunächst müssen wir sicherstellen, dass wir uns im richtigen Projektverzeichnis befinden. Dies ist wichtig, da wir die Scanergebnisse in einer Datei innerhalb dieses Verzeichnisses speichern werden. Um in das Projektverzeichnis zu navigieren, führen Sie den folgenden Befehl in Ihrem Terminal aus:

cd /home/labex/project

Schritt 2: Ausführen des SYN-Scans

Jetzt sind wir bereit, den SYN-Scan mit Nmap auszuführen. Führen Sie den folgenden Befehl in Ihrem Terminal aus:

sudo nmap -sS localhost -p 8080 > /home/labex/project/nmap-syn-scan-results.txt

Lassen Sie uns diesen Befehl zerlegen, um zu verstehen, was jeder Teil tut:

  • sudo: Dieser Befehl wird verwendet, um den nachfolgenden Befehl mit erhöhten Rechten auszuführen. SYN-Scans erfordern Root-Rechte, da sie das Senden von rohen Netzwerkpaketen beinhalten. Daher müssen wir sudo verwenden, um den nmap-Befehl auszuführen.
  • nmap: Dies ist das Netzwerk-Scanning-Tool, das wir verwenden. Nmap wird häufig für Netzwerkexploration und Sicherheitsüberprüfungen eingesetzt.
  • -sS: Diese Option gibt an, dass wir einen SYN-Scan ausführen möchten.
  • localhost: Dies ist das Ziel unseres Scans. In diesem Fall scannen wir unseren eigenen Rechner.
  • -p 8080: Diese Option teilt Nmap mit, nur Port 8080 zu scannen. Wir interessieren uns dafür, zu überprüfen, ob dieser spezifische Port auf unserem lokalen Rechner geöffnet ist.
  • > /home/labex/project/nmap-syn-scan-results.txt: Dieser Teil des Befehls leitet die Ausgabe des nmap-Scans in eine Datei namens nmap - syn - scan - results.txt im Projektverzeichnis um. So können wir die Ergebnisse später überprüfen.

Schritt 3: Anzeigen der Scanergebnisse

Nachdem der Scan abgeschlossen ist, können wir die Ergebnisse anzeigen. Führen Sie den folgenden Befehl in Ihrem Terminal aus:

cat /home/labex/project/nmap-syn-scan-results.txt

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-18 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.03 seconds

Diese Ausgabe liefert wertvolle Informationen. Sie bestätigt, dass Port 8080 auf Ihrem lokalen Rechner geöffnet ist und dass dort ein HTTP-Service läuft. Diese Informationen können für weitere Sicherheitsanalysen oder Netzwerkfehlersuche verwendet werden.

Analyse der Scanergebnisse und Sicherheitsauswirkungen

Nachdem Sie einen SYN-Scan durchgeführt haben, ist es wichtig zu verstehen, wie Sie die Ergebnisse interpretieren und welche Sicherheitsauswirkungen sie haben. Dieser Schritt ist essentiell, da er Ihnen hilft, potenzielle Risiken in Ihrem Netzwerk zu identifizieren. Lassen Sie uns die Details betrachten.

Interpretation der Scanergebnisse

  1. Zunächst werfen wir einen genaueren Blick auf die Scanergebnisse. Wir verwenden den cat-Befehl, um den Inhalt der Datei anzuzeigen, in der die Nmap SYN-Scanergebnisse gespeichert sind. Der cat-Befehl ist eine einfache Möglichkeit, den Inhalt einer Datei im Terminal anzuzeigen.

    cat /home/labex/project/nmap-syn-scan-results.txt

    Wenn Sie diesen Befehl ausführen, sehen Sie eine Ausgabe. Hier ist, was verschiedene Teile der Ausgabe bedeuten:

    • Host is up: Diese Meldung zeigt an, dass der Zielhost über das Netzwerk erreichbar ist. Wenn der Host erreichbar ist, bedeutet dies, dass Ihr Scan in der Lage war, mit dem Ziel zu kommunizieren.
    • Der Latenzwert: Dies zeigt, wie schnell das Ziel auf Ihren Scan geantwortet hat. Eine niedrigere Latenz bedeutet, dass das Ziel schneller geantwortet hat.
    • 8080/tcp open: Dies zeigt an, dass Port 8080 auf dem Zielhost geöffnet ist und bereit ist, eingehende Verbindungen anzunehmen. Ein geöffneter Port kann ein potenzieller Einstiegspunkt für Angreifer sein.
    • http-proxy: Dies ist Nmap's Vermutung, welches Service auf Port 8080 läuft. Nmap versucht, das Service anhand der Antworten zu identifizieren, die es während des Scans erhält.
  2. Bei einer realen Sicherheitsbewertung repräsentiert jeder geöffnete Port auf einem Zielhost mehrere Dinge:

    • Ein potenzieller Einstiegspunkt für Angreifer: Angreifer können geöffnete Ports nutzen, um Zugang zum Zielsystem zu erhalten. Beispielsweise können Angreifer versuchen, Schwachstellen in einer Webanwendung auszunutzen, wenn ein Webserver auf einem geöffneten Port läuft.
    • Ein Service, der Schwachstellen aufweisen kann: Jeder Service, der auf einem geöffneten Port läuft, kann Sicherheitslücken haben. Diese Schwachstellen können von Angreifern ausgenutzt werden, um das System zu kompromittieren.
    • Ein Teil der Angriffsfläche, die gesichert werden muss: Die Angriffsfläche ist die Summe aller Punkte, an denen ein Angreifer versuchen kann, in ein System einzudringen. Geöffnete Ports sind Teil dieser Angriffsfläche und müssen ordnungsgemäß gesichert werden.

Sicherheitsbest Practices

Bei der Sicherung eines Netzwerks sollten Sie die folgenden Best Practices befolgen:

  1. Nur notwendige Ports sollten geöffnet sein: Das Öffnen unnötiger Ports erhöht die Angriffsfläche Ihres Netzwerks. Indem Sie unbenutzte Ports schließen, verringern Sie die Anzahl potenzieller Einstiegspunkte für Angreifer.
  2. Jeder geöffnete Port sollte einem legitimen Geschäftszweck dienen: Wenn ein Port geöffnet ist, sollte es einen guten Grund dafür geben, wie beispielsweise das Ausführen eines Webservers oder eines Datenbankdienstes. Dies trägt dazu bei, sicherzustellen, dass Ihr Netzwerk effizient und sicher genutzt wird.
  3. Alle Services sollten auf dem neuesten Stand gehalten werden, um Ausnutzungen zu verhindern: Softwarehersteller veröffentlichen regelmäßig Updates, um Sicherheitslücken zu beheben. Indem Sie Ihre Services auf dem neuesten Stand halten, können Sie Ihr Netzwerk vor bekannten Bedrohungen schützen.
  4. Firewall-Regeln sollten den Zugang zu sensiblen Ports einschränken: Firewalls können verwendet werden, um zu kontrollieren, wer auf bestimmte Ports in Ihrem Netzwerk zugreifen kann. Indem Sie geeignete Firewall-Regeln einrichten, können Sie den Zugang zu sensiblen Ports auf autorisierte Benutzer oder Systeme beschränken.

Aufräumen unserer Umgebung

  1. Jetzt müssen wir unsere Umgebung aufräumen, indem wir den HTTP-Server stoppen, den wir zuvor gestartet haben. Zunächst müssen wir die Prozess-ID (PID) des HTTP-Servers ermitteln. Die PID ist eine eindeutige Nummer, die jedem laufenden Prozess auf dem System zugewiesen wird. Wir verwenden den ps aux-Befehl, um alle laufenden Prozesse aufzulisten und dann die Ergebnisse zu filtern, um den HTTP-Server-Prozess zu finden.

    ps aux | grep "http.server" | grep -v grep

    Wenn Sie diesen Befehl ausführen, sehen Sie eine Ausgabe ähnlich der folgenden:

    labex      1234  0.0  0.1  31116  3164 pts/0    S    12:00   0:00 python -m http.server 8080

    Die zweite Spalte in der Ausgabe zeigt die PID des HTTP-Server-Prozesses.

  2. Als nächstes verwenden wir die PID, um den Server zu stoppen. Wir verwenden den kill-Befehl, der ein Beendigungssignal an den Prozess sendet. Der folgende Befehl findet automatisch den HTTP-Server-Prozess und beendet ihn:

    kill $(ps aux | grep "http.server" | grep -v grep | awk '{print $2}')

    Dieser Befehl findet zunächst die PID des HTTP-Server-Prozesses mit derselben Filterungsmethode wie zuvor und übergibt dann die PID an den kill-Befehl.

  3. Schließlich müssen wir überprüfen, ob der Server gestoppt wurde. Wir verwenden den ss-Befehl, der zur Anzeige von Socket-Statistiken verwendet wird. Indem wir die Ausgabe filtern, um nur Informationen über Port 8080 anzuzeigen, können wir überprüfen, ob der Server noch läuft.

    ss -tulwn | grep 8080

    Wenn der Server erfolgreich gestoppt wurde, sollte keine Ausgabe von diesem Befehl erfolgen, was bedeutet, dass der Server nicht mehr auf Port 8080 lauscht.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Nmap SYN-Scans durchführen und verstehen, eine Schlüsseltechnik bei der Netzwerksicherheitsrecherche. Sie haben eine kontrollierte Umgebung mit einem Python-HTTP-Server eingerichtet, einen SYN-Scan durchgeführt, um offene Ports zu finden, die Ergebnisse analysiert und die Testumgebung aufgeräumt. Diese Fähigkeiten sind für ethisches Netzwerkscannen und Schwachstellenbewertungen unerlässlich.

Das Verständnis von SYN-Scans ermöglicht es Sicherheitsfachleuten, potenzielle Netzwerk-Schwachstellen effizient zu erkennen, während das Risiko der Entdeckung verringert wird. Wenn Sie in Ihrem Cybersicherheits-Weg voranschreiten, stellen Sie immer sicher, dass Sie die Erlaubnis haben, Netzwerke zu scannen, bevor Sie diese Techniken anwenden.