Стеганография - один из старейших методов сокрытия информации - переживает второе рождение в руках киберпреступников. Злоумышленники всё чаще отказываются от прямых зашифрованных передач в пользу схемы "легитимный файл плюс скрытые данные". Теперь безобидные на первый взгляд картинки с котами могут нести в себе программу-похитителя данных. Исследователи FortiGuard Labs обнаружили новую фишинговую кампанию, в которой используется загрузчик PawsRunner, маскирующий вредоносную полезную нагрузку внутри PNG-файлов. Конечная цель атаки - установка инфостилера PureLog, способного выкрасть огромный объём конфиденциальной информации.
Описание
Всё начинается с фишингового письма, которое имитирует срочный счёт на оплату. В качестве вложения жертва получает архив в формате TXZ (это tar-файл, сжатый алгоритмом XZ). Внутри архива находится скрипт на JavaScript. Код содержит множество комментариев на разных языках - китайском, японском, русском, хинди и арабском. Этот приём призван сбить с толку автоматические анализаторы и отвлечь внимание от основного содержимого.
Сам JavaScript не выполняет вредоносных действий напрямую. Он объявляет большое количество переменных окружения процесса, в которых хранятся обфусцированные данные. Затем скрипт запускает conhost.exe в скрытом режиме, а следом - PowerShell с флагом -w hidden, чтобы окно не отображалось. PowerShell считывает данные из переменных окружения, расшифровывает их с помощью алгоритма AES, распаковывает через Gzip и загружает в память исполняемый файл .NET. Такой подход позволяет избежать записи вредоносного кода на диск - так называемое бесфайловое выполнение.
Следующий этап - загрузчик .NET, который также расшифровывает и динамически загружает ещё один исполняемый файл. Этот загрузчик уже интереснее: его иконка почти всегда содержит изображение кота. Разработчики явно пытаются вызвать у аналитиков меньше подозрений. Загрузчик инициализирует статические поля конфигурацией, включая зашифрованный URL адрес для скачивания полезной нагрузки, пользовательский агент, начальное число для псевдослучайных чисел и магическое число. Также он загружает нативные библиотеки и получает адреса необходимых API-функций.
После подготовки загрузчик расшифровывает URL при помощи алгоритма RC4. Затем он начинает циклически перебирать три пары пользовательских агентов и три сетевых API: HttpClient, WebClient и WebRequest. При отправке запроса загрузчик указывает в заголовке Accept приоритет image/png, затем image/* и только потом */*. Таким образом он явно просит сервер вернуть PNG-изображение, если это возможно.
Полученные данные могут быть трёх типов: HTML-код, строка в кодировке Base64 или непосредственно PNG-файл. Если приходит HTML, то из него извлекается новый URL, и загрузчик повторяет попытку. Base64 декодируется, а затем и PNG, и декодированные данные обрабатываются одинаково: в изображении ищутся чанки iTXt и IEND, которые служат маркерами для поиска зашифрованной области. Внутри этих маркеров скрыты данные следующей ступени.
Исследователи проанализировали несколько версий загрузчика, которые отслеживаются с марта 2025 года. Ранние варианты просто скачивали и запускали PE-файл. Позже злоумышленники перешли к извлечению зашифрованной полезной нагрузки из изображений. В начале апреля появилась версия с модулем закрепления заражения, то есть обеспечения постоянства присутствия в системе. Примечательно, что с самого начала загрузчик пытался использовать разные сетевые API, а иконка всегда была с котиками.
Сходство с ранее неопознанной программой позволило дать этому загрузчику имя PawsRunner. Код содержит идентичные процедуры инициализации, соглашения об именовании и методы разрешения API-функций.
Когда PawsRunner успешно извлекает данные из PNG, он загружает в память следующую ступень - загрузчик PureLog. Финальная полезная нагрузка - это широко известный инфостилер PureLog из семейства Pure, разработанного под псевдонимом PureCoder. Он защищён обфускатором .NET Reactor и использует Protobuf-сериализацию для хранения конфигурации.
В этой кампании PureLog сначала загружает сборку, содержащую только ресурсы, без исполняемого кода. Затем он расшифровывает и распаковывает данные из ресурсов - получается библиотека DLL, сжатая через TripleDES и Gunzip. Эта DLL выступает в роли дополнительного загрузчика: она парсит Base64-данные, десериализует их и получает итоговую конфигурацию. В конфигурации содержатся адрес командного центра C2, идентификатор сборки, ключ AES, имя мьютекса и набор флагов для функций. После получения конфигурации PureLog асинхронно отправляет HTTP-запрос на эндпоинт /ping через защищённый протокол TLS, чтобы проверить связь. Затем скачивает с эндпоинта /plugin следующую полезную нагрузку, которая расшифровывается с помощью AES-256 в режиме CBC и распаковывается gzip. После этого в память загружается ядро PureLog и запускается его точка входа.
PureLog собирает информацию о жертве: системные данные через Windows Management Instrumentation (WMI), данные браузеров, криптовалютные кошельки, менеджеры паролей, приложения для аутентификации, мессенджеры и многое другое. Список целей огромен - десятки браузеров (Google Chrome, Firefox, Opera, Brave, Yandex Browser и многие другие), сотни расширений для криптокошельков (MetaMask, Coinbase, Binance Chain, Ledger Live, LastPass, Bitwarden и т. д.), приложения для обмена сообщениями (Discord, Telegram, Signal), клиенты электронной почты, VPN-клиенты, FTP-клиенты, Steam и прочее.
Сбор данных осуществляется через несколько асинхронных задач: для браузеров, для криптокошельков, для Discord, для поиска файлов. Отличие этой версии от предыдущей в том, что результаты отправляются на сервер C2 по завершению каждой задачи, причём для разных типов данных используются разные эндпоинты: /userinfo, /browser, /application, /crypto, /discord, /filesearch/req и /filesearch/res. Все передаваемые данные шифруются AES и сжимаются Gzip. Связь с командно-контрольным центром теперь выполняется исключительно через HTTPS.
Этот инцидент - яркий пример того, как киберпреступники адаптируются к современным средствам защиты. Стеганография позволяет обходить системы обнаружения вторжений, которые не анализируют содержимое медиафайлов. Котики на картинках становятся не просто безобидными мемами, а контейнерами для вредоносного кода. Атака затрагивает широкий круг пользователей - от частных лиц до корпоративных сотрудников, которые могут открыть фишинговое письмо со срочным счётом. После заражения злоумышленники получают доступ к паролям, криптовалюте, банковским данным и переписке.
Специалистам по информационной безопасности стоит обратить пристальное внимание на то, что стеганография становится массовым инструментом. Мониторинг сетевого трафика на предмет необычных изображений, проверка метаданных PNG-файлов, анализ вызовов к подозрительным API - всё это может помочь выявить подобные угрозы. Кроме того, использование бесфайловых методов и скрытие команд в переменных окружения требуют внедрения более глубоких поведенческих анализаторов на конечных устройствах. Но главный урок прост: не стоит доверять картинкам, даже если на них самые милые котята.
Индикаторы компрометации
IPv4
- 5.101.84.202
URLs
- https://everycarebd.com/imagelkjh0987.png
SHA256
- 0fcb86ae384e9975933314ac2a231f0ff46c0208556bf4a16f096a642d3f505e
- 1b730de72f921458b6b162b105a9521a931f07e19d3cac53207c7a8efbc412f9
- 6910d27b9e1dc2229a8c280f5d0cea85146d50274c56a4d9a5b8d1793505b1b9
- 8d0bcde739929fe41a6bcaaa62f7cba802af90b2ba8dea6ed1a4821236cdd588
- 93724f1a9ad3a28c171927fc449ac34dc6ca890f915f00210e8b305577388c6e
- e2308749f6b7b7573009d0cac6616a6aa83cecb1f2933e868776400d122c86ec
