DDoS: механизм атаки и методы защиты

© Дмитрий Богдель, Евгений Грязнов, Сергей Панасенко

В последние годы в компьютерном мире наблюдается жестокое противостояние, в котором "силы зла" представляют взломщики компьютерных сетей, с другой же стороны находятся системные администраторы и разработчики различных средств защиты. Арсеналы обеих сторон становятся все более изощренными, но тенденция, увы, печальна: все меньше знаний и навыков нужно для того, чтобы взломать чью-то сеть с помощью написанной действительно гениальным злоумышленником программы, но все больше должен знать и уметь системный администратор, чтобы атака на его сеть стала невозможной. Последнее слово хакеров – разрушающие атаки, цель которых – отказ системы в обслуживании своих легальных пользователей; к сожалению, эффективное противодействие им пока не найдено, специалисты ограничиваются лишь рекомендациями. Рассмотрим же данный класс сетевых атак и возможные методы защиты.

Перед тем, как переходить к рассмотрению особенностей DDoS (Distributed DoS) атаки, следует подробнее остановиться на том, что же представляет из себя обычная DoS атака. Аббревиатура DoS или «Denial-of-Service» в переводе с английского означает «Отказ-в-обслуживании». Целью большинства атак является либо несанкционированый доступ в систему, либо получение прав «суперпользователя» или администратора, либо другие неправомерные действия пользователя, такие как подмена документов и кража конфиденциальной информации. Для DoS атаки характерно достижение того самого «отказа-в-обслуживании», т.е. приведения сетевого или иного ресурса в такое состояние, когда он не может обрабатывать запросы легальных пользователей. Вариантов проведения такой атаки множество. Самыми популярными являются наводнение (flood) сети пакетами различных протоколов (например, ICMP, UDP или TCP), в результате которого почти все вычислительные и сетевые ресурсы уходят на создание бесполезных ICMP-ответов или TCP-сессий. В общем случае, целью DoS атак могут стать любые ограниченные ресурсы, будь то количество одновременных подключений к компьютеру или число попыток входа в систему. Например, если в вашей сети установлено ограничение на 5 попыток неправильного ввода пароля с последующей блокировкой учетной записи до принудительного разблокирования её администратором, то в таком случае злоумышленник может провести DoS атаку на учетные записи и в результате вы получите множество заблокированных учетных записей, для разблокирования которых необходимо вмешательство администратора. Другим примером может стать ошибка в ОС, приводящая к аварийной остановке компьютера. Например, атака «teardrop» на Windows 95/98 (использующая ошибку реализации протокола NetBIOS) приводит к практически мгновенному «падению» ОС. А теперь представьте, что это ошибка в вашем Web сервере и злоумышленник не в вашей сети? Потери при таких атаках могут достигать астрономических цифр.

Так чем же DDoS атака принципиально отличается от DoS? Долгое время стандартным вариантом реализации атаки была атака типа «один-к-одному» или «один-ко-многим», т.е. один атакующий производил атаку на один или несколько узлов (см. рис. 1 и 2). Для реализации атаки типа ICMP flood ему нужно было иметь достаточно «толстый» канал. Т.е. если пропускная способность канала злоумышленника оказывалась меньше, чем канала жертвы, то такая атака в большинстве своем оказывалась нерезультативной. Да и найти злоумышленника, так же как и защититься от подобной атаки, было намного легче, поскольку она велась из одной точки. Ситуация начала меняться в 1998 году, когда появились первые DDoS-средства и были проведены первые распределенные атаки. Таким образом, к DoS атакам добавилась еще одна буква «D», т.е. «Distributed» или «Распределенные». С появлением подобных средств изменилась сама концепция проведения атак и многие средства обнаружения атак (Intrusion Detection System или IDS) оказались бессильны. Вместо старого отношения «один-к-одному» и «один-ко-многим» новые атаки уже имели отношение «многие-к-одному» и «многие-ко-многим» (см. рис. 3 и 4).

Ко всему прочему, атаки стали 3-х уровневыми. Рассмотрим стандартную модель DDoS атаки (см. рис. 5).

