Описание вредоносного ПО

Loki: новый приватный агент для популярного фреймворка Mythic

В июле 2024 года мы обнаружили ранее неизвестный бэкдор Loki, который был использован в ряде целевых атак. Изучив вредоносный файл и открытые источники, мы выяснили, что Loki является приватной версией агента для фреймворка с открытым исходным кодом Mythic.

Одна из расшифрованных строк агента

Одна из расшифрованных строк агента

Наши решения детектируют эту угрозу как Backdoor.Win64.MLoki, чтобы отличать ее от других одноименных семейств зловредов, таких как Loki Bot, Loki Locker и т. д.

Mythic Framework

В 2018 году разработчик Коди Томас (Cody Thomas) создал собственный фреймворк Apfell с открытым исходным кодом для постэксплуатации скомпрометированных macOS-систем. Два года спустя к его проекту присоединилось несколько разработчиков, фреймворк стал кроссплатформенным и был переименован в Mythic. Основной проблемой существующих на тот момент фреймворков было неудобство создания различных агентов (клиентов), а также отсутствие единого интерфейса управления ими и поддержки модульности. Преимущество Mythic заключалось в том, что этот фреймворк позволяет использовать агенты на любом языке, созданные под любую платформу с необходимой разработчику функциональностью. На момент написания статьи в официальном репозитории Mythic опубликовано порядка двух десятков агентов.

Технические детали

Обнаруженный нами агент Loki является совместимой с Mythic версией агента для другого фреймворка, Havoc. Модификация Loki унаследовала от Havoc различные техники для усложнения анализа агента, такие как шифрование своего образа в памяти, непрямой вызов системных функций API, поиск функций API по хэшам и другие. Но в отличие от агента для Havoc Loki был разделен на загрузчик и DLL, в которой реализована основная функциональность зловреда.

Обе версии агента используют алгоритм хэширования djb2 для сокрытия API-функций и команд, однако в версии для Mythic он был также немного изменен. Если в агенте для Havoc использовалось оригинальное магическое число Дэниеля Бернштейна 5381, то в Loki его заменили на 2231.

Функциональность загрузчика

После запуска загрузчик Loki формирует пакет, содержащий информацию о зараженной системе, такую как версия операционной системы, внутренний IP-адрес, имя пользователя, архитектура процессора, путь к текущему процессу и его ID, и отправляет его в зашифрованном виде на командный сервер https://y[.]nsitelecom[.]ru/certcenter. В ответ сервер отправляет DLL, которую загрузчик помещает в память зараженного устройства, — обработка команд и дальнейшая коммуникация с C2 происходят в этой библиотеке. Далее мы рассмотрим две версии загрузчика, активность которых наблюдалась в мае и июле.

Майская версия загрузчика

MD5 375CFE475725CAA89EDF6D40ACD7BE70
SHA1 8326B2B0569305254A8CE9F186863E09605667E7
SHA256 81801823C6787B737019F3BD9BD53F15B1D09444F0FE95FAD9B568F82CC7A68D
Время компоновки 13:50 23.05.2024
Компилятор GNU Binutils 2.31
Тип файла Исполняемый файл Windows x64
Размер файла 92328 байт
Имя файла смета_27.05.2024.exe

Июльская версия загрузчика

MD5 46505707991E856049215A09BF403701
SHA1 21CDDE4F6916F7E4765A377F6F40A82904A05431
SHA256 FF605DF63FFE6D7123AD67E96F3BC698E50AC5B982750F77BBC75DA8007625BB
Время компоновки 11:23 25.07.2024
Компилятор GNU Binutils 2.31
Тип файла Исполняемый файл Windows x64
Размер файла 92672 байта
Имя файла winit.exe

Версия загрузчика, активность которой наблюдалась в мае, несколько отличается от июльского образца. Так, например, в более ранней версии используется протокол protobuf для сериализации данных, а новая частично повторяет принцип работы агента Ceos.

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

Пример отправляемых данных до шифрования июльской версией Loki: справа можно видеть UUID версии

Пример отправляемых данных до шифрования июльской версией Loki: справа можно видеть UUID версии

UUID уникален для каждого экземпляра зловреда. Изученный майский образец использовал идентификатор 86cd8a56-1657-42ce-a0e8-587bf8144c05, а июльский — 472719a8-e1ce-4a5c-9ab2-bb4d1139ae33.

Трафик июльской версии после шифрования AES и base64

Трафик июльской версии после шифрования AES и base64

Трафик майской версии после шифрования с открытым UUID

Трафик майской версии после шифрования с открытым UUID

В результате первого запроса к C2 сервер отдает полезную нагрузку в виде DLL с двумя экспортируемыми функциями: стандартной точкой входа DllMain и функцией Start, которую загрузчик вызывает для передачи дальнейшего управления в библиотеку.

Функциональность основного модуля

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

