快速轻巧的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许可证进行分发。

标签:工具分享, 扫描工具