Как видно, злоумышленник напрямую более не взаимодействует с жертвой. Он действует при помощи «мастеров» (master) и «демонов» (daemon). «Мастеров» обычно несколько и их стараются разместить на машинах с большим трафиком. Например, на серверах имен (NS) провайдера. Такие серверы имеют достаточно широкий канал в Internet, и небольшое увеличение передаваемой/принимаемой информации остается незаметным. Еще одним из важных моментов является то, что такие серверы не должны выключатся ни на минуту, а для удаления «мастера» зачастую необходима перезагрузка компьютера. После того, как установлены один или несколько «мастеров» наступает момент установки «демонов». «Демон» – это обычная программа типа «троянский конь», которая устанавливается на чужую машину (чаще всего путем использования известных ошибок в ПО). На момент написания статьи известны «демоны» как под UNIX-системы, так и под Windows. После установки на машину «демон» связывается с одним из «мастеров» и получает от него команды. Помимо списка атакуемых узлов, «демон» может получить адреса новых «мастеров», время начала DDoS атаки и т.д. Такая структура создает множество проблем. Теперь для того, чтобы прекратить атаку, необходимо нейтрализовать большинство «демонов». Проблема состоит в том, что каждый исполнитель (компьютер, на котором установлен «демон») ничего не знает о других. Единственно возможным вариантом является перехват управления над «мастером», но в новых версиях ПО для проведения распределенных атак «демон» после начала атаки может более не подчиняться командам «мастера». Это увеличивает вероятность успешного проведения атаки, но есть и недостаток для хакера, так как в этом случае он не сможет повторно использовать эту сеть «демонов» для новой атаки. Учитывая, что атака происходит одновременно с нескольких тысяч компьютеров, для реализации атак типа «flood» больше не нужно наличие высокоскоростного канала. Достаточно обычного модемного соединения. К тому же, большинство межсетевых экранов не могут самостоятельно блокировать адреса, с которых идет атака. И если в случае обычной DoS атаки было достаточно добавить одно правило фильтрации пакетов межсетевым экраном, то в случае распределенных атак таких правил должно быть несколько тысяч! Многие межсетевые экраны просто не в состоянии обработать такое количество правил. Можно конечно просто перекрыть весь ICMP трафик (как было сделано в случае атак на Yahoo.com в феврале 2000 г.), но многие средства позволяют использовать одновременно несколько типов атак, например, генерацию ложных запросов к Web серверу. А отсутствие доступа к Web серверу – это как раз тот результат, которого добивались злоумышленники. Не следует также забывать, что многие средства для проведения DDoS атак позволяют производить подмену IP-адреса, и межсетевой экран с фильтрацией по IP-адресу просто бесполезен.
После такой «радужной» картины хотелось бы рассмотреть имеющиеся на данный момент средства для проведения DDoS атак, а также дать некоторые рекомендации по их предотвращению.
Первыми средствами для проведения DDoS атак были Trin00, TFN (Tribe Flood Network) и Stacheldraht. Trin00 был первым средством для проведения DDoS атак, в нем не было большого выбора типа атаки и подмены адресов. Все это появилось в TFN. Ко всему прочему, в TFN появилась возможность шифрования хранящегося у «демона» файла с адресами жертв. В версии TFN2K появилась возможность шифрования управляющего трафика. Продолжением развития средств DDoS стал Stacheldraht («колючие провода»). Это средство было синтезом Trin00 и TFN2K. Все вышеперечисленные версии работали исключительно под UNIX-системами, но в феврале 2000 года фирма ISS (Internet Security Systems) сообщила о появлении «демона» Trin00 под Windows. На настоящий момент в мире существует множество средств для проведения DDoS атак. Основной задачей каждого средства является возможность заражения (установки «демонов») как можно большего числа машин. К сожалению, неосведомленность конечных пользователей о возможной угрозе и их беспечность часто приводят к тому, что их машина становится плацдармом для проведения DDoS атаки.
Так как же избежать DDoS атаки? Начнем с плохого. На сегодняшний день не существует эффективных мер по защите от атак такого типа. То, что вы исключите возможность проникновения  «демонов» на вашу машину не гарантирует того, что другие пользователи сделают то же. К сожалению, в мире существует огромное количество компьютеров, имеющих различные «дыры». Причем производители ПО уже давно выпустили соответствующие «заплатки» для них, но пользователи просто либо не знают об этом, либо относятся беспечно к различным предупреждениям. А если учесть количество новых пользователей сети Internet… Картина далеко не радостная.
Вообще говоря, очень сложно построить абсолютно надежную защиту от атак такого типа. Например, от вредоносного HTML кода можно очень просто избавиться, применив простую программу, вырезающую все скрипты из тела кода (такой метод можно применять для коллективной защиты – на межсетевом экране) или просто их отключив в настройках Internet-броузера (годится для индивидуальной защиты), оставляя там только статические данные. От опасностей, таящихся в макровирусах, можно тоже очень просто себя обезопасить, отключив их в настройках офисных приложений. DoS-атаки «отключить» совсем непросто, в основном из-за сложности их обнаружения, поскольку отличие начала атаки подобного типа от нормальной напряженной работы сервера определяется огромным числом факторов, учесть которые в обычном алгоритме построения защиты довольно затруднительно. Только опытный эксперт может вычислить развитие DoS-атаки по таким признакам, как время между обращениями к серверу, изменение активности его работы, диапазон адресов, с которых идёт обращение, их тип, время суток и т.д., да и то лишь интуитивно.
Приведём простой пример – обнаружение атаки, целью которой является резкое снижение производительности операционной системы, вплоть до полного отказа. Суть атаки заключается в посылке по сети множества IP-пакетов со случайными идентификаторами фрагментов. Сетевой модуль системы при получении такого пакета должен дождаться остальных пакетов с тем же идентификатором, чтобы собрать фрагментированный блок данных. Естественно, такие пакеты никогда не приходят, а память начинает заполняться ненужными данными. Если система использует виртуальную память, то такой процесс приводит к постепенному разрастанию файла подкачки до недопустимых размеров. Понятно, что такую атаку может обнаружить специалист, но очень сложно было бы настроить программу защиты, чтобы она определила момент начала атаки. «Ложное срабатывание» такой программы чревато нарушениями в работе сети. Отметим, что атака подобного типа давно известна и современным операционным системам не страшна.
Постоянно держать высококвалифицированного специалиста только для слежения за трафиком для предотвращения DoS-атак не то что неразумно, согласитесь – глупо. Но применить знания эксперта можно и без непосредственного его присутствия. Это можно сделать, используя нейросетевые технологии. Нейросети как раз и предназначены для решения таких сложноформализуемых задач, как классификация и распознавание образов, диагностика, прогнозирование. Наверное, кому-то знакомы программы, прогнозирующие ситуацию на фондовом рынке, выявляющие факторы, более всего влияющие на прибыль, или уж хотя бы предсказывающие курс доллара. Как ни кажется с первого взгляда странным, такие программы (конечно, при условии корректной разработки и использования), способны действительно успешно предсказывать «будущее».
Нейронная сеть сама по себе не способна выполнять какие-либо задачи. Для начала ее необходимо правильно спроектировать и обучить. Обучением занимается эксперт, «передавая» знания сети и контролируя их «получение». Это довольно тонкий процесс, выполняемый при содействии специалиста соответствующего профиля – инженера по знаниям.
Так как же устроено такое «чудо»? Как известно, все гениальное – просто, и нейронная сеть не является исключением. Она состоит из простейших логических устройств – нейронов – элементов, имеющих один выход и несколько входов, каждый из которых имеет свой «вес», влияющий на принятие «решения» нейроном. Выход нейрона («решение») является некоторой, довольно простой (например, экспонентой) функцией его входов. Нейроны обычно собирают в сети послойно, т.е. входы нейрона одного слоя связывают с выходами предыдущего слоя. На входы первого слоя подаётся входной образ, другими словами, вектор параметров (например, параметры фондового рынка, выраженные в цифрах). С выходов снимается и интерпретируется «решение». Процесс обучения сводится к предъявлению сети обучающих образов с последующей итерационной настройкой внутренних параметров сети с целью получения правильного ответа. Как только сеть перестает ошибаться, считается, что она обучена и годна к использованию. Если процесс обучения затягивается, значит, либо сеть попала в локальный минимум многомерной функции нейронной сети (тогда процесс обучения надо повторить), либо спроектирована неправильно.
В качестве «бонуса» нейросети могут предоставлять защиту и от спама (нежелательных почтовых сообщений), что в последнее время становится тоже довольно актуальной задачей.
В настоящий момент уже существуют работающие прототипы подобных интеллектуальных средств защиты, и в скором времени следует ожидать выхода работающих образцов. Разработаны также специализированные микросхемы, позволяющие фильтровать сетевой трафик с производительностью несколько миллионов пакетов в секунду. Вопрос только в том, сколько будет стоить такая система?
Так что же можно сделать сейчас для предотвращения DDoS атак и минимизации их последствий?
Обычным пользователям можно посоветовать поставить хороший антивирус и персональный межсетевой экран, а также регулярно обновлять свою ОС (например, с помощью компонента Windows Update).
Для корпоративных пользователей и провайдеров Internet (ISP – Internet Service Provider) организацией CERT (Computer Emergency Response Team, www.cert.org) был разработан ряд рекомендаций и требований, часть из которых представлена в таблице.

