Многофакторные и многоцелевые DDoS-атаки уже давно стали реальностью. Сейчас за базовым уровням флуда (исчерпания ресурсов сервера или канала) может последовать вполне интеллектуальная атака на перебор паролей или использование серверных уязвимостей. И отследить такую атаку, чтобы оперативно защититься от нее или от ее последствий, может быть малореально.
Уходящий год ознаменовался трендом на использование уязвимостей нулевого дня для осуществления DDoS-атак (Heartbleed, Shellshock, POODLE), поэтому общий вектор сместился с уровня приложений на транспортный уровень (TCP/IP/SSL). И по прогнозам, этот тренд сохранится в 2015 году.
Но погрузимся в историю: как индустрия дошла до такой жизни?
Этап первый: HOIC
Большая орбитальная ионная пушка (High Orbit Ion Cannon, HOIC) была одним из первых инструментов, автоматизировавших «умные» DDoS-атаки. Она позволила злоумышленникам максимально автоматизировать маскировку вредоносных запросов под полезную нагрузку, заставляя периметр защиты пропускать флуд (вредные запросы), потому что он был идентичен нормальным запросам. И распознать по первичной информации (передаваемым заголовкам), является ли запрос вредным (от злоумышленника) или полезным (от потенциального клиента), не было никакой возможности.
Против такого оружия в ход пошли сначала редиректы (перенаправления на другие страницы сайта), которые не поддерживались этим инструментом, а потом редиректы с установлением Cookie. Это позволило гарантированно пропускать только «настоящих» пользователей. Но ненадолго.
Этап второй: JavaScript
Очевидно, что вариации на тему использования HTTP-заголовков (302 редиректы или Cookie) не могли сдержать злоумышленников долго. Да и обход этих ограничений никак особо не увеличивал нагрузки на атакующих (в плане использования ресурсов), поэтому следующим рубежом стало использования JavaScript. Интерпретация JavaScript — браузерного (в основном) языка программирования — требует наличия браузера. Либо полностью реализованной виртуальной машины этого языка (на текущий момент количество актуальных и обновляемых реализаций можно пересчитать по пальцам одной руки). Поэтому для осуществления атаки требуется уже полноценный браузер (а он весьма активно использует ресурсы атакующей машины, но не требует особых ресурсов на обработку запросов со стороны сервера), и это остановило атакующих на некоторое время.
Однако, ответ злоумышленников не заставил себя ждать. В дело пошла реализация «облегченного» браузера (например, PhantomJS или HTMLUnit), которая не требует графической оболочки для своего запуска и может работать при очень ограниченных ресурсах. В таких браузерах, используемых, преимущественно, для тестирования и отладки веб-приложений, виртуальная машина JavaScript полностью реализована, что позволило использовать его в целях DDoS «на полную катушку».
Однако, использование Flash, Silverlight и Java в таких браузерах, практически, не поддерживается (как впрочем и самими пользователями), поэтому может эффективно использоваться для защиты.
Этап третий: Captcha и мышь
Таким образом, злоумышленники получили инструмент, не отличимый внешне и внутренне от нормального пользователя. Что пока не оказалось под контролем атакующих? Пользовательское поведение реальных людей. Например, распознавание Captcha (картинки, для захода на сайт) — хотя такой метод наносит для сайта больше вреда, чем спасает от DDoS — или определенные задержки при посещении сайта — хотя это с легкостью подбирается и эмулируется внешними средствами — или движения мыши — хотя «облегченные» браузеры могут эмулировать и это.
Что дальше?
Мы входим в новую эру распространения технологий, когда защититься от вредоносных или посторонних запросов становится, практически, невозможно: нет четких параметров для отделения хороших от плохих. И при появлении таких параметров они очень быстро становятся неактуальными или наносят вред сайту. С точки зрения технических специалистов Айри, единственный выход из складывающейся ситуации — обеспечить за счет кэширования и блокировки запросов нормальное функционирование сайта при любых нагрузках. И Айри позволяет это сделать.