Nmap SYN-Scans für Netzwerksicherheit durchführen

NmapBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie den Nmap SYN-Scan kennen, eine Schlüsseltechnik in der Netzwerksicherheit für unauffällige Port-Aufklärung. SYN-Scans identifizieren effizient offene Ports auf einem Zielsystem, ohne eine vollständige TCP-Verbindung aufzubauen, wodurch sie schwerer zu entdecken sind als herkömmliche Methoden. Dies ist für Sicherheitsexperten entscheidend, um Netzwerkschwachstellen zu bewerten und Abwehrmechanismen zu verbessern.

Am Ende dieses Labs werden Sie verstehen, wie man SYN-Scans durchführt, deren Ergebnisse interpretiert und deren Bedeutung bei Sicherheitsbewertungen von Netzwerken erkennt.

Erstellen eines Zieldienstes für das Scanning

In diesem Schritt erstellen wir eine kontrollierte Umgebung, 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 Scanning eine ordnungsgemäße Autorisierung erfordert. Um rechtliche Probleme zu vermeiden, richten wir unseren eigenen Dienst ein, den wir sicher scannen können.

  1. Zuerst müssen Sie ein Terminal öffnen. Ein Terminal ist eine textbasierte Schnittstelle, die es Ihnen ermöglicht, durch die Eingabe von Befehlen mit dem Betriebssystem Ihres Computers zu interagieren. Sobald Sie das Terminal geöffnet haben, navigieren Sie zu Ihrem Projektverzeichnis. Das Projektverzeichnis ist der Ort, an dem alle Dateien für dieses Experiment gespeichert werden. Verwenden Sie den folgenden Befehl, um in das Projektverzeichnis zu wechseln:

    cd /home/labex/project
    
  2. Nun verwenden wir Python, eine beliebte Programmiersprache, um einen einfachen HTTP-Server zu erstellen. Ein HTTP-Server ist eine Software, die Webseiten an Clients, wie z. B. Webbrowser, ausliefern kann. Python verfügt über integrierte Funktionen, die das Einrichten eines solchen Servers erleichtern. 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 127.0.0.1 8080 &
    

    Dieser Befehl startet einen einfachen Webserver auf Port 8080 und bindet ihn an die IPv4-Loopback-Adresse 127.0.0.1. Ein Port ist ein Kommunikationsendpunkt in einem Computernetzwerk. Verschiedene Dienste nutzen unterschiedliche Ports für die Kommunikation. Die Verwendung einer expliziten IPv4-Adresse stellt sicher, dass der Server und der spätere Nmap-Scan auf derselben Loopback-Schnittstelle bleiben. Das & am Ende des Befehls führt den Server im Hintergrund aus. Das bedeutet, dass der Server weiterläuft und Sie das Terminalfenster weiterhin für andere Befehle nutzen können.

  3. Nachdem der Server gestartet wurde, müssen wir überprüfen, ob er tatsächlich läuft. Dies können wir tun, indem wir die offenen Netzwerkverbindungen auf unserem System überprüfen. Der Befehl ss ist ein Werkzeug, das Socket-Statistiken anzeigen kann, einschließlich Informationen über offene Netzwerkverbindungen. Wir verwenden ihn, um zu prü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 Zeichenfolge 8080 in der Ausgabe des ss-Befehls. Wenn der Server läuft, sollten Sie eine Ausgabe ähnlich der folgenden sehen:

    tcp   LISTEN 0      5          127.0.0.1:8080       0.0.0.0:*
    

    Diese Ausgabe zeigt an, dass der Server auf Port 8080 lauscht, was bedeutet, dass er erfolgreich läuft und für einen Scan bereit ist.

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

Nachdem wir nun einen Zieldienst eingerichtet haben, ist es an der Zeit, sich mit SYN-Scans zu befassen. SYN-Scans sind ein entscheidender Teil der Netzwerksicherheitstests, da sie es uns ermöglichen, offene Ports auf einem Zielsystem zu entdecken. In diesem Abschnitt erfahren Sie, 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 aufgebaut wird.

Normale TCP-Verbindung

