По умолчанию большинство Web-браузеров разрешают использование сценария на языке JavaScript. То, что это действительно так, можно заметить во время посещения Web-сайта, когда отображается всплывающая или фоновая (pop-under) реклама. К сожалению, злоумышленник может использовать возможности JavaScript преступным образом, например для атаки с целью достижения отказа обслуживания клиентской части. Используя ту же самую технику, что и рекламодатели для создания нового рекламного окна, злоумышленник может создать злонамеренную Web-страницу, состоящую из бесконечного цикла создания окон. В конечном счете всплывет так много окон, что система исчерпает все свои ресурсы.
Это был пример атаки на клиентскую часть для достижения отказа в обслуживании пользователя в результате исчерпания ресурсов. Принцип атаки аналогичен ранее описанному, но теперь атака организована через сеть. Это только одна из многих атак на клиентскую часть. Другие используют возможности таких программ, как AOL Instant Messenger, ICQ Instant Message Client и аналогичные им.
Сетевые DoS-атаки на сервисы
Другим представителем класса сетевых DoS-атак являются сетевые DoS-атаки на сервисы. Они предназначены для нападения на выбранные для атаки сервисы, для того чтобы добиться их недоступности для авторизованных пользователей. Подобные атаки обычно осуществляются при помощи таких используемых пользователями сервисов, как демон протокола передачи гипертекста (Hypertext Transfer Protocol Daemon – HTTPD), агент доставки почты (Mail Transport Agent – MTA) и др.
Иллюстрацией подобной проблемы служит уязвимость, которая случайно была обнаружена в инфраструктуре Web-конфигурации операционной системы фирмы Cisco CBOS (Cisco Broadband Operating System). После появления на свет червя Code Red, который создавался, ориентируясь на Wed-сервера с IIS (Internet Information Server) 5.0 фирмы Микрософт, было обнаружено, что червь неразборчив к типу атакуемого Web-сервера. Червь сканировал сети в поисках Web-серверов и предпринимал попытки атаковать любой встретившийся сервер.
Побочный эффект червя проявился в том, что хотя некоторые хосты оказались ему не по зубам, другие хосты, в частности хосты с CBOS, оказались подверженными другой опасности: прием от хостов, инфицированных Code Red, многократных запросов на соединение с использованием протокола TCP через порт 80 приводил к аварии CBOS.
Хотя эта уязвимость была обнаружена как проявление другой, любой пользователь мог воспользоваться ею с помощью легкодоступного инструментария аудита сети. Тем более что после нападения маршрутизатор не смог бы самостоятельно выключиться и сразу включиться, чтобы восстановить свою работоспособность. Это классический пример атаки, нацеленной на уязвимый сервис.
Сетевые DoS-атаки на систему
Нацеленные на разрушение системы сетевые DoS-атаки обычно преследуют те же цели, что и локальные DoS-атаки: уменьшение производительности системы вплоть до ее полного отказа. Выявлено несколько характерных подходов для осуществления этого типа атак, которые по существу полностью определяют используемые методы. Один из них основан на атаке одной системы из другой. Этот тип нападения был продемонстрирован в нападениях land.c, Ping of Death (звонок смерти) и teardrop (слезинка), происходивших пару лет назад, а также в нападениях на различные уязвимости фрагментированных пакетов TCP/IP в маршрутизаторе D-Link, Microsoft ISA Server и им подобных программных средствах.
Аналогична идея синхронной атаки (SYN flooding). (SYN flooding – злонамеренное действие, состоящее в генерировании злоумышленником лавины синхронизирующих символов SYN с целью заблокировать легальный доступ на сервер путем увеличения полуоткрытых соединений к TCP порту). Синхронная атака предполагает наличие ряда условий: начиная от случая, когда атакующий компьютер обладает большей производительностью, чем атакуемый, и заканчивая случаем наличия в сети компьютеров, соединенных скоростными каналами. Этот тип нападения используется главным образом для деградации производительности системы. Синхронная атака реализуется путем посылки запросов на TCP-соединение быстрее, чем система сможет их обработать. Атакованная система расходует ресурсы на отслеживание каждого соединения. Поэтому получение большого количества символов синхронизации может привести к тому, что атакованный хост исчерпает все свои ресурсы и не сможет выделить их новым легальным соединениям. IP-адрес источника, как обычно, подменяется таким образом, чтобы атакованная система не смогла получить ответ на свою посылку второй части трехстороннего представления SYN-ACK (синхронизированное уведомление об успешном приеме данных, генерируемое получателем пакетов). Некоторые операционные системы несколько раз повторно передадут SYN-ACK, перед тем как освободить ресурс и вернуть его системе. Заках (Zakath) написал программу синхронной атаки syn4k.c. Программа позволяет указать в пакете подмененный адрес отправителя и порт системы жертвы синхронной атаки. По соображениям краткости изложения в книге не приведен исходный код программы, но его можно загрузить с www.cotse.com/sw/dos/syn/synk4.c.
Синхронную атаку можно обнаружить различными инструментальными средствами, например командой netstat, результат действия которой показан на рис. 3.1, или с помощью сетевых систем обнаружения вторжения (IDS).
Рис. 3.1. Пример использования команды netstat для обнаружения синхронной атаки
В некоторых версиях операционных систем использование параметра – n команды netstat позволяет отобразить адреса и номера портов в числовом формате, а переключатель -p – выбрать протокол для просмотра. Это дает возможность просматривать не все соединения по протоколу UDP (User Datagram Protocol), а только те из них, которые представляют интерес в рамках определенной атаки. Перед использованием команды ознакомьтесь с описанием команды netstat, установленной на вашей операционной системе, чтобы гарантировать использование правильных параметров.
Добавим, что некоторые операционные системы поддерживают возможность работы с маркерами SYN cookies по протоколу TCP. Использование маркеров SYN cookies позволяет устанавливать защищенные криптографическими средствами соединения (в системах с удаленным доступом использование маркеров подразумевает пароль, порождаемый сервером при первом подключении и отсылаемый пользователю; при последующих подключениях пользователь должен предоставлять серверу этот пароль). При получении символа синхронизации SYN от системы – инициатора обмена система возвращает символы синхронизированного уведомления об успешном приеме данных SYN+ACK, как если бы SYN-очередь в действительности была больше. При возврате системой-инициатором обмена символа ACK обратно системе она вызывает специальную функцию сервера, передавая функции в качестве входного параметра значение 32-битового счетчика времени по модулю 32. Если результат, возвращаемый функцией, соответствует ожидаемому, то используется извлеченный максимальный размер сегмента MSS и восстанавливаются внутренние переменные для правильного поступления SYN-символов в очередь.
Рассмотрим атаки типа smurf или packet, которые обычно инициируются ранее упомянутыми новичками-недоумками. Атаки типа smurf – DoS-атаки из сети, ставящие перед собой цель вывести из строя атакованный хост. Этот тип атак использует маршрутизатор, играющий роль посредника, как это показано на рис. 3.2. Злоумышленник, подменивший исходный IP-адрес на адрес атакуемого хоста, генерирует большое количество эхо-сообщений по протоколу ICMP (Internet Control Message Protocol), создавая тем самым большой поток информации по широковещательным IP-адресам. Маршрутизатор, в данном случае выступающий в роли усилителя smurf-атаки, преобразует широковещательный запрос на IP-передачу к широковещательному запросу уровня канала передачи данных Layer 2 и посылает их дальше. Каждый хост, получив широковещательный запрос, отвечает эхо-сигналом по подмененному IP-адресу отправителя. В зависимости от числа хостов в сети как маршрутизатор, так и атакуемый хост могут быть перегружены потоком информационного обмена, что может привести к снижению сетевой производительности атакованного хоста. В зависимости от числа используемых сетевых усилителей атакованная сеть сможет достичь предела своих возможностей обработки информации.
Рис. 3.2. Схема smurf-атаки
В последнее время появились сетевые распределенные DoS-атаки (DDoS). В их основе лежит та же самая идея, что и в smurf-атаках, хотя средства нападения и метод усиления атаки значительно отличаются. Типы DDoS-атак различаются способом использования клиентов, мастеров и демонов (также называемых зомби). Для того чтобы DDoS-атака стала возможной, специальная программа должна быть размещена на десятках или сотнях системах-«агентах». Обычно кандидаты на роль «агентов» ищутся автоматически среди хостов, которые могут быть cкомпрометированы (например, в результате переполнения буферов во время удаленного вызова процедур (RPC) служб statd, cmsd и ttdbserverd). Затем на скомпрометированные хосты размещается специальная программа – мастер или демон. На них же загружаются специальные программы запуска демонов вместе с программами-генераторами потока пакетов информации, нацеленных на атакуемую систему. Для атаки злоумышленник использует клиента мастера, размещенного на скомпрометированном хосте. Мастер позволяет злоумышленнику управлять демонами. В конечном счете злоумышленник управляет несколькими мастерами, а те – демонами. Во время DDoS-атаки каждый из агентов участвует в создании избыточного потока информации по направлению к атакуемой системе и перегружает ее. Современный набор инструментальных средств DDoS-атак состоит из таких средств, как trinoo, Tribe Flood Network, Tribe Flood Network 2000, stacheldraht, shaft и mstream. Для дополнительного ознакомления о средствах и методах обнаружения демонов и инструментарии DDoS-атак посетите Web-сайт Дэвида Дитриха (David Dittrich): http://staff.washington.edu/dittrich/misc/DDoS.