關于UDPX 

UDPX是一款功能強大的快速輕量級單數據包UDP掃描器,該工具基于Go語言開發,支持掃描和發現超過45種網絡服務,并且支持添加自定義的掃描服務類型。該工具易于使用,是一款輕量級的工具,支持在Windows、Linux和macOS操作系統上運行。

 工具特性 

1、運行速度快,支持在20秒內掃描整個/16網絡并識別單個服務;
2、不需要安裝libpcap或其他任何依賴組件;
3、支持在Linux、macOS和Windows操作系統上運行;
4、支持自定義配置和開發,我們可以添加更多的探針或測試更多的協議;
5、支持以JSONL格式存儲掃描結果;
6、支持掃描域名;

 工具運行機制 

掃描UDP端口與掃描TCP有很大的區別,由于UDP是一種無連接協議,因此我們不一定能夠從探測UDP端口中得到任何結果。UDPX實現了一種基于單個數據包的方法,特定于協議的數據包被發送到定義的服務(端口)并等待響應。默認情況下,限制設置為500毫秒,可以通過-w參數進行更改。如果服務在這段時間內發送回一個數據包,那么可以肯定的是,它確實在偵聽該端口,并且被報告為端口打開狀態。

一種典型的技術是向目標機器上的每個端口發送0字節的UDP數據包。如果我們收到“ICMP端口無法訪問”消息,則該端口將關閉。如果接收到對探測器的UDP響應(異常),則端口處于打開狀態。如果我們根本沒有得到響應,則狀態為打開或已篩選,這意味著端口打開或數據包篩選器正在阻止通信。

 支持的服務 

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

 工具下載 

廣大研究人員可以使用下列命令將該項目源碼克隆至本地,并運行工具構建腳本:

git clone https://github.com/nullt3r/udpx
cd udpx
go build ./cmd/udpx

除此之外,我們也可以使用go命令安裝工具:

go install -v github.com/nullt3r/udpx/cmd/udpx@latest

 工具參數選項 

__  ______  ____ _  __
       / / / / __ \/ __ \ |/ /
      / / / / / / / /_/ /   /
     / /_/ / /_/ / ____/   |
     \____/_____/_/   /_/|_|
         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
     等待響應的最大超時時間,默認500ms

 工具使用 

掃描單個IP:

udpx -t 1.1.1.1

掃描一個CIDR地址,最大并發128個連接,超時為1000ms:

udpx -t 1.2.3.4/24 -c 128 -w 1000

掃描輸入地址文件,最大并發128個連接,僅掃描指定服務:

udpx -tf targets.txt -c 128 -s ipmi

輸出文件JSONL格式數據如下:

{"address":"45.33.32.156","hostname":"scanme.nmap.org","port":123,"service":"ntp","response_data":"JAME6QAAAEoAAA56LU9vp+d2ZPwOYIyDxU8jS3GxUvM="}

 如何添加自己的探針 

打開文件pkg/probes/probes.go,其中包含了所有可用的Payload,我們可以根據自己的需要添加協議名稱、端口和包數據(十六機制編碼):

{
        Name: "ike",
        Payloads: []string{"5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101"},
        Port: []int{500, 4500},
},

 工具運行截圖 

 許可證協議 

本項目的開發與發布遵循MIT開源許可證協議。