Настольная книга компьютерного исследователя


Некоторые особенности IP протокола

Наличие различных средств для настройки и обеспечения роутинга, предоставляемых многими протоколами семейства TCP/IP давно пользуется славой хорошей почвы для многих сетевых атак. Такие средства имеются и в самом IP-протоколе, что позволяеть творить многие интересные вещи…. о чём и пойдёт речь ниже. А раз так, то описанные ниже атака начинает принимать более-менее универсальный характер. Каким же образом можно задать путь следования IP-дейтаграммы на уровне самого IP-протокола? Дело в том, что IP-пакет имеет так называемое поле опций, в котором указываются некоторые специфические параметры пакета. Существует две опции, отвечающих за роутинг. Называются они Strict Source and Record  Route (SSRR) и Loose Source and Record Route (LSRR). По выполняемым функциям эти две опции за исключением некоторых деталей практически идентичны, так что можно ограничиться описанием только одной из них — LSRR, так как она обладает несколько большей гибкостью, по сравнению с другой. Раз, маршрутизация осуществляется на уровне IP-протокола, то сам маршрут задаётся последовательностью IP-адресов хостов, через которые должен пройти IP-пакет. Для примера, возьмём такую ситуацию: нам необходимо отправить IP-пакет с нашего хоста (адрес 1.1.1.1) на хост 2.2.2.2. Кроме того, направляясь к хосту 2.2.2.2, пакет должен пройти через хосты 3.3.3.3 и 4.4.4.4. Вот, упрощённая структура IP-пакета, реализующего этот
механизм:

+--------------------------------------------------------------------------+
1 |                      Обязательные поля IP-пакета                         |
+                                                                          +
2 |                                                                          |
+                                                                          +
3 |                                                                          |
+--------------------------------------------------------------------------+
4 |                               1 . 1 . 1 . 1                              |
+--------------------------------------------------------------------------+
5 |                               3 . 3 . 3 . 3                              |
+------------------+------------------+------------------+-----------------+
6 |     тип опции    |   длина опции    |указатель на адрес|       4 .       |
+------------------+------------------+------------------+-----------------+
7 |                        4 . 4 . 4                       |       2 .       |
+--------------------------------------------------------+-----------------+
8 |                        2 . 2 . 2                       |                 |
+--------------------------------------------------------+-----------------+

Тип опции идентифицирует опцию. В случае с LSRR тип равен в бинарном представлении 10000011. Длина опции — общая длина всех полей опции. Указатель на адрес — указатель на один из адресов хостов, через которые должен пройти пакет.

Алгоритм работы следующий:

1) Пакет сначала приходит на хост 3.3.3.3;

2) Хост 3.3.3.3 заменяет значение поля Source Address на свой IP (3.3.3.3), а в Destination Address вставляет IP-адрес, на который указывает «Указатель на адрес», т.е., если он указывает на первый адрес списка, то это -  4.4.4.4. Увеличивает поле «Указатель» на 4 и отправляет пакет дальше;

3) Хост 4.4.4.4 заменяет значение поля Source Address на IP предыдущий IP из списка, т.е. на 4.4.4.4, а в Destination Address вставляет второе значение из списка роутинга, т.е. 2.2.2.2. Увеличивает поле «смещение» и отправляет пакет дальше в сеть;

4)Пакет приходит на хост 2.2.2.2.

Если появилось желание более подробно ознакомиться с работой опций LSRR и SSRR, то предлагаю заглянуть в RFC по IP-протоколу.

Используя в качестве базы данный механизм, можно реализовать ряд DoS-атак, а также имеется возможнось пролезать в «закрытые» от инета сетки. Ниже будет описано кое-что из того, до чего мне удалось докапаться. Если у вас имеются какие-либо свои мысли или предложения на этот счёт, то, если не жалко, пишите на [email protected]

1) Routed broadcast attack. :-)))

