UDPX ist schnell und leichtgewichtig und ein in Go geschriebener Einzelpaket-UDP-Scanner, der die Erkennung von über 45 Diensten mit der Möglichkeit unterstützt, benutzerdefinierte Dienste hinzuzufügen. Es ist einfach zu bedienen und portabel und kann unter Linux, Mac OS und Windows ausgeführt werden. Im Gegensatz zu internetweiten Scannern wie zgrab2 und zmap ist UDPX auf Portabilität und Benutzerfreundlichkeit ausgelegt.
Das Scannen von UDP-Ports unterscheidet sich stark vom Scannen von TCP. Möglicherweise erhalten Sie bei der Überprüfung eines UDP-Ports ein Ergebnis zurück, müssen es aber nicht, da es sich bei UDP um ein verbindungsloses Protokoll handelt. UDPX implementiert einen auf Einzelpaketen basierenden Ansatz. Ein protokollspezifisches Paket wird an den definierten Dienst (Port) gesendet und wartet auf eine Antwort. Der Grenzwert 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 es sicher, dass er tatsächlich auf diesem Port lauscht und als offen gemeldet wird.
Eine typische Technik besteht darin, 0-Byte-UDP-Pakete an jeden Port auf dem Zielcomputer zu senden. Wenn wir die Meldung „ICMP Port Unreachable“ erhalten, ist der Port geschlossen. Wenn eine UDP-Antwort an die Probe empfangen wird (ungewöhnlich), ist der Port geöffnet. Erhalten wir überhaupt keine Antwort, lautet der Status „offen“ oder „gefiltert“, was bedeutet, dass der Port entweder offen ist oder Paketfilter die Kommunikation blockieren. Diese Methode wird nicht implementiert, da kein Mehrwert besteht (UDPX testet nur für bestimmte Protokolle).
️ Parallelität: Standardmäßig ist die Parallelität auf nur 32 Verbindungen eingestellt (damit es nicht zum Absturz kommt). Wenn Sie viele Hosts scannen müssen, können Sie die Anzahl auf 128 oder 256 Verbindungen einstellen. 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.
So scannen Sie eine einzelne IP:
udpx -t 1.1.1.1
So scannen Sie ein CIDR mit maximal 128 Verbindungen und einem Timeout von 1000 ms:
udpx -t 1.2.3.4/24 -c 128 -w 1000
So scannen Sie Ziele aus einer Datei mit maximal 128 Verbindungen nur für bestimmte Dienste:
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 [filename]
. Die Ausgabe erfolgt im JSONL-Format, wie unten zu sehen ist:
{ "address" : " 45.33.32.156 " , "hostname" : " scanme.nmap.org " , "port" : 123 , "service" : " ntp " , "response_data" : " JAME6QAAAEoAAA56LU9vp+d2ZPwOYIyDxU8jS3GxUvM= " }
__ ______ ____ _ __
/ / / / __ / __ |/ /
/ / / / / / / /_/ / /
/ /_/ / /_/ / ____/ |
____/_____/_/ /_/|_|
v1.0.2-beta, by @nullt3r
Usage of ./udpx-linux-amd64:
-c int
Maximum number of concurrent connections (default 32)
-nr
Do not randomize addresses
-o string
Output file to write results
-s string
Scan only for a specific service, one of: 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
Show received packets (only first 32 bytes)
-t string
IP/CIDR to scan
-tf string
File containing IPs/CIDRs to scan
-w int
Maximum time to wait for a response (socket timeout) in ms (default 500)
Sie können vorgefertigte Binärdateien im Release-Bereich herunterladen. Wenn Sie UDPX aus dem Quellcode erstellen möchten, gehen Sie folgendermaßen vor:
Von Git:
git clone https://github.com/nullt3r/udpx
cd udpx
go build ./cmd/udpx
Sie finden die Binärdatei im aktuellen Verzeichnis.
Oder über go:
go install -v github.com/nullt3r/udpx/cmd/udpx@latest
Danach finden Sie die Binärdatei in $HOME/go/bin/udpx
. Wenn Sie möchten, verschieben Sie die Binärdatei nach /usr/local/bin/
damit Sie sie direkt aufrufen können.
Der UDPX unterstützt mehr als 45 Dienste. Die interessantesten sind:
Die vollständige Liste der unterstützten Dienste:
Bitte senden Sie eine Funktionsanfrage mit Protokollname und Port und ich werde es möglich machen. Oder fügen Sie es selbst hinzu, die Datei pkg/probes/probes.go
enthält alle verfügbaren Payloads. Geben Sie den Protokollnamen, den Port und die Paketdaten (hex-kodiert) an.
{
Name : "ike" ,
Payloads : [] string { "5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101" },
Port : [] int { 500 , 4500 },
},
Für etwaige Schäden hafte ich nicht. Sie sind für Ihr eigenes Handeln verantwortlich. Das Scannen oder Angreifen von Zielen ohne vorherige gegenseitige Zustimmung kann illegal sein.
UDPX wird unter MIT-Lizenz vertrieben.