Bei einer normalen TCP-Verbindung findet ein Drei-Wege-Handshake (Three-Way Handshake) statt. Dies ist ein grundlegender Prozess zum Aufbau 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-Paket (synchronize) an den Server sendet. Dieses Paket ist wie eine Anfrage, ein Gespräch zu beginnen, und fragt den Server, ob er bereit zur Kommunikation ist.
  • Schritt 2: SYN-ACK-Paket vom Server Nach Erhalt des SYN-Pakets antwortet der Server, sofern er verfügbar und kommunikationsbereit ist, mit einem SYN-ACK-Paket (synchronize-acknowledge). Dieses Paket bestätigt die Anfrage des Clients und signalisiert gleichzeitig, dass der Server bereit ist, die Verbindung aufzubauen.
  • Schritt 3: ACK-Paket vom Client Schließlich sendet der Client ein ACK-Paket (acknowledge), um den Drei-Wege-Handshake abzuschließen. Nach diesem Schritt ist die TCP-Verbindung vollständig aufgebaut und Daten können zwischen Client und Server ausgetauscht werden.

SYN-Scan-Prozess

Ein SYN-Scan hingegen verfolgt einen anderen Ansatz:

  • Schritt 1: SYN-Paket von Nmap Nmap, unser Scanning-Tool, sendet das anfängliche SYN-Paket an den Zielport. Dies ähnelt dem ersten Schritt einer normalen TCP-Verbindung.
  • Schritt 2: SYN-ACK-Antwort vom Ziel Wenn der Zielport offen ist, antwortet er mit einem SYN-ACK-Paket, genau wie bei einer normalen TCP-Verbindung.
  • Schritt 3: Verbindungsabbruch durch Nmap Anstatt das abschließende ACK-Paket zu senden, um den Handshake zu vervollständigen, bricht Nmap die Verbindung ab. Dies macht den Scan weniger auffällig, da die vollständige Verbindung nie hergestellt wird. Zudem ist er schneller als ein vollständiger Connect-Scan, der für jeden gescannten Port den gesamten Drei-Wege-Handshake durchläuft.

Durchführung des SYN-Scans

Schritt 1: In das Projektverzeichnis navigieren

Zuerst müssen wir sicherstellen, dass wir uns im richtigen Projektverzeichnis befinden. Dies ist wichtig, da wir die Scan-Ergebnisse 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: Den SYN-Scan ausführen

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

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

Lassen Sie uns diesen Befehl aufschlüsseln, um zu verstehen, was jeder Teil bewirkt:

  • 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 die Netzwerkerkundung und Sicherheitsüberprüfungen eingesetzt.
  • -sS: Diese Option gibt an, dass wir einen SYN-Scan durchführen möchten.
  • 127.0.0.1: Dies ist die IPv4-Loopback-Adresse unseres eigenen Rechners. Die Verwendung der expliziten IPv4-Adresse hält den Scan im Einklang mit dem HTTP-Server, den wir in Schritt 1 gestartet haben.
  • -p 8080: Diese Option weist Nmap an, nur Port 8080 zu scannen. Wir sind daran interessiert zu prüfen, ob dieser spezifische Port auf unserem lokalen Rechner offen 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. Auf diese Weise können wir die Ergebnisse später überprüfen.

Schritt 3: Die Scan-Ergebnisse anzeigen

Nachdem der Scan abgeschlossen ist, können wir die Ergebnisse einsehen. 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 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 offen ist und einen HTTP-Dienst ausführt. Diese Informationen können für weitere Sicherheitsanalysen oder zur Fehlerbehebung im Netzwerk verwendet werden.

Analyse der Scan-Ergebnisse und Sicherheitsimplikationen

Nach der Durchführung eines SYN-Scans ist es entscheidend zu verstehen, wie die Ergebnisse zu interpretieren sind und welche Sicherheitsimplikationen sie haben. Dieser Schritt ist wichtig, da er Ihnen hilft, potenzielle Risiken in Ihrem Netzwerk zu identifizieren. Lassen Sie uns in die Details eintauchen.

