Типы DDoS-атак
С каждым годом их становится все больше. Поэтому мы решили написать эту статью и рассказать о множестве DDoS-атак, с которыми вы, вполне возможно, никогда не столкнетесь, но все же должны знать, что они существуют. Начнем!
Zero Day DDoS
Это название придумали для описания новых DDoS-атак, которые используют определенные уязвимости, о которых раньше никто не слышал. Обычно их можно устранить теми или иными патчами.
Типы UDP-атак
DNS Flood
О, это, пожалуй, самая известная и распространенная DDoS-атака, с которой вы могли сталкиваться в сети. Это атака типа UDP-флуд, направленная на DNS-серверы. Ее так часто используют потому, что ее трудно обнаружить, не говоря уже о том, чтобы предотвратить. Как она выполняется? Хакер отправляет огромное количество поддельных DNS-запросов, которые трудно отличить от настоящих. Теперь умножьте это на тысячи IP-адресов, и вот вам результат.
Ваш сервер не может понять, какие запросы легитимные, а какие нет, поэтому у него заканчиваются ресурсы для обработки этих запросов и он падает.
UDP Flood
Название говорит само за себя. Атака направлена на сервер и использует UDP-пакеты (кто бы сомневался). Если DNS-флуд истощает оборудование, то UDP-флуд истощает пропускную способность. UDP-трафик очень удобен для злоумышленников, поскольку его не нужно проверять серверу и клиенту, как TCP-трафик. По сути, на сервер постоянно отправляется большое количество поддельных или замаскированных UDP-пакетов. Их маскируют для того, чтобы обратные ICMP-пакеты не дошли до их хоста, а также чтобы анонимизировать атаку.
Direct UDP Flood
Direct UDP Flood использует другой подход. Если обычный UDP-флуд, как правило, использует подмену адресов, то прямой нет. Это дает злоумышленникам определенные преимущества, поскольку трафик, идущий через ботнет, может быть помечен как легитимный, что затрудняет его обнаружение атакуемой стороной. Как и в случае с UDP-флудом, главная цель - полностью исчерпать ресурсы сервера.
UDP Fragmentation Flood
Довольно интересная разновидность UDP-флуда - его фрагментированная версия. Как и прямой UDP-флуд, она имитирует работу легитимного трафика, который держится в пределах лимитов. Поэтому ее очень трудно обнаружить: пакеты довольно большие, но при этом фрагментированные. Пропускная способность истощается еще сильнее. Представьте, что у вас есть части трех разных пазлов, вы получаете разные части каждого из них, но не можете понять, какая деталь от какого пазла. Теперь умножьте это на тысячу пазлов, и вы поймете, как чувствует себя ваш сервер под атакой UDP Fragmentation Flood. Неприятная штука.
VoIP Flood
Мы решили отнести эту атаку к UDP, поскольку она использует UDP-пакеты для флуда VoIP-серверов. Поддельные запросы, которые обычно отправляются с огромного пула IP-адресов, сильно перегружают сервер. Проблема с VoIP в том, что очень трудно понять, какой трафик настоящий, а какой нет. Производительность сервера серьезно страдает, что приводит либо к его медленной работе, либо к перезагрузке.
ICMP Flood и его типы
ICMP Flood
ICMP использует тот же метод, что и UDP. В нем нет сквозного процесса обмена данными, что делает его потенциальной альтернативой UDP Flood. Как и в случае с UDP, злоумышленник отправляет большое количество ICMP-пакетов с многочисленных ботов с разными IP-адресами. В результате система не может обработать все эти запросы, что приводит к перезагрузке сервера или существенно снижает его производительность.
ICMP Fragmentation Flood
Еще одна разновидность предыдущего флуда - его фрагментированная версия. Как и в случае с UDP, злоумышленник просто разбивает ICMP-пакеты на мелкие части и перегружает сервер, отправляя не связанные между собой части разных пакетов. Обычно сервер может с этим справиться, но только в определенном объеме. Если этот объем превышен, сервер падает.
Ping Flood
ICMP flood версии 2.0 называется Ping Flood. Те же поддельные запросы, направленные на приложение. Представьте, что вы пингуете любой сервер. Вы спрашиваете сервер: «Какая задержка между нами?», и сервер обычно отвечает на это от 5 до 10 раз. А теперь представьте, что то же самое спрашивают 100000 человек. Если у оборудования достаточно ресурсов, оно справится, а если нет, сервер падает. Трафик от ping flood очень трудно распознать, поскольку его тоже могут считать легитимным.
Уровень протоколов
NTP Flood
NTP, или Network Time Protocol (протокол сетевого времени), изначально разработали для синхронизации времени между часами и компьютерами. По сути, компьютер запрашивает у главного сервера текущее время и синхронизирует с ним собственные часы с помощью системы пакетов. Это еще один способ, которым злоумышленник может атаковать ваш сервер, если на нем работает протокол NTP, а его использует практически каждый сервер. В итоге эти поддельные запросы используются для отправки UDP-флуда на цель. Когда сервер пытается разобраться, что к чему, он в итоге падает от переполнения данными.
CharGEN Flood
О, это настоящий старожил. Упомянем его просто ради истории. Еще в 1984 году этот протокол разработали как Character Generator Protocol, и его использовали как источник потока байтов для отладки сетевого кода TCP. Сейчас в современных системах он заблокирован по умолчанию, так что если вам попадется система, где он работает, поздравляем! Вы нашли реликвию прошлого. Когда-то он был довольно распространен на сетевых принтерах, копировальных аппаратах и других устройствах, но сейчас эта брешь в безопасности ликвидирована. Изначально злоумышленник просто атаковал порт 19 и отправлял через него UDP-флуд.
SNMP Flood
SNMP, или Simple Network Management Protocol (простой протокол сетевого управления), - это протокол для управления информацией об устройствах в IP-сетях, ее сбора и изменения. Это еще один тип флуда, который можно усилить (амплифицировать), то есть злоумышленник может нанести больший вред меньшими ресурсами. Этот вариант выгоднее, поскольку эффект усиления значительно больше, чем у DNS или CharGEN Flood. По сути, атака направлена на устройства, работающие с этим протоколом, и отправляет флуд с его использованием.
SSDP Flood
Simple Service Discovery Protocol, или протокол SSDP, используется для объявления и обнаружения сетевых сервисов и информации о присутствии, но без использования DHCP или DNS. Обычно его используют в небольших офисах, где оборудование имеет доступ к протоколу UPnP (Universal Plug n' Play). В 2014 году это привело к DDoS-атаке на такие устройства: на них отправляли пакеты с поддельным IP-адресом цели, что вызывало падение серверов.
Уровень HTTP
HTTP Flood
Злоумышленники, использующие HTTP Flood, перегружают сервер запросами GET и POST. GET-запросы не отнимают у сервера слишком много ресурсов. Это может быть запрос на показ определенных изображений или другого статического контента. С POST-запросами дело обстоит иначе, поскольку обычно они просят сервер что-то обработать, например найти определенное значение в базе данных или выполнить какие-либо операции с информацией. HTTP Flood не требует подмены IP-адресов, поэтому для начала атаки требования ниже.
Fragmented HTTP Flood
HTTP Flood всегда выполняется с помощью ботов с действительными IP-адресами, поскольку их захватили троянские вирусы. Так что до атаки они «спали» и даже не знали, что их ресурсы будут использованы в DDoS-атаке. Фрагментация позволяет злоумышленнику растянуть атаку до грани тайм-аута. Это позволяет поддерживать соединение длительное время, прежде чем сработает какая-либо защита. Например, если вы используете Apache, в нем нет специальных механизмов тайм-аута, которые могли бы помочь, поэтому хакеры активно этим пользуются.
Single Request HTTP Flood
Со временем программисты и системы защиты от DDoS поняли, как противодействовать атакам из множества входящих пакетов, поэтому хакеры решили найти обходной путь. Так появилась еще одна лазейка, о которой мы сейчас расскажем.
Все сводится к манипуляциям с пакетами. А что, если создать несколько GET/POST-запросов в одной HTTP-сессии? Так можно, но это может считаться несколькими пакетами. Злоумышленники нашли способ объединить это в один пакет. Так злоумышленник маскируется под легитимного пользователя, и его очень трудно отследить.
Single Session HTTP Flood
Довольно старый метод, который можно реализовать в HTTP 1.1, отправляя запросы в рамках одной HTTP-сессии. Он помогает злоумышленникам обойти ограничения на количество разрешенных сессий, которые устанавливают механизмы защиты от DDoS.
Recursive HTTP GET Flood
Довольно интересная атака, использующая GET-запрос. Хакер запрашивает несколько веб-страниц и получает информацию о них. После этого он начинает анализировать каждый объект на странице и отправлять рекурсивные запросы для каждого объекта на сайте. Ее очень трудно отследить, поскольку эти запросы выглядят легитимными.
Random Recursive GET Flood
Разновидность предыдущей атаки, направленная в основном на блоги, сайты с последовательными страницами или блоги. Как и HTTP GET Flood, она проходит по страницам, а затем начинает отправлять случайные запросы. Дело в том, что, чтобы выглядеть легитимным пользователем, злоумышленнику нужно выбирать случайные страницы, а затем случайные числа со страницы, чтобы каждый раз отправлять новый GET-запрос. В итоге это приводит к низкой производительности сервера вплоть до его перезагрузки или падения.
ACK & SYN
ACK & PUSH Flood
Для начала разберемся, что такое ACK. ACK - это флаг, который показывает серверу или клиенту, что данные успешно получены. Например, клиент спрашивает, получил ли сервер отправленную форму, и сервер дает ответ ACK, сообщая клиенту: все в порядке, я получил. Как же работает эта атака?
Злоумышленник может отправлять серверу разную информацию и устанавливать флаг ACK, чтобы сервер сообщил, что получил эту информацию.
Флаг PUSH делает обратное. С помощью пакетов он просит сервер обработать для него определенную информацию.
Такие запросы потребляют больше ресурсов, чем предыдущие атаки, и имеют более высокий приоритет по сравнению с другими, поскольку не относятся ни к одной сессии из списка соединений сервера. В результате сервер обрабатывает эти запросы первыми, а запросы из списка соединений последними, что приводит к падению сервера.
ACK Fragmentation Flood
Эта разновидность ACK-флуда использует небольшое количество пакетов максимального размера, примерно 1500 байт. Основная цель здесь - исчерпать пропускную способность сети цели. Этот флуд довольно коварен, поскольку он может легко пройти через ваше сетевое оборудование, например маршрутизатор или брандмауэр, если не применены фильтры на уровне приложений, ведь для них эти пакеты могут выглядеть легитимными. Обычно такие пакеты содержат мусорные данные, ведь злоумышленнику нет смысла вкладывать туда какую-либо информацию: его цель - просто исчерпать пропускную способность.
SYN Flood
SYN - это название запроса на соединение через TCP. Когда клиент пытается подключиться к серверу через TCP (например, при установке соединения HTTP или HTTPS), он должен сначала пройти трехстороннее рукопожатие, прежде чем станет возможен обмен данными между клиентом и сервером. Поскольку инициатором трехстороннего рукопожатия TCP всегда является клиент, он сначала отправляет серверу пакет с флагом SYN.
При атаке TCP SYN Flood злоумышленники интенсивно отправляют на сервер большое количество SYN-пакетов с поддельными IP-адресами. Это вынуждает сервер реагировать, отправляя пакет SYN-ACK в ответ на каждый такой ложный запрос, выделяя определенные ресурсы и оставляя свои порты «полуоткрытыми» в ожидании многочисленных ответов (пакетов с флагом ACK) от хостов, которых на самом деле не существует, а значит, они и не отправят подтверждений.
SYN-ACK Flood
Мы уже говорили о трехстороннем рукопожатии. Этот тип атаки направлен на хост. Когда злоумышленник отправляет SYN-пакет, хост генерирует соответствующий ACK-пакет. Сервер не может понять, почему он получает такие пакеты вне очереди легитимного трафика, и пытается разобраться в них и обработать их. В итоге все это приводит к тому, что сервер слишком занят, чтобы обрабатывать трафик, который должен обрабатывать, и это заканчивается перезагрузкой или падением сервера.
RST/FIN Flood
Мы рассказали о флудах типа SYN и о том, как они работают. После закрытия каждой TCP-SYN-сессии должен произойти обмен пакетами RST или FIN. Когда начинается RST или FIN Flood, сервер начинает получать поддельные и фальшивые пакеты, не связанные ни с одной из сессий, которые сейчас есть на сервере. Как и в случае с SYN-ACK flood, сервер не может понять, откуда они берутся, тратит много времени на их обработку и в итоге не справляется.
Уровень IP
Fake Session Attack
Этот тип атаки не использует поддельные IP-адреса, а вместо этого использует реальные IP-адреса ботов, выполняющих атаку. Между сервером и ботом создается сессия TCP-SYN. Атака построена так, что благодаря задержке ACK-пакетов сессия завершается по тайм-ауту. Пустые сессии начинают истощать сервер, и он в итоге падает или работает довольно плохо.
IP Null Attack
Согласно RFC, каждый заголовок IPv4 должен содержать информацию об используемом транспортном протоколе. Название null-атаки происходит от «нуля», который злоумышленники вписывают в это поле. Это означает, что такие пакеты обойдут маршрутизаторы или брандмауэры, поскольку они не определены или не категоризированы. Сегодня это значение зарезервировано для IPv6 Hop-by-Hop Option, но это не значит, что каждый современный сервер действительно может обработать такой тип пакетов. Теперь умножьте это на тысячи, и сервер падает.
Атаки на уровне приложений
Атаки на уровне приложений - это атаки, направленные на определенные уязвимости. Одна из самых популярных целей - серверы с различными CMS, например WordPress, Drupal или Joomla. Конечно, эти компании всегда закрывают бреши в безопасности, но хакеры время от времени находят определенные уязвимости. Другой вариант - атаковать базы данных жертвы с помощью SQL-инъекций. В итоге сервер не может справиться с фальшивыми запросами и падает. Убедитесь, что вы используете последние версии CMS и что вашу базу данных администрируют профессионалы.
Атака Application Misuse
Такую атаку можно провести не против любого бизнеса. Жертва должна хостить что-то, что генерирует много трафика, и иметь другой сервер, куда весь этот трафик может направляться. Это напоминает несколько речных русел, которые вы вручную перенаправляете на целевой сервер жертвы, чтобы он упал. Способ положить сервер остается прежним: перегрузить его избыточным трафиком. Главная проблема в том, что трафик действительно легитимный, поскольку серверы пытаются установить законное соединение.
Заключение
Мы постарались охватить большинство DDoS-атак, с которыми вы можете столкнуться. Безусловно, несколько из них мы могли упустить, но, думаем, вы получили общее представление о том, какие бывают DDoS-атаки. Если вы хотите защитить свой сервер от таких атак, смело спросите нашу команду в LiveChat. Спасибо за ваше время!