Raw sockets и безопасность сетей

Вечером 4 мая сеть Gibson Research Corporation (GRC) подверглась атаке. Злоумышленник не старался скопировать секретную информацию или воспользоваться ресурсами компании для своих нужд. Хакер преследовал исключительно деструктивные цели: вывести из строя сеть, наводнив ее UDP-пакетами. Атака с целью вывода служб из строя — не редкость в наше время, однако это достаточно тривиальное событие стало, тем не менее, причиной бурной дискуссии, развернувшейся в прессе и Internet-форумах.

Как это начиналось

Объектом очередной атаки хакеры выбрали компанию, президентом которой является Стив Гибсон — известный специалист в области компьютерной безопасности, вполне способный проанализировать ситуацию и раскрыть механизм атаки.

Пакеты, которыми злоумышленник наводнил каналы, соединяющие GRC с провайдером (две линии T1), поступали с различных узлов, принадлежащих разным сетям, — налицо типичная атака DDoS. Анализируя поступившие пакеты, Гибсон выявил 474 атакующих компьютера. Справедливо предположив, что на эти машины была внедрена программа-"зомби", он отправил администраторам сетей почтовые сообщения с просьбой проверить свои машины на наличие "троянских коней". Вскоре в руках Гибсона оказался файл rundlI.exe (последняя буква — заглавная латинская "И"), который и выполнял функции посредника между злоумышленником и его жертвой.

Будучи запущенной в системе, "зомби" немедленно обращалась к определенному Chat-серверу и ожидала инструкций. Затем по команде из "центра управления атакой" она начинала генерировать UDP-пакеты большого размера и посылать их по адресу жертвы.

Зная механизм атаки и адреса инфицированных машин, Гибсон смог построить и установить у провайдера фильтр, "отсекающий" трафик атакующих компьютеров. Счастливый конец, как в рождественских сказках? Увы, по мнению Гибсона, только начало.

Приют для "зомби"

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

Всем хороша Windows для организаторов DDoS, за исключением одной существенной детали: доступные в этой системе типы "гнезд" (socket — логическая конструкция, инкапсулирующая основные операции при сетевом взаимодействии) ограничиваются потоковыми "гнездами" (SOCK_ STREAM) и "гнездами" дейтаграмм (SOCK_DGRAM). Поддержка так называемых raw sockets (SOCK_RAW) в системе отсутствует.

Этот тип "гнезд" обеспечивают доступ к протоколам наиболее низкого уровня и даже к сетевым интерфейсам. В частности, в системе Unix raw sockets используются инструментом getethers, предназначенным для сбора информации о компьютерах, подключенных к сети Ethernet. Один из побочных эффектов поддержки raw sockets — возможность замены обратного адреса в IP- и ICMP-пакетах.

Фактически именно благодаря отсутствию в системе поддержки raw sockets Гибсон смог проследить источники DDoS-атаки и настроить фильтр (хотя даже на это ушло несколько дней). Была бы у хакера возможность произвольно подставлять обратный IP-адрес, выбранный по случайному закону,— и для ликвидации атаки потребовались бы гораздо большие усилия. Казалось бы, сама судьба хранит владельцев персональных компьютеров от незавидной роли посредника в подобных инцидентах. Однако ситуация грозит измениться к худшему.

Raw sockets и Windows XP

На 25 октября сего года намечен выпуск Windows XP. Ожидается, что новая ОС, которая будет поставляться в двух редакциях — Home Edition и Professional Edition, достаточно быстро завоюет признание не только корпоративных, но и домашних пользователей.

Среди большого количества новых средств, которые собираются реализовать создатели очередной версии операционной системы, внимание Гибсона привлекла одна деталь. В Windows XP планируется восполнить недостатки реализации Berkeley Sockets, в частности обеспечить поддержку raw sockets. Следовательно, по мере распространения Windows XP противодействовать атакам, подобным той, которой подверглась GRC, станет значительно труднее.

