
Scanner UDP à paquet unique en Go pour la découverte rapide de plus de 45 services sur les réseaux, prenant en charge les sondes personnalisées, le scan CIDR et la sortie JSONL.

Rapide et léger, UDPX est un scanner UDP à paquet unique écrit en Go qui prend en charge la découverte de plus de 45 services avec la possibilité d'en ajouter des personnalisés. Il est facile à utiliser et portable, et peut s'exécuter sur Linux, Mac OS et Windows. Contrairement aux scanners Internet comme zgrab2 et zmap, UDPX est conçu pour la portabilité et la facilité d'utilisation.
Le scan des ports UDP est très différent du scan TCP - vous pouvez ou non obtenir un résultat en sondant un port UDP car UDP est un protocole sans connexion. UDPX implémente une approche basée sur un paquet unique. Un paquet spécifique au protocole est envoyé au service (port) défini et attend une réponse. La limite est fixée à 500 ms par défaut et peut être modifiée par l'indicateur -w. Si le service renvoie un paquet dans ce délai, il est certain qu'il écoute bien sur ce port et est signalé comme ouvert.
Une technique typique consiste à envoyer des paquets UDP de 0 octet à chaque port de la machine cible. Si nous recevons un message "ICMP Port Unreachable", le port est fermé. Si une réponse UDP est reçue pour la sonde (inhabituel), le port est ouvert. Si nous n'obtenons aucune réponse, l'état est ouvert ou filtré, ce qui signifie que le port est soit ouvert, soit que des filtres de paquets bloquent la communication. Cette méthode n'est pas implémentée car elle n'apporte aucune valeur ajoutée (UDPX ne teste que des protocoles spécifiques).

⚠️ Concurrence : Par défaut, la concurrence est limitée à 32 connexions seulement (pour éviter de tout faire planter). Si vous avez beaucoup d'hôtes à scanner, vous pouvez la régler à 128 ou 256 connexions. Selon votre matériel, la stabilité de la connexion et ulimit (sur *nix), vous pouvez exécuter 512 connexions simultanées ou plus, mais ce n'est pas recommandé.
Pour scanner une seule IP :
udpx -t 1.1.1.1
Pour scanner un CIDR avec un maximum de 128 connexions et un délai d'attente de 1000 ms :
udpx -t 1.2.3.4/24 -c 128 -w 1000
Pour scanner des cibles à partir d'un fichier avec un maximum de 128 connexions pour un service spécifique uniquement :
udpx -tf targets.txt -c 128 -s ipmi
La cible peut être :
IPv6 est pris en charge.
Si vous souhaitez stocker les résultats, utilisez l'indicateur -o [nom_de_fichier]. La sortie est au format JSONL, comme illustré ci-dessous :
{"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)
Vous pouvez récupérer des binaires précompilés dans la section des versions. Si vous souhaitez compiler UDPX à partir des sources, suivez ces étapes :
Depuis git :
git clone https://github.com/nullt3r/udpx
cd udpx
go build ./cmd/udpx
Vous trouverez le binaire dans le répertoire courant.
Ou via go :
go install -v github.com/nullt3r/udpx/cmd/udpx@latest
Après cela, vous pouvez trouver le binaire dans $HOME/go/bin/udpx. Si vous le souhaitez, déplacez le binaire vers /usr/local/bin/ afin de pouvoir l'appeler directement.
UDPX prend en charge plus de 45 services. Les plus intéressants sont :
La liste complète des services pris en charge :
Veuillez envoyer une demande de fonctionnalité avec le nom du protocole et le port, et je le ferai. Ou ajoutez-le vous-même, le fichier pkg/probes/probes.go contient toutes les charges utiles disponibles. Spécifiez le nom du protocole, le port et les données du paquet (codage hexadécimal).
{
Name: "ike",
Payloads: []string{"5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101"},
Port: []int{500, 4500},
},
Je ne suis pas responsable des dommages. Vous êtes responsable de vos propres actions. Scanner ou attaquer des cibles sans consentement mutuel préalable peut être illégal.
UDPX est distribué sous la licence MIT.