Изучение протокола UDP значительно проще, чем TCP, так как в UDP не существует никаких полей, предназначенных для обеспечения надежной доставки данных. Контроль за доставкой данных при использовании UDP осуществляется самими приложениями. В этом разделе будут рассмотрены поля заголовка UDP-пакета и методы сканирования UDP-портов.

Порты

Как и в TCP-пакете, в пакете UDP для хранения номеров портов отправителя и получателя используются два 16-битовых поля. Действительный диапазон значений - от 1 до 65535, использование номера 0 не предусмотрено в спецификациях протокола.

При установке UDP-соединения на хосте-отправителе, как правило, выбирается один из временных портов с номером выше 1023. Для каждого нового соединения должен быть выбран новый порт.

Сканирование UDP-портов

В отличие от TCP-портов, которые должны выдавать или положительный ответ (пакет с флагами SYN/АСК) для открытого порта или негативный ответ (пакет с установленным флагом RESET) для закрытого порта, в протоколе UDP не предусмотрено ответа на успешную доставку начального пакета. Но при попытке подключения к закрытому UDP-порту активный хост отправляет ICMP-уведомление о недостижимости порта. По наличию этого ответа программы сканирования и определяют, открыт или закрыт конкретный UDP-порт.

Таким образом, вывод об открытости порта делается на основании отсутствия ICMP-сообщения об ошибке “port unreachable”. Но ведь пакет сканирующей программы может быть утерян на пути к получателю, или ответное ICMP-сооб^цение может быть заблокировано. Или на узле получателя блокируются входящие UDP-пакеты без какого-либо уведомления отправителя об этом. Все перечисленные варианты могут привести к ошибке при определении открытых портов. Для устранения возможности случайной потери пакетов программа nmap отправляет несколько тестовых пакетов на один и тот же UDP-порт. Кроме того, при полном отсутствии ответов этой программой делается вывод о выполнении фильтрации пакетов, а не о том, что все UDP-порты сканируемого хоста открыты.

Рассмотрим пример сканирования UDP-портов с помощью nmap для диапазона номеров от 32771 до 34000 при поиске открытых портов службы RPC (Remote Procedure Call - удаленный вызов процедур) на хосте под управлением Solaris. На основе отсутствия ICMP-сообщения о недостижимости порта программа nmap делает вывод о наличии многих открытых портов. Как мы знаем, это не всегда соответствует действительности.

Nmap -sü sparky -р 32771-34000

WARNING: -sU is now UDP scan - for TCP FIN scan use -sF

Starting nmap V.2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)

Interesting ports on sparky (1.1.1.100):

Port State Protocol Service

32771 open udp unknown

32772 open udp unknown

32773 open udp unknown

32774 open udp unknown

32782 open udp unknown

32 78 3 open udp unknown

32784 open udp unknown

3278 5 open udp unknown

3278 6 open udp unknown

32797 open udp unknown

В следующем отчете TCPdump о данном сканировании UDP-портов показано, что считаются открытыми все порты указанного диапазона, для которых хост sparky не сгенерировал ICMP-сообщения “port unreachable”.

07:09:08.286810 verbo.62865 > sparky.32787: udp 07:09:08.286847 verbo.62865 > sparky.32775: udp 07:09:08.286878 verbo.62865 > sparky.32788: udp 07:09:08.286924 verbo.62865 > sparky.32789: udp 07:09:08.286969 verbo.62865 > sparky.32791: udp 07:09:08.287046 verbo.62865 > sparky.32774: udp 07:09:08.287094 verbo.62865 > sparky.32781: udp 07:09:08.287162 verbo.62865 > sparky.32772: udp 07:09:08.287229 verbo.62865 > sparky.32789: udp

07:09:08.287793 sparky > verbo: icmp: sparky upd port 32788 unreachable (DF)

07:09:08.977544 sparky > verbo: icmp: sparky upd port 32791 unreachable (DF)

07:09:09.657361 sparky > verbo: icmp: sparky upd port 32781 unreachable (DF)

07:09:10.157301 sparky > verbo: icmp: sparky upd port 32787 unreachable (DF)

07:09:10.817315 sparky > verbo: icmp: sparky upd port 32789 unreachable (DF)

Поле длины UDP-пакета

Длина UDP-пакета складывается из длин UDP-заголовка и полезных данных. Поскольку минимальный размер UPD-заголовка равен 8 байт, то и минимальный размер UDP-пакета тоже 8 байт. Максимальный теоретический размер IP-дейтаграммы составляет 65535 байт. Таким образом, отняв 20 байт IP-заголовка, получим максимальный теоретический размер UDP-пакета - 65515 байт.

Во многих UDP-приложениях максимальный размер UDP-пакета ограничен 8192 байт, хотя служба DNS ограничивает этот размер 512 байтами. Кроме того, в ядре операционной системы могут быть установлены собственные ограничения размера UDP-пакетов.

Номера портов | Обнаружение нарушений безопасности в сетях | Icmp


Обнаружение нарушений безопасности в сетях



Новости за месяц

  • Сентябрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс