В конце 2025 года исследователи Google Threat Intelligence Group (GTIG) зафиксировали многоэтапную атаку ранее неизвестной группировки UNC6692. Злоумышленники применили комбинацию социальной инженерии, самодельного модульного вредоносного набора и умелого маневрирования внутри инфраструктуры жертвы, чтобы достичь глубокого проникновения в сеть. Ключевым элементом кампании стало использование доверия сотрудников к корпоративным сервисам: атакующие выдавали себя за работников IT-поддержки и убедили цель принять приглашение в Microsoft Teams от внешнего аккаунта.
Описание
Схема атаки начиналась с масштабной рассылки электронных писем, создававшей ощущение срочности и отвлекавшей внимание. Сразу после этого операторы связывались с жертвой через Microsoft Teams, предлагая помощь в решении проблемы с наплывом сообщений. В ходе переписки пользователю предлагали перейти по ссылке для установки локального исправления, якобы блокирующего спам. При переходе открывалась HTML-страница, с которой загружался переименованный исполняемый файл AutoHotKey и одноимённый сценарий. Вредоносный бинарник и скрипт размещались в облачном хранилище AWS S3, что позволяло обходить традиционные репутационные фильтры. Исследователи отмечают, что страница маскировалась под официальную "Утилиту ремонта и синхронизации почтового ящика v2.1.5". Она содержала скрипт-шлюз, который проверял присутствие параметра email в URL и требовал использования браузера Microsoft Edge, иначе накладывал поверхностное предупреждение с принудительным перенаправлением через протокол microsoft-edge:. Это гарантировало, что атака сработает именно в целевой среде.
Пользователь, нажав кнопку Health Check, видел окно аутентификации, где требовалось ввести пароль. При этом скрипт отвергал первую и вторую попытки, создавая иллюзию проверки, а в действительности дважды фиксировал введённые данные и отправлял их на сервер злоумышленников через PUT-запрос в тот же AWS S3. Для маскировки эксфильтрации запускался прогресс-бар с фальшивыми задачами вроде "Проверка целостности почтового ящика". После ввода учётных данных страница также могла загрузить дополнительные файлы, в том числе перенаправленный исполняемый файл AutoHotKey, который автоматически выполнял скрипт и устанавливал расширение для браузера SNOWBELT.
Экосистема вредоносного набора под общим названием SNOW состоит из трёх компонентов: SNOWBELT, SNOWGLAZE и SNOWBASIN. SNOWBELT - это JavaScript-бэкдор в виде расширения Chromium, маскирующийся под "MS Heartbeat" или "System Heartbeat". Он устанавливается через социальную инженерию и использует сервис-воркеры браузера для постоянной активности, а также регистрируется в службе Push-уведомлений для низколатентной связи с командным сервером. Расширение ретранслирует команды на локальный сервер SNOWBASIN, работающий на портах 8000-8002, который выполняет команды оболочки, делает снимки экрана и управляет файлами. Для внешнего сетевого взаимодействия применяется SNOWGLAZE - Python-туннелировщик, создающий защищённое WebSocket-соединение с облачной инфраструктурой (например, на Heroku) и позволяющий маршрутизировать произвольный TCP-трафик через скомпрометированную систему. Вся коммуникация маскируется под легитимный зашифрованный веб-трафик.
После получения первоначального доступа злоумышленники использовали Python-скрипт для сканирования внутренней сети на наличие открытых портов 135, 445 и 3389. Затем через туннель SNOWGLAZE они запускали Sysinternals PsExec для выполнения команд на целевой системе и получали список локальных администраторов. Получив доступ к учётной записи локального администратора (вероятно, через перебор SMB-ресурсов), операторы через тот же туннель инициировали RDP-сессию с резервным сервером. На нём они извлекли дамп памяти процесса LSASS с помощью стандартного диспетчера задач Windows и выгрузили его через легальный сервис LimeWire. Этот шаг позволил безопасно получить хеши паролей привилегированных учётных записей вне контролируемой среды жертвы.
Имея хеши NTLM, UNC6692 применила технику Pass-The-Hash для перемещения на контроллеры домена. На них через Microsoft Edge был загружен архивированный установщик FTK Imager, с помощью которого смонтировали локальный диск и извлекли базу данных Active Directory (NTDS.dit), а также файлы SAM, SYSTEM и SECURITY. Все собранные данные снова отправили через LimeWire. В завершение телеметрия EDR зафиксировала создание скриншотов окон браузера и FTK Imager на контроллерах домена - вероятно, для подтверждения успеха операции.
Данная кампания демонстрирует эволюцию тактик злоумышленников: ставка делается не только на техническую изощрённость, но и на манипуляцию поведением сотрудников. Использование легитимных облачных сервисов (AWS S3, Heroku, LimeWire) для доставки полезной нагрузки, управления и эксфильтрации осложняет обнаружение атак традиционными средствами защиты, основанными на репутации доменов и IP-адресов. Возможность коррелировать события в браузере, локальной среде Python и облачных точках выхода становится критической для раннего выявления подобных вторжений. Специалистам по безопасности следует обратить особое внимание на мониторинг активности браузерных расширений и нестандартных запросов к доверенным облачным провайдерам, а также усилить процедуры проверки обращений от имени техподдержки, особенно через мессенджеры.
Индикаторы компрометации
Domains
- cloudfront-021.s3.us-west-2.amazonaws.com
- service-page-11369-28315-outlook.s3.us-west-2.amazonaws.com
- service-page-25144-30466-outlook.s3.us-west-2.amazonaws.com
WebSocket Secure
- wss://sad4w7h913-b4a57f9c36eb.herokuapp.com/ws
SHA256
- 2fa987b9ed6ec6d09c7451abd994249dfaba1c5a7da1c22b8407c461e62f7e49
- 6e6dab993f99505646051d2772701e3c4740096ff9be63c92713bcb7fcddf9f7
- 7f1d71e1e079f3244a69205588d504ed830d4c473747bb1b5c520634cc5a2477
- c8940de8cb917abe158a826a1d08f1083af517351d01642e6c7f324d0bba1eb8
- ca390b86793922555c84abc3b34406da2899382c617f9dcf83a74ac09dd18190
- de200b79ad2bd9db37baeba5e4d183498d450494c71c8929433681e848c3807f
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | rule G_Tunneler_SNOWGLAZE_1 { meta: author = "Google Threat Intelligence Group (GTIG)" platforms = "Windows, Linux" strings: $r1 = /\.connect\(\s{0,25}WS_PROXY_URL/ $r2 = /"data":\s{0,1}base64\.b64encode\(\w{1,10}\)\.decode\('ascii'\)/ $r3 = /"type":\s{0,1}"socks_data"/ $r4 = /await\s{0,1}reader\.read\(\d{2,4}\)/ $r5 = /"login":\s{0,1}AGENT_LOGIN/ $r6 = /"password":\s{0,1}AGENT_PASSWORD/ $r7 = /"uuid":\s{0,1}AGENT_UUID/ $s1 = ".socks_tcp_to_ws" condition: 5 of ($r*) and $s1 } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | rule G_Backdoor_SNOWBELT_1 { meta: author = "Google Threat Intelligence Group (GTIG)" platform = "Windows" strings: $str1 = ".importKey(\"raw\",keyMaterial,\"AES-GCM\",!1,[\"decrypt\"])" $str2 = ".importKey(\"raw\",keyMaterial,\"AES-GCM\",!1,[\"encrypt\"])" $str3 = "sendJsonDataToS3" $str4 = "processCommand" $str5 = "\"screenshot\"===cmdType" $str6 = "\"payload\"===cmdType" $str7 = "\"websocket_control\"===cmdType" $str8 = "\"open_uri\"===cmdType" $str9 = "\"delete_cache\"===cmdType" $str10 = "\"payload_download_complete\"" $str11 = ".s3.us-east-2.amazonaws.com/" condition: all of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | rule G_Backdoor_SNOWBASIN_1 { meta: author = "Google Threat Intelligence Group (GTIG)" platform = "Windows" strings: $path1 = "self.path == '/probe':" $path2 = "self.path == '/stream':" $path3 = "self.path == '/buffer':" $path4 = "self.path == '/flush':" $path5 = "self.path == '/commit':" $path6 = "self.path == '/capture':" $path7 = "self.path == '/gc':" $func1 = "self.handle_stream(" $func2 = "self.handle_buffer(" $func3 = "self.handle_flush(" $func4 = "self.handle_commit(" $s1 = "self.wfile.write(info_msg" $s2 = "selected_port), WebServerHandler) as httpd:" $s3 = "ThreadedTCPServer(socketserver.ThreadingMixIn" $s4 = "httpd.serve_forever()" condition: filesize<1MB and ( (all of ($s*) and 6 of ($path*, $func*)) or (8 of ($path*, $func*)) or 10 of them ) } |