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 être exécuté sous Linux, Mac OS et Windows. Contrairement aux scanners Internet tels que zgrab2 et zmap, UDPX est conçu pour la portabilité et la facilité d'utilisation.
L'analyse des ports UDP est très différente de l'analyse 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 seul paquet. Un paquet spécifique au protocole est envoyé au service défini (port) 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 », alors le port est fermé. Si une réponse UDP est reçue par 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 ouvert ou que les filtres de paquets bloquent la communication. Cette méthode n'est pas implémentée car elle n'a aucune valeur ajoutée (tests UDPX uniquement pour des protocoles spécifiques).
️ Concurrence : par défaut, la concurrence est définie sur 32 connexions uniquement (vous ne plantez donc rien). Si vous avez beaucoup d'hôtes à analyser, vous pouvez le définir sur 128 ou 256 connexions. En fonction de votre matériel, de la stabilité de votre connexion et de votre ulimit (sur * nix), vous pouvez exécuter 512 connexions simultanées ou plus, mais cela n'est pas recommandé.
Pour analyser une seule adresse IP :
udpx -t 1.1.1.1
Pour analyser un CIDR avec un maximum de 128 connexions et un délai d'attente de 1 000 ms :
udpx -t 1.2.3.4/24 -c 128 -w 1000
Pour analyser les 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 flag -o [filename]
. La sortie est au format JSONL, comme on peut le voir 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édéfinis dans la section des versions. Si vous souhaitez créer UDPX à partir des sources, suivez ces étapes :
Depuis git :
git clone https://github.com/nullt3r/udpx
cd udpx
go build ./cmd/udpx
Vous pouvez trouver le binaire dans le répertoire courant.
Ou via aller :
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.
L'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 j'y parviendrai. 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 (codés en hexadécimal).
{
Name : "ike" ,
Payloads : [] string { "5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101" },
Port : [] int { 500 , 4500 },
},
Je ne suis responsable d’aucun dommage. Vous êtes responsable de vos propres actes. Scanner ou attaquer des cibles sans consentement mutuel préalable peut être illégal.
UDPX est distribué sous licence MIT.