Evilnum MaaS Python Безопасность Малварь

PyVil и не только. Арсенал Evilnum: детальный разбор.

PyVil и не только. Арсенал Evilnum: детальный разбор.

В этой статье мы постараемся раскрыть подробную картину деятельности Evilnum. Целями группы остаются финтех-компании, но ее инструментарий и инфраструктура претерпели изменения и теперь представляют собой смесь пользовательских самодельных вредоносных программ в сочетании с инструментами, приобретенными у Golden Chickens, поставщика вредоносных программ как услуги (MaaS), среди известных клиентов которого есть FIN6 и Cobalt Group.

Evilnum использует упрощенную цепочку заражения для доставки PyVil по сравнению со своими старыми инструментами. Первоначальная доставка осуществляется через целевые фишинговые электронные письма, содержащие заархивированный файл PDF. Этот PDF-файл, на самом деле, представляет собой троянизированный файл LNK, который при открытии выполняет код JavaScript, перед заменой на не вредоносный PDF-файл.

Этот код на JavaScript создает запланированную задачу для загрузки EXE-файла, который собирает список установленных антивирусных продуктов перед загрузкой вторичного EXE-файла и передачей ему этого списка. Вторичный EXE загружает окончательную зашифрованную полезную нагрузку, содержащую PyVil, которая будет запущена непосредственно в памяти.

PyVil обладает различными функциями и позволяет злоумышленникам извлекать данные, запускать кейлоггер, собирать и отправлять файлы cookie на управляющий сервер, делать снимки экрана, а также использовать дополнительные инструменты, такие как LaZagne, для кражи учетных данных.

Нам предстоит погрузиться в относительно недавнюю деятельность группы Evilnum и исследовать ее новую цепочку заражения, а так же инструментарий.

Новые способы атак

В прошлом атаки Evilnum начинались с целевых фишинговых писем, доставляющих zip-архивы, содержащие файлы LNK, замаскированные под изображения. Эти файлы LNK скачивают скрипт/бэкдор, имеющий вышеуказанный функционал.

Изменения в процедуре заражения: во-первых, вместо доставки четырех разных файлов LNK в zip-архиве, который, в свою очередь, будет заменен файлом JPG, архивируется только один файл. Этот LNK-файл маскируется под PDF-файл, содержимое которого включает в себя несколько документов, таких как счета за коммунальные услуги, фотографии кредитных карт и фотографии водительских прав:

В отличие от предыдущих версий, которые обладали множеством функций, эта версия скрипта действует в основном как дроппер. Он является первым этапом в этой новой цепочке заражения, кульминацией которой является доставка полезной нагрузки, написанного на Python RAT, скомпилированного с py2exe, которую исследователи Nocturnus назвали PyVil RAT:

В Cybereason мы можем просматривать дерево процессов и извлечение JavaScript из файла LNK:

После того как сценарий заменяет файл LNK настоящим PDF-файлом, файл JS копируется в

“%localappdata%\Microsoft\Credentials\MediaPlayer\VideoManager\media.js” и запускается снова.

Во втором выполнении сценария исполняемый файл с именем «ddpp.exe», внедренный в файл LNK, извлекается и сохраняется в “%localappdata%\Microsoft\Credentials\MediaPlayer\ddpp.exe”.

В отличие от предыдущих версий, в которых вредоносная программа использовала ключ реестра Run для сохранения, в этой вместо создается запланированная задача с именем «Dolby Selector Task» для ddpp.exe:

С помощью этой запланированной задачи начинается второй этап атаки:

DDPP.EXE

Исполняемый файл ddpp.exe выглядит как версия “Java Web Start Launcher”, модифицированная для выполнения вредоносного кода:

При сравнении файла вредоносной программы с исходным файлом Oracle мы можем увидеть аналогичные метаданные между файлами. Основное отличие, на первый взгляд, заключается в том, что файл Oracle подписан, а вредоносная программа – нет:

Согласно Intezer, между исполняемым файлом вредоносной программы и легитимным файлом Oracle существует огромное количество общего кода:

Исполняемый файл ddpp.exe выполняет функции лоадера на следующих этапах заражения.

При запуске ddpp.exe распаковывает шелл-код:

После он подключается к C2 серверу с помощью запроса GET, отправляя в URI закодированный UUID зараженной машины и список установленных антивирусных продуктов. В свою очередь, вредоносная программа получает обратно другой зашифрованный исполняемый файл, который сохраняется на диск как «fplayer.exe» и запускается с использованием новой запланированной задачи:

FPLAYER.EXE

fplayer.exe работает как еще один лоадер. Полученный пейлоад затем загружается программой fplayer.exe в память и служит в качестве RAT. Файл сохраняется в папке “%localappdata%\microsoft\media player\player\fplayer.exe” и выполняется с помощью запланированной задачи с именем “Adobe Update Task”:

