Portscans mit Masscan durchführen

Beginner
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, wie Sie Masscan, ein leistungsstarker TCP-Portscanner, für eine effiziente Netzwerkrecherche in der Cybersicherheit nutzen können. Sie üben das Installieren von Masscan aus der Quelle, das Konfigurieren von Scanning-Parametern und die Analyse der Ergebnisse für private Netzwerkbereiche.

Die Übungen führen Sie durch die Definition der Ziele, die Ausführung des Scans und die Interpretation der Ergebnisse. Durch die Absolvierung dieses Labs gewinnen Sie praktische Erfahrungen mit Masscan's schnellen Scanning-Fähigkeiten, während Sie ethische Scanning-Praktiken einhalten.


Skills Graph

Masscan installieren

In diesem Schritt installieren Sie Masscan, einen leistungsstarken TCP-Portscanner, in Ihrer LabEx-VM-Umgebung. Masscan ist bekannt für seine Fähigkeit, das gesamte Internet in wenigen Minuten zu scannen, indem es asynchrone Übertragung und einen eigenen benutzerdefinierten TCP/IP-Stack nutzt. Im Gegensatz zu herkömmlichen Scannern stützt sich Masscan nicht auf den Netzwerkstack des Betriebssystems, was es ihm ermöglicht, bemerkenswerte Scanning-Geschwindigkeiten zu erreichen.

Bevor wir fortfahren, stellen wir sicher, dass wir im richtigen Arbeitsverzeichnis sind. Das Verzeichnis ~/project ist der Ort, an dem wir alle unsere scannbezogenen Dateien organisieren werden:

cd ~/project

Masscan erfordert zunächst die Installation mehrerer Abhängigkeiten. Dazu gehören Entwicklungstools und Bibliotheken, die für die Kompilierung des Quellcodes benötigt werden. Der folgende Befehl aktualisiert Ihre Paketliste und installiert die erforderlichen Komponenten:

sudo apt-get update && sudo apt-get install -y git make gcc libpcap-dev

Jetzt laden wir den Masscan-Quellcode von seinem offiziellen GitHub-Repository herunter. Das Klonen des Repositorys gibt uns die neueste Version des Codes:

git clone https://github.com/robertdavidgraham/masscan

Nach dem Herunterladen müssen wir den Quellcode kompilieren, um das ausführbare Programm zu erstellen. Der Befehl make liest die Makefile im Verzeichnis und baut die Software:

cd masscan && make

Sobald die Kompilierung erfolgreich abgeschlossen ist, können wir überprüfen, ob alles funktioniert, indem wir die installierte Version prüfen. Dies ist eine gute Praxis, um zu bestätigen, dass die Installation erfolgreich war:

./bin/masscan --version

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Masscan version 1.3.2

Schließlich kopieren wir Masscan in /usr/local/bin/, um es von jedem Verzeichnis aus einfach zugänglich zu machen. Dieser Pfad ist normalerweise in der Umgebungsvariable PATH des Systems enthalten:

sudo cp bin/masscan /usr/local/bin/

Damit ist der Installationsprozess abgeschlossen. Sie haben nun Masscan bereit, um in den folgenden Schritten dieses Labs für Hochgeschwindigkeits-Portscans zu verwenden.

Definieren eines Zielbereichs

In diesem Schritt definieren Sie einen Ziel-IP-Bereich für Ihren Portscanning-Vorgang. Das Verständnis von Zielbereichen ist grundlegend für das Netzwerkscanning - es teilt dem Scanner mit, welche Netzwerkadressen untersucht werden sollen. Masscan erfordert bestimmte Zielbereiche, um effizient zu scannen, da es für Hochgeschwindigkeitsoperationen in großen Netzwerken entwickelt wurde.

Zu Lernzwecken verwenden wir private IP-Bereiche, die in RFC 1918 definiert sind. Dies sind sichere, nicht weiterleitbare Adressen, die üblicherweise in lokalen Netzwerken verwendet werden, sodass wir versehentliches Scannen von echten Internet-Hosts vermeiden. Die drei Hauptprivatbereiche, die wir verwenden werden, sind:

  1. 10.0.0.0/8 - Der größte private Block, oft von Unternehmen verwendet
  2. 172.16.0.0/12 - Ein mittelgroßer Bereich, der häufig in Unternehmensnetzwerken anzutreffen ist
  3. 192.168.0.0/16 - Der am häufigsten verwendete Bereich für Heim- und Kleinbüronetzwerke

Zunächst wechseln wir in unser Arbeitsverzeichnis, in dem wir unsere Zielliste speichern werden:

cd ~/project

Jetzt erstellen wir eine Textdatei, um unsere Zielbereiche zu speichern. Wir verwenden nano als Texteditor, da es einfach zu bedienen ist und in den meisten Linux-Umgebungen verfügbar ist:

nano targets.txt

Im Editor fügen wir diese drei Standard-Privatbereiche hinzu (drücken Sie Ctrl+O, um Ihre Änderungen zu speichern, und dann Ctrl+X, um nano zu verlassen):

