10 июля 2025 года в 14:00 система телеметрии платёжного шлюза зафиксировала выход за базовый уровень входящих пакетов. Источник трафика находился по адресу 93.95.97.28, принадлежавшему виртуальному хостингу (перейти на сайт). Запросы шли к REST-API, обслуживающему транзакции. Сессия длилась 7 минут, объём переданных данных превысил суточную норму в 19 раз.
Содержание:
Ход атаки
Первый показатель — лавинообразный рост POST-запросов к эндпоинту /auth. После аутентификационного шторма злоумышленник переключился на последовательный перебор параметров в поле session_token. Через 23 секунды в логе появился ответ 200 OK, открывший доступ к панели управления оплатой. Следом диапазон портов 33000-33100 подвергся TCP-сканированию, что выявило активное RDP-окно с устаревшей сборкой сервера. В течение минуты был инициирован шифрованный туннель, создан файл dropper.tmp, а в оперативной памяти запустился бэкдор Cobalt Strike Beacon. Весь трафик направлялся по https://pay-node.back/metrics, что затрудняло обнаружение сигнатур IDS. После эксфильтрации таблицы card_storage злоумышленник стёр логи через API и разорвал соединение.
Точки компрометации
Анализ переписанных артефактов показал три слабых места. Первое — отсутствующая защита от брут-форса, из-за чего web-firewall не блокировал повторные авторизации. Второе — невыполненное обновление RDP-компонента, открывшее уязвимость CVE-2025-2198, использованную для горизонтального перемещения. Третье — открытая исходящая политика proxy, допустившая команды C2 в обход корпоративного шлюза. Корреляция пакетов в NetFlow свидетельствует о передачее 4,7 ГБ данных за 47 секунд, что говорит о сжатии архива злоумышленником до передачи. Forensic-образ диска выявил launcher.ps1 с зашифрованными конфигурациями, а память сервера содержала скрипт ReflectiveLoader без цифровой подписи.
Профилактика и ответ
После блокировки подсети 93.95.97.0/24 команда SOC перевела узел в сеть карантина, создала резервную копию для криминалистики, пересобрала контейнеры API с отключением устаревших шифров. Политика WAF дополнилась динамическим rate-limit, а вход по RDP теперь разрешён лишь через jumphost с многофакторной авторизацией. Система обнаружения аномалий SigMA включила модель, ориентированную на угловатые паттерны TLS-сессий. Регламент патч-менеджмента сократил окно обновлений до семи дней, а сервис журналирования получил неизменяемое хранилище WORM. Отдельное внимание уделено сегментации: плоскость управления отделена от зоны платежей, межсетевые экраны развёрнуты в режиме deep packet inspection.
Подведение итогов
Своевременное выявление пикового трафика ограничило ущерб и помогло восстановить процессинг менее чем за час. Устранение трёх перечисленных уязвимостей перекрывает точку входа схожим группировкам. Постоянный мониторинг, автоматическая ротация секретов и аудит конфигураций сводят риск повторения инцидента к минимуму.
10 июля 2025 г. в 14:00 по журналам межсетевого экрана зафиксирован резкий всплеск входящих соединений на порт 22 из подсети 93.95.97.0/24. Длительность пика составила 17 секунд, после чего поток сменил вектор на порты 80 и 443. Исходящий узел 93.95.97.28 инициировал 3 690 TCP-сеансов с сменой user-agent каждые четыре запроса. Параметры сокрытия исходного адреса отсутствовали, что указывает на ручное сканирование или плохо настроенный бот.
Скрипт активировал цепочку из трёх этапов: разведка, перебор пар SSH, загрузка Web-шелла. За первый этап зафиксировано 4823 попытки авторизации root по списку из десяти паролей. Ответные пакеты ICMP echo-request отсутствовали, что снижает риск ложных положительных срабатываний при фильтрации.
Сводка логов
Фрагменты журнала Nginx отражают 217 POST-запросов с телом 524 байта. CRC совпадает с публичным эксплойт для уязвимости CVE-2025-1936 (OS Command Injection). Хеш SHA-256 совпадает на 100 %. В течение следующих 90 секунд подозрительный адрес отправил ещё 19 GET-запросов на /shell.php?cmd=id. Ответ сервера — код 200 со средней задержкой 24 мс. Данные указывают на успешное создание Web-оболочки.
Agentless-датчики EGR зафиксировали выполнение команды uname -a пользователем www-data. Процесс инициировал вторичное соединение к 93.95.97.28:4443 через обратный SSH-туннель. Шифрование chacha20-poly1305 исключает дешифровку трафика пассивными средствами, однако метаданные потока совпадают с IOC из базы FIN-Duke.
Структура трафика
Глубокий анализ pcap выявил 77 уникальных JA3-хешей, но только три TLS-отпечатка совпадают с вредоносными цепочкиками. Протокол Telnet не использовался, SMB-запросы отсутствуют, что указывает на выборочный интерес к веб-сервису. Средний размер пакета — 1024 Б. Интервал между пакетами — 40-60 мс, характерный для прокси-цепочки из трёх узлов. Признаков датаплан-эвристик нет: TTL стабилен, колебания RT не превышают 4 мс.
Параллельно система мониторинга баз данных отразила 122 медленных SQL-запроса, инициированных локальным пользователем app. Время появления запросов коррелирует с загрузкой шелла, что говорит о миграции внутри контейнера. Подтверждением служит резкое повышение потребления CPU c 8 % до 64 % в пределах одного pod Kubernetes-кластера.
Методы защиты
1. Удалённый хост заблокирован в ipset с TTL 90 дн. Для исключения повторных ошибок правило распространяется через Ansible-плейбук на весь DMZ-сегмент.
2. Парольная аутентификация SSH переведена в режим key-only, период замены ключей снижен до 45 дн.
3. Web-приложение обновлено до патча CVE-2025-1936-fix-2. Ретрофит-сканирование убедилась в отсутствии инъекции.
4. В Nginx внедрён mod_security с правилом блокировки POST-тел до 600 Б, если user-agent меняется чаще двух раз в минуту.
5. SIEM получил новую сигнатуру по JA3-хешу 4899b3169c16e579d02f7d3c605b43e2.
6. Контейнеры Kubernetes запущены под non-root-UID, seccomp-профиль ограничил системные вызовы execve.
7. Внедрён scriptless honeytoken /fake_shell.php для отслеживания резидуальных ботов.
Инцидент закрыт после 24-часового наблюдения без повторных обращений с подозрительного диапазона. Пост-морем подтвердила исходную точку входа и эффективность трёхуровневой фильтрации. Организация перешла на еженедельный аудит конфигураций и политику zero-trust для внутренних сервисов.