Эксперты по кибербезопасности, расследуя инциденты, постоянно сталкиваются с изощренными методами, которые используют злоумышленники для сохранения контроля над скомпрометированными системами. Хотя классические техники, такие как планировщик задач, службы Windows, модификация реестра и сервисы systemd, остаются популярными благодаря простоте, в ходе одного из расследований специалисты обнаружили более сложный и скрытный подход. Атакующие внедрили бэкдор непосредственно в базу данных PostgreSQL популярного российского программного обеспечения для видеоконференций (ВКС), что позволило вредоносной функциональности пережить обновления программы и даже масштабные изменения инфраструктуры жертвы.
Описание
Инцидент начал развиваться в июне 2025 года, когда команда экспертов получила запрос от государственной организации. Поводом для обращения стали аномалии на веб-сервере: средства мониторинга зафиксировали запуск командной строки от процесса "tc_webmgr.exe", входящего в состав платформы для видеоконференций TrueConf Server. Это поведение сразу вызвало подозрения, поскольку данный модуль не предназначен для прямого выполнения системных команд. Одновременно Web Application Firewall (WAF) обнаружил серию подозрительных HTTP-запросов к серверу ВКС.
Первый запрос содержал в себе команду проверки работоспособности, а второй, более важный, был запросом на аутентификацию. В поле имени пользователя злоумышленники передали не стандартные учетные данные, а специальную строку, начинающуюся с ключевого слова "log_check:", за которым следовал SQL-запрос. Этот запрос инструктировал базу данных создать на диске веб-шелл - скрипт, дающий удаленный контроль над сервером. Факт создания файла и соответствующая запись в реестре Windows подтвердили, что программа TrueConf Server обработала этот ввод, что указывало либо на уязвимость, либо на наличие скрытого механизма.
Тщательный анализ базы данных PostgreSQL подтвердил вторую гипотезу. Эксперты обнаружили специально созданную функцию "log.verify()" и триггер "log_check", которые вместе формировали бэкдор. Механизм работал следующим образом: когда приложение логировало событие, триггер запускал функцию, проверявшую поле "object_name" на наличие ключевого слова "log_check:". При его обнаружении все содержимое поля после этого ключевого слова выполнялось как произвольный SQL-запрос от имени базы данных. Таким образом, атакующие могли выполнять любые команды, просто отправляя специально сформированный запрос на аутентификацию, что делало бэкдор чрезвычайно мощным и скрытным инструментом.
Следующим этапом расследования стал поиск истоков этой угрозы. В марте 2025 года инфраструктура заказчика подверглась изменениям, включая объединение нескольких серверов ВКС. Бэкдор успешно пережил эту миграцию, так как находился внутри резервной копии базы данных, которая была перенесена на новую систему. Изучив архивы, эксперты установили, что подозрительные функции были созданы еще в августе 2024 года. Более того, в логах веб-приложения были найдены ошибки, свидетельствующие об использовании веб-шелла, загруженного в систему в апреле того же года.
Ретроспективный анализ выявил еще более раннюю активность. В сентябре 2024 года на других критических серверах инфраструктуры были зафиксированы события, связанные с использованием скомпрометированных учетных данных и файла DST ViPNet. Злоумышленники применяли инструменты, такие как Impacket, для перемещения по сети, кражи хэшей паролей из процесса lsass и дампа реестра. Примечательно, что для маскировки своих команд они использовали символы Unicode, чтобы обойти простые правила детектирования. Эта активность совпала по времени с установкой бэкдора в системе ВКС, что указывало на их взаимосвязь.
Исследование позволило частично восстановить хронологию атаки. Первичная компрометация инфраструктуры, вероятно, произошла еще в 2021 году, когда атакующие получили доступ к учетным записям сотрудников. Используя эти данные, они постепенно развивали атаку, а к 2024 году получили административный доступ к серверу TrueConf Server. Именно тогда был внедрен бэкдор в базу данных, обеспечивший группировке долгосрочное закрепление. В марте 2025 года злоумышленники также развернули туннелирующее ПО Chisel, замаскированное под легитимный модуль обновления TrueConf ("tc_update.exe"), для скрытого доступа к сети.
Атрибуция этой активности представляет сложность. Хотя стиль атаки, в частности модификация базы данных ВКС-приложения, обладает уникальными чертами, злоумышленники не использовали инструменты, однозначно связываемые с известными APT-группами. На основе косвенных признаков, таких как сетевые индикаторы и техники, эксперты предполагают возможное восточноазиатское происхождение атакующих. Данному кластеру временно присвоено обозначение NGC3181.
Главным выводом расследования стала демонстрация изощренности современных угроз. Внедрение бэкдора на уровне базы данных является нетипичным и высокоэффективным способом обеспечения устойчивости. Такой подход позволяет вредоносной функциональности сохраняться даже после обновлений прикладного программного обеспечения и изменений в инфраструктуре. Обнаружение подобных угроз крайне затруднено без специализированных средств защиты, постоянного мониторинга состояния баз данных и глубокого анализа логов. Эксперты рекомендуют организациям, использующим веб-приложения с базами данных, регулярно проводить аудит функций и триггеров на предмет подозрительной активности, такой как использование оператора EXECUTE, и обеспечивать корректную настройку логирования всех компонентов системы.
Индикаторы компрометации
IPv4
- 103.136.43.50
- 103.136.43.52
- 112.80.13.210
- 185.212.47.10
- 212.73.134.238
MD5
- 0da1b91a7436883eff42b75ec618a642
- 1073abd7ab486bd44227f4a7b0a33eab
- 263a9d6e0801d79a02df29d2045f904b
- 78313141df7f7a8363c7e7b739dca1b5
- 977b6a9df334962d89dac2b5dafeba4e
SHA1
- 3a61fa2cdd7acd5617343aa56727b77eb11ab08c
- 41a7baf73e4e69443e6fb2e74f704a27909b21e4
- 75aa30cb77ed50459af592b76de1689241dd6613
- c8f21f51727d179c3e7065a157c7987d2fe96026
SHA256
- 5c83fbc7a0e796c1dce4a18fc24159f25ce907a14b3402f633385de59e0e26ec
- a00135e2ac87bf84496a9da3ac84556566d617570ccc7cf7e37c2c59f90d732c
- e8d43c26746bdb93b5fff521ea9d49e4f2588a08f3bc9c5b8ed6217ebdc2029c
- eb362ab3bb7b4a5a411e6af4b2f00ce6db6d96983f1e8865edf3be409b7f862a
- f65bf98a93e973efd15e1a088657b022ecc45fef46980857af417af6d49a392e
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | rule win_postgres_trueconf_backdoor { meta: description = "Detects backdoor in trueconf postgres" strings: $a1 = "THEN EXECUTE REPLACE(SUBSTRING(NEW.object_name" fullword $a2 = "CHR(39)||CHR(39), CHR(39))" fullword $b1 = "(NEW.object_name LIKE 'log_check:%')" fullword $b2 = "(NEW.object_name LIKE '4910201921%')" fullword $b3 = "log_check" fullword $b4 = "log.verify" fullword condition: (all of ($a*)) or (any of ($b*)) } |
