Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #47, ОКТЯБРЬ 2004 г.

Стенка всмятку

Крис Касперски aka мыщъх

Спецвыпуск: Хакер, номер #047, стр. 047-022-5


Большинство брандмауэров поддерживает удаленное управление через интернет, открывая один или несколько TCP-портов, уникальных для каждого брандмауэра. Так, например, Check Point Firewall открывает 256, 257 и 258 порты, а Microsoft Proxy – 1080. Некоторые брандмауэры явным образом сообщают свое имя и версию программного продукта при подключении к ним по netcat (или telnet), в особенности этим грешат прокси-сервера. Последовательно опрашивая все узлы, расположенные впереди исследуемого хоста, на предмет прослушивания характерных для брандмауэров портов, мы в большинстве случаев сможет не только выявить их присутствие, но и определить IP-адрес! Разумеется, эти порты могут быть закрыты как на самом брандмауэре (правда, не все брандмауэры это позволяют), так и на предшествующем ему маршрутизаторе (но тогда брандмауэром будет нельзя управлять через интернет).

Сканирование и трассировка через брандмауэр

Прямая трассировка через брандмауэр чаще всего оказывается невозможной (какому администратору приятно раскрывать интимные подробности топологии своих сетей), и атакующему приходится прибегать к всевозможным ухищрениям.

Утилита Firewalk представляет собой классический трассер, посылающий TCP- или UDP-пакеты, с таким расчетом, чтобы на узле, следующем непосредственно за брандмауэром, их TTL обращался в ноль, заставляя систему генерировать сообщение ICMP_TIME_EXCEEDED. Благодаря этому Firewalk уверенно работает даже там, где штатные средства уже не справляются, хотя крепко защищенный брандмауэр ей, конечно, не пробить и атакующему приходится использовать более продвинутые алгоритмы.

Будем исходить из того, что с каждым отправляемым IP-пакетом система увеличивает его ID на единицу (как это чаще всего и случается). С другой стороны, согласно спецификации RFC-793, описывающей TCP-протокол, всякий хост, получивший посторонний пакет, который не относится к установленным TCP-соединениям, должен реагировать на него посылкой RST. Для реализации атаки нам понадобится удаленный узел, не обрабатывающий в данный момент никакого постороннего трафика и генерирующий предсказуемую последовательность ID. В хакерских кругах такой узел называется немым (dump). Обнаружить немой хост очень просто – достаточно лишь отправить ему серию IP-пакетов и проанализировать ID, возвращенный в заголовках. Запомним (запишем на бумажку) ID последнего пакета. Затем выберем жертву и отправим ей SYN-пакет, указав в обратном адресе IP немого узла. Атакуемый узел, думая, что немой хост хочет установить с ним TCP-соединение, ответит: SYN/ACK. Немой хост, словив посторонний SYN/ACK, возвратит RST, увеличивая свой счетчик ID на единицу. Отправив немому хосту еще один IP-пакет и проанализировав возвращенный ID, мы сможем узнать, посылал ли немой хост жертве RST-пакет или нет. Если посылал, значит, атакуемый хост активен и подтверждает установку TCP-соединения на заданный порт. При желании хакер может просканировать все интересующие его порты, не рискуя оказаться замеченным, ведь вычислить его IP практически невозможно – сканирование осуществляется "руками" немого узла и с точки зрения атакуемого выглядит как обычное SYN-сканирование.

Назад на стр. 047-022-4  Содержание  Вперед на стр. 047-022-6