Fplayer.exe также выполняется с несколькими аргументами:

Закодированный UUID зараженной машины и три аргумента, которые PyVil RAT будет использовать на более позднем этапе:

“-m”: имя запланированной задачи.

“-f”: указывает PyVil RAT парсить остальные аргументы.

“-t”: обновить запланированную задачу

Подобно ddpp.exe, fplayer.exe представляет собой модифицированную версию “Установщика стереоскопического 3D-драйвера”:

Здесь мы также видим похожие метаданные между файлами, с той разницей, что исходный исполняемый файл Nvidia подписан, а вредоносная программа – нет:

И даже в этот раз, согласно Intezer, существует высокий процент сходства кода с Nvidia:

При запуске fplayer.exe также распаковывает шелл-код, но на этот раз отправляет в URI только закодированный UUID. Было замечено, что fplayer.exe получил другой зашифрованный исполняемый файл, который сохраняется как “%localappdata%\Microsoft\Media Player\Player\devAHJE.tm”.

Процесс расшифровывает полученный исполняемый файл и перемещает его в память. Расшифрованный файл представляет собой скомпилированный исполняемый файл py2exe.

PyVil

Код внутри скомпилированого файла с помощью py2exe обфусцирован, чтобы предотвратить декомпиляцию с помощью существующих инструментов. Используя дамп памяти, удалось извлечь первую часть кода на Python. Она декодирует и распаковывает вторую часть кода:

Вторая часть декодирует и загружает в память RAT и импортированные библиотеки:

PyVil имеет несколько функций, включая:

Глобальные переменные используемые в PyVil RAT:

PyVil RAT имеет модуль конфигурации, который содержит версию вредоносного ПО, домены C2 и пользовательские юзер-агенты для использования при взаимодействии с C2 сервером:

Связь с C2 осуществляется через HTTP-запросы POST с использованием закодированного ключа (base64):

В ходе анализа PyVil RAT несколько раз получал от C2 новый модуль Python для выполнения. Этот модуль является специальной версией проекта LaZagne, который группа Evilnum использовала в прошлом. Сценарий попытается сбросить пароли и собрать информацию cookie для отправки на C2:

C#

В марте 2019 года Palo Alto Networks описала вредоносное ПО с функциональностью, очень похожим на компонент JS, но написанное на C#. Эта версия (2.5) получила адрес своего C&C путем деления числа на 666 и поэтому была названа Evilnum. С тех пор появились новые версии вредоносного ПО, последняя из которых – версия 4.0, которую мы впервые увидели в апреле 2020 года. Число 666 больше не используется, а пути PDB к исполняемым файлам показывают, что разработчики называют свое вредоносное ПО «Чудо». Однако мы продолжим называть вредоносную программу Evilnum, чтобы избежать путаницы.

Последняя версия поставляется в виде файла MSI (установщика Windows) и работает независимо от компонента JS. Кроме того, у нее другой C&C. Однако во всех случаях, которые мы видели, компонент C# загружался и запускался после того, как вредоносная программа JavaScript получила первоначальный доступ.

При запуске файла MSI три вредоносных компонента вместе с некоторыми файлами библиотеки .NET Framework записываются на диск в папке %LOCALAPPDATA%\Microsoft\Mediia. Копировщик файлов запускается первым, и его единственная цель – переместить файлы в другое место. Затем запускается загрузчик, который загружает и расшифровывает содержимое файла System.Memmory.dll, который на самом деле представляет собой вредоносную полезную нагрузку для компонента C#. Шифрование AES используется для DLL и для обфускации строк в полезной нагрузке. Один и тот же ключ и вектор инициализации используются для шифрования строк во всех различных версиях.

Компоненты JS и C # связаны друг с другом: последний делает снимки экрана, а первый – нет, но у него есть код, который ищет файлы снимков экрана и отправляет их на свой C2 сервер. Компонент C# также удаляет все файлы с расширением .lnk в папке %LOCALAPPDATA%\Temp, очищая остатки от первоначального взлома компонентом JS.

Компоненты Golden Chickens

В небольшом количестве случаев группа Evilnum также использовала некоторые инструменты, приобретенные у поставщика вредоносных программ как услуги. Этот термин используется для описания авторов вредоносных программ, которые предлагают своим преступным клиентам не только свои вредоносные двоичные файлы, но и любую необходимую инфраструктуру (например, серверы управления и контроля) и даже техническую поддержку.

В этом случае поставщик MaaS известен как Golden Chickens и имеет других клиентов, таких как FIN6 и Cobalt Group. Более старые версии всех компонентов.

Инструменты Golden Chickens поставляются в виде компонентов ActiveX (файлов OCX), и все они содержат код TerraLoader, который служит общим загрузчиком для различных полезных данных, доступных клиентам Golden Chickens. Эти инструменты используются Evilnum следующим образом:

