UDPX 快速且轻量级,是一款用 Go 编写的单数据包 UDP 扫描器,支持发现超过 45 种服务,并且能够添加自定义服务。它易于使用且便携,可以在 Linux、Mac OS 和 Windows 上运行。与 zgrab2 和 zmap 等互联网范围的扫描仪不同,UDPX 专为便携性和易用性而设计。
扫描 UDP 端口与扫描 TCP 有很大不同 - 您可能会也可能不会从探测 UDP 端口中得到任何结果,因为 UDP 是无连接协议。 UDPX 实现了基于单数据包的方法。特定于协议的数据包被发送到定义的服务(端口)并等待响应。默认情况下,限制设置为 500 毫秒,可以通过-w
标志更改。如果服务在此时间内发回数据包,则可以确定它确实正在侦听该端口并报告为打开。
典型的技术是将 0 字节 UDP 数据包发送到目标计算机上的每个端口。如果我们收到“ICMP Port Unreachable”消息,则该端口已关闭。如果收到对探测的 UDP 响应(不寻常),则端口打开。如果我们根本没有得到响应,则状态为打开或已过滤,这意味着端口处于打开状态或数据包过滤器正在阻止通信。此方法未实现,因为没有附加值(UDPX 测试仅针对特定协议)。
️ 并发性:默认情况下,并发性设置为仅 32 个连接(这样就不会造成任何崩溃)。如果要扫描的主机很多,可以将其设置为 128 或 256 个连接。根据您的硬件、连接稳定性和 ulimit(在 *nix 上),您可以运行 512 个或更多并发连接,但不建议这样做。
扫描单个IP:
udpx -t 1.1.1.1
要扫描最多 128 个连接且超时为 1000 毫秒的 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:
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
包含所有可用的有效负载。指定协议名称、端口和数据包数据(十六进制编码)。
{
Name : "ike" ,
Payloads : [] string { "5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101" },
Port : [] int { 500 , 4500 },
},
我对任何损失不承担任何责任。您对自己的行为负责。未经双方事先同意扫描或攻击目标可能是非法的。
UDPX 在 MIT 许可证下分发。