
Go로 작성된 단일 패킷 UDP 스캐너로, 네트워크 전반에서 45개 이상의 서비스를 빠르게 발견합니다. 사용자 정의 프로브, CIDR 스캔, JSONL 출력을 지원합니다.

빠르고 가벼운 UDPX는 Go로 작성된 단일 패킷 UDP 스캐너로, 45개 이상의 서비스 검색을 지원하며 사용자 정의 서비스를 추가할 수 있습니다. 사용하기 쉽고 이식성이 뛰어나며 Linux, Mac OS, Windows에서 실행할 수 있습니다. zgrab2나 zmap과 같은 인터넷 전체 스캐너와 달리 UDPX는 이식성과 사용 편의성에 중점을 두고 설계되었습니다.
UDP 포트 스캔은 TCP 스캔과 매우 다릅니다. UDP는 비연결형 프로토콜이므로 UDP 포트를 프로빙할 때 응답을 받을 수도 있고 받지 못할 수도 있습니다. UDPX는 단일 패킷 기반 접근 방식을 구현합니다. 프로토콜별 패킷이 정의된 서비스(포트)로 전송되고 응답을 기다립니다. 제한 시간은 기본적으로 500ms로 설정되어 있으며 -w 플래그로 변경할 수 있습니다. 서비스가 이 시간 내에 패킷을 다시 보내면 해당 포트에서 실제로 수신 중이며 열려 있는 것으로 보고됩니다.
일반적인 기술은 대상 머신의 각 포트에 0바이트 UDP 패킷을 보내는 것입니다. "ICMP Port Unreachable" 메시지를 수신하면 포트가 닫혀 있는 것입니다. 프로브에 대한 UDP 응답이 수신되면(드문 경우) 포트가 열려 있는 것입니다. 응답이 전혀 없으면 상태는 열림 또는 필터링됨입니다. 즉, 포트가 열려 있거나 패킷 필터가 통신을 차단하고 있음을 의미합니다. 이 방법은 추가 가치가 없으므로 구현되지 않았습니다(UDPX는 특정 프로토콜에 대해서만 테스트합니다).

⚠️ 동시 연결: 기본적으로 동시 연결은 32개로 설정되어 있습니다(그래야 아무것도 충돌하지 않습니다). 스캔할 호스트가 많으면 128 또는 256 연결로 설정할 수 있습니다. 하드웨어, 연결 안정성 및 ulimit(*nix)에 따라 512개 이상의 동시 연결을 실행할 수 있지만 권장되지 않습니다.
To scan a single IP:
udpx -t 1.1.1.1
To scan a CIDR with maximum of 128 connections and timeout of 1000 ms:
udpx -t 1.2.3.4/24 -c 128 -w 1000
To scan targets from file with maximum of 128 connections for only specific service:
udpx -tf targets.txt -c 128 -s ipmi
대상은 다음 중 하나일 수 있습니다:
IPv6가 지원됩니다.
결과를 저장하려면 -o [filename] 플래그를 사용하십시오. 출력은 JSONL 형식이며 아래와 같습니다:
{"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)
릴리스 섹션에서 미리 빌드된 바이너리를 다운로드할 수 있습니다. UDPX를 소스에서 빌드하려면 다음 단계를 따르십시오:
From git:
git clone https://github.com/nullt3r/udpx
cd udpx
go build ./cmd/udpx
You can find the binary in the current directory.
Or via go:
go install -v github.com/nullt3r/udpx/cmd/udpx@latest
그 후 $HOME/go/bin/udpx에서 바이너리를 찾을 수 있습니다. 원한다면 바이너리를 /usr/local/bin/으로 이동하여 직접 호출할 수 있습니다.
UDPX는 45개 이상의 서비스를 지원합니다. 가장 흥미로운 서비스는 다음과 같습니다:
지원되는 전체 서비스 목록:
프로토콜 이름과 포트를 포함한 기능 요청을 보내주시면 제가 구현하겠습니다. 또는 직접 추가할 수 있습니다. pkg/probes/probes.go 파일에 모든 사용 가능한 페이로드가 포함되어 있습니다. 프로토콜 이름, 포트 및 패킷 데이터(16진수 인코딩)를 지정하십시오.
{
Name: "ike",
Payloads: []string{"5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101"},
Port: []int{500, 4500},
},
저는 어떠한 손해에 대해서도 책임지지 않습니다. 귀하는 귀하의 행동에 책임이 있습니다. 사전 상호 동의 없이 대상을 스캔하거나 공격하는 것은 불법이 될 수 있습니다.
UDPX는 MIT 라이선스 하에 배포됩니다.