- sha1: 60eaa4fd53b78227760864e6cf27b08bc4bdde72
Описание
Троян для ОС Windows, написанный на языке С. Представляет собой DLL с зашифрованной полезной нагрузкой.
Принцип действия
При инициализации троян последовательно создает два потока: один используется для расшифровки данных, а другой — для запуска полезной нагрузки.
Изначально полезная нагрузка зашифрована ключом, соответствующим пути до исполняемого файла. Во время первого запуска троян пересоздает исполняемый файл, накладывая на него еще один этап шифрования, за счет чего полезная нагрузка привязывается к зараженному ПК.
Подготовительный этап состоит из следующих шагов:
- Генерируется случайная соль, которая сохраняется в новое тело трояна по определенному смещению.
- Получается системная информация о BIOS.
- Данная информация хешируется с использованием соли, созданной на 1 этапе, полученный хеш является ключом для шифрования полезной нагрузки.
- Полезная нагрузка шифруется «пользовательским» ключом.
После данного преобразования троян имеет два этапа расшифровки:
Этап 1. Расшифровка с помощью констант с зараженного ПК
- По определенному смещению берется соль, сохраненная в тело трояна.
- С использованием соли получается хеш системной информации о BIOS.
- Происходит расшифровка полезной нагрузки.
Этап 2. Расшифровка полезной нагрузки, зашифрованной ключом по умолчанию
- Из структуры RTL_USER_PROCESS_PARAMETERS извлекается значение ImagePathName — данное поле является Unicode-строкой, ее длина должна быть больше 0x76 байт (в нашем случае именем файла было %LOCALAPPDATA%\Yandex\YandexBrowser\Application\Wldp.dll).
- Из данного пути отбираются 0x76 последних байт.
- Вычисляется хеш данного пути, который является ключом для симметричного алгоритма.
- Происходит расшифровка полезной нагрузки.
Алгоритм шифрования
В качестве симметричного алгоритма шифрования используется модифицированный алгоритм ChaCha20. Модификация заключается в добавочном слое для инициализации ключа: входной ключ проходит 1 раунд алгоритма, после чего становится уже ключом для нормального алгоритма.
Алгоритм хеширования
В качестве функции хеширования используется модифицированный алгоритм BLAKE2. Модификация заключается в использовании многократного хеширования входных данных.
Полезная нагрузка
Представляет собой шелл-код, сгенерированный с помощью https://github.com/TheWover/donut/tree/master. Данный шелл-код раскодирует и загружает MZPE-файл, написанный на .NET, основной задачей которого является запуск вредоносного ПО, скачиваемого из интернета. Основное тело шелл-кода находится в https://github.com/TheWover/donut/blob/master/loader_exe_x64.h.
Выполняемые действия шелл-кода:
- Проверка флага, отвечающего за выполнение загрузки в отдельном или основном потоке.
- Расшифровка MZPE-файла в новую выделенную область памяти.
- Загрузка библиотек ole32.dll, oleaut32.dll, wininet.dll, mscoree.dll, и shell32.dll с помощью функции LoadLibraryA.
- Получение адресов функций WldpQueryDynamicCodeTrust, WldpIsClassInApprovedList, EtwEventWrite и EtwEventUnregister с помощью функции GetProcAddress.
- Инициализация работы с интерфейсом AMSI:
- загрузка библиотеки amsi.dll,
- получение адресов функций AmsiInitialize, AmsiScanBuffer и AmsiScanString.
- Проверка флага, включающего обход AMSI; в данном семпле этот флаг не установлен.
- Загрузка .NET-приложения.
Функции .NET-стейджера заключаются в скачивании другого вредоносного ПО, сохранении его под именем YandexUpdater.exe и последующем запуске. К моменту нашего расследования на сервере, с которого должно было скачиваться данное вредоносное ПО, файл уже был недоступен, вследствие чего нам не удалось его однозначно идентифицировать. Однако можно предположить, что данный файл мог являться тем же Trojan.Packed2.46324.