Rápido e leve, o UDPX é um scanner UDP de pacote único escrito em Go que oferece suporte à descoberta de mais de 45 serviços com a capacidade de adicionar outros personalizados. É fácil de usar e portátil e pode ser executado em Linux, Mac OS e Windows. Ao contrário dos scanners de Internet como zgrab2 e zmap, o UDPX foi projetado para portabilidade e facilidade de uso.
A varredura de portas UDP é muito diferente da varredura de TCP - você pode ou não obter qualquer resultado ao testar uma porta UDP, pois o UDP é um protocolo sem conexão. UDPX implementa uma abordagem baseada em pacote único. Um pacote específico do protocolo é enviado ao serviço definido (porta) e aguarda uma resposta. O limite é definido como 500 ms por padrão e pode ser alterado pelo sinalizador -w
. Se o serviço enviar um pacote de volta dentro desse período, é certo que ele está realmente escutando naquela porta e é relatado como aberto.
Uma técnica típica é enviar pacotes UDP de 0 bytes para cada porta da máquina de destino. Se recebermos uma mensagem "Porta ICMP inacessível", a porta será fechada. Se uma resposta UDP for recebida pela sonda (incomum), a porta estará aberta. Se não obtivermos nenhuma resposta, o estado será aberto ou filtrado, o que significa que a porta está aberta ou os filtros de pacotes estão bloqueando a comunicação. Este método não é implementado porque não há valor agregado (testes UDPX apenas para protocolos específicos).
️ Simultaneidade: por padrão, a simultaneidade é definida apenas para 32 conexões (para não travar nada). Se você tiver muitos hosts para verificar, poderá configurá-lo 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 simultâneas, mas isso não é recomendado.
Para verificar um único IP:
udpx -t 1.1.1.1
Para verificar um CIDR com no máximo 128 conexões e tempo limite de 1.000 ms:
udpx -t 1.2.3.4/24 -c 128 -w 1000
Para verificar alvos de arquivo com no máximo 128 conexões apenas para serviços específicos:
udpx -tf targets.txt -c 128 -s ipmi
O alvo pode ser:
IPv6 é suportado.
Se você quiser armazenar os resultados, use o sinalizador -o [filename]
. 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
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)
Você pode obter binários pré-construídos na seção de lançamento. Se você deseja construir o UDPX a partir da fonte, siga estas etapas:
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 desejar, 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:
Envie uma solicitação de recurso com o nome do protocolo e a porta e eu farei isso acontecer. Ou adicione você mesmo, o arquivo pkg/probes/probes.go
contém todas as cargas disponíveis. Especifique o nome do protocolo, a porta e os dados do pacote (codificação hexadecimal).
{
Name : "ike" ,
Payloads : [] string { "5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101" },
Port : [] int { 500 , 4500 },
},
Não sou responsável por quaisquer danos. Você é responsável por suas próprias ações. Escanear ou atacar alvos sem consentimento mútuo prévio pode ser ilegal.
UDPX é distribuído sob licença MIT.