Гибсон выступил с предложением, спор вокруг которого не утихает уже около двух месяцев. Суть его сводится к следующему: руководство Microsoft должно отказаться от реализации raw sockets в Windows XP. Раз Windows до сих пор вполне успешно обходилась без этого типа "гнезд", незачем включать их в новую версию и давать в руки хакерам столь мощный инструмент.

Однако предложение Гибсона не произвело на разработчиков Windows XP должного впечатления. Во-первых, аргументируют они, raw sockets уже были реализованы в Windows 2000, и, как говорится, ничего страшного не произошло. Во-вторых, безопасность за счет отклонения от стандартов — порочная практика.

Первое утверждение, безусловно, не выдерживает критики. Windows 2000, в которой поддерживаются raw sockets, в основном используется в корпоративной среде, "под присмотром" опытных администраторов. Новое программное обеспечение инсталлируется достаточно редко, зачастую централизованно, компьютеры подвергаются антивирусному контролю, сеть защищена брандмауэром. Если же "зомби"-программа по каким-либо причинам останется незамеченной и включится в атаку, администратор, скорее всего, обратит внимание на неоправданное увеличение исходящего ICMP- или UDP-трафика, проанализирует причины и примет соответствующие меры.

С Windows XP дело обстоит несколько иначе. Редакция Home Edition предназначена для домашних пользователей, которые не поддаются какому-либо контролю. Максимум, что можно сделать по отношению к такому пользователю, — отключить его от Internet. Но заинтересован ли в подобных мерах провайдер?

Что же касается второго аргумента Microsoft, то с ним трудно не согласиться. Действительно, надо не ограничивать типы "гнезд", а максимально затруднить проникновение программ, работающих в пользу хакеров, на пользовательские компьютеры. Что же предлагает в этом направлении новая ОС?

  • Во-первых, в состав Windows XP будет включен брандмауэр Internet Connection Firewall. При подключении к Internet пользователю будет в явном виде задан вопрос, следует ли его устанавливать.
  • Во-вторых, в системе планируется реализовать набор средств, позволяющих запретить выполнение кода и сценариев определенного типа. Насколько успешно будут работать эти средства — покажет время.
  • В-третьих, при реализации почтовых клиентов принят ряд мер, препятствующих запуску присоединенных программ, что существенно затруднит распространение хакерского кода по электронной почте.

Эти возможности реализуются в рамках кампании по борьбе за безопасность, развернутой Microsoft. Основная ее цель — сделать невозможным или по крайней мере максимально затруднить проникновение вредоносного кода в систему.

Провайдеры всех стран…

28 июня состоялась телеконференция, в которой приняли участие Стив Гибсон и представители Microsoft. Как и следовало ожидать, речь шла о реализации raw sockets в Windows XP. В конце беседы каждая из сторон осталась при своем мнении. Разработчики Windows XP продолжают утверждать, что raw sockets реализовывать необходимо и что меры безопасности, принимаемые Microsoft, достаточны для того, чтобы администраторы сетей могли быть относительно спокойны. Гибсон, со своей стороны, считает, что решение Microsoft — ошибка, которая грозит неисчислимыми бедами сообществу Internet.

Судя по всему, независимо от мнения сторонних специалистов, руководство компании вряд ли станет пересматривать свое решение о реализации raw sockets. Каковы же должны быть действия пользователей и провайдеров, чтобы сети не стали беззащитными перед атаками DDoS?

Очевидно, что основная угроза исходит не от корпораций, которые будут оснащены Windows XP Professional Edition, а от индивидуальных, "неорганизованных" пользователей. Поэтому в первую очередь необходимо перекрыть каналы поступления "зомби"-программ на пользовательские компьютеры. Однако в этом направлении трудно ожидать каких-либо успехов.

Все мы были свидетелями победного шествия вирусов и почтовых "червей" по пользовательским компьютерам. Часто ли применялись антивирусы? Конечно, ряд пользователей регулярно проверяют свои машины. Попадаются даже фанатики, для которых поиск вирусов превратился в основное занятие. Но нередко встречается и совершенно противоположное отношение. Действительно, чего бояться тому, у кого самое ценное на диске — копия очередной популярной игры и ICQ-клиент, через который он обменивается впечатлениями с единомышленниками.

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