Interpretation der Scan-Ergebnisse

  1. Schauen wir uns zunächst die Scan-Ergebnisse genauer an. Wir verwenden den cat-Befehl, um den Inhalt der Datei anzuzeigen, in der die Nmap SYN-Scan-Ergebnisse 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 die Bedeutung der verschiedenen Teile der Ausgabe:

    • Host is up: Diese Meldung zeigt an, dass der Zielhost über das Netzwerk erreichbar ist. Wenn der Host "up" ist, bedeutet dies, dass Ihr Scan mit dem Ziel kommunizieren konnte.
    • Der Latenzwert: Dieser zeigt an, wie schnell das Ziel auf Ihren Scan reagiert hat. Eine geringere Latenz bedeutet, dass das Ziel schneller reagiert hat.
    • 8080/tcp open: Dies zeigt an, dass Port 8080 auf dem Zielhost offen ist und bereit ist, eingehende Verbindungen zu akzeptieren. Ein offener Port kann ein potenzieller Einstiegspunkt für Angreifer sein.
    • http-proxy: Dies ist die Vermutung von Nmap, welcher Dienst auf Port 8080 läuft. Nmap versucht, den Dienst basierend auf den Antworten zu identifizieren, die es während des Scans erhält.
  2. Bei einer realen Sicherheitsbewertung stellt jeder offene Port auf einem Zielhost mehrere Dinge dar:

    • Ein potenzieller Einstiegspunkt für Angreifer: Angreifer können offene Ports nutzen, um Zugriff auf das Zielsystem zu erhalten. Wenn beispielsweise ein Webserver auf einem offenen Port läuft, könnten Angreifer versuchen, Schwachstellen in der Webanwendung auszunutzen.
    • Ein Dienst, der Schwachstellen aufweisen könnte: Jeder Dienst, der auf einem offenen Port läuft, hat das Potenzial, Sicherheitslücken zu haben. Diese Schwachstellen können von Angreifern ausgenutzt werden, um das System zu kompromittieren.
    • 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. Offene Ports sind Teil dieser Angriffsfläche und müssen ordnungsgemäß gesichert werden.

Best Practices für die Sicherheit

Bei der Sicherung eines Netzwerks sollten Sie diese Best Practices befolgen:

  1. Nur notwendige Ports sollten offen sein: Das Öffnen unnötiger Ports vergrößert die Angriffsfläche Ihres Netzwerks. Durch das Schließen ungenutzter Ports reduzieren Sie die Anzahl potenzieller Einstiegspunkte für Angreifer.
  2. Jeder offene Port sollte einem legitimen geschäftlichen Zweck dienen: Wenn ein Port offen ist, sollte dies einen triftigen Grund haben, wie z. B. den Betrieb eines Webservers oder eines Datenbankdienstes. Dies trägt dazu bei, dass Ihr Netzwerk effizient und sicher genutzt wird.
  3. Alle Dienste sollten auf dem neuesten Stand gehalten werden, um Ausnutzung zu verhindern: Softwareanbieter veröffentlichen regelmäßig Updates, um Sicherheitslücken zu schließen. Indem Sie Ihre Dienste auf dem neuesten Stand halten, können Sie Ihr Netzwerk vor bekannten Bedrohungen schützen.
  4. Firewall-Regeln sollten den Zugriff auf sensible Ports einschränken: Firewalls können verwendet werden, um zu kontrollieren, wer auf bestimmte Ports in Ihrem Netzwerk zugreifen kann. Durch das Einrichten geeigneter Firewall-Regeln können Sie den Zugriff auf sensible Ports auf autorisierte Benutzer oder Systeme beschränken.

Bereinigung unserer Umgebung

  1. Nun müssen wir unsere Umgebung bereinigen, indem wir den HTTP-Server stoppen, den wir zuvor gestartet haben. Zuerst müssen wir die Prozess-ID (PID) des HTTP-Servers identifizieren. Die PID ist eine eindeutige Nummer, die jedem laufenden Prozess auf dem System zugewiesen wird. Wir verwenden den Befehl ps aux, 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 --bind 127.0.0.1 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 den HTTP-Server-Prozess automatisch und beendet ihn:

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

    Dieser Befehl findet zuerst die PID des HTTP-Server-Prozesses mit derselben Filtermethode wie zuvor und übergibt die PID dann an den kill-Befehl.

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

    ss -tulwn | grep 8080
    

    Wenn der Server erfolgreich gestoppt wurde, sollte dieser Befehl keine Ausgabe liefern, was darauf hinweist, dass der Server nicht mehr auf Port 8080 lauscht.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie man Nmap SYN-Scans durchführt und versteht – eine Schlüsseltechnik bei der Aufklärung im Bereich der Netzwerksicherheit. 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 bereinigt. Diese Fähigkeiten sind für ethisches Netzwerk-Scanning und die Bewertung von Schwachstellen unerlässlich.

Das Verständnis von SYN-Scans ermöglicht es Sicherheitsexperten, potenzielle Netzwerkschwachstellen effizient zu erkennen und gleichzeitig das Risiko einer Entdeckung zu verringern. Achten Sie im weiteren Verlauf Ihrer Cybersecurity-Laufbahn immer darauf, dass Sie die Erlaubnis zum Scannen von Netzwerken haben, bevor Sie diese Techniken anwenden.