Заражённый сайт региональных новостей заставил читателей вручную запустить StealC

Stealer

Независимое региональное новостное издание принимало посетителей, но отдавало им не только статьи. Часть читателей видела всплывающее окно с просьбой подтвердить, что они не роботы. Привычной картинки с искажённым текстом там не было. Вместо неё окно предлагало скопировать длинную строку и вставить её в системное окно запуска программ Windows. Каждый, кто следовал подсказке, собственноручно запускал на своём компьютере вредоносную программу.

Описание

Описанный эпизод стал частью кампании против региональных медиа. В конкретном случае читатель попал на заражённую страницу через прокси-сервис местной библиотеки. Сам прокси никто не взламывал. Он лишь перенаправлял трафик на подменённый сайт, и посетитель ничего не замечал. Так работает атака через компрометацию легитимного ресурса (атака на водопое): человек приходит на знакомый адрес и доверяет ему заранее.

По данным проведённого разбора, опасный сценарий размещался на стороннем сервере, замаскированном под службу доставки контента. Код умеет срабатывать по-разному: по щелчку, по таймеру или после движения курсора. Перед показом окна он проверяет одноразовую метку в браузере. Метки нет - появляется поддельная проверка. Метка ставится сразу, поэтому второй раз то же окно не всплывает. Внутри кода сохранились комментарии на русском языке. Они описывают режимы запуска сценария.

Дальше жертва сама копирует команду и вставляет её в окно запуска. Со стороны это выглядит как техническая проверка. По сути человек запускает загрузчик. Команда обращается к удалённому серверу и скачивает сценарий для PowerShell - встроенной в Windows среды выполнения сценариев. Сценарий обходит стандартный запрет на запуск и распаковывает в оперативной памяти вторую ступень. На диск она не попадает. Именно поэтому защитные средства реагируют слабее: инициатором выступает сам пользователь, а система видит добровольное действие, а не скрытую атаку.

Полезной нагрузкой оказалась программа Stealc. Это средство кражи данных, рассчитанное на долгое незаметное присутствие в системе. Внутри - набор модулей: загрузчик, средство связи с командно-контрольным сервером (C2-сервер) и сборщик информации. Загрузчик расшифровывает основной модуль прямо в памяти. Две его части решают разные задачи. Первая отвечает за ранний контакт с сервером, вторая работает только через внедрение в чужие процессы.

Основной модуль защищён несколькими слоями. Служебные строки хранятся в зашифрованном виде и собираются заново во время работы. Заголовки исполняемого файла и участки кода расшифровываются в памяти перед запуском. Фоновый поток раз в секунду проверяет, не подключён ли к программе отладчик. Если подключён, процесс немедленно завершается. Дополнительно в код добавили сотни ничего не делающих функций. Они раздувают размер файла и мешают разбору.

Маскировку обеспечивает внедрение в чужие процессы. Сначала Stealc цепляется к служебному компилятору платформы .NET, браузерам Chrome и Edge и к системной службе индексации файлов. Затем сама служба индексации становится посредником. Она заражает свежие копии браузеров. Для наблюдателя всё выглядит как обычная работа установленных программ.

Оказавшись внутри браузеров, программа ищет сохранённые пароли и файлы с активными сессиями. Её интересуют профили Chrome и Edge: база логинов и хранилище cookie (служебные файлы браузера с данными о сессии). Эти сведения позволяют захватить чужие учётные записи без дополнительного взлома. Для закрепления Stealc создаёт ярлык в папке автозагрузки текущего пользователя. После перезагрузки программа стартует снова.

Связь с управляющим сервером идёт через POST-запросы по обычному веб-протоколу. Перед отправкой данные дополняются случайными блоками и шифруются ключом, который меняется от пакета к пакету. Контрольная сумма подтверждает, что сообщение дошло без искажений. При первом обращении программа создаёт постоянный идентификатор устройства длиной 32 символа. По нему оператор отличает одну жертву от другой и ведёт учёт заражённых машин. Если сервер отвечает условным кодом команды, программа ждёт пять секунд, запускает скрытое окно командной строки, выполняет полученную инструкцию и отправляет результат обратно. При другом коде она немедленно выключается.

Схема рассчитана на обычных читателей, а не на подготовленных специалистов. Региональные медиа редко располагают большим штатом по информационной безопасности. Их сайты живут на популярных системах управления контентом с набором расширений. Одно устаревшее расширение открывает доступ к коду страниц, и дальше правку вносят без ведома редакции. Заражение новостного ресурса бьёт по доверию аудитории. Под угрозой оказываются читатели, сотрудники редакции и рекламодатели. Украденные пароли и сессии открывают доступ к почте, социальным сетям и внутренним системам компаний, где работают эти люди.

Издателям стоит держать системы управления контентом и расширения в актуальном состоянии. Полезно регулярно проверять файлы сайта на посторонние вставки и ограничить число сотрудников с правом менять код. Двухфакторная аутентификация для редакционных учётных записей снижает ущерб, если часть данных всё же утечёт. Читателям достаточно простого правила: не выполнять инструкции из всплывающих окон на сайтах и не копировать незнакомые команды в системные диалоги. Организациям имеет смысл следить за запуском сценариев PowerShell на рабочих машинах. Ограничение их запуска политикой и ведение журнала помогают заметить аномалию раньше, чем она превратится в утечку.

Индикаторы компрометации

Комментарии: 0