
🖖 Schneller, moderner, benutzerfreundlicher Netzwerkscanner
sx ist der Kommandozeilen-Netzwerkscanner, der der UNIX-Philosophie folgt.
Ziel dieses Projekts ist es, den schnellsten Netzwerkscanner mit sauberem und einfachem Code zu erstellen.
Der einfachste Weg ist, von GitHub Releases herunterzuladen und die ausführbare Datei in Ihrem PATH zu platzieren.
Voraussetzungen:
Installieren Sie unter macOS zuerst die Xcode Command Line Tools, damit CGO gegen die systemeigene libpcap linken kann:
xcode-select --install
Führen Sie im Wurzelverzeichnis des Quellbaums Folgendes aus:
go build
Hier sind kurze Beispiele, wie Sie Netzwerke mit sx scannen können.
Durchsuchen Sie Ihr lokales Netzwerk und zeigen Sie die IP-Adresse, MAC-Adresse und den zugehörigen Hardware-Hersteller der verbundenen Geräte an:
sx arp 192.168.0.1/24
Beispielausgabe:
192.168.0.1 b0:be:76:40:05:8d TP-LINK TECHNOLOGIES CO.,LTD.
192.168.0.111 80:c5:f2:0b:02:e3 AzureWave Technology Inc.
192.168.0.171 88:53:95:2d:3c:af Apple, Inc.
mit JSON-Ausgabe:
sx arp --json 192.168.0.1/24
Beispielausgabe:
{"ip":"192.168.0.1","mac":"b0:be:76:40:05:8d","vendor":"TP-LINK TECHNOLOGIES CO.,LTD."}
{"ip":"192.168.0.111","mac":"80:c5:f2:0b:02:e3","vendor":"AzureWave Technology Inc."}
{"ip":"192.168.0.171","mac":"88:53:95:2d:3c:af","vendor":"Apple, Inc."}
5 Sekunden vor dem Beenden warten, um verzögerte Antwortpakete zu empfangen; standardmäßig wartet sx 300 Millisekunden:
sx arp --exit-delay 5s 192.168.0.1/24
Live-Scan-Modus, der das Netzwerk alle 10 Sekunden erneut scannt:
sx arp 192.168.0.1/24 --live 10s
Im Gegensatz zu nmap und anderen Scannern, die vor dem eigentlichen Scan implizit ARP-Anfragen durchführen, um IP-Adressen in MAC-Adressen aufzulösen, verwendet sx explizit das ARP-Cache-Konzept. Eine ARP-Cache-Datei ist eine einfache Textdatei, die pro Zeile einen JSON-String enthält (JSONL-Datei), mit denselben JSON-Feldern wie die oben beschriebene ARP-Scan-JSON-Ausgabe. Scans von Protokollen höherer Ebene wie TCP und UDP lesen die ARP-Cache-Datei von der Standardeingabe und starten dann den eigentlichen Scan.
Dies vereinfacht nicht nur das Design des Programms, sondern beschleunigt auch den Scanvorgang, da nicht jedes Mal ein ARP-Scan durchgeführt werden muss.
Nehmen wir an, dass der aktuelle ARP-Cache in der Datei arp.cache ist. Wir können ihn manuell erstellen oder den ARP-Scan wie unten gezeigt verwenden:
sx arp 192.168.0.1/24 --json | tee arp.cache
Sobald wir die ARP-Cache-Datei haben, können wir Scans von Protokollen höherer Ebene wie den TCP-SYN-Scan ausführen:
cat arp.cache | sx tcp -p 1-65535 192.168.0.171
Beispielausgabe:
192.168.0.171 22
192.168.0.171 443
In diesem Fall stellen wir fest, dass die Ports 22 und 443 offen sind.
Wenn während großer Scans send: No buffer space available erscheint, bedeutet dies in der Regel, dass der Sender die Kernel/Raw-Socket-Puffer überläuft. Die erste Abhilfe besteht darin, --rate hinzuzufügen und den Sendeburst zu verringern, z. B. -r 100000/s oder bei Bedarf niedriger. Auf manchen Systemen kann auch die Anpassung der OS-Socket/Puffergrenzen helfen, aber Ratenbegrenzung ist die primäre Lösung.
Scan mit JSON-Ausgabe:
cat arp.cache | sx tcp --json -p 1-65535 192.168.0.171
Beispielausgabe:
{"scan":"tcpsyn","ip":"192.168.0.171","port":22}
{"scan":"tcpsyn","ip":"192.168.0.171","port":443}
Mehrere Portbereiche scannen:
cat arp.cache | sx tcp -p 1-23,25-443 192.168.0.171
oder einzelne Ports:
cat arp.cache | sx tcp -p 22,443 192.168.0.171
oder die Option --ports-file verwenden, um eine Datei mit Ports oder Portbereichen (einer pro Zeile) zum Scannen anzugeben.
IP/Port-Paare aus einer Datei mit JSON-Ausgabe scannen:
cat arp.cache | sx tcp --json -f ip_ports_file.jsonl
Jede Zeile der Eingabedatei ist ein JSON-String, der die Felder ip und port enthalten muss.
Beispiel für eine Eingabedatei:
{"ip":"10.0.1.1","port":1080}
{"ip":"10.0.2.2","port":1081}
Es ist möglich, die ARP-Cache-Datei mit den Optionen -a oder --arp-cache anzugeben:
sx tcp -a arp.cache -p 22,443 192.168.0.171
oder per stdin-Umleitung:
sx tcp -p 22,443 192.168.0.171 < arp.cache
Sie können auch den Unterbefehl tcp syn anstelle von tcp verwenden:
cat arp.cache | sx tcp syn -p 22 192.168.0.171
Der Unterbefehl tcp ist nur eine Kurzform für tcp syn, sofern nicht die Option --flags übergeben wird (siehe unten).
sx unterstützt das Scannen mit virtuellen Netzwerkschnittstellen (WireGuard, OpenVPN usw.). In diesem Fall ist die Verwendung des ARP-Caches nicht erforderlich, da diese Schnittstellen rohe IP-Pakete anstelle von Ethernet-Frames als Eingabe benötigen. Beispielsweise das Scannen einer IP-Adresse in einem VPN-Netzwerk:
sx tcp 10.1.27.1 -p 80 --json