Задача данной статьи - это показать основные возможности протокола дайтограмм. Я постараюсь рассказать как можно доступнее и понятнее о недостатках и достоинствах протокола, а так же о его функционировании. В статье рассмотрены способы атаки на UDP и приведены примеры эксплоитов. Так же в статье есть сравнение UDP с TCP протоколом т.к. они оба являются транспортными . [Обзор UDP]
User Datagram Protocol дословный перевод [протокол дайтограмм пользователя], он предназначен для передачи данных между прикладными процессами и обменом дейтаграммами между компьютерами входящими в единую сеть. Длина пакета в UDP измеряется в октетах, дейтаграммы пользователя включают заголовок и данные. Это означает, что минимальная величина длины четыре байта. Протокол UDP является транспортным и он не устанавливает логического соединения, а также не упорядочивает пакеты данных. То есть пакеты могут прийти не в том порядке в котором они были отправлены и UDP не обеспечивает достоверность доставки пакетов. Но данные, отправляемые через модуль UDP, достигают места назначения как единое целое. Главная особенность UDP заключается в том, что он сохраняет границы сообщений и никогда не объединяет несколько сообщений в одно.
Взаимодействие между процессами и модулем UDP осуществляется через UDP-порты. Адресом назначения является номер порта прикладного сервиса. В протоколе так же используется IP который является адресом узла . У UDP так же как и у TCP существуют зарезервированные порты. Присвоением сервисам собственных номеров занимается организация IANA (Internet Assigned Numbers Authority). Всего в UDP используется от 0 до 65535 портов. При этом от 0 до 1023 главные порты, от 1024 до 49151 порты выделенные под крупные проекты и частные порты, от 49152 до 65535 предусмотрены для любого программиста который захочет использовать данный протокол.
Вот список от 1 до 20 портов из списка номеров портов от организации IANA:
Порт Описание
1 TCP Port Service Multiplexer
2 Management Utility
3 Compression Process
4 Unassigned
5 Remote Job Entry
6 Unassigned
7 Echo
8 Unassigned
9 Discard
10 Unassigned
11 Active Users
12 Unassigned
13 Daytime (RFC 867)
14 Unassigned
15 Unassigned
16 Unassigned
17 Quote of the Day
18 Message Send Protocol
19 Character Generator
20 File Transfer [Default Data]
Подробную информацию смотри в RCF IANA
Так же есть возможность локально присвоить номер порта. Для этого необходимо приложение связать с доступом и при этом выбрать любое число, но при этом необходимо помнить о том что существуют уже зарезервированные порты.
Преимущество протокола UDP состоит в том, что он позволяет прикладным программам отправлять сообщения другим приложениям используя минимальное количество параметров протокола.
[Что лучше?]
TCP это такой же транспортный протокол как и UDP, но намного функциональнее и более востребован чем UDP сейчас объясню почему. Наверно ты уже обратил внимание на то что UDP может не доставить сообщение, может доставить его в искаженном виде, а TCP отвечает за доставку сообщения, при чем в том порядке в котором оно было отправлено. TCP так же обеспечивает соединение из конца в конец, то есть от клиента к серверу, а UDP этим свойством не наделена. Из этого делаем вывод, что UDP не сможет заменить TCP ни в коем случае. Но для быстрой организации отправки сообщения, без заморочки мозгов лучше всего использовать UDP. Вот для чего он и служит: для быстрой организации отправки данных. И поэтому нам необходимы в использовании оба протокола для реализации прикладных данных.
[Атаки на UDP]
1. Приложения использующие модель запрос-ответ" также можно нарушить. При запросе клиент будет получать пакеты ICMP Destination Unreachable. И есть вероятность что все клиенты смогут адекватно отреагировать на этот поток ложной информации.
2. UDP Storm - необходимо что бы на сервере было открыто как минимум два порта. Например отправляешь на один из открытых портов UDP запрос, а в качестве отправителя указываешь адрес второго открытого UDP порта и тут происходит самое интересное - порты отвечают друг другу бесконечно. В результате данной атаки снижается производительность сервера.
3. Системы телефонной связи через Internet организуют соединения" на уровне инкапсулируемых в дейтаграммы UDP данных (например, телефонное" соединение между абонентами). Для таких приложений поток информации о недоступности удаленной стороны может приводить к разрыву соединения на уровне инкапсулированного в UDP протокола.
4. UDP Package - смысл атаки заключается в отправке некорректного пакета на сервис UDP. Например UDP пакет с некорректными полями служебных данных.
5. Для некоторых приложений может играть важную роль целостность сессии . Здесь можно поэкспериментировать.
UDP DoS - тип атаки "отказ в обслуживании" не обошол стороной и UDP, для реализации данного вида атак необходимо сгенерировать большое количество UDP-пакетов направленных на определенную машину. В результате успешной атаки происходит либо зависание либо его перезагрузка. Осуществить атаку можно из за того что в UDP отсутствует механизм предотвращения перегрузок.
[Эксплоиты]
GNUnet <= 0.7.0d (Empty UDP Packet) Remote Denial of Service Exploit - Продукт GNUnet версия 0.7.0d ДоС атака
D-Link Wireless Access Point (Fragmented UDP) DoS Exploit - Продукт D-Link ДоС атака
Sentinel LM 7.x UDP License Service Remote Buffer Overflow Exploit - Переполнение буфера
UDP Stress Tester Denial of Service Exploit
[Заключение]
Прочитав данную статью ты должен представлять что из себя представляет UDP протокол, знать его основные достоинства и недостатки и понимать разницу между TCP и UDP. UDP. Протокол нам необходим прежде всего для организации быстрых соединений, а для других целей использовать данный протокол просто невозможно из- за отсутствия многих возможностей присущих TCP.