В начале июля 2024 года опубликован подробный разбор инструмента AvNeutralizer, который отключает защитное программное обеспечение на заражённых машинах. Программа известна также под именем AuKill и уже несколько лет помогает операторам программ-вымогателей готовить почву для шифрования данных. Вместе с описанием самого инструмента появился разбор упаковщика PackXOR, который прячет его код от антивирусов. Изучение образцов показало, что этот упаковщик применяют заметно шире, чем считалось раньше.
Описание
Задача AvNeutralizer - вывести из строя системы обнаружения и реагирования на конечных точках (EDR), то есть защитные агенты, которые следят за поведением программ на рабочих станциях и серверах. Инструмент действует через уязвимые драйверы: получает доступ на уровне ядра операционной системы и завершает процессы защиты. Без работающего агента вредоносная нагрузка действует беспрепятственно. Она шифрует файлы, копирует данные и закрепляется в инфраструктуре. Поэтому AvNeutralizer давно стал ходовым товаром на подпольном рынке и продаётся вместе с набором для сокрытия кода.
По данным Sentinel Labs, инструмент продаётся на закрытых форумах с 2022 года, а с апреля 2023 года его доставляют жертвам как в защищённом, так и в открытом виде, в составе операций разных группировок. Покупатели получают не только саму программу, но и общий для всех набор сокрытия. Код упаковщика совпадает во всех образцах, которые попали в поле зрения специалистов, - значит, клиентам передают один и тот же инструмент. Упаковщик сжимает и шифрует вредоносный код, а в начало файла добавляет небольшой фрагмент, который при запуске возвращает программе исходный вид. Защитным решениям сложнее узнать знакомые фрагменты кода, а разбор образца занимает больше времени. Отсюда и практическая выгода для атакующих: пока защита разбирается, атака продолжается.
Дальнейшее наблюдение за образцами дало неожиданный результат. PackXOR защищал не только AvNeutralizer. Код упаковщика обнаружен рядом с майнером XMRig, который добывает криптовалюту Monero, и рядом с руткитом R77 - программой для скрытого присутствия в системе. В этих случаях между упаковщиком и конечной нагрузкой появился дополнительный слой запутывания: открытый инструмент SilentCryptoMiner, а в одном образце - ещё и коммерческий конструктор вредоносных программ. Такая комбинация плохо сочетается с привычными методами FIN7. Участники этой группировки обычно не занимаются скрытым майнингом. Конечно, упаковщик могли проверять на посторонних задачах, чтобы понять, ловят ли его защитные продукты. Однако дополнительный слой запутывания говорит о другом: инструментом пользуются разные команды, и часть из них к FIN7 отношения не имеет.
Для атрибуции, то есть для определения авторства атаки, это важный сигнал. Раньше общий упаковщик служил косвенным доказательством родства кампаний. Когда один и тот же инструмент сокрытия всплывает в операциях с майнерами, выводы о связях приходится пересматривать. Разработчики PackXOR вполне могут быть связаны с кластером FIN7, но сам упаковщик живёт самостоятельной жизнью и переходит к другим покупателям.
Устройство PackXOR можно описать без глубокого погружения в код. Упакованные данные делятся на заголовок и собственно содержимое. В заголовке хранятся два ключа, размер сжатого кода и размер исходного. Сначала нагрузка сжимается, затем дважды обрабатывается простыми побитовыми операциями с разными ключами. Имена системных функций тоже скрыты. Каждое такое имя лежит в отдельном блоке вместе со своим ключом и длиной. Расшифровка происходит в последний момент, прямо перед вызовом функции. Ключи отличаются для каждой строки и меняются от образца к образцу. Статический анализ, то есть изучение файла без его запуска, из-за этого заметно усложняется. Поведенческий анализ тоже буксует: на диск вредоносный код попадает уже в готовом виде.
Чтобы помочь коллегам, авторы разбора выложили в открытый репозиторий утилиту для распаковки. Она сама находит заголовок упакованных данных и возвращает исходный код. Если смещение известно заранее, его можно указать вручную. Первые результаты уже опубликованы: утилита успешно распаковала несколько образцов и показала размеры сжатых и исходных данных. Такой шаг упрощает работу дежурным группам реагирования на инциденты и разработчикам защитных решений. Им не нужно писать собственный распаковщик с нуля и тратить на это дни.
История PackXOR показывает, как устроен рынок вредоносных инструментов. Готовые сборки переходят из рук в руки, а один и тот же упаковщик обслуживает и программы-вымогатели, и скрытые майнеры. Связь с конкретной группировкой при этом размывается. Для защитников отсюда следует практический вывод: обнаружение по одному признаку не даёт полной картины. Надёжнее следить за поведением - за попытками отключить защитный агент, за неожиданной нагрузкой процессора и за обращениями к незнакомым серверам. Помогают и базовые меры: своевременные обновления, контроль драйверов, двухфакторная аутентификация на важных узлах. Уязвимые драйверы заслуживают отдельного внимания, ведь именно через них атака обходит защиту и остаётся незамеченной.