Рассмотрим сначала типичные атаки на отказ, то есть атаки, что могут осуществляться из одного компьютера.
Прямые атаки
В данном пункте будут описанные атаки, которые могут быть эффективно осуществлены из одного источника. Эти атаки используют определенные особенности построения протоколов сети Интернет. Часто такого рода атаки используются в качестве элементов для конструирования сложных распределенных нападений.
HTTP Flood. Самой популярной и наибольшей компонентой сети Интернет является World Wide Web(www) - или Всемирная Паутина. www-программы, как правило, используют протокол Hypertext Transfer Protocol (HTTP), который инициирует запрос путем установления Transmission Control Protocol (TCP) соединение с определенным портом(как правило 80 порт). Из-за этого большинство защитного программного обеспечения оставляют TCP порт 80 открытым для свободного прохождения HTTP трафика. Широкая распространенность WWW систем сделала HTTP чудесной мишенью для нападающих. Собственно говоря, атака HTTP flood связана с бомбардировкой Веб сервера обычными HTTP запросами. Согласно недавним исследованиям [11], HTTP flood атака входит в функциональный набор абсолютного большинства ботнет. Для того, чтобы послать HTTP запрос необходимо сначала установить действительное TCP соединения, которое требует наличия действительной IP адреса. Нападающий здесь может использовать IP адрес ботов. Более того, нападающий может сконструировать особенный запрос для увеличения силы атаки или для того, чтобы избежать выявления. Например, выдать боту инструкцию послать HTTP запрос на загрузку большого файла. Тогда компьютеру жертвы необходимо считать этот файл из диска, загрузить в память, загрузить в пакеты и посылать их в ботнет. Следовательно, даже простой HTTP запрос может привести к значительной загрузке процессору, памяти, устройств вводу/вывода и линии соединения из Интернет. Однако такое поведение трафика, как в предыдущем примере является подозрительной. Повторные запросы на загрузку могут быть выявлены и блокированы. Более сложной стратегией является имитация обычного трафика. Нападающий может задать ботам программу пересылки HTTP запросов, анализа ответов и рекурсивного открытия ссылок. В этом случае HTTP запросы от атакующей сети очень подобные на нормальный веб трафик, что усложняет фильтрацию атак этого типа.
|
ICMP атаки. В атаках этого типа используются особенности реализации протокола ICMP. Поскольку этот протокол является внутренним механизмом поддержки работоспособности IP- сетей, то он естественно вызывал повышенное внимание нападающих. Выделяют [12] несколько типов. Первый тип - атака разрыва соединения (connection - reset attacks) использует ICMP- сообщения, которые сигнализируют о фатальной ошибке и вызывают к прекращению TCP- соединение. Если нападающий сфальсифицирует такой пакет и пошлет его жертве, то ее соединение с сервером будет разорвано. Для формирования такого пакета ему нужно знать IP адреса жертвы и сервера, порт и уникальное число, которое идентифицирует соединение. Для подбора последней величины ему достаточно послать всего 65536 пакеты. Эта слабость была выявлена 13 марта 2005 года и зацепила большое количество операционных систем, маршрутизаторов. В частности, Windows XP, Windows 2000, Windows 2000 Server, Windows 98. Второй тип [13] заключается в сужении пропускной способности (throughput - reduction attacks), при этом используются ICMP- сообщения, которые требуют от источника уменьшения пропускного канала. Это служебные пакеты, которые посылаются сетью в случае ее перегрузки. Для их подделки используется аналогичный вышеприведенному набор параметров. Наконец третий тип [13] связан с пакетами ICMP, которые отвечают за допустимую фрагментацию пакетов. Посылая сфальсифицированный пакет в адрес источника нападающий добивается ситуации когда большой файл посылается мизерными кусочками, что, конечно, снижает скорость передачи.
|
SYN Flood. Перед тем как перейти к описанию SYN flood атаки нужно вспомнить последовательность установления TCP соединений. TCP соединения устанавливается между клиентом, который инициирует соединение и сервером, который получает запрос. В начале каждого TCP соединения клиент обращается к серверу для выполнения процедуры, которая называется тройное рукопожатие (a three - way handshake) [14]. Во-первых, клиент посылает серверу SYN пакет, спрашивая о соединении. Потом сервер отвечает на запрос пакетом SYN - ACK и хранит информацию о запросе на соединение в стеке памяти. Структуры, которые создаются в памяти, как правило, достигают 280 Байт. В этот момент времени соединение находится в полуотворенном состоянии, или в состоянии SYN RECVD(ожидание). Для предупреждения исчерпания ресурсов каждая операционная система имеет определенный лимит соединений, которые могут находиться в состоянии SYN RECVD. По получении SYN - ACK пакета клиент подтверждает свой запрос с помощью пакета ACK. Когда сервер получает пакет ACK он проверяет стек в поисках соединения, которое подтверждается этим пакетом. Если такое соединение существует, то оно переводится из состояния SYN RECVD в состояние ESTABLISHED(установленное). После этого тройное рукопожатие завершено и начинается передача данных. Кроме описанного "естественного" способа удаления соединения, которое находится в состоянии SYN RECVD также можно послать пакет RST(рестарт) или ожидать пока время ожидания превысит определенный лимит, отведенный на установление соединения. Атака SYN flood использует уязвимости TCP тройного рукопожатия, а именно, ту особенность, что сервер должен размещать в памяти данные для любого входного SYN пакета, независимо от его аутентификации. При проведении SYN flood атаки нападающий посылает SYN пакеты с сфальсифицированной IP адресом, то есть указывает IP адрес, которого не существует. В этом случае во время выполнения тройного рукопожатия сервер помещает запрос на соединение в память и ожидает в подтверждение запроса от клиента. Поскольку сфальсифицированного нападающим адреса может просто не существовать, то пакетов подтверждения сервер не получает и запрос остается в памяти в течение определенного времени. За короткое время эти запросы заполняют стек памяти, который предназначен для их хранения (как правило его объем не очень большой). В результате новые запросы на соединение от пользователей не могут быть обработаны и сервисы системы оказываются заблокированными. Возможной модификацией этой атаки (стойкой к фильтрации адресов) является ситуация, когда атака осуществляется из ботов с использованием действительной IP адреса. При этом система настраивается игнорировать SYN/ACK пакеты жертвы. SYN floods остается одним из наиболее мощных методов поглощающих атак.
|
ACK Flood. ACK Flood это путь обойти защита от SYN flood атаки. Большинство сетей настроено на защиту от атаки SYN пакетов, в то время как ACK пакеты могут беспрепятственно проходить через сеть. Это создает дополнительные возможности по загрузке ресурсов жертвы, поскольку получив пакет ACK, система должна выполнить поиск соответствующего ему TCP соединения. Не найдя такого (поскольку нападающий и не пытался его установить) система отвечает пакетом RST. Таким образом ресурсы целые загружаются приемом и посланием пакетов.
Reset(RST) Flood. Атаки типа SYN flood используют уязвимости установления соединения. В отличие от них, атаки RSR Flood направлены на уже установленные соединения. Пакеты с меткой RST используются для переустановления соединения (например в случае когда на одной из машин случился сбой). Если две машины С и В обмениваются данными через установленное соединение, и нападающий А решает атаковать С, то для осуществления атаки ему нужно вычислить/подобрать правильное число идентификации соединения (при разрыве соединения подтверждения пакетом АСК не используется). Теперь нападающий может прервать соединение В и С путем послания сфальсифицированного пакета. Более того, он может загружать машину пакетами от имени В поскольку С не подозревает, что соединение разорвано.
FIN Attack. Атака FIN attack использует пакеты FIN, которые отвечают за окончание TCP соединения. Нападающий пытается установить серию новых соединений и сразу по установлении закрыть их, не послав никаких данных. Идея заключается в том, чтобы загружать сервер большим количеством соединений. Преимущество этой атаки для атакующего заключается в том, что поскольку на пакет FIN машина должна ответить пакетом ACK он может сразу определить или успешные его действия.
WinNuke. Одним из первых и классических случаев эксплойтной атаки на отказ является WinNuke, который появился 7 мая 1997 года. Автор метода разместил описание и текст программы на нескольких сайтах новостей, что обусловило быстрое его распространение. Первой жертвой стал сервер www.microsoft.com, который был недосягаем для пользователей с 9 по 12 мая. Конечно, что и много других серверов, которые работали на системе Windows NT также стали жертвами атак. Сущность WinNuke очень простая. Рядом с обычными данными стандарт включает возможность пересылки по TCP- соединению и срочных (Out Of Band, OOB) служебных данных. На уровне форматов пакетов TCP это выражается в ненулевом значении соответствующего поля (urgent pointer). Большинство компьютеров, которые работают под Windows используют протокол NetBIOS, которому для работы нужно три IP- порты: 137, 138, 139. Оказалось, что если соединиться из Windows - машиной через 139 порт и послать туда несколько байт OOB- данных, то NetBIOS не зная как их обрабатывать просто подвесить машину. Под действие этой атаки подпадают системы Windows 95, Windows NT до 4.0.
Ping of Death. В этой атаке используется особенности реализации протокола ICMP. Поскольку этот протокол является внутренним механизмом поддержки работоспособности IP- сетей, то он естественно вызывал повышенное внимание нападающих. Особенность заключается в том, что ICMP- пакеты имеют определенные привилегии в обработке, потому ping большого размера может парализовать работу компьютера или даже всей сети. Существует много реализаций программ, которые используют эту ошибку: Ping of Death, SPing, Jolt, SSPing, IceNuke, IcePing, и другие. Как оказалось, Windows- системы неадекватно реагируют на получение сильно фрагментируемого ICMP- пакета (кусочками к одному килобайту) большого размера(немного больше 64 килобайт). Реакция заключается в полном повисании компьютера. В конце июня 1997 года жертвой Ping of Death стал сервер Майкрософт. В отличие от WinNuke жертвами этой атаки могут стать не только Windows-системы но и Mac OS и некоторые версии Unix.
Teardrop. Данный тип атак на отказ использует эксплойт реализации протокола, согласно которому если пакет слишком большой для обработки, то он должен разбиваться на два фрагмента. Эти фрагменты содержат информацию об относительном смещении начала второго пакета. При приеме пакетов система прорабатывает информацию о смещении и формирует целый пакет. При атаке teardrop нападающий подделывает значение смещений второго или следующих пакетов и приводит к тому, что длина пакета становится менее за нуль или в машинной логике очень большим числом. Это приводит к копированию огромного блока памяти, которая затирает системные области. После появления атаки Teardrop возникло несколько модификаций, которые были способны пробивать Windows NT с установленным патчем от обычного Teardrop. Наиболее известны из них Bonk(Boink), NewTear, SynDrop. Указанные атаки могут применяться против систем Windows 3.1/95/NT, Linux(до 2.0.32 и 2.1.63).
LanD. Следующий метод атаки, который называется lanD известен тем, что в свое время поражал большое количество систем. Кроме Windows NT, под его действие подпадали Mac OS и много вариантов Unix(от бесплатных к коммерческим), и такие экзотические системы, как QNX и BeOS, и даже аппаратные маршрутизаторы (в том числе Cisco и 3Com). Суть атаки land заключается в следующем: при установлении TCP соединения ссылается SYN- пакет с адресом отправителя, который совпадает с адресом. Пакет ссылается на любой открытый порт. Реакцией Windows- компьютера на land является полное зависание. Атака была эффективна против операционных систем Windows 9х/NT. В 2005 году была выявленная уязвимость в системах Windows XP и Windows 2003 Server, которая привела к появлению модификации атаки lanD - Remote LanD.