Опубликован: 10.10.2007 | Доступ: свободный | Студентов: 3342 / 453 | Оценка: 4.40 / 4.15 | Длительность: 35:10:00
ISBN: 978-5-94774-708-9
Лекция 11:

Введение в сетевую безопасность

Существует разновидность атаки, когда хакер посылает данные в пакетах с адресом отправителя, отличным от его собственного (при этом трудно установить адрес, откуда такая атака предпринимается). Здесь имеются некоторые проблемы для атакующей стороны. ЭВМ-адресат посылает все отклики по указанному адресу отправителя; кроме того, хакеру нужно как-то выяснить порядковый номер сегмента, записываемый в каждый пересылаемый пакет. При установлении соединения оконечный сегмент, содержащий ACK, должен нести ISN (Initial Sequence Number; cм. описание транспортного протокола TCP) удаленной ЭВМ. Этот сегмент посылается ЭВМ, чей адрес указан в первоначальном запросе SYN. Хакер должен выяснить ISN каким-то иным способом (этому может помочь служба netstat). Так как ISN — 32-разрядное число, случайно угадать его совсем не просто. Но в большинстве систем (например, unix bsd) ISN берется из некоторого счетчика, содержимое которого увеличивается на 128 каждую секунду и на 64 после каждого нового соединения. Например:

x -> s: syn(ISNx)
s -> x: syn(ISNs), ack(ISNx) (получено искомое текущее значение кода ISNs)

Таким образом, установив однажды соединение с нужной ЭВМ ( s ), некоторое время спустя можно с высокой вероятностью угадать значение ISN, послав несколько пакетов с разными значениями ISN. При завершении процедуры посылается сегмент SYN+ACK, который будет отвергнут, так как машина-получатель не инициализировала связь. В пакете отклике будет установлен флаг RST и соединение окажется абортированным. Чтобы этого не произошло, хакер может предпринять атаку типа syn-flooding, которая приведет к игнорированию SYN+ACK. В результате соединение будет установлено и хакер, празднуя победу, может продолжить свое черное дело, например, он может исполнить какую-либо r-команду на атакуемой ЭВМ. Если даже изменять ISN каждые 4 микросекунды, проблему угадывания решить не удастся. Радикальным решением может стать лишь псевдослучайная генерация ISN-кодов (при этом случайным образом должны задаваться не менее 16 бит). Решить проблему поможет шифрование соответствующей части содержимого пакета. Рассмотрим здесь еще несколько таких атак.

Один из известных методов базируется на IP-опции "маршрутизации отправителя" (source routing). ЭВМ-инициатор обмена может специфицировать маршрут, которым получатель должен воспользоваться при пересылке отклика. Маршрут может быть специфицирован так, чтобы он проходил через узел, контролируемый хакером. Эта достаточно простая методика атаки в настоящее время неэффективна, так как большинство маршрутизаторов сконфигурированы так, чтобы отфильтровывать пакеты с маршрутизацией отправителя.

Интересные возможности предоставляет вариант, когда хакер вставляет свою машину на пути обмена двух других узлов (hijacking). Обычные методы атак (типа spoofing) могут не привести к успеху из-за необходимости идентификации (пароль!). В данном методе хакер позволяет завершиться установлению связи и аутентификации и только после этого перехватывает контроль над виртуальным каналом. Этот способ использует механизм "десинхронизации" TCP-соединения. Когда порядковый номер полученного пакета не совпадает с ожидаемым значением, соединение называется десинхронизованным. Полученный пакет, в зависимости от его номера, будет выброшен или буферизован (если он находится в пределах окна). Таким образом, если узлы, участвующие в обмене сильно десинхронизованы, приходящие к ним пакеты будут отбрасываться. Хакер в этом случае может вводить пакеты с корректными порядковыми номерами. Разумеется, это совсем просто, если машина хакера является транзитной, что позволяет ей "портить" или удалять нормальные пакеты и подменять их своими. Но атака возможна и в случае, когда машина хакера находится где угодно. В этом случае "отброшенные" пакеты могут вызвать посылку ACK, которые содержат ожидаемое значение порядкового номера пакета, но и они будут отвергнуты из-за неверного их номера и т.д.. При реализации этой схемы пересылается большое число "лишних" пакетов ACK. Количество их будет сколь угодно велико — поэтому данная ситуация и называется "штормом ACK". Обмен уведомлениями (ACK) о неверных ISN будет продолжаться до тех пор, пока один из таких пакетов не будет потерян. Механизм обмена IP-дейтограммами устроен так, что вероятность потери тем выше, чем больше пакетов передается, т.е. процесс саморегулируется. Тем не менее, высокая интенсивность потока сегментов ACK может говорить об атаке. В нормальной ситуации процент сегментов ACK от общего потока TCP составляет 30-45%. Иллюстрацией данного метода нападения может служить рис. 11.5.


Рис. 11.5.

Десинхронизация может быть осуществлена при установлении соединения. Хакер в этом случае обрывает процесс трехшагового диалога. После того как ЭВМ Б пошлет SYN+ACK ЭВМ А, ЭВМ хакера пошлет пакет от Б к А, который с помощью бита RST оповещает о закрытии соединения. Далее затевается новый трехшаговый диалог с целью установления соединения с А, но уже с другими кодами порядковых номеров. Схема алгоритма атаки показана на рис. 11.5.

ЭВМ Б проигнорирует сообщения от А, так как они имеют неправильные (навязанные хакером) номера, а ЭВМ А проигнорирует сообщения от Б, так как ожидает, что они будут пронумерованы по-новому. Теперь хакер знает, какие номера нужны А и Б (непосредственно же А и Б взаимодействовать не могут, так как не знают правильных номеров), и может перехватывать, модифицировать или посылать сообщения по своему усмотрению как для А, так и для Б.

