高速かつ軽量の 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
使用可能なすべてのペイロードが含まれています。プロトコル名、ポート、およびパケット データ (16 進数でエンコード) を指定します。
{
Name : "ike" ,
Payloads : [] string { "5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101" },
Port : [] int { 500 , 4500 },
},
いかなる損害についても責任を負いません。あなたは自分自身の行動に責任を負います。事前の相互同意なしにターゲットをスキャンしたり攻撃したりすることは違法となる可能性があります。
UDPX は MIT ライセンスに基づいて配布されます。