10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

Die CIDR-Notation (/8, /12, /16) gibt an, wie viele IP-Adressen sich in jedem Bereich befinden:

  • /8 bedeutet, dass die ersten 8 Bits festgelegt sind (10.x.x.x)
  • /12 legt die ersten 12 Bits fest (172.16.x.x bis 172.31.x.x)
  • /16 legt die ersten 16 Bits fest (192.168.x.x)

Lassen Sie uns überprüfen, ob unsere Zieldatei korrekt erstellt wurde, indem wir ihren Inhalt anzeigen:

cat targets.txt

Sie sollten die drei CIDR-Bereiche genau so wie eingegeben sehen. Diese Datei wird in den nächsten Schritten als Eingabe für Masscan dienen und ihm mitteilen, welche Netzwerke zu scannen sind.

Einen Hochgeschwindigkeits-Portscan ausführen

In diesem Schritt führen Sie einen Hochgeschwindigkeits-Portscan mit Masscan gegen die im vorherigen Schritt definierten Zielbereiche aus. Portscanning ist eine grundlegende Netzwerkrecherchestechnik, die hilft, zugängliche Dienste auf Zielsystemen zu identifizieren. Die einzigartige Architektur von Masscan ermöglicht es ihm, Tausende von Ports pro Sekunde zu scannen, während es die Genauigkeit aufrechterhält, was es ideal für das schnelle Scannen großer Netzwerke macht.

Stellen Sie zunächst sicher, dass Sie sich im richtigen Arbeitsverzeichnis befinden, in dem sich Ihre Zieldatei befindet. Dadurch wird sichergestellt, dass Masscan Ihre vordefinierte Zielliste zugreifen kann:

cd ~/project

Jetzt führen wir den eigentlichen Scan aus. Der folgende Masscan-Befehl scannt die am häufigsten verwendeten Ports (1 - 1000) in Ihren Zielbereichen. Diese Ports umfassen typischerweise bekannte Dienste wie Webserver (80, 443), E-Mail (25, 110) und andere häufig verwendete Protokolle:

sudo masscan -p1-1000 -iL targets.txt --rate 1000 -oG scan_results.gnmap

Lassen Sie uns jeden Teil dieses Befehls analysieren, um zu verstehen, was er tut:

  • -p1-1000: Gibt den zu scannenden Portbereich an (Ports 1 bis 1000)
  • -iL targets.txt: Liest die Ziel-IP-Adressen aus Ihrer vordefinierten Listen-Datei
  • --rate 1000: Steuert die Scangeschwindigkeit (1000 Pakete pro Sekunde ist für Lernumgebungen sicher)
  • -oG scan_results.gnmap: Speichert die Ergebnisse im grepbaren Format für eine einfache Analyse

Während des Scans sehen Sie eine Echtzeitausgabe, die den Fortschritt anzeigt. Dies hilft Ihnen, den Status des Scans und die geschätzte Abschlusszeit zu überwachen:

