Нейросетевая детекция аномалий в логах доступа WordPress: реконструкция цепочки эксплуатации zero-day через анализ временных паттернов запросов к REST API и обхода nonce-защиты

Время чтения: 12 минут
Есть вопросы? Мы в соц сетях

WordPress остаётся самой популярной CMS, и атаки на неё не прекращаются. Zero-day уязвимости особенно опасны: сигнатурные WAF и антивирусы бессильны, пока не появится патч. Однако атакующий оставляет следы в логах доступа — временные паттерны запросов к REST API и попытки обхода nonce-защиты. Нейросетевая детекция аномалий позволяет выявить эти следы и реконструировать цепочку эксплуатации до нанесения ущерба.

Введение: почему традиционные WAF не видят zero-day

Сигнатурные методы работают по принципу «чёрного списка»: они ищут известные строки атак. Zero-day не имеет сигнатуры, поэтому проходит сквозь WAF. Более того, эксплуатация часто маскируется под легитимные запросы к REST API WordPress. Например, злоумышленник может использовать уязвимость в плагине, отправляя запросы с корректными заголовками и параметрами, но с вредоносной полезной нагрузкой. Традиционные системы не видят аномалий, потому что запросы выглядят «нормально».

Нейросети же анализируют не содержимое, а поведение: частоту, последовательность, временные интервалы. Это позволяет обнаружить отклонения даже при отсутствии сигнатур.

Как нейросети анализируют временные паттерны в логах WordPress

Логи доступа содержат временные метки, IP, URL, метод, код ответа, User-Agent. Нейросеть (например, LSTM или автоэнкодер) обучается на нормальном трафике, строя базовую линию. Затем каждый новый запрос сравнивается с прогнозом. Аномалии — это резкие всплески частоты, необычные интервалы между запросами, нетипичные последовательности эндпоинтов.

Ключевые признаки аномалий:

  • Высокая частота запросов к REST API (например, /wp-json/wp/v2/users) с одного IP за короткое время.
  • Неравномерные интервалы: брутфорс nonce часто идёт с интервалом 50–200 мс, тогда как человек так не делает.
  • Повторяющиеся паттерны: серия запросов с одинаковым действием, но разными параметрами nonce.
  • Аномальные переходы: после запроса к уязвимому эндпоинту сразу идёт запрос на создание пользователя или загрузку файла.

Для обучения можно использовать открытые датасеты или собственные логи за месяц. Важно исключить периоды атак из обучающей выборки.

Реконструкция цепочки эксплуатации zero-day через REST API

Рассмотрим гипотетический zero-day в плагине, добавляющем эндпоинт /wp-json/mycustom/v1/update. Уязвимость позволяет обновить опцию без проверки nonce. Атакующий сначала сканирует эндпоинт, затем отправляет запросы с разными nonce, пытаясь подобрать валидный. Нейросеть замечает аномалию: 50 запросов за 2 секунды к этому эндпоинту от одного IP, при этом обычно он вызывается раз в час.

Далее атакующий эксплуатирует уязвимость, отправляя POST с полезной нагрузкой. Нейросеть фиксирует ещё одну аномалию: необычный размер запроса и последующий запрос к /wp-admin/user-new.php. Реконструкция цепочки:

  • Сканирование эндпоинта (аномалия 1).
  • Брутфорс nonce (аномалия 2).
  • Эксплуатация (аномалия 3).
  • Закрепление: создание админа, загрузка веб-шелла (аномалия 4).

Восстановив временную шкалу, можно точно определить, какие данные были скомпрометированы.

Обход nonce-защиты: аномалии в последовательностях запросов

Nonce в WordPress — это токен, проверяемый на сервере. Обход возможен через: 1) повторное использование nonce (если он не истекает); 2) подбор; 3) эксплуатацию уязвимости, где nonce не проверяется. В логах это выглядит как серия запросов с одинаковым nonce или с nonce, который не меняется, хотя должен. Нейросеть обучается на нормальных последовательностях: например, nonce обновляется при каждом действии. Если видит 20 запросов с одним и тем же nonce за минуту — это аномалия.

Пример: атакующий перехватил nonce через XSS и использует его для CSRF. В логах: запросы к admin-ajax.php с action=update_option и одинаковым _wpnonce. Нейросеть помечает их как аномальные, так как обычно этот nonce используется один раз.

Практический пример: детекция и восстановление атаки

Предположим, у нас есть лог за сутки. Обучим автоэнкодер на нормальных запросах. Затем подадим лог с атакой. Модель выделит аномальные сегменты. Ниже таблица с примером восстановленной цепочки.

ВремяЗапросАномалияДействие атакующего
10:00:01GET /wp-json/mycustom/v1/updateВысокая частотаСканирование
10:00:02POST /wp-json/mycustom/v1/update (nonce=123)Неверный nonceБрутфорс
10:00:05POST /wp-json/mycustom/v1/update (nonce=456)Успешный обходЭксплуатация
10:00:06POST /wp-admin/user-new.phpНетипичный переходСоздание админа

Используя нейросеть, мы не только обнаружили атаку, но и восстановили её этапы.

Чеклист внедрения нейросетевой детекции

  • Сбор логов: включите детальное логирование REST API и admin-ajax.
  • Нормализация: приведите логи к единому формату (время, IP, URL, метод, код, параметры).
  • Обучение: соберите данные за 2–4 недели без атак, обучите модель (LSTM, автоэнкодер).
  • Валидация: проверьте на известных атаках, настройте порог срабатывания.
  • Мониторинг: запустите потоковую обработку, интегрируйте с SIEM.
  • Реагирование: при аномалии автоматически блокируйте IP или уведомляйте администратора.

Вывод

Нейросетевая детекция аномалий в логах WordPress — мощный инструмент против zero-day. Анализ временных паттернов запросов к REST API и обхода nonce позволяет выявить атаку на ранней стадии и восстановить цепочку эксплуатации. Внедрение требует ресурсов, но окупается предотвращённым ущербом. Начните с простых моделей и постепенно переходите к глубокому обучению.

Мы разрабатывали
apeironspace
jivosite
мтс
originalvirginia
эльдорадо
eparcel
decken-wood
wildberies