Теперь представьте, что, появившись на пользовательском компьютере, "зомби"-программа по команде организатора начинает атаку. Поскольку обратный адрес в пакетах будет фальсифицирован, получатель не сможет отфильтровать их традиционными способами. Для того чтобы как-то противодействовать атаке, потребуется интеллектуальный брандмауэр, анализирующий содержимое пакета. Но такой брандмауэр также не панацея. Хакеру достаточно видоизменить сценарий — не посылать пакеты непосредственно в атакуемую сеть, а отправлять ping-запросы по любому действительному IP-адресу, заменив в них обратный адрес реквизитом жертвы. Приходящий ответ будет неотличим от обычного ответа на ping-запрос. При наличии raw sockets не составит труда организовать также и SYN-наводнение.

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

В состав Windows XP входит персональный брандмауэр, но многие ли пользователи захотят инсталлировать его (к тому же пока неизвестно, будет ли он фильтровать исходящий трафик)? До тех пор пока установка брандмауэра не станет обязательным условием инсталляции операционной системы, основная нагрузка по борьбе с атаками DDoS ложится на провайдеров. Возможно, хоть они прислушаются к голосу здравого смысла. К тому же им достаточно придерживаться совсем простых и не очень обременительных правил: обязательно производить фильтрацию исходящего трафика и отказывать в обслуживании пользователям, компьютеры которых были замечены в генерации некорректных пакетов. Конечно, терять клиентов не очень приятно, но ведь вряд ли кто-то из провайдеров заинтересован в том, чтобы передавать по своим линиям хакерский трафик.

Что грозит администраторам Web-узлов

Как это ни парадоксально, на сегодняшний день уже почти безразлично, будут реализованы raw sockets в Windows XP или нет. В результате разгоревшейся дискуссии проблемой подмены обратных IP-адресов заинтересовались не только специалисты по защите, но и хакеры. На самом деле попытка подмены адресов может быть предпринята и на более низком уровне, с помощью специальных системных драйверов. Несмотря на то что в Windows XP драйверы защищаются цифровой подписью, система позволяет устанавливать продукты независимых производителей. В связи с этим даже представители Micro­soft не отрицают, что в принципе хакер имеет возможность получить сертификат и использовать его для беспрепятственной установки драйвера, являющегося по сути "троянским конем". Вполне возможно, что скоро мы будем свидетелями появления нового класса программ, направленных, увы, на разрушение.

Атака DoS

Атаки с целью вывода служб из строя (DoS — Denial of Service) известны давно. Обычно такая атака осуществляется путем "наводнения" компьютера-жертвы пакетами определенного типа. Иногда атака DoS предпринимается для того, чтобы замаскировать попытку взлома системы, но чаще всего она представляет собой бессмысленный акт вандализма.

Одним из простейших типов атаки DoS является SYN-наводнение. Как известно, при установлении соединения используется трехэтапный процесс квитирования (handshaking). Инициатор соединения передает SYN-пакет и получает SYN/ACK-пакет. После того как инициатор отвечает ACK-пакетом, соединение считается установленным. При SYN-наводнении атакующий компьютер передает пакет SYN и получает SYN/ACK, но сам соединение не подтверждает. Запись о незавершенной процедуре квитирования хранится в буфере до истечения тайм-аута. Постоянно передавая пакеты SYN, атакующий компьютер добивается переполнения буфера, после чего установление соединения становится невозможным.

Атака DDoS

DDoS (Distributed Denial of Service) является модификацией DoS и отличается тем, что при проведении атаки используются скоординированные действия многочисленных компьютеров-посредников, которые играют активную роль. Для этого на машины внедряются специальные программы-"зомби", поддерживающие связь с неким управляющим центром. По его команде "зомби" начинают генерировать ICMP- или UDP-пакеты и передают их по адресу жертвы. Наиболее впечатляющим примером DDoS стала атака, предпринятая 7 февраля 2000 г. и приведшая к выходу из строя системы Yahoo! на 3 часа.

В настоящее время существуют различные программы-сканеры, которые позволяют обнаружить наличие "зомби" в системе.