Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции 1 (от него).docx
Скачиваний:
36
Добавлен:
21.11.2018
Размер:
4.65 Mб
Скачать

Транспортный уровень стека протоколов системы управления ip-cemu

Транспортный уровень стека протоколов TCP/IP системы управления выполняет функции, обеспечивающие два типа передачи блоков данных, сформированных на основе протоколов прикладного уровня:

  • передача блоков данных прикладного уровня с предварительным установлением логического соединения. Такой способ передачи реализуется при помощи протокола TCP (Transport Control Protocol), информационной единицей которого является сегмент. Протокол TCP обеспечивает проверку и восстановление правильной последовательности передаваемых сегментов, а также повторную передачу тех сегментов, содержимое которых было искажено;

  • дейтаграммная передача блоков данных прикладного уровня, реализуемая при помощи протокола UDP (User Datagram Protocol). Информационной единицей протокола UDP является дейтаграмма. Протокол UDP, в отличие от протокола TCP, не обеспечивает проверку правильности последовательности передаваемых дейтаграмм, а также не предусматривает повторную передачу дейтаграмм, содержимое которых было искажено.

Выбор одного из этих двух протоколов осуществляется в соответствии с информацией, сформированной на прикладном уровне стека протоколов TCP/IP. Рассмотрим каждый из протоколов транспортного уровня стека TCP/IP более подробно.

Протокол TCP обеспечивает передачу блоков данных прикладного уровня через создаваемое этим протоколом логическое соединение, которое ликвидируется сразу же после завершения передачи всех блоков данных. Структура TCP-сегмента показана на рис. 11.6.

Порт отправителя (16 бит)

Порт получателя (16 бит)

Порядковый номер (32 бита)

Номер подтверждения (32 бита)

Смещение данных

(4 бита)

Зарезервировано

(6 бит)

Флаги (6 бит)

Размер окна

(16 бит)

Контрольная сумма (16 бит)

Указатель на неотложные данные (16 бит)

Параметры (переменная длина)

Выравнивание (переменная длина)

Поле данных (переменная длина)

Рисунок 11.6 – Структура ТСP-сегмента

Рассмотрим каждое из полей TCP-сегмента более подробно.

Номера портов отправителя и получателя выступают в роли идентификаторов, позволяющих получателю TCP-сегмента определить, при помощи какого протокола прикладного уровня стека TCP/IP должен быть обработан блок данных, содержащийся в поле данных этого ТСР-сегмента.

Для идентификации ТСР-сегмента в созданном логическом соединении используются два 4-байтовых номера, хранящихся в полях «Порядковый номер» (Sequence Number) и «Номер подтверждения» (Acknowledgment Number). Значения этих полей выступают в роли счётчиков TCP-сегментов и используются для проверки и восстановления правильной последовательности передаваемых сегментов.

Поле «Смещение данных» содержит количество четырёхбайтовых слов в заголовке ТСР-сегмента.

Поле «Контрольная сумма» содержит инвертированную сумму всех 16-битных слов в заголовке и поле данных ТСР-сегмента. Значение этого поля используется для выявления случайных ошибок в заголовке и поле данных ТСР-сегмента. При обнаружении ошибки получатель искажённого ТСР-сегмента сформирует запрос на его повторную передачу.

«Поле данных» ТСР-сегмента содержит блоки данных, сформированные при помощи протоколов прикладного уровня стека TCP/IP.

Поле «Флаги» содержит команды, которыми могут обмениваться отправитель и получатель TCP-сегментов в рамках логического соединения. Для формирования определённой команды субъект должен установить в единицу соответствующий бит флагового поля. Протокол TCP предусматривает наличие шести различных команд, описание которых приведено в табл. 11.2.

