Динамика ботнета / Теория
Zombie DDoS: динамика ботнета
От заражённого устройства к недоступному сервису
Как распространение заражения превращается в DDoS-нагрузку и что меняют патчинг, очистка ботов и блокировка атаки.
Предположим, в сети организации появились заражённые устройства. Построим модель, которая связывает их распространение с атакующим трафиком и доступностью API: запишем переходы и уравнения, вычислим R₀ и найдём стационарные состояния. По ходу разберём, почему заражённое устройство и бот, который прямо сейчас атакует сервис, учитываются отдельно.
Зададим состояния и исходные условия
Рассмотрим замкнутый парк из
| Состояние | Смысл |
|---|---|
| Уязвимые устройства, которые могут быть заражены. | |
| Заражённые боты, способные вовлекать в ботнет новые устройства. | |
| Активированные боты, создающие атакующий трафик. | |
| Устройства, выведенные из уязвимой или атакующей фазы защитной мерой: например, патчингом или блокировкой активности. | |
| Восстановленные устройства, которые пока не участвуют в распространении и атаке. |
Например,
На этом шаге ограничимся агрегированным описанием: будем следить за долями устройств, не воспроизводя отдельные соединения и сетевые пакеты. Такое приближение подходит для исследования общих зависимостей, если выбранные состояния и усреднённые скорости переходов достаточно хорошо описывают ситуацию.
Построим граф переходов
Уязвимые устройства заражаются при взаимодействии с ботами из

Над стрелкой указан поток, а не вероятность перехода. Например,
Новые заражения создаёт только состояние
Состояние
Перейдём от графа к уравнениям
Для каждого состояния запишем входящие потоки со знаком «плюс», исходящие — со знаком «минус»:
Проверим, как читать одну строку системы. В уравнении для активных атакующих есть приток после активации ботов и отток после блокировки. Если первый поток больше второго, активных атакующих становится больше. Остальные строки читаются по тому же правилу.
| Параметр | За какой механизм отвечает |
|---|---|
| Заражение уязвимых устройств ботами из | |
| Активация заражённого бота для атаки. | |
| Обнаружение и очистка бота из | |
| Блокировка активности устройства из | |
| Профилактическая защита устройства из | |
| Переход из защитной стадии | |
| Возврат восстановленного устройства в уязвимое состояние. |
При переменных-долях все семь параметров имеют размерность сут⁻¹. Член
Если использовать абсолютные числа
Сложим правые части пяти уравнений. Каждый исходящий поток одного состояния входит в другое, поэтому все слагаемые сокращаются:
Получили простую проверку модели: при нормированных начальных условиях сумма долей остаётся равной единице. При неотрицательных параметрах потоки также не выводят доли за границу неотрицательной области: из пустого состояния нечему уходить, а входящие потоки неотрицательны.
Вычислим R₀ и условие роста заражения
Обозначим суммарную скорость ухода из распространяющего состояния через
Если на коротком начальном участке доля уязвимых почти не меняется и равна
Поясним полученное отношение. Один бот остаётся в состоянии
Чтобы не смешивать полностью уязвимый парк и уже защищённую среду, договоримся об обозначениях:
При
Для учебных параметров
При
Найдём стационарные состояния
Стационарное состояние — набор постоянных долей
Рассмотрим постоянные параметры при
Сначала исключим заражение
Положим
Выразим через долю уязвимых два остальных состояния:
Подставим эти выражения в условие суммы долей. Для краткости введём
Теперь запишем все пять долей безинфекционного равновесия:
При
Чтобы понять, растёт ли малое заражение около этого равновесия, подставим в уравнение для
При
Теперь сохраним ненулевое заражение
Теперь предположим
Далее выразим остальные состояния через заражённую долю. Для этого последовательно обнулим правые части уравнений для атакующих, защищённых и восстановленных устройств:
Получили зависимость каждой стационарной доли от заражённой. В частности, число активных атакующих определяется балансом активации и блокировки: при неизменной заражённой доле более быстрая блокировка уменьшает долю атакующих.
Осталось найти
После подстановки получаем
Проверим, имеет ли найденное решение смысл. Все величины в знаменателе положительны. Значит, равновесие с
При равенстве числитель обращается в нуль и положительное заражённое равновесие сливается с безинфекционным. При отрицательном числителе формальная формула даёт отрицательную долю: такое решение физически недопустимо. Само существование равновесия не доказывает, что произвольная траектория к нему сойдётся; устойчивость положительного равновесия — отдельный вопрос.
Сопоставим начальный рост и равновесие
Продолжим предыдущий учебный набор параметрами
Для этого равновесия
Сравним этот результат с началом опыта. При исходном
Что ещё полезно заметить
Разделим пик заражения и пик атаки
При
Если
Для активных атакующих условие пика другое:
Даже после начала снижения
Переведём долю атакующих в нагрузку на сервис
Пусть
Приближённое условие исчерпания свободной ёмкости:
Если считать абсолютное число атакующих, порог равен
Меры действуют на разные стадии
Увеличение
Особенно осторожно интерпретируем
Продолжим исследование
Эксперимент: проверим действие отдельных мер
Цель — понять, что меняет каждая мера защиты.
Выберем три параметра: скорость очистки, профилактической защиты и блокировки атакующих. Будем изменять их по одному и перед каждым опытом предполагать, какой поток на графе изменится первым. Затем сопоставим ожидание с графиками устройств и нагрузки.
Игра: выберем сочетание мер
Цель — принять решение в условиях ограничений сценария и объяснить его последствия.
Сочетание мер оценим по тому же маршруту: какой поток изменился, какое состояние накопилось или уменьшилось и как это повлияло на атакующий трафик. Так результаты игры свяжем с механизмом модели.