Злоумышленники вручную отправляют компоненту JS или C# команду на удаление и выполнение командного файла с одного из своих серверов.

Этот пакетный файл записывает вредоносный файл INF и передает его в качестве параметра служебной программе Microsoft cmstp.exe, которая выполняет удаленный скриптлет, указанный в файле INF. Этот метод был задокументирован в базе знаний MITER ATT & CK как CMSTP. Этот метод использовался в прошлом Cobalt, другой финансово мотивированной группой.

Удаленный скриптлет содержит обфусцированный JS-код, который удаляет файл OCX и выполняет его через regsvr32.exe.

Код TerraLoader выполняет несколько проверок целостности перед удалением полезной нагрузки. Эти проверки реализуют методы защиты от отладки и пытаются выявить аномалии, чтобы предотвратить выполнение в изолированной среде. Некоторые из этих методов варьируются от обнаружения неправильных параметров, имен файлов и расширений до обнаружения аппаратных точек останова или идентификации конкретных модулей, загруженных в предметный процесс. Если все эти проверки пройдут, фактическая полезная нагрузка расшифровывается и выполняется.

TerraPreter

Группа Evilnum также использует 64-битные исполняемые файлы, которые расшифровывают и запускают экземпляр Meterpreter в памяти. Использование Meterpreter дает им гибкость и возможность запускать различные полезные данные скрытым и расширяемым способом. Структура этих компонентов и реализованные проверки целостности были идентифицированы как код TerraLoader. Вот почему мы называем эти компоненты TerraPreter.

Подпрограмма с меткой Dummy вызывает серию API, которые ничего не делают. Инициализация функции RC4 подбирает ключ для использования, беря базовую строку и добавляя к ней число, которое увеличивается на каждой итерации. Затем он расшифровывает 16-байтовый буфер с помощью ключа-кандидата, используя RC4. Если расшифрованный буфер соответствует закодированной строке, то этот кандидатный ключ будет выбранным ключом RC4 для дальнейшего использования. Мы полагаем, что это может быть пустой тратой времени против эмуляторов.

После того, как встроенный буфер с полезной нагрузкой будет расшифрован, вредоносная программа наконец установит обратный вызов функции GrayStringW API, указывая на расшифрованный буфер. После прохождения многих уровней декодирования файл metsrv.dll Meterpreter загружается в память. С этого момента мы видим обычное поведение Meterpreter, которое не было изменено.

TerraPreter связывается с C2 сервером по протоколу HTTPS и получает ряд команд. Каждый раз, когда C2 получает запрос, он отправляет различные двоичные данные, обработанные методом XOR, со случайным 4-байтовым ключом.

Расширение инфраструктуры

В предыдущих атаках Evilnum избегали использования доменов для связи с C2, используя только IP-адреса, однако отслеживая новую инфраструктуру Evilnum, можно увидеть тенденцию к расширению. Хотя IP-адрес C2 меняется каждые несколько недель, список доменов, связанных с этим IP-адресом, продолжает расти. Несколько недель назад три домена, связанных с вредоносным ПО, были привязаны к одному IP-адресу, вскоре после этого IP-адреса C2 всех трех доменов изменились.

В этой статье мы исследовали новую цепочку заражения, созданную группой Evilnum. Evilnum на протяжении своей карьеры использовала различные типы инструментов, включая трояны JavaScript и C#, вредоносное ПО, приобретенное у Golden Chickens. Со всеми этими различными изменениями основной метод получения первоначального доступа к их целям остался прежним: использование поддельных документов «Знай своего клиента» (KYC), чтобы обмануть сотрудников финансовой отрасли и запустить вредоносное ПО.

Отказавшись от возможностей бэкдора JavaScript, вместо этого используя его в качестве дроппера на первом этапе для новых инструментов Evilnum использовал модифицированные версии легитимных исполняемых файлов, пытаясь оставаться незаметным и не обнаруживаемым средствами безопасности.

Группа развернула новый тип RAT, который исследователи Nocturnus назвали PyVil RAT, он может собирать информацию о машине, делать снимки экрана, запускать кейлоггер, подключение по SSH и даже позволяет развертывать новые инструменты. Этими инструментами могут быть как модуль Python, так и LaZagne, или любой исполняемый файл, и, таким образом, добавлять дополнительные функции для атаки по мере необходимости. Это нововведение в тактике и инструментах позволило группе оставаться в тени, и мы ожидаем увидеть больше в будущем по мере того, как арсенал группы Evilnum продолжает расти.

f4r6er
f4r6er Script kiddie, red teamer, Python lover.

Комментарии

  1. Очень полезная статья. Автору респект.

Leave a Reply

Your email address will not be published. Required fields are marked *