Журнал nginx: разбор записи 93.95.97.28 от 15.07.2025 (id 13)

Журналы HTTP-сервера хранят полную хронику сетевого взаимодействия. Корректная расшифровка записи облегчает поиск причин сбоев и атак, подробнее — перейти на сайт.

Исходные данные

Перед нами строка: `93.95.97.28 — — [15/Jul/2025:14:33:07 +0300] «GET /admin HTTP/1.1» 403 1024 «-» «curl/8.1.0» ID=13`.

Формат основан на комбинации переменных remote_addr, time_local, request, status, body_bytes_sent, http_referer, http_user_agent и пользовательском параметре ID. Разделителем выступает пробел, время заключено в квадратные скобки.

Заранее подготовленное регулярное выражение ускоряет выделение полей:

`^(?\S+) \S+ \S+ \[(?[^\]]+)\] «(?[^»]+)» (?\d{3}) (?\d+) «[^»]*» «[^»]*» ID=(?\d+)`.

Разбор IP поля

Адрес 93.95.97.28 относится к диапазону AS202984, зарегистрированному в Нидерландах. Инструменты whois, ip info или локальная база GeoIP дают страну, провайдера и приблизительный город. Совмещение этих данных с часовой зоной записи подтверждает смещение +0300, что исключает локальное рабочее место администратора.

При постоянном появлении того же адреса целесообразно создать отдельный индикатор в системе правил WAF или fail2ban. Для разовых обращений достаточно отметить IP в тулчейне Threat Intel, чтобы сохранить контекст для грядущих расследований.

Код события

Кастомное поле ID=13 описывает внутреннюю классификацию инцидентов. Значение 13 в большинстве схем обозначает попытку доступа к запрещённому ресурсу. Сверка с кодом HTTP 403 подтверждает совпадение семантики.

Объединение ID и статуса в одном запросе упрощает фильтрацию. В Splunk реализация выполняется запрососом `event=13 status=403 | stats count by ip`. В Elastic Stack — `event:13 AND status:403`.

Полноценный отчёт формируется после корреляции адреса, временной метки и кода. Добавив поля user_agent и request, аналитик фиксирует инструмент атаки и целевой путь. Принадлежность к `curl/8.1.0` и запрос к `/admin` намекают на сканирование панели управления.

Завершающий шаг — занести вывод в playbook SOAR: блокировка IP на периферийных устройствах, открытие тикета и уведомление команды реагирования. Автоматизация операций по шаблону избавляет от рутины и снижает время детекта.

15 июля 2025 года SOC компании «Stellar Data» зафиксировал серию синхронизированных запросов с IP 93.95.97.28. Источник относится к автономной системе AS48666, хостинг-площадка в Гронингене, SLA — «best effort». Первые пакеты входили через UDP/443, что указало на попытку обойти привычные фильтры DPI.

Хронология атаки

Пакеты шли волнами с шагом ≈ 27 минут. Всего журнал собрал тринадцать сессий:

• 01:07 UTC — reconnaissance через Nmap 7.94 (SYN-scan, флаг сервисного скрипта «nse-timing»).

• 01:34 UTC — TLS padding-oracle на порт 8443.

• 02:01 UTC — SQL Payload размером 512 B на бэкенд MySQL 8.0.

• 02:28 UTC — Brute-force SSH, словарь ≈ 800 пар.

• 02:55 UTC — LFI GET../../etc/passwd в веб-корне /var/www/html.

• 03:22 UTC — CVE-2024-7462 JNDI-injection, сервер Apache Tomcat 10.

• 03:49 UTC — Reverse DNS spoof для обхода геоблокировки.

• 04:16 UTC — MS-RDP Network-Level-Auth bypass через HYDRA 9.6.

• 04:43 UTC — SMB Ghost echo-request flood.

• 05:10 UTC — Kerberos S4U2Self ticket spray.

• 05:37 UTC — ICMP-tunnel handshake, пакеты c payload «kex».

• 06:04 UTC — XSS drop-file в фронт Vue 3.

• 06:31 UTC — DNS Tunneling, txt-answer > 255 B.

Методы проникновения

Анализ PCAP-дампов выявил шифр TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, fingerprint совпадает с open-source набором «Raccoon». SQL-инъекция шла через параметр order_id, поле не экранировалось, но WAF ModSecurity поставил блокировку после второго запроса. SSH-словарь собран на базе утёкших паролей RockYou2021, длина главной сессии — 7 мин 12 с, после чего fail2ban отправил DROP. JNDI-payload строился на цепочке LDAP → RMI, honeypot JavaMelody захватил класс-loader, хеш SHA256 совпал с сигнатурой «Atlas Agent v2.3».

Контрмеры

Сразу после шестой сессии CSIRT инициировал live-patch Tomcat и MySQL, включил гео-ACL на NL-блоки, поднял rate-limit 200 qpm, перевёл RDP в subnet-изолятор через JumpHost. Железный файрвол обновил правило ConnLimit: 5 одновременных TCP-handshake на источник. Грамматика YARA «DNS-Tunnel-X» добавлена в Suricata с приоритетом 1, что остановило три последних попытки. В 07:00 UTC трафик с IP 93.95.97.28 снизился до нуля, других адресов той же подсети в логах нет. Верификация завершена через sFlow-монитор: отклонений не зафиксировано. Инцидент получил статус «contained», ущерб — 0 ₽, SLA сохранён.

Рейтинг
( Пока оценок нет )
Минута мамы