Пожалуй сегодня притчей во языцах стала broadcast-атака. Суть этой атаки, такова что мы можем создать IСMP эхо-пакет, Source Address которого — адрес мишени для атаки, а Destination Address — broadcast-адрес в конкретной сети. Будучи отосланным в сеть, этот пакет примут все хосты в подсети, а каждый из этих хостов, в свою очередь, отошлёт ответ на source-адрес пакета, то есть на нашу мишень. Сила атаки напрямую зависит от количества машин в подсети. Атака, конечно, очень хорошая, но для её осуществления атакующему необходимо присутствовать в данной подсети, что во многих случаях нежелательно или просто проблематично. При помощи LSRR и SSRR опций можно осуществить похожую атаку, для которой необязательно необязательно присутствовать в подсетке. Идея здесь очень проста: создаём IP-пакет, Source Address которого — любой из возможных IP-адресов, а Destination Address — адрес роутера, стоящего между нужной нам подсеткой и остальным инетом. В поле опций этого пакета выставляем, естественно, тип опции — LSRR, а в поле данных этой опции — сначала IP-адрес жертвы, а затем броадкастовый IP в этой подсетке. Кроме того, поле указателя на адрес опции LSRR надо установить таким образом, чтобы оно указывало на второй адрес, т.е. на броадкастовый:

+-----------------+
|                 |
+-----------------+
|                 |
+-----------------+
|                 |
+-----------------+
|                 |
+-----------------+
|  Адрес роутера  |--------> Destination address
+-----------------+----+
|                 |    |
+-----------------+    |
|   Адрес мишени  |    +---> Опция LSRR
+-----------------+    |
| Броадкаст-адрес |    |
+-----------------+----+

Когда этот пакет придёт на роутер, роутер произведёт замену Source Address’а на первый адрес из списка адресов опции LSRR, а в Destination Address вставит второй (броадкастовый) адрес из этого списка, т.к. именно на него указывает соответствующее поле. О дальнейшем развитии событий догадаться нетрудно :-)))

2) LSRR Ping-pong

Используя механизм роутинга IP-протокола, можно добиться одного очень интересного эффекта — прыгающих туда-обратно пакетов. Предположим, у нас есть цель — «убить» канал между двумя роутерами с IP-адресами 1.1.1.1 и 2.2.2.2. Можно построить IP-пакет, в Destination Address’е которого будет 1.1.1.1, а в списке IP-адресов опции LSRR нечто вроде: 2.2.2.2 — 1.1.1.1 — 2.2.2.2 — …. Придя на роутер 1.1.1.1, пакет отошлётся на роутер 2.2.2.2, c 2.2.2.2 — на 1.1.1.1 и т.д., пока не закончится список IP-адресов. Однако, данная атака не представляет особого  интереса…… Дело в том, что длина IP-пакета ограничена пятнадцатью двойными словами (длина поля IHL — 4 бита); на обязательную часть IP-пакета отводится 5 двойных слов, а в шестом двойном слове, если мы намереваемся включить LSRR-опцию, располагается различная контрольная информация опции. Что у нас остаётся? всего лишь 9 двойных слов для списка IP-адресов. Т.е. максимум, на что может рассчитывать атакующий, так это только на девятикратное умножение трафика по сравнению с шириной его собственного канала.

И, наконец, последне, о чём хотелось бы сказать, так это о прохождении в «закрытые» сетки. Приведу ещё один пример. Есть у нас подсетка 1.1.1.0 и роутер 1.1.1.111, соединяющий её с инетом. Аксес-листы на роутере настроены таким образом, чтобы блокировать все пакеты, направляющиеся из внешней сети к внутренним машинам. К роутеру мы можем обращаться из инета. Попробуем теперь, находясь «снаружи», сформирвать пакет с IP-роутера в качестве адреса назначения. Только помимо всего прочего попробуем прицепить LSRR опцию c IP-адресом, допустим, 1.1.1.10:

+-----------------+
|                 |
+-----------------+
|                 |
+-----------------+
|                 |
+-----------------+
|                 |
+-----------------+
|    1.1.1.111    |--------> Destination address (адрес роутера)
+-----------------+----+
|                 |    |
+-----------------+    |
|    Наш адрес    |    +---> Опция LSRR
+-----------------+    |
|    1.1.1.10     |    |
+-----------------+----+

Если роутер, сравнивает Destination и Source адрес со своим аксес-листом до обработки опций IP-пакета, то наша дейтаграмма успешно пролезет во внутреннюю сетку, если же нет… то нет :-)).

Подведу итог. Опции роутинга IP-пакета можно назвать стандартным, официально документированным средством для совершения сетевых атак. Так что, совет системным администраторам: выключайте эти опции в вашем сетевом програмном и аппаратном обеспечении, если в них нет особой необходимости, иначе это может привести к нежелательным последствиям…



©2013 Журнал Хакера Entries (RSS) and Comments (RSS)