Для того, чтобы в рамках установленного TCP-соединения можно было проверять правильность последовательности передаваемых сегментов, а также организовать повторную передачу тех сегментов, заголовок которых был искажён, отправитель номерует отправляемые им ТСР-сегменты (номера содержатся в поле «Порядковый номер»). Для каждого отправленного ТСР-сегмента отправитель ожидает от получателя TCP-сегмент, подтверждающий успешное получение данных. ТСР-сегмент, подтверждающий успешное получение сегмента с номером n, содержит команду АСК, а поле «Номер подтверждения» заголовка этого сегмента содержит значение n + 1. Время ожидания получения подтверждающего ТСР-сегмента ограничено - при отправке каждого ТСР-сегмента на стороне отправителя запускается так называемый таймер, и в случае, если по его истечении отправитель не получит подтверждения, то отосланный TCP-сегмент будет считаться утерянным и отправитель сформирует запрос на его повторную передачу.

Таблица 11.2. Команды протокола TCP

Номер бита, отвечающего за команду

Описание команды

Сокращение, используемое для обозначения команды

1

Команда передачи неотложных данных

URG

2

Команда подтверждения успешного получения данных

АСК

3

Команда передачи данных вне очереди

PSH

4

Команда закрытия логического соединения

RST

5

Команда синхронизации значений счетчиков ТСР-сегментов

SYN

б

Команда, сигнализирующая о завершении передаваемых данных

FIN

При этом при передаче каждого нового TCP-сегмента старый таймер сбрасывается и запускается новый. Для TCP-сегментов, подтверждающих успешный приём данных, характерно свойство кумулятивности. Другими словами, TCP-сегмент, в котором содержится команда АСК и номер подтверждения которого равен n, отражает успешный приём ТСР-сегментов с порядковыми номерами вплоть до n - 1. В случае неполучения одного из ТСР-сегментов автоматически формируется запрос на повторную передачу путём отправки TCP-сегмента с командой АСК и номером подтверждения того сегмента, который необходимо передать повторно.

Для ускорения процесса передачи данных при помощи ТСР-протокола назначается так называемое окно, которое определяет количество ТСР-сегментов, которое может быть отправлено без получения подтверждения. Значение размера окна определяется в соответствующем поле заголовка TCP-сегмента (рис. 11.6).

В IP-сетях протокол TCP используется для обработки блоков данных, сформированных на прикладном уровне при помощи протоколов FTP и Telnet.

Как уже отмечалось выше, помимо протокола TCP на транспортном уровне стека TCP/IP также используется протокол UDP, обеспечивающий дейтаграммную передачу блоков данных прикладного уровня. Структура дейтаграммы, сформированной при помощи протокола UDP, показана на рис. 11.7.

Номер порта отправителя (16 бит)

Номер порта получателя (16 бит)

Длина (16 бит)

Контрольная сумма (16 бит)

Поле данных (переменная длина)

Рисунок 11.7 - Структура UDP-дейтаграммы

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

Поле «Контрольная сумма» представляет собой инвертированную сумму 16-битовых слов заголовка и поля данных дейтаграммы. Это поле используется для обнаружения случайных ошибок в заголовке и поле данных дейтаграммы. В случае обнаружения ошибки в дейтаграмме получатель не формирует запрос на её повторную передачу, а просто отбрасывает искажённую дейтаграмму.

Поле «Длина» содержит длину дейтаграммы в байтах, включая заголовок и поле данных. Максимальная длина дейтаграммы может достигать 65535 байт.

«Поле данных» дейтаграммы содержит блоки данных, сформированные при помощи протоколов прикладного уровня. В случае если блок данных прикладного уровня превышает максимально допустимую длину поля данных дейтаграммы, то на прикладном уровне этот блок данных фрагментируется на несколько блоков меньшей длины.

В IP-сети протокол UDP используется для обработки блоков данных, сформированных на прикладном уровне при помощи протокола SNMP.

Воздействия нарушителя на транспортном уровне стека протоколов TCP/IP

На транспортном уровне стека протоколов TCP/IP нарушитель может осуществлять воздействия, направленные на активизацию уязвимостей протоколов TCP и UDP. Рассмотрим эти процессы на ряде примеров.

Воздействия нарушителя, направленные на блокирование процесса передачи сообщений, содержащих информацию управления

