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 許可證下分發。