MD5 EB7886DDC6D28D174636622648D8E9E0
SHA1 98CFFA5906ADB7BBBB9A6AA7C0BF18587697CF10
SHA256 AA544118DEB7CB64DED9FDD9455A277D0608C6985E45152A3CBB7422BD9DC916
Время компоновки 12:00 03.05.2024
Компилятор GNU Binutils 2.31
Тип файла Исполняемый файл Windows x64
Размер файла 167424 байта
Имя файла stagger_1.1.dll

Главный модуль, так же как и загрузчик, основан на версии агента для Havoc, но список поддерживаемых команд частично заимствован из других агентов Mythic. Этот список не хранится в открытом виде в DLL, вместо этого в коде библиотеки указан ряд хэшей. Когда с сервера поступает команда, для ее названия обсчитывается хэш, который затем сверяется с хэшем из DLL.

Обработка команд по хэшам

Обработка команд по хэшам

Хэш Название команды Описание
0x00251B5E cd Изменить текущую директорию
0x36D4696F kill-process Завершить указанный процесс
0x03A9CB57 create-process Создать процесс
0x04C8848E bof Запустить Beacon Object File
0x04C89140 env Вывести список переменных окружения и их значения
0x04C8C122 pwd Показать текущую директорию
0x5A2DE070 sleep Изменить интервал между запросами к C2
0x5A41B798 token Управлять маркерами доступа Windows
0x7BD1668F download Отправить файл с зараженной машины на сервер
0x88BD45B4 inject Внедрить код, переданный с командой, в уже запущенный процесс
0x9DDAE271 exit Завершить процесс агента
0xA4E0A13C upload Отправить файл с сервера на зараженную машину

Инструменты для туннелирования трафика

Сам по себе агент не поддерживает туннелирование трафика, поэтому для доступа к частным сегментам сети злоумышленники применяли сторонние общедоступные утилиты. Совместно с Loki использовалась утилита ngrok в директории с загрузчиком агента. В других случаях были обнаружены экземпляры утилиты gTunnel, запущенной в контексте системных процессов svchost.exe и runtimebroker.exe. Примечательно, что, в отличие от ngrok, она была модифицирована с помощью goReflect таким образом, чтобы загружаться и выполняться в памяти, а не с диска.

Жертвы и распространение

С угрозой столкнулись более десятка российских компаний из различных сфер деятельности — от машиностроения до медицины. При этом мы полагаем, что число потенциальных жертв выше. По данным телеметрии и названиям файлов, в которых был обнаружен зловред, вроде «смета_27.05.2024.exe», «На_согласование_публикации_<предприятие>.rar», «ПЕРЕЧЕНЬ_ДОКУМЕНТОВ.ISO» и т. д. можно предположить, что в ряде случаев Loki попадает на компьютер жертвы через электронную почту, а затем невнимательный пользователь сам запускает его.

Атрибуция

На момент исследования данных о зловреде недостаточно, чтобы приписать Loki какой-либо известной группе. Вместо стандартных шаблонов электронных писем для распространения агента злоумышленники, вероятно, используют индивидуальный подход к своим целям. Также мы не заметили уникальных инструментов на зараженных машинах, которые могли бы помочь установить атрибуцию. Приоритет отдается только общедоступным утилитам для туннелирования трафика, таким как gTunnel и ngrok, и инструменту goReflect для их модификации.

Заключение

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

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

Июльская версия загрузчика
46505707991e856049215a09bf403701

Майская версия загрузчика
f0b6e7c0f0829134fe73875fadf3942f
796bdba64736a0bd6d2aafe773acba52
5ec03e03b908bf76c0bae7ec96a2ba83
0632799171501fbeeba57f079ea22735
97357d0f1bf2e4f7777528d78ffeb46e
f2132a3e82c2069eb5d949e2f1f50c94
7f85e956fc69e6f76f72eeaf98aca731
375cfe475725caa89edf6d40acd7be70
dff5fa75d190dde0f1bd22651f8d884d
05119e5ffceb21e3b447df49b52ab608
724c8e3fc74dde15ccd6441db460c4e4
834f7e48aa21c18c0f6e5285af55b607
e8b110b51f45f2d64af6619379aeef62

Основной модуль
eb7886ddc6d28d174636622648d8e9e0

gTunnel
1178e7ff9d4adfe48064c507a299a628
dd8445e9b7daced487243ecba2a5d7a8

ngrok
4afad607f9422da6871d7d931fe63402

Адреса C2:
http://y[.]nsitelecom[.]ru/certcenter
http://document[.]info-cloud[.]ru/data
http://ui[.]telecomz[.]ru/data

Loki: новый приватный агент для популярного фреймворка Mythic

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Отчеты

CloudSorcerer: новая APT-угроза, нацеленная на российские государственные организации

«Лаборатория Касперского» обнаружила новую APT-угрозу CloudSorcerer, нацеленную на российские государственные организации и использующую облачные службы в качестве командных серверов аналогично APT CloudWizard.

StripedFly: двуликий и незаметный

Разбираем фреймворк StripedFly для целевых атак, использовавший собственную версию эксплойта EternalBlue и успешно прикрывавшийся майнером.

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике