
Einzelpaket-UDP-Scanner in Go für die schnelle Erkennung von über 45 Diensten in Netzwerken, mit Unterstützung für benutzerdefinierte Sonden, CIDR-Scans und JSONL-Ausgabe.

Schnell und leichtgewichtig, UDPX ist ein UDP-Scanner mit Einzelpaketen, geschrieben in Go. Er unterstützt die Erkennung von über 45 Diensten und ermöglicht das Hinzufügen eigener. Er ist einfach zu bedienen und portabel und kann unter Linux, macOS und Windows ausgeführt werden. Im Gegensatz zu Internetscannern wie zgrab2 und zmap ist UDPX auf Portabilität und Benutzerfreundlichkeit ausgelegt.
Das Scannen von UDP-Ports unterscheidet sich stark vom Scannen von TCP – Sie können eine Antwort erhalten oder auch nicht, wenn Sie einen UDP-Port testen, da UDP ein verbindungsloses Protokoll ist. UDPX implementiert einen Einzelpaket-Ansatz. Ein protokollspezifisches Paket wird an den definierten Dienst (Port) gesendet und auf eine Antwort gewartet. Die Grenze ist standardmäßig auf 500 ms eingestellt und kann mit dem Flag -w geändert werden. Wenn der Dienst innerhalb dieser Zeit ein Paket zurücksendet, ist sicher, dass er tatsächlich auf diesem Port lauscht, und wird als offen gemeldet.
Eine typische Technik besteht darin, 0-Byte-UDP-Pakete an jeden Port des Zielrechners zu senden. Wenn wir eine "ICMP Port Unreachable"-Nachricht erhalten, ist der Port geschlossen. Wenn eine UDP-Antwort auf die Sonde eingeht (ungewöhnlich), ist der Port offen. Wenn wir überhaupt keine Antwort erhalten, ist der Zustand offen oder gefiltert, was bedeutet, dass der Port entweder offen ist oder Paketfilter die Kommunikation blockieren. Diese Methode wird nicht implementiert, da sie keinen Mehrwert bietet (UDPX testet nur auf bestimmte Protokolle).

⚠️ Parallelität: Standardmäßig ist die Parallelität auf nur 32 Verbindungen eingestellt (damit Sie nichts zum Absturz bringen). Wenn Sie viele Hosts scannen müssen, können Sie sie auf 128 oder 256 Verbindungen setzen. Basierend auf Ihrer Hardware, Verbindungsstabilität und ulimit (unter *nix) können Sie 512 oder mehr gleichzeitige Verbindungen ausführen, dies wird jedoch nicht empfohlen.
Um eine einzelne IP zu scannen:
udpx -t 1.1.1.1
Um ein CIDR mit maximal 128 Verbindungen und einem Timeout von 1000 ms zu scannen:
udpx -t 1.2.3.4/24 -c 128 -w 1000
Um Ziele aus einer Datei mit maximal 128 Verbindungen nur für einen bestimmten Dienst zu scannen:
udpx -tf targets.txt -c 128 -s ipmi
Ziel kann sein:
IPv6 wird unterstützt.
Wenn Sie die Ergebnisse speichern möchten, verwenden Sie das Flag -o [Dateiname]. Die Ausgabe erfolgt im JSONL-Format, wie unten zu sehen:
{"address":"45.33.32.156","hostname":"scanme.nmap.org","port":123,"service":"ntp","response_data":"JAME6QAAAEoAAA56LU9vp+d2ZPwOYIyDxU8jS3GxUvM="}
__ ______ ____ _ __
/ / / / __ \/ __ \ |/ /
/ / / / / / / /_/ / /
/ /_/ / /_/ / ____/ |
\____/_____/_/ /_/|_|
v1.0.2-beta, von @nullt3r
Verwendung von ./udpx-linux-amd64:
-c int
Maximale Anzahl gleichzeitiger Verbindungen (Standard: 32)
-nr
Adressen nicht zufällig anordnen
-o string
Ausgabedatei zum Schreiben der Ergebnisse
-s string
Nur nach einem bestimmten Dienst scannen, einer von: ard, bacnet, bacnet_rpm, chargen, citrix, coap, db, db, digi1, digi2, digi3, dns, ipmi, ldap, mdns, memcache, mssql, nat_port_mapping, natpmp, netbios, netis, ntp, ntp_monlist, openvpn, pca_nq, pca_st, pcanywhere, portmap, qotd, rdp, ripv, sentinel, sip, snmp1, snmp2, snmp3, ssdp, tftp, ubiquiti, ubiquiti_discovery_v1, ubiquiti_discovery_v2, upnp, valve, wdbrpc, wsd, wsd_malformed, xdmcp, kerberos, ike
-sp
Empfangene Pakete anzeigen (nur die ersten 32 Bytes)
-t string
Zu scannende IP/CIDR
-tf string
Datei mit zu scannenden IPs/CIDRs
-w int
Maximale Wartezeit auf eine Antwort (Socket-Timeout) in ms (Standard: 500)
Sie können vorgefertigte Binärdateien im Release-Bereich herunterladen. Wenn Sie UDPX aus dem Quellcode erstellen möchten, folgen Sie diesen Schritten:
Aus Git:
git clone https://github.com/nullt3r/udpx
cd udpx
go build ./cmd/udpx
Die Binärdatei befindet sich im aktuellen Verzeichnis.
Oder über go:
go install -v github.com/nullt3r/udpx/cmd/udpx@latest
Danach finden Sie die Binärdatei unter $HOME/go/bin/udpx. Wenn Sie möchten, verschieben Sie die Binärdatei nach /usr/local/bin/, damit Sie sie direkt aufrufen können.
UDPX unterstützt mehr als 45 Dienste. Die interessantesten sind:
Die vollständige Liste der unterstützten Dienste:
Bitte senden Sie eine Funktionsanfrage mit dem Protokollnamen und Port, und ich werde es umsetzen. Oder fügen Sie es selbst hinzu, die Datei pkg/probes/probes.go enthält alle verfügbaren Nutzdaten. Geben Sie den Protokollnamen, Port und Paketdaten (hex-kodiert) an.
{
Name: "ike",
Payloads: []string{"5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101"},
Port: []int{500, 4500},
},
Ich bin nicht verantwortlich für Schäden. Sie sind für Ihre eigenen Handlungen verantwortlich. Das Scannen oder Angreifen von Zielen ohne vorherige gegenseitige Zustimmung kann illegal sein.
UDPX wird unter der MIT-Lizenz verteilt.