快速轻巧的UDPX是一个用Go语言编写的单数据包UDP扫描工具,支持发现超过45种服务,并具有添加自定义服务的能力
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/nullt3r/udpx
项目介绍
快速且轻量级的UDPX是一个用Go语言编写的单数据包UDP扫描器,支持发现超过45种服务,并具有添加自定义服务的能力。它易于使用和便携,并可在Linux、Mac OS和Windows上运行。与像zgrab2和zmap这样的面向全网的扫描器不同,UDPX专为便携性和易用性而设计。
- 它速度快,可以在大约20秒内对整个/16网络进行单个服务的扫描。
- 您无需安装libpcap或任何其他依赖项。
- 可以在Linux、Mac OS和Windows上运行,或者如果您为Arm构建了它,也可以在您的Nethunter上运行。
- 可定制。您可以添加自己的探测器并测试更多的协议。
- 结果以JSONL格式存储。
- 还可以扫描域名。
工作原理
与扫描TCP端口非常不同,通过探测UDP端口可能会收到结果,也可能不会,因为UDP是一种无连接的协议。UDPX采用了基于单数据包的方法。它向定义的服务(端口)发送特定于协议的数据包,并等待响应。默认情况下,时间限制设置为500毫秒,可以通过“-w”标志进行更改。如果服务在此时间内发送回数据包,则可以确定它确实在该端口上侦听,并将其报告为开放。
通常的技术是向目标机器的每个端口发送0字节的UDP数据包。如果我们收到“ICMP端口不可达”的消息,则该端口关闭。如果收到探测的UDP响应(不寻常),则该端口是开放的。如果根本没有收到响应,则状态是开放或过滤,这意味着该端口可能是开放的,或者数据包过滤器阻止了通信。由于UDPX仅测试特定协议,因此未实现此方法。
使用方法
要扫描单个IP:
udpx -t 1.1.1.1
要扫描CIDR并限制最大连接数为128,并设置超时为1000毫秒:
udpx -t 1.2.3.4/24 -c 128 -w 1000
要从文件中扫描目标,并限制最大连接数为128,并仅针对特定服务:
udpx -tf targets.txt -c 128 -s ipmi
目标可以是:
- IP地址
- CIDR
- 域名
支持IPv6。
如果要存储结果,请使用标志“-o [文件名]”。输出以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
最大并发连接数(默认值32)
-nr
不随机化地址
-o string
输出结果的文件
-s string
仅扫描特定服务,其中之一: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
显示接收到的数据包(仅前32个字节)
-t string
要扫描的IP/CIDR
-tf string
包含要扫描的IP/CIDR的文件
-w int
等待响应的最长时间(套接字超时),以毫秒为单位(默认值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种服务。最有趣的包括:
- ipmi
- snmp
- ike
- tftp
- openvpn
- kerberos
- ldap
完整支持的服务列表:
- 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
如何添加自定义探测器?
请发送一个功能请求,指定协议名称和端口,我会实现它。或者您也可以自行添加,文件pkg/probes/probes.go中包含所有可用的数据载荷。指定协议名称、端口和数据包数据(十六进制编码)。
{
Name: "ike",
Payloads: []string{"5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101"},
Port: []int{500, 4500},
},
鸣谢
免责声明
我对任何损害不负责任。您对自己的行为负责。未经事先相互同意,扫描或攻击目标可能是非法的。
许可证
UDPX使用MIT许可证进行分发。