Рекомендации для системных администраторов

 

Немедленно (< 30 дней)

В ближайшее время (30 – 180 дней)

В перспективе (> 6 месяцев)

Защита

  • Установите последние обновления (patches).
  • Регулярно посещайте сайты по безопасности.
  • Пересмотрите политику безопасности, ограничьте количество исходящих пакетов.
  • Используйте средства для обеспечения контроля целостности вашего ПО и ОС (например цифровую подпись).
  • Регулярно сканируйте вашу сеть на предмет уязвимостей и немедленно устраняйте их.
  • Установите систему обнаружения вторжений (IDS – Intrusion Detection System).
  • Назначьте ответственного за каждую систему человека, имеющего необходимые знания и опыт.
  • Установите IDS на каждом узле.
  • Обучите конечных пользователей.
  • При наличии средств, купите хорошую систему защиты.

Обнаружение

  • Регулярно просматривайте журналы безопасности.
  • Включите контроль за ICMP трафиком.
  • Регулярно производите контроль целостности ОС и ПО.
  • Используйте сканеры безопасности, рассчитанные на поиск уязвимости на конкретном узле.
  • Разработайте систему контроля аномального поведения сети.
  • Разработайте и протестируйте план действий в случае атаки.

Реакция

  • Сообщите заранее определенным лицам об атаке.
  • Создайте детализированный план действий в случае атаки. Внесите в него способы связи с ISP и другими заинтересованными организациями.
  • Пройдите необходимую подготовку по обнаружению других узлов, вовлеченных в атаку.
  • Удостоверьтесь в возможности проведения анализа журналов в реальном времени.
  • Установите хорошие доверительные отношения с вашим ISP.
  • Проверяйте выполнение политик безопасности в вашей организации.
  • Разработайте с вашим ISP детальный план действий в случае DDoS атаки.

