Быстрый и легкий UDPX — это однопакетный сканер UDP, написанный на Go, который поддерживает обнаружение более 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
Чтобы просканировать CIDR с максимум 128 соединениями и тайм-аутом 1000 мс:
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.