Реализация ВН, последствием которых является блокирование процесса передачи сообщений, содержащих информацию управления, может осуществляться путём несанкционированного удаления или искажения TCP-сегментов и UDP-дейтаграмм, посредством которых передаются эти сообщения. Искажение TCP-сегментов и UDP-дейтаграмм подразумевает внесение нарушителем в их содержимое обнаруживаемых или не обнаруживаемых средствами IP-сети ошибок. Внесённые обнаруживаемые ошибки могут быть зафиксированы на транспортном уровне стека TCP/IP как в заголовке, так и в поле данных TCP-сегмента и UDP-дейтаграммы. Внесение нарушителем необнаруживаемой ошибки или удаление передаваемых TCP-сегментов и UDP-дейтаграмм приведёт к сборке искажённого сообщения на стороне ЦУС или маршрутизатора, что потребует повторной передачи либо всего сообщения, либо той его части, куда была внесена ошибка. Поэтому для блокирования процесса передачи сообщений, содержащих информацию управления, нарушитель может периодически вносить искажения или удалять один из TCP-сегментов или UDP-дейтаграмм, посредством которых передаются эти сообщения. Однако факт блокирования процесса передачи сообщений, содержащих информацию управления, всегда может быть обнаружен средствами IP-сети.

Внесение нарушителем обнаруживаемых ошибок в заголовки и поля данных передаваемых TCP-сегментов приведёт к тому, что ЦУС или маршрутизатор, получивший искажённый TCP-сегмент, сформирует запрос на его повторную передачу. Последствием периодического внесения обнаруживаемых ошибок в TCP-сегменты, посредством которых передаются сообщения, содержащие информацию управления, является блокирование процесса передачи этих сообщений.

В случае внесения обнаруживаемых ошибок в UDP-дейтаграммы, ЦУС или маршрутизатор, получивший дейтаграмму, сможет зафиксировать факт внесения ошибки при помощи механизма контрольных сумм и отбросит искажённую дейтаграмму. Таким образом, периодическое внесение нарушителем обнаруживаемых ошибок в UDP-дейтаграммы также приведёт к блокированию процесса передачи сообщений, содержащих информацию управления.

Рассмотрим примеры последствий ВН, связанных с периодическим внесением нарушителем необнаруживаемых ошибок в заголовок и поля данных TCP-пакетов и UDP-дейтаграмм, приводящих к блокированию процесса передачи сообщений, содержащих информацию управления.

Искажение поля данных ТСР-сегмента

Внесение нарушителем необнаруживаемой ошибки в поле данных TCP-сегмента приведёт к тому, что ЦУС или маршрутизатор, получивший такой сегмент, осуществят сборку искажённого сообщения, что потребует повторения этого сообщения. Последствием периодического внесения нарушителем необнаруживаемых ошибок в поля данных передаваемых ТСР-сегментов является блокирование процесса передачи сообщений, содержащих информацию управления.

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

Номер порта получателя, содержащийся в заголовке ТСР-сегмента, предназначен для определения протокола прикладного уровня стека TCP/IP, который будет использован для обработки блока данных, содержащегося в поле данных TCP-сегмента. В случае искажения нарушителем номера порта получателя ЦУС или маршрутизатор, получив искажённый TCP-сегмент, не смогут на прикладном уровне правильно собрать сообщение, содержащее информацию управления, что приведёт к необходимости его повторной передачи. Повторное искажение нарушителем номера порта отправителя приведёт к блокированию процесса передачи сообщений, содержащих информацию управления.

ВН, направленные на блокирование процесса передачи сообщений, содержащих информацию управления, путём искажения номера порта получателя UDP-дейтаграммы реализуются аналогичным образом.

Искажение значений порядковых номеров и номеров подтверждения ТСР-сегмента