Но десинхронизация может быть реализована и в ходе сессии. Если послать флаг RST в середине сессии, соединение будет закрыто, о чем будет оповещено приложение и пользователь. Аналогичного эффекта можно добиться, послав отправляющей стороне ICMP_NET_UNREACH, ICMP_HOST_UNREACH или ICMP_PORT_UNREACH. Вариант с привлечением протокола ICMP привлекателен тем, что не требует угадывания ISN. Для того, чтобы вызвать десинхронизацию в середине сессии, не закрывая соединения, достаточно поменять порядковые номера в сообщениях. Протокол telnet имеет механизм, который позволяет решить такую задачу. В рамках протокола можно посылать команды nop ("Ничего не делать", согласитесь — хорошие команды!). Эти команды не производят никакого эффекта, но увеличивают ожидаемое значение порядкового номера сегмента. Послав некоторое количество таких команд, ЭВМ хакера вызовет десинхронизацию. Теперь только хакер знает правильные значения порядковых номеров пакетов и может начать свою подрывную работу.

Одним из наиболее эффективных методов обнаружения таких атак помимо процента сегментов ACK является сравнение потоков ACK для сервера и клиента. Полной гарантией безопасности в такой ситуации может стать только шифрование на прикладном уровне, например по схеме kerberos. В случае использования почты хороший результат может дать электронная подпись (например, в PGP).

Атака на раннем этапе установления соединения может осуществляться следующим образом. (Соединение при этом разрушается и вместо него формируется новое с другим значением ISN.) Хакер прослушивает виртуальный канал и ждет сообщения SYN+ACK от сервера клиенту (вторая фаза установления соединения). При получении такого сообщения хакер посылает серверу RST-кадр, а затем SYN-пакет с теми же параметрами (TCP-порт), но с другим значением ISN (далее и на рис. 11.6 этот кадр обозначается a_ack_0 ; префикс А указывает на принадлежность атакующей машине хакера). Сервер, получив RST, закроет прежнее соединение и, получив SYN, сформирует новое для того же порта, но с новым значением ISN, после чего пошлет клиенту кадр SYN+ACK. Детектировав этот пакет, хакер посылает серверу кадр ACK. При этом сервер переходит в состояние established. Клиент перешел в это состояние при получении от сервера первого кадра SYN+ACK. На рис. 11.6 не показан обмен пакетами ACK, вызванными получением некорректных значений ISN. Как сервер, так и клиент находятся в несинхронизованном состоянии established. Обмен здесь полностью контролируется атакующей ЭВМ

Определенные услуги хакеру может оказать внутренний протокол маршрутизации rip. Этот протокол служит для рассылки информации о маршрутах в локальной сети и не требует контроля доступа, что всегда благоприятствует злоумышленникам. Хакер может разослать маршрутную информацию, которая убедит окружающие узлы в том, что наикратчайший путь во внешний мир проходит через его ЭВМ Х. Тогда все пакеты, адресованные за пределы локальной сети, будут сначала попадать в ЭВМ Х.

Хакеры часто пытаются использовать IP-опцию маршрутизации отправителя. Эта опция позволяет хакеру послать пакет извне локальной сети с адресом отправителя, соответствующим одному из внутренних адресов. Если маршрутизатор не отбрасывает такие пакеты, у хакера появляется шанс для атаки, при которой он находится в безопасности и дискредитирует некоторую машину локальной сети. Но блокировка опции маршрута отправителя еще не гарантирует отсутствия подобных атак. Хакер может фальсифицировать адрес отправителя и без этой опции, пытаясь создать иллюзию отправки пакета из LAN.

Алгоритм атаки с использованием десинхронизации. Префикс А указывает на то, что сегмент послан атакующей ЭВМ; С — клиентом; S — сервером

Рис. 11.6. Алгоритм атаки с использованием десинхронизации. Префикс А указывает на то, что сегмент послан атакующей ЭВМ; С — клиентом; S — сервером

Протокол управляющих сообщений ICMP носит вспомогательный характер (вспомним популярную утилиту ping, использующую этот протокол). Пакеты ICMP также не требуют проверки доступа (именно благодаря этому протокол пригоден для работы в масштабах Интернет). По одной этой причине протокол привлекателен для хакеров. Известны случаи, когда с его помощью люди с разных континентов бесплатно обменивались сообщениями. Пригоден протокол и для блокировки обслуживания: для этого применяются icmp-сообщения "time exceeded" (превышено время) или "destination unreachable" (адресат недоступен). Первое сообщение означает, что предел, указанный в поле TTL заголовка пакета, превышен. Такое может произойти из-за зацикливания пакетов или когда адресат расположен очень далеко. Сообщение "destination unreachable" имеет несколько значений. Но все они означают, что нет способа благополучно доставить пакет адресату. Оба сообщения вынуждают адресата немедленно прервать соединение. Для реализации своих коварных планов хакеру достаточно послать одно из этих сообщений одному или обоим участникам обмена.

Протокол ICMP может применяться и для перехвата пакетов. ICMP-сообщение "redirect" обычно используется внешними портами (gateway) сети в случаях, когда какая-то ЭВМ по ошибке полагает, что адресат находится вне локальной сети, и направляет пакеты, адресованные ему, через внешний порт. Хакер может послать ICMP-сообщение "redirect" и вынудить другую ЭВМ посылать пакеты через узел, указанный хакером. У данного метода (так же, как и предыдущего с использованием RIP) имеется определенное ограничение — хакер и жертва должны находиться в пределах общей локальной сети.

Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Нияз Сабиров
Нияз Сабиров

Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей.