На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Denial of Service

Вотличие от многих моделей атак, описанных в этой книге, атаки отказа в обслуживании (Denial of Service, DoS) не направлены на взлом пользовательских учетных записей или на получение сохраненных данных. Цель этих атак— заблокировать для легитимных пользователей доступ к системным службам. Таким образом, атаки отказа в обслуживании не нарушают конфиденциальности или целостности системы, они влияют на доступность системы. Атаки DoS могут иметь самые разные формы, от создания условий недостатка ресурсов (resource starvation), в результате чего все попытки пользователей обратиться к узлу остаются безрезультатными, до использования отдельных, специальным образом сформированных пакетов, несовместимых со стандартами RFC, получение которых приводит к выходу системы из строя. В некоторых ситуациях атаки отказа в обслуживании могут являться подручным средством для взлома системы, если для завершения работы какой-то программы атаки требуется перезагрузка атакованной машины. Например, если злоумышленник поместил вредоносный код в один из каталогов автозагрузки сервера Windows, он может использовать атаку отказа в обслуживании для перезагрузки системы, в результате которой будет выполнен его код (список мест, где можно спрятать такой код, приведен в главе 9, "Сокрытие следов").
В настоящее время в Internet атаки отказа в обслуживании стали жестокой реальностью, и ситуация только ухудшается. В феврале 2000 года появился еще один ужасный вариант атаки отказа в обслуживании — распределенная атака отказа в обслуживании (Distributed Denial of Service, DDoS), при которой огромное количество чужих компьютеров используется для создания наводнения пакетами избранной цели атаки, что блокирует доступ к атакованному узлу обычным пользователям. При серьезной предварительной подготовке хакера, когда он получает я свое распоряжение значительное число коммерческих Internet-узлов, общий эффект распределенной атаки отказа в обслуживании значительно усиливается благодаря доступу к ресурсам взломанных систем. Тяжелый удар по таким узлам электронной коммерции, как Amazon. com, eBay, Yahoo. com, и некоторым другим, выбил их из нормального режима работы на два дня, пока продолжалась атака, а операторы узлов оказались бессильны.
Атаки отказа в обслуживании широко используются и против систем семейства Windows NT. Осенью 1999 года компания Microsoft создала оастер из бета-серверов Windows 2000 в сети Internet в домене windows2 000test. com. Назначение серверов было одно: "взломайте нас, если сможете". Через несколько недель серверы, которые так и не поддались взлому на уровне операционной системы, были убраны (зато хакеры отличились в Web-приложении Guestbook, гостевой книге, которая хранилась на входных серверах). Тем не менее, на некоторые промежутки времени в ходе тестирования домен windows2000test. com становился недоступным по причине массированных атак отказа в обслуживании (возможно, DDoS-атак). К счастью, команда, которая занималась разработкой стека TCP/IP для Windows 2000, смогла проанализировать результаты этих атак и, как будет видно из данной главы, следующие версии Windows были значительно усовершенствованы благодаря приобретенному опыту.
Хотя атаки отказа в обслуживании не зависят от платформы, по вполне понятным причинам в этой главе мы остановимся на системе Windows Server 2003. Будут рассмотрены удаленные атаки отказа в осблуживании по сети, поскольку именно они представляют наибольшую опасность для корпоративных вычислительных систем. Хотя локальные атаки отказа в обслуживании тоже довольно опасны, при возможности интерактивного подключения по сети доступно множество способов остановить работу системы Windows Server 2003. Еще хуже, если непрошеный гость может войти в вашу систему Windows Server 2003, т.е. проблем может быть значительно больше, чем при атаке отказа в обслуживании. Мы настоятельно рекомендуем читателям, желающим получить более подробную информацию об атаках отказа в обслуживании, обратиться к главе 12, "Хакинг программы Terminal Server", книги Секреты хакеров. Безопасность сетей — готовые решения, четвертое издание, в которой описаны атаки отказа в обслуживании во всех аСПеК-тя Y ттгсо nri*Y лгтг"пя|тилиш.1¥ лмгт^и и anrTQriaTiJI.fv гтчтуЬглли
намнетку
I Не забывайте, что системы под управлением Windows могут оказаться под ударом атак отказа в обслуживании в результате действия вредоносных "червей". Например, 24 января 2003 года "червь" Slammer организовал атаки отказа в обслуживании во многих сетях на несколько суток, а "червь" Blaster направил тысячи взломанных хостов (использовапось уязвимое место MS03-26) на атаку одного корпоративного сайта 16 августа 2003 года.
Исходя из нашего опыта, в стандартной организации для серверов Windows обычно устанавливается сетевое оборудование, которое выполняет распределение сообщений. Например, "червь" SQL Slammer продемонстрировал, что даже при наличии 1% зараженных систем в сети достигается достаточное
в обслуживании для Windows 2003
Хотя операционная система Windows имеет яркую историю обнаружения уязвимых мест, которые позволяли проводить знаменитые атаки отказа в обслуживании, например Land, Latierra, ООВ и Teardrop, уже в системе Windows 2000 приняты меры против всех известных атак, для многих из которых были внесены исправления в пакетах обновления системы NT4. Судя по опыту авторов этой книги, которые проводили проверки на подверженность атакам отказа в обслуживании крупных корпораций и провайдеров, почти ни одна программа для DoS-атаки не смогла нанести серьезного ущерба системе Windows 2000 или системам под управлением более новой версии Windows (мы использовали для запуска наборов атак против систем под управлением Windows 2000 такие распространенные пакеты для проведения атак отказа в обслуживании, как toast, targa3 и datapool, и обычно все заканчивалось безрезультатно). В данном разделе будут описаны виды атак отказа в обслуживании, эффективные против Windows-систем.
Наводнение SYN-пакетами



Популярность
S


Простота
9


Опасность
10


Степень риска
9


Также известная под названием атака таблицы процессов, атака наводнения ТСР-соединениями {TCP connect flood) очень хорошо соответствует своему названию: создается столько соединений TCP с атакуемым сервером, сколько возможно, и до тех пор, пока сервер не перестанет обслуживать новые запросы по причине недостатка ресурсов. Наводнение TCP-соединениями — это атака, стоящая на ступеньку выше, чем популярная атака наводнения SYN-пакстами , поскольку в данном случае выполняется полная процедура установки со-. единения, и сокеты на атакуемом сервере остаются в состоянии ESTABLISHED (соединение установлено). В конечном счете в процесс вовлекается столько сокетов, что система уже не в состоянии устанавливать новые соединения, независимо от доступной памяти, полосы пропускания, скорости центрального процессора и других факторов. Это действительно серьезная атака, от которой почти невозможно защититься, если в системе существует хотя бы одна
ожидающая подключения служба, доступная злоумышленнику (это может быть служба hello, WWW, TCP-порт80 итл.).
Мы хотим выделить этот момент еще раз — нет никакого средства защититься от потока доггустимых TCP-соединений. В отличие от наводнений SYN-пакетами или других атак, не существует сигнатуры пакета, по которой можно было бы организовать фильтрацию на границе сети. Для защиты от наводнения ТСР-соедине-ниями можно установить блокировку конкретного адреса или сети (отправителя сообщений) или создать задел прочности для приема входящего трафика.
Вероятно, вы знаете, что в хакерском сообществе создана программа с удобным графическим интерфейсом для реализации атаки этого типа. Программа называется Portf***, звездочками здесь обозначены последние три буквы одного плохого слова на букву F. Как видно из 1, программа Portf*** легко настраивается на атаку наводнения фиктивными TCP-со единения ми одного порта по определенному IP-адресу. Программа Portf*** будет запущена с задержкой на 1 мс, за это время проверяется подключение всех необходимых функций. Для эффективной атаки на компьютер с высокой производительностью необходимо направить на эту мишень две или три мощные машины, поскольку открытие большого количества соединений приводит к недостатку ресурсов и на машине злоумышленника. Мы заметили, что во время проведения атаки взаимодействие клиентов с атакующей системой затрудняется до тех пор, пока работа программы Portf*** не будет приостановлена.
Один из возможных методов обхода этого ограничения при тестировании на подверженность атакам отказа в обслуживании собственных серверов — создание ложного IP-адреса для каждого соединения. Подложный IP-адрес должен существовать в локальной подсети, чтобы злоумышленник мог использовать при ответе на ACK-запрос механизм обмана протокола ARP и передавать последний пакет АСК для завершения установки соединения. Атакуемый компьютер будет считать, что создано соединение с компьютером, которому принадлежит подложный IP-адрес, а поскольку операционная система хакера не хранит информации о состоянии подложного TCP-соединения, то в ней не возникнет состояние отказа в обслуживании. При такой атаке лучше всего использовать IP-адреса несуществующих машин, иначе системы будут возвращать пакеты TCP Reset (RST) при получении незатребованных пакетов SYN-ACK (благодарим Дэвида Вонга (David Wong) и Майка Шему (Mike Shema) из компании Foundstone за помощь при рассмотрении этой концепции).
на заметку
Меры противодействия наводнениям ТСР-соеди нения ми рассматриваются ниже в этой главе в разделе "Рекомендации по защите от атак отказа в обслуживании".
Атаки отказа в обслуживании на уровне прикладных
служб
Популярность 5

