Многоэтапное заражение с сокрытием кода в реестре, картинках и звуковых файлах закончилось скрытым майнингом

Многоэтапное заражение с сокрытием кода в реестре, картинках и звуковых файлах закончилось скрытым майнингом

Регулярные оповещения о запуске PowerShell на одном из рабочих узлов привели к разбору заражённой системы. За ними стояла многоступенчатая атака, где каждый следующий этап прятался внутри другого носителя: системного реестра, ответов системы доменных имён, файла изображения и звуковых файлов. Конечной целью оказалась добыча криптовалюты за счёт ресурсов чужой машины. Вредоносный код почти не сохранялся на диск, что позволяло долго оставаться незамеченным.

Описание

Первый скрипт запускался с параметрами, которые отключали сохранение истории введённых команд. Его тело лежало не в отдельном файле, а в системном реестре - базе настроек Windows, куда обычно попадают параметры программ и оборудования. Злоумышленник записал туда закодированный фрагмент кода в виде двоичных данных. Скрипт извлекал эти данные при запуске и исполнял напрямую. Привычного файла скрипта на диске не появлялось, поэтому системы мониторинга фиксировали только сам факт запуска PowerShell, а рядом не находили ничего подозрительного.

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

С этого сервера приходил очередной скрипт. Сначала он удалял пользовательские файлы из общедоступной папки с музыкой, затем скачивал туда архив и распаковывал его. Внутри лежали два звуковых файла, по виду ничем не отличавшиеся от обычных аудиозаписей. Их содержимое обрабатывалось как хранилище: скрипты читали звуковые данные и восстанавливали из них новые фрагменты кода.

Первый звуковой файл отвечал за маскировку и закрепление в системе. Скрипт переводил среду PowerShell в режим без проверок, ослаблял защитные и наблюдательные механизмы, добавлял широкие исключения для встроенного антивируса Microsoft Defender и стирал историю команд. Затем создавались скрытые задачи по расписанию: они запускали зашифрованную нагрузку при входе пользователя и через равные интервалы. Дополнительно настраивалась постоянная подписка на события через интерфейс управления Windows (WMI - набор служб для администрирования системных ресурсов). Эта подписка следила за изменением определённого параметра реестра и запускала код, как только параметр обновлялся.

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

Второй звуковой файл содержал ещё одну прослойку - программный модуль для платформы .NET. Он собирался из служебных данных аудиозаписи и загружался прямо в память процесса, минуя диск. Этот модуль менял профиль PowerShell, отключал часть служб и задач Defender, расширял список исключений и удалял историю команд. Его роль сводилась к тому, чтобы ослабить защиту до того, как развернётся основной этап атаки.

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

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

Схема опирается на давно известные механизмы Windows: реестр, задачи по расписанию, подписки на события. Их редко проверяют так же пристально, как обычные программы. Разумная защита включает своевременное обновление систем, ограничение прав учётных записей, контроль списка исключений антивируса и периодический просмотр задач по расписанию и подписок WMI. Полезно также следить за нагрузкой процессора на серверах, где она не должна быть высокой. Любое изменение защитных настроек стоит сверять с журналом изменений: именно следы правок в конфигурации помогли восстановить всю цепочку и понять, где она начиналась.

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

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