И, в заключение, 10 советов «первой помощи» от создателей TFN.

Использование DDoS атаки - в какой-то мере «дорогое удовольствие». Если ваша компания всего лишь имеет выход в Internet, то вероятность того, что вы станете жертвой атаки, стремится к нулю. Другое дело, если вы занимаетесь, например, электронной коммерцией (все это не означает, что следует пренебрегать приведенными выше рекомендациями, иначе вы легко можете стать плацдармом для такой атаки).

Поток данных при DDoS атаке настолько силен, что ваш канал просто будет забит ими вне зависимости от того, насколько хорошую защиту собственных ресурсов вы организовали. Поэтому все фильтры пакетов следует ставить ближе к атакующим, как минимум, на уровне ISP.

Если вы используете маршрутизаторы, то удостоверьтесь, что они настроены корректно. Используйте рекомендации производителя (например, www.cisco.com).

Сделайте то же самое и с вероятными «целями». Запретите весь неиспользуемый или ненужный трафик. Откройте только необходимые порты на межсетевом экране.

«Демонами» могут стать только Linux или Solaris (к сожалению, этот совет уже не работает, появились «демоны» и под Windows).

Если вы видите, что из вашей сети идет атака, немедленно отключите эти компьютеры и немедленно пригласите специалиста по безопасности для дальнейшего изучения.

 

Литература
  1. www.cert.org
  2. Лукацкий А. Обнаружение атак. // Санкт-Петербург, БХВ, 2001 – 624 с.
  3. Медведовский И.Д., Семьянов П.В., Леонов Д.Г. Атака на Internet. // Москва, ДМК, 2000 – 336 с.
  4. Пол Б. DDoS: Интернет-оружие массового уничтожения. // Пер. с англ.: Сети и системы связи. – 2001 - № 4 – с. 91-95.

 

Рисунки

  1. Атака "один к одному".
  2. Атака "один ко многим".
  3. Атака "многие к одному".
  4. Атака "многие ко многим".
  5. Трехуровневая модель DDoS-атаки.
Алгоритмы шифрования...

Rambler's Top100

Перейти на главную страницу

Карта сайта

Список статей