빠르고 가벼운 UDPX는 Go로 작성된 단일 패킷 UDP 스캐너로, 맞춤형 서비스를 추가할 수 있는 기능과 함께 45개 이상의 서비스 검색을 지원합니다. 사용하기 쉽고 이식성이 뛰어나며 Linux, Mac OS 및 Windows에서 실행할 수 있습니다. zgrab2 및 zmap과 같은 인터넷 전체 스캐너와 달리 UDPX는 이식성과 사용 편의성을 위해 설계되었습니다.
UDP 포트 검색은 TCP 검색과 매우 다릅니다. UDP는 연결 없는 프로토콜이므로 UDP 포트 검색에서 결과를 얻을 수도 있고 얻지 못할 수도 있습니다. UDPX는 단일 패킷 기반 접근 방식을 구현합니다. 프로토콜별 패킷은 정의된 서비스(포트)로 전송되어 응답을 기다립니다. 제한은 기본적으로 500ms로 설정되며 -w
플래그로 변경할 수 있습니다. 서비스가 이 시간 내에 패킷을 다시 보내면 해당 포트에서 실제로 수신 대기 중이고 열린 것으로 보고되는 것이 확실합니다.
일반적인 기술은 대상 시스템의 각 포트에 0바이트 UDP 패킷을 보내는 것입니다. "ICMP 포트에 연결할 수 없음" 메시지가 수신되면 포트가 닫힌 것입니다. 프로브에 대한 UDP 응답이 수신되면(비정상적으로) 포트가 열려 있습니다. 전혀 응답이 없으면 상태는 열려 있거나 필터링된 것입니다. 즉, 포트가 열려 있거나 패킷 필터가 통신을 차단하고 있음을 의미합니다. 추가된 가치가 없기 때문에 이 방법은 구현되지 않습니다(UDPX는 특정 프로토콜에 대해서만 테스트합니다).
️ 동시성: 기본적으로 동시성은 32개의 연결로만 설정됩니다(그래서 아무것도 충돌하지 않습니다). 스캔할 호스트가 많은 경우 연결을 128개 또는 256개로 설정할 수 있습니다. 하드웨어, 연결 안정성 및 ulimit(*nix)에 따라 512개 이상의 동시 연결을 실행할 수 있지만 이는 권장되지 않습니다.
단일 IP를 스캔하려면:
udpx -t 1.1.1.1
최대 128개의 연결과 1000ms의 시간 초과로 CIDR을 스캔하려면:
udpx -t 1.2.3.4/24 -c 128 -w 1000
특정 서비스에 대해서만 최대 128개의 연결이 있는 파일에서 대상을 검사하려면 다음을 수행하십시오.
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를 빌드하려면 다음 단계를 따르세요.
자식에서:
git clone https://github.com/nullt3r/udpx
cd udpx
go build ./cmd/udpx
현재 디렉터리에서 바이너리를 찾을 수 있습니다.
또는 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 라이센스에 따라 배포됩니다.