Простота 5

Опасность 8

Степень риска 6

-
■ ■
Хотя большинство атак направлены на низкоуровневые ресурсы атакуемого сервера, не забывайте о том, что почти любая ошибка программирования может стать причиной возникновения уязвимого места для атак отказа в обслуживании. Особенно уязвимы к подобными атакам широко распространенные службы, такие как сервер IIS.
В середине 2001 года системы Windows 2000 пострадали от того, что подобные ошибки были обнаружены в службах, устанавливаемых по умолчанию, в том числе в протоколе WebDAV из 11S и сервере telnet. Рассмотрим проблему с протоколом WebDAV, чтобы проде­монстрировать возможный ущерб от атаки отказа в обслуживании против прикладных служб (атаку отказа в обслуживании против службы telnet мы оставим без внимания, поскольку служба telnet ни в коем случае не должна быть открытадля непроверенных сетей).
Атака отказа в обслуживании с использованием протокола WebDAV Propfind была разработана Георгием Гунински (Georgi Gunninski). По существу, в ней используется наводнение по протоколу WebDAV запросами XML со слишком длинными значениями, которые вызывают перезапуск службы 115. Ниже показан примерный формат неверного запроса.
PROPFIND / HTTP/1.1 Content-type: text/xml Host: 192.166.234.222 Content-length: 3 8127 <?xml version="1.0-?>
<a:propfind xmlns:a="DAV:" xmlns:u=Mover I"> <a:prop><a:£Iisplayname />'<И: [буфер]/></а:ргор> </a:propfind>
Блок данных {буфер\ должен иметь длину больше 128008 байтов. На первую передачу такого запроса HS-сервер отвечает сообщением об ошибке HTTP 500. После второго запроса происходит перезапуск службы W3SVC. Естественно, если серверу IIS 5.0 передавать такие гшры запросов непрерывно, то система не сможет должным образом обрабатывать нормальные запросы Web. Георгий создал сценарий на языке Perl, nporpaMMyw5.pl, которая передает два запроса, достаточные для одной перезагрузки этой Web-службы.
Очевидно, что с точки зрения функциональности, такое поведение программы нежелательно, но это пригодится в случаях, когда нужно перезапустить Web-службу, чтобы реализовать другую атаку. Например, это может быть программа атаки для расширения привилегий учетной записи IUSR, для проведения которой требуется создать заново маркер доступа учетной записи. Для таких задач можно успешно использовать атаку отказа в обслуживании протокола WebDAV Propfind.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика