
Scanner UDP de pacote único em Go para descoberta rápida de mais de 45 serviços em redes, com suporte a probes personalizados, varredura CIDR e saída JSONL.

Rápido e leve, o UDPX é um scanner UDP de pacote único escrito em Go que suporta a descoberta de mais de 45 serviços com a capacidade de adicionar serviços personalizados. É fácil de usar e portátil, e pode ser executado no Linux, Mac OS e Windows. Ao contrário de scanners de internet abrangentes como zgrab2 e zmap, o UDPX foi projetado para portabilidade e facilidade de uso.
Escaneamento de portas UDP é muito diferente do escaneamento de TCP - você pode ou não obter qualquer resultado de volta ao sondar uma porta UDP, pois o UDP é um protocolo sem conexão. O UDPX implementa uma abordagem baseada em pacote único. Um pacote específico do protocolo é enviado para o serviço definido (porta) e aguarda uma resposta. O limite é definido como 500 ms por padrão e pode ser alterado pela flag -w. Se o serviço enviar um pacote de volta dentro desse tempo, é certo que ele está realmente ouvindo naquela porta e é reportado como aberta.
Uma técnica típica é enviar pacotes UDP de 0 bytes para cada porta na máquina alvo. Se recebermos uma mensagem "ICMP Port Unreachable", então a porta está fechada. Se uma resposta UDP for recebida ao probe (incomum), a porta está aberta. Se não obtivermos resposta alguma, o estado é aberto ou filtrado, significando que a porta está aberta ou que filtros de pacotes estão bloqueando a comunicação. Este método não é implementado, pois não há valor agregado (o UDPX testa apenas protocolos específicos).

⚠️ Concorrência: Por padrão, a concorrência é definida para apenas 32 conexões (para que você não derrube nada). Se você tem muitos hosts para escanear, pode defini-la para 128 ou 256 conexões. Com base no seu hardware, estabilidade da conexão e ulimit (em *nix), você pode executar 512 ou mais conexões concorrentes, mas isso não é recomendado.
Para escanear um único IP:
udpx -t 1.1.1.1
Para escanear um CIDR com máximo de 128 conexões e timeout de 1000 ms:
udpx -t 1.2.3.4/24 -c 128 -w 1000
Para escanear alvos de um arquivo com máximo de 128 conexões apenas para um serviço específico:
udpx -tf targets.txt -c 128 -s ipmi
O alvo pode ser:
IPv6 é suportado.
Se você quiser armazenar os resultados, use a flag -o [nome_do_arquivo]. A saída está no formato JSONL, como pode ser visto abaixo:
{"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
Número máximo de conexões concorrentes (padrão 32)
-nr
Não randomizar endereços
-o string
Arquivo de saída para escrever resultados
-s string
Escaneia apenas um serviço específico, um 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
Mostra pacotes recebidos (apenas os primeiros 32 bytes)
-t string
IP/CIDR a ser escaneado
-tf string
Arquivo contendo IPs/CIDRs a serem escaneados
-w int
Tempo máximo de espera por uma resposta (timeout do socket) em ms (padrão 500)
Você pode obter binários pré-compilados na seção de releases. Se você quiser compilar o UDPX a partir do código fonte, siga estes passos:
Do git:
git clone https://github.com/nullt3r/udpx
cd udpx
go build ./cmd/udpx
Você pode encontrar o binário no diretório atual.
Ou via go:
go install -v github.com/nullt3r/udpx/cmd/udpx@latest
Depois disso, você pode encontrar o binário em $HOME/go/bin/udpx. Se quiser, mova o binário para /usr/local/bin/ para poder chamá-lo diretamente.
O UDPX suporta mais de 45 serviços. Os mais interessantes são:
A lista completa de serviços suportados:
Por favor, envie uma solicitação de funcionalidade com o nome do protocolo e a porta e eu farei acontecer. Ou adicione por conta própria, o arquivo pkg/probes/probes.go contém todos os payloads disponíveis. Especifique o nome do protocolo, porta e dados do pacote (codificado em hexadecimal).
{
Name: "ike",
Payloads: []string{"5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101"},
Port: []int{500, 4500},
},
Não sou responsável por quaisquer danos. Você é responsável pelas suas próprias ações. Escanear ou atacar alvos sem consentimento mútuo prévio pode ser ilegal.
O UDPX é distribuído sob a Licença MIT.