
Escáner UDP de paquete único en Go para el descubrimiento rápido de 45+ servicios a través de redes, compatible con sondas personalizadas, escaneo CIDR y salida JSONL.

Rápido y ligero, UDPX es un escáner UDP de un solo paquete escrito en Go que admite el descubrimiento de más de 45 servicios con la capacidad de agregar servicios personalizados. Es fácil de usar y portátil, y puede ejecutarse en Linux, Mac OS y Windows. A diferencia de los escáneres de Internet como zgrab2 y zmap, UDPX está diseñado para la portabilidad y la facilidad de uso.
Escanear puertos UDP es muy diferente a escanear TCP: puede que obtengas o no una respuesta al sondear un puerto UDP, ya que UDP es un protocolo sin conexión. UDPX implementa un enfoque basado en un solo paquete. Se envía un paquete específico del protocolo al servicio definido (puerto) y se espera una respuesta. El límite está establecido en 500 ms por defecto y se puede cambiar con la bandera -w. Si el servicio envía un paquete de vuelta dentro de este tiempo, es seguro que está escuchando en ese puerto y se reporta como abierto.
Una técnica típica es enviar paquetes UDP de 0 bytes a cada puerto de la máquina objetivo. Si recibimos un mensaje "ICMP Port Unreachable", entonces el puerto está cerrado. Si se recibe una respuesta UDP a la sonda (inusual), el puerto está abierto. Si no obtenemos ninguna respuesta, el estado es abierto o filtrado, lo que significa que el puerto está abierto o los filtros de paquetes están bloqueando la comunicación. Este método no está implementado ya que no proporciona valor añadido (UDPX solo prueba protocolos específicos).

⚠️ Concurrencia: Por defecto, la concurrencia está establecida en solo 32 conexiones (para que no colapses nada). Si tienes muchos hosts que escanear, puedes establecerla en 128 o 256 conexiones. Según tu hardware, estabilidad de la conexión y ulimit (en *nix), puedes ejecutar 512 o más conexiones concurrentes, pero esto no se recomienda.
Para escanear una sola IP:
udpx -t 1.1.1.1
Para escanear un CIDR con un máximo de 128 conexiones y timeout de 1000 ms:
udpx -t 1.2.3.4/24 -c 128 -w 1000
Para escanear objetivos desde un archivo con un máximo de 128 conexiones para solo un servicio específico:
udpx -tf targets.txt -c 128 -s ipmi
El objetivo puede ser:
Se admite IPv6.
Si quieres guardar los resultados, usa la bandera -o [nombre_archivo]. La salida está en formato JSONL, como se muestra a continuación:
{"address":"45.33.32.156","hostname":"scanme.nmap.org","port":123,"service":"ntp","response_data":"JAME6QAAAEoAAA56LU9vp+d2ZPwOYIyDxU8jS3GxUvM="}
__ ______ ____ _ __
/ / / / __ \/ __ \ |/ /
/ / / / / / / /_/ / /
/ /_/ / /_/ / ____/ |
\____/_____/_/ /_/|_|
v1.0.2-beta, by @nullt3r
Uso de ./udpx-linux-amd64:
-c int
Número máximo de conexiones concurrentes (por defecto 32)
-nr
No aleatorizar direcciones
-o string
Archivo de salida para escribir resultados
-s string
Escanear solo para un servicio específico, uno de: 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
Mostrar paquetes recibidos (solo primeros 32 bytes)
-t string
IP/CIDR a escanear
-tf string
Archivo que contiene IPs/CIDRs a escanear
-w int
Tiempo máximo de espera por una respuesta (timeout de socket) en ms (por defecto 500)
Puedes descargar binarios precompilados en la sección de lanzamientos. Si quieres compilar UDPX desde el código fuente, sigue estos pasos:
Desde git:
git clone https://github.com/nullt3r/udpx
cd udpx
go build ./cmd/udpx
Puedes encontrar el binario en el directorio actual.
O mediante go:
go install -v github.com/nullt3r/udpx/cmd/udpx@latest
Después, puedes encontrar el binario en $HOME/go/bin/udpx. Si lo deseas, mueve el binario a /usr/local/bin/ para poder llamarlo directamente.
UDPX soporta más de 45 servicios. Los más interesantes son:
La lista completa de servicios compatibles:
Por favor, envía una solicitud de función con el nombre del protocolo y el puerto y lo haré realidad. O agrégalo por tu cuenta, el archivo pkg/probes/probes.go contiene todos los payloads disponibles. Especifica el nombre del protocolo, el puerto y los datos del paquete (codificado en hexadecimal).
{
Name: "ike",
Payloads: []string{"5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101"},
Port: []int{500, 4500},
},
No soy responsable de ningún daño. Eres responsable de tus propias acciones. Escanear o atacar objetivos sin consentimiento mutuo previo puede ser ilegal.
UDPX se distribuye bajo la Licencia MIT.