Все TCP-сегменты, передаваемые в рамках установленного логического соединения, имеют порядковый номер и номер подтверждения, которые содержатся в полях заголовка ТСР-сегмента и используются для контроля правильной последовательности передаваемых ТСР-сегментов. Если нарушитель исказит значение одного из этих номеров, то получатель искажённого ТСР-сегмента не сможет его обработать и сформирует запрос на повторную передачу сегмента, номера которого были искажены. Периодическое формирование такого ВН приведёт к блокированию процесса передачи сообщений, содержащих информацию управления.

Воздействия нарушителя, направленные на уменьшение скорости передачи сообщений, содержащих информацию управления

Реализация ВН, направленных на уменьшение скорости передачи сообщений, содержащих информацию управления, может осуществляться путём уменьшения значения размера окна, содержащегося в заголовке ТСР-сегмента. Размер окна определяет количество TCP-сегментов, которые отправитель может отправить получателю без необходимости получения подтверждения. Несанкционированное уменьшение размера окна приведёт к необходимости подтверждения получения каждого ТСР-сегмента, что повлечёт за собой уменьшение скорости передачи сообщений, содержащих информации управления.

Другими последствиями ВН, приводящими к уменьшению скорости передачи сообщений, содержащих информацию управления, является несанкционированная задержка передаваемых TCP-сегментов и UDP-дейтаграмм.

Воздействия нарушителя, направленные на выявление уязвимостей программного обеспечения маршрутизаторов

Реализация ВН, направленных на выявление уязвимостей ПО маршрутизаторов IP-сети, предполагает выполнение следующих действий:

  • определение IP-адреса маршрутизатора, уязвимости которого необходимо выявить нарушителю;

  • идентификация производителя маршрутизатора;

  • идентификация ОС маршрутизатора;

  • определение возможных уязвимостей на основе сведений об ОС маршрутизатора.

Рассмотрим способы выполнения перечисленных выше действий нарушителя более подробно.

Для определения IP-адреса маршрутизатора, уязвимости которого должны быть выявлены нарушителем, могут быть использованы специальные программные утилиты «traceroute» и «tracert», входящие в ОС UNIX и Windows NT соответственно. Данные утилиты предназначены для формирования и отправки по указанному адресу IP-пакета, после чего они генерируют список IP-адресов всех маршрутизаторов, через которые был передан посланный IP-пакет. Путём анализа списков IP-адресов маршрутизаторов, формируемых рассмотренными выше утилитами, нарушитель может определить IP-адрес маршрутизатора, уязвимости которого ему нужно выявить.

После определения IP-адреса нарушителю необходимо выявить производителя маршрутизатора, для того чтобы максимально точно определить возможные уязвимости, которые могут присутствовать в ПО этого маршрутизатора. Поскольку маршрутизаторы разных производителей используют для своей работы различные номера портов транспортного уровня стека TCP/IP, то нарушитель может определить производителя маршрутизатора путём проведения процедуры сканирования портов. Основной целью сканирования портов является определение номеров тех портов, которые являются «открытыми». Порт маршрутизатора с определённым номером называется «открытым», если этот номер используется на транспортном уровне для идентификации протокола прикладного уровня стека TCP/IP, на основе которого маршрутизатор формирует сообщения, содержащие информацию управления. Основные методы сканирования TCP- и UDP-портов маршрутизатора приведены ниже.

  • Сканирование TCP-портов путём установки TCP-соединений. Для определения открытых портов при помощи этого метода нарушитель должен произвести попытку установить TCP-соединение с маршрутизатором на различных портах, «открытость» которых нужно проверить. Если TCP-соединение устанавливается, то порт является открытым, а в противном случае - закрытым.

  • Сканирование TCP-портов методом «TCP SYN». Данный метод сканирования предполагает отправку маршрутизатору на указанный порт TCP-сегмента, содержащего команду SYN. Если в ответ от маршрутизатора нарушитель получает TCP-сегмент с командами SYN и АСК, то порт является открытым. Если же в ответ принимается TCP-сегмент с командой RST, то порт является закрытым.

  • Сканирование TCP-портов методом «TCP FIN». Согласно этому методу нарушитель посылает маршрутизатору на указанный порт TCP-сегмент, содержащий команду FIN. Если порт является закрытым, то нарушитель в ответ должен получить TCP-сегмент с командой RST.

