
Scanner UDP a singolo pacchetto in Go per la scoperta rapida di oltre 45 servizi attraverso le reti, con supporto per sonde personalizzate, scansione CIDR e output JSONL.

Veloce e leggero, UDPX è uno scanner UDP a singolo pacchetto scritto in Go che supporta la scoperta di oltre 45 servizi con la possibilità di aggiungerne di personalizzati. È facile da usare e portatile, e può essere eseguito su Linux, Mac OS e Windows. A differenza di scanner Internet-wide come zgrab2 e zmap, UDPX è progettato per la portabilità e la facilità d'uso.
Scansionare le porte UDP è molto diverso dallo scansionare TCP - puoi ricevere o meno una risposta da una sonda su una porta UDP poiché UDP è un protocollo senza connessione. UDPX implementa un approccio basato su singolo pacchetto. Un pacchetto specifico del protocollo viene inviato al servizio definito (porta) e si attende una risposta. Il limite è impostato a 500 ms di default e può essere modificato tramite il flag -w. Se il servizio invia un pacchetto entro questo tempo, è certo che è effettivamente in ascolto su quella porta e viene segnalato come aperta.
Una tecnica tipica è inviare pacchetti UDP di 0 byte a ogni porta sulla macchina target. Se riceviamo un messaggio "ICMP Port Unreachable", la porta è chiusa. Se viene ricevuta una risposta UDP alla sonda (inusuale), la porta è aperta. Se non riceviamo alcuna risposta, lo stato è aperto o filtrato, il che significa che la porta è aperta o che i filtri pacchetto stanno bloccando la comunicazione. Questo metodo non è implementato poiché non aggiunge valore (UDPX testa solo per protocolli specifici).

⚠️ Concorrenza: Per impostazione predefinita, la concorrenza è impostata a sole 32 connessioni (così non crashi nulla). Se hai molti host da scansionare, puoi impostarla a 128 o 256 connessioni. In base al tuo hardware, alla stabilità della connessione e a ulimit (su *nix), puoi eseguire 512 o più connessioni concorrenti, ma non è consigliato.
Per scansionare un singolo IP:
udpx -t 1.1.1.1
Per scansionare un CIDR con un massimo di 128 connessioni e timeout di 1000 ms:
udpx -t 1.2.3.4/24 -c 128 -w 1000
Per scansionare target da file con un massimo di 128 connessioni per un solo servizio specifico:
udpx -tf targets.txt -c 128 -s ipmi
Il target può essere:
IPv6 è supportato.
Se vuoi salvare i risultati, usa il flag -o [filename]. L'output è in formato JSONL, come mostrato di seguito:
{"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
Numero massimo di connessioni concorrenti (default 32)
-nr
Non randomizzare gli indirizzi
-o string
File di output per scrivere i risultati
-s string
Scansiona solo per un servizio specifico, uno tra: 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
Mostra i pacchetti ricevuti (solo primi 32 byte)
-t string
IP/CIDR da scansionare
-tf string
File contenente IP/CIDR da scansionare
-w int
Tempo massimo di attesa per una risposta (timeout socket) in ms (default 500)
Puoi ottenere i binari precompilati nella sezione release. Se vuoi compilare UDPX dal sorgente, segui questi passaggi:
Da git:
git clone https://github.com/nullt3r/udpx
cd udpx
go build ./cmd/udpx
Puoi trovare il binario nella directory corrente.
Oppure tramite go:
go install -v github.com/nullt3r/udpx/cmd/udpx@latest
Dopodiché, puoi trovare il binario in $HOME/go/bin/udpx. Se vuoi, sposta il binario in /usr/local/bin/ in modo da poterlo chiamare direttamente.
UDPX supporta più di 45 servizi. I più interessanti sono:
La lista completa dei servizi supportati:
Per favore invia una richiesta di funzionalità con nome del protocollo e porta e lo farò accadere. Oppure aggiungilo da solo, il file pkg/probes/probes.go contiene tutti i payload disponibili. Specifica il nome del protocollo, la porta e i dati del pacchetto (codificati in esadecimale).
{
Name: "ike",
Payloads: []string{"5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101"},
Port: []int{500, 4500},
},
Non sono responsabile per eventuali danni. Sei responsabile delle tue azioni. Scansionare o attaccare target senza previo consenso reciproco può essere illegale.
UDPX è distribuito sotto Licenza MIT.