Starting masscan 1.3.2 (http://bit.ly/14GZzcT) at 2023-01-01 00:00:00 GMT
Initiating SYN Stealth Scan
Scanning 3 hosts [1000 ports/host]

Nach Abschluss des Scans (typischerweise unter 1 Minute für kleine Netzwerke) können Sie die Scanergebnisse anzeigen. Das grepbare Format erleichtert die Identifizierung offener Ports und Dienste:

cat scan_results.gnmap

Die Ausgabe zeigt die gefundenen offenen Ports in diesem klaren Format an, wobei jede Zeile einen Host und seine offenen Ports darstellt:

Host: 10.0.0.1 ()   Ports: 80/open/tcp//http///, 443/open/tcp//https///

Überprüfen offener Ports

In diesem Schritt analysieren Sie die Scanergebnisse aus dem vorherigen Portscan, um offene Ports und ihre zugehörigen Dienste zu identifizieren. Offene Ports sind wie Türen in einem Netzwerk - wenn sie geöffnet sind, ermöglichen sie die Kommunikation zwischen Geräten. Das Verständnis, welche Ports geöffnet sind, ist für die Netzwerksicherheit von entscheidender Bedeutung, da jeder offene Port potenziell ein Einstiegspunkt für sowohl legitimen Datenverkehr als auch Sicherheitsbedrohungen sein kann.

Zunächst wechseln wir in das Verzeichnis, in dem Ihre Scanergebnisse gespeichert sind. Dadurch stellen wir sicher, dass wir mit den richtigen Datendateien arbeiten:

cd ~/project

Um die vollständigen Scanergebnisse im Rohformat anzuzeigen, verwenden wir den cat-Befehl. Dies zeigt alles an, was Masscan aufgezeichnet hat, einschließlich geschlossener Ports und Scanmetadaten:

cat scan_results.gnmap

Da wir uns hauptsächlich für offene Ports interessieren, können wir die Ergebnisse mit grep filtern. Dieser Befehl zeigt nur Zeilen an, die das Wort "open" enthalten, wodurch es einfacher wird, aktive Dienste zu erkennen:

grep "open" scan_results.gnmap

Für eine bessere Organisation können wir die Ergebnisse so anzeigen, dass die IP-Adressen eindeutig mit ihren offenen Ports verknüpft sind. Der awk-Befehl hilft, die Ausgabe neu zu strukturieren, um zu zeigen, welche Ports auf welchen bestimmten Hosts geöffnet sind:

awk '/Host:/ {ip=$2} /open/ {print ip,$0}' scan_results.gnmap

Wenn Sie überprüfen möchten, wie viele Hosts einen bestimmten Port geöffnet haben (z. B. den gängigen Webport 80), gibt Ihnen dieser grep-Befehl mit der -c-Option die Anzahl an:

grep -c "80/open" scan_results.gnmap

Schließlich können Sie mit dieser Pipeline eine umfassende Übersicht über alle offenen Ports in Ihrem gescannten Netzwerkbereich erhalten. Der Befehl zählt die Vorkommen jedes offenen Ports, sortiert die Ports und zeigt an, wie oft jeder Port erscheint:

grep -oP '\d+/open' scan_results.gnmap | sort | uniq -c

Beispielausgabe könnte wie folgt aussehen, wobei drei Hosts SSH (Port 22) geöffnet haben, fünf HTTP (Port 80) und zwei HTTPS (Port 443):

   3 22/open
   5 80/open
   2 443/open

Exportieren von Scanergebnissen

In diesem Schritt lernen Sie, wie Sie Ihre Masscan-Ergebnisse in verschiedene Dateiformate exportieren können. Ein korrektes Exportieren der Scandaten ist von entscheidender Bedeutung, da es Ihnen ermöglicht, die gefundenen Ergebnisse zu analysieren, Berichte mit Teammitgliedern zu teilen oder die Daten an andere Sicherheitstools zu übergeben. Wir werden drei gängige Formate erstellen: CSV für die Analyse in Tabellenkalkulationen, einfachen Text für eine schnelle Überprüfung und JSON für die automatisierte Verarbeitung.

Zunächst wechseln Sie in Ihr Projektverzeichnis, in dem die Scanergebnisse gespeichert sind. Dadurch wird sichergestellt, dass alle exportierten Dateien am richtigen Ort gespeichert werden:

cd ~/project

Die erste Konvertierung erstellt eine CSV-Datei (Comma-Separated Values, Komma-separierte Werte). CSV ist ideal für den Import in Tabellenkalkulationssoftware wie Excel. Der awk-Befehl extrahiert die IP-Adresse, die Portnummer und den Dienstnamen aus der grepbaren Formatdatei:

awk -F'[ /]' '/Host:/ {ip=$2} /open/ {print ip","$4","$7}' scan_results.gnmap > scan_results.csv

Als Nächstes generieren wir einen einfachen Textbericht, der im Terminal oder in Texteditoren leicht lesbar ist. Dieses Format ist nützlich, wenn Sie schnell überprüfen müssen, welche Hosts offene Ports haben, ohne eine Tabellenkalkulation zu öffnen:

grep "open" scan_results.gnmap | awk '{print "Host:", $2, "Port:", $4}' > scan_report.txt

Für die Integration mit anderen Tools oder Skripten erstellen weine eine JSON-Datei. JSON ist ein strukturiertes Format, das von den meisten Programmiersprachen leicht geparst werden kann. Die folgenden Befehle erstellen ein richtiges JSON-Array mit allen Scanergebnissen:

echo '[' > scan_results.json
grep "open" scan_results.gnmap | awk '{print "{\"host\":\""$2"\",\"port\":\""$4"\",\"service\":\""$7"\"},"}' >> scan_results.json
sed -i '$ s/,$//' scan_results.json
echo ']' >> scan_results.json

Abschließend überprüfen Sie, ob alle exportierten Dateien erfolgreich erstellt wurden. Dieser Befehl listet die Dateien mit ihren Größen auf, damit Sie bestätigen können, dass die Exporte wie erwartet funktioniert haben:

ls -l scan_results.* scan_report.txt

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

-rw-r--r-- 1 labex labex 1234 scan_results.csv
-rw-r--r-- 1 labex labex 5678 scan_results.json
-rw-r--r-- 1 labex labex 9012 scan_report.txt

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie mit Masscan Hochgeschwindigkeits-Portscans durchführen können, von der Installation bis zur Vorbereitung der Ziele. Der Prozess umfasste das Einrichten der Abhängigkeiten, das Kompilieren des Quellcodes und die Konfiguration privater IP-Bereiche für sicheres Üben.

Sie haben praktisches Wissen über die asynchronen Scankapazitäten von Masscan und die Verwendung der CIDR-Notation (Classless Inter-Domain Routing-Notation) erworben. Das Lab hat ethische Scangrundsätze betont, indem es sich auf nicht-routierbare Adressen konzentriert hat, und Sie so auf reale Netzwerkanalysescenarien vorbereitet.