Сканирование UDP-портов. Для того чтобы определить, является ли UDP-порт открытым, нарушителю необходимо послать маршрутизатору на этот порт UDP-дейтаграмму. Если в ответ нарушитель получит пакет данных ICMP о возникшей ошибке, то это будет означать, что порт закрыт. В противном случае UDP-порт является открытым.

Необходимо отметить, что результаты сканирования портов маршрутизаторов во многом зависят от метода реализации стека протоколов ТС/IP в ПО этих маршрутизаторах. В настоящее время существует целый ряд специализированных утилит, позволяющих автоматизировать процесс сканирования портов маршрутизатора. Примерами таких утилит являются «nmap», «strobe» или «udp_scan».

Определив, какие из портов маршрутизатора являются открытыми, нарушитель может провести идентификацию типа маршрутизатора. Перечень открытых портов, характерных для различных производителей маршрутизаторов приведён в табл. 11.3.

После определения производителя маршрутизатора нарушитель должен идентифицировать тип ОС, установленной на маршрутизаторе. Процедура идентификации ОС выполняется путём определения особенностей реализации стека TCP/IP, характерных только для ОС определённого типа. В качестве таких особенностей могут выступать:

  • начальные значения порядковых номеров и номеров подтверждения, которые выбираются ОС на начальной стадии установления ТСР-соединения;

  • начальный размер окна, устанавливаемый для ТСР-соединения;

  • значение поля «Тип сервиса» заголовка TCP-сегмента, устанавливаемое ОС;

  • особенности содержимого пакетов данных ICMP, генерируемых ОС маршрутизатора, и др.

Таблица 11.3 - Перечень открытых портов, идентифицирующих производителя маршрутизатора (в скобках указаны службы, соответствующие номерам открытых портов)

Тип оборудования

Открытые ТСР-порты

Открытые UDP-порты

Маршрутизаторы Cisco

21 (ftp)

0 (tcpmux)

23 (telnet)

49 (domain)

79 (finger)

67 (bootps)

80 (http)

69 (tftp)

512 (exec)

123 (ntp)

514 (shell)

161 (snmp)

1993 (Cisco SNMP)

1999 (Cisco ident)

2001

4001

6001

9001 (Xremote)

Коммутаторы Cisco

23 (telnet)

0 (tcpmux)

7161

123 (ntp)

161 (snmp)

Маршрутизаторы Bay

21 (ftp)

7 (echo)

23 (telnet)

9 (discard)

67 (bootps)

68 (bootpc)

69 (tftp)

161 (snmp)

520 (route)

Маршрутизаторы Ascend

23 (telnet)

7(echo)

9 (discard)

161 (snmp)

162 (sump-trap)

514 (shell)

520 (route)

Для автоматизации процесса идентификации типа ОС маршрутизатора могут быть использованы специальные программные утилиты «nmap» и «queso».

После того как нарушитель определит тип ОС, установленной на маршрутизаторе, он может с высокой степенью вероятности выявить уязвимости, присущие этому типу ОС.

Реализация ВН, направленных на выявление уязвимостей ПО ЦУС, аналогична рассмотренной выше процедуре выявления уязвимостей ПО маршрутизаторов.

Воздействия нарушителя, направленные на нарушение работоспособности ЦУС

ВН, направленные на нарушение работоспособности ЦУС, базируются на использования ошибок реализации стека протоколов TCP/IP, допущенных разработчиками ПО ЦУС. Рассмотрим данный тип ВН на примере воздействий, получивших названия «WinNuke» и «Land».

Для реализации ВН «WinNuke» нарушителю необходимо установить с ЦУС TCP-соединение по любому открытому порту и инициировать передачу TCP-сегментов, в заголовке которых необходимо установить указатель на неотложные данные. Получив такие TCP-сегменты, ПО ЦУС может неправильно их обработать, что приведёт к нарушению работоспособности ЦУС. Аналогичная уязвимость присутствует во всех ранних версиях ОС семейства Windows.

Процедура реализации ВН «Land» заключается в отправке ЦУС специального TCP-сегмента, в котором IP-адрес отправителя совпадает с IP-адресом получателя, а номер порта отправителя равен значению номера порта получателя. Получив такой TCP-сегмент, ПО ЦУС попытается сформировать ответ, направив его как бы «самому себе», в результате чего в работе ПО ЦУС может произойти сбой, что приведёт к нарушению его работоспособности. Примеры IP-пакета и TCP-сегмента, которые могут быть использованы для реализации ВН «Land», приведены на рис. 11.8 и рис. 11.9 соответственно.

4

(версия IP)

Длина заголовка

0

(Тип сервиса)

Общая длина

Идентификатор (16 бит)

Флаги (3 бита)

Смещение фрагмента

(13 бит)

29

(Время жизни)

06

(Идентификатор протокола)

Контрольная сумма

195.164.125.16 (IP-адрес получателя - ЦУС)

195.164.125.16 (IP-адрес отправителя)

0 (Опции)

0 (Выравнивание)

Поле данных IP-пакета

Рисунок 11.8 - Пример IP-пакета, реализующего ВН «Land»

161 (Номер порта получателя)

161 (Номер порта отправителя)

4136 (Порядковый номер)

0 (Номер подтверждения)

0

(Смещение)

0

(Зарезервировано)

2

(Флаги)

20

(Размер окна)

Контрольная сумма

26 (Указатель на неотложные данные)

0 (Параметры)

0 (Выравнивание)

Поле данных TCP-сегмента

Рисунок 11.9 - Пример TCP-сегмента, реализующего ВН «Land»

В приведённом примере искомый TCP-сегмент (см. рис. 11.9) содержится в поле данных IP-пакета (см. рис. 11.8) и отправляется нарушителем в ЦУС по IP-адресу: 195.164.125.16, на 80-й порт. При этом IP-адрес отправителя совпадает с адресом получателя (т.е. с IP-адресом ЦУС), а номер порта отправителя идентичен номеру порта получателя.

ВН типа «Land» подвержены большинство версий ОС семейства Windows.

Воздействия нарушителя, направленные на блокирование доступа к ЦУС

Одним из способов реализации ВН, направленных на блокирование доступа к ЦУС, является передача нарушителем в ЦУС большого числа TCP-сегментов, содержащих запросы на установление ТСР-соединения. При этом все TCP-сегменты направляются нарушителем в ЦУС с сфальсифицированных IP-адресов различных маршрутизаторов. В ответ на каждый полученный запрос на установление ТСР-соединения, ЦУС формирует TCP-сегмент с командами SYN и АСК, предназначенный для подтверждения установления ТСР-соединения. После этого ЦУС некоторое время сохраняет параметры предполагаемого ТСР-соединения с маршрутизатором и ожидает от него TCP-сегмента, завершающего процедуру установления соединения. Однако, учитывая тот факт, что ЦУС получает запросы на установления ТСР-соединения от имени несуществующих маршрутизаторов, по истечении определённого периода времени ЦУС вынужден закрыть соединение. Таким образом, отправка нарушителем в ЦУС большого числа запросов на установление ТСР-соединения приводит к переполнению очереди на приём запросов, к уменьшению свободных вычислительных ресурсов ЦУС и, наконец, к блокированию доступа к ЦУС. Такой метод реализации ВН получил название «TCP SYN Flooding».

Другим способом блокирования доступа к ЦУС является реализация ВН, получившего название «RST/FIN». Реализация данного ВН заключается в посылке нарушителем в ЦУС большого числа ТСР-сегментов с командами RST или FIN с целью несанкционированного блокирования TCP-соединений, установленных с ЦУС.

ВН «TCP Flooding» и «RST/FIN» могут также быть использованы для блокирования доступа ЦУС к маршрутизаторам IP-сети.