Загрузчик XWorm V7.4 на Python: злоумышленники прячут троян в самодельных сборках PyInstaller

security

Специалисты компании Point Wild провели детальный анализ вредоносного образца, упакованного с помощью PyInstaller. Результаты показали, что это многоступенчатый загрузчик, который разворачивает в системе троян удалённого доступа XWorm V7.4. Исследователи восстановили всю цепочку исполнения: от обфускации API до модификации памяти для отключения средств защиты.

Описание

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

Вредоносная программа написана на Python, затем скомпилирована в байт-код (файл .pyc) и упакована в исполняемый файл при помощи PyInstaller. Анализ "Detect It Easy" показал, что упаковщик был модифицирован - это характерно для современных кампаний, стремящихся усложнить извлечение кода. После распаковки исследователи обнаружили модуль BA4Q6ACPMNrd980FwZn9iEbEqkjvRmw7FhW.pyc, который и выполняет всю вредоносную работу.

Загрузчик использует несколько приёмов обхода защиты. Первый этап - динамическое разрешение API. Вместо статических импортов он собирает имена функций через сдвиг символов: "''.join([chr(ord(c) - 1) for c in ...])". Затем через "LoadLibraryA" и "GetProcAddress" получает адреса нужных функций, в том числе связанных с интерфейсом AMSI (инструмент Microsoft для сканирования скриптов). После этого программа прямо в памяти изменяет код "AmsiScanBuffer". С помощью "VirtualProtect" она меняет атрибуты доступа на исполняемые и записывает патч - последовательность байт "[184, 87, 0, 7, 128, 195]". Этот приём ослабляет проверки AMSI и снижает видимость вредоносной активности для антивирусов.

Далее загрузчик переходит к расшифровке полезной нагрузки. Внутри файла хранится закодированный блок данных. Сначала он декодируется с помощью "base64.b85decode", затем на основе параметра генерируется ключ SHA-512. После этого выполняется цикл преобразований с использованием XOR, модульной арифметики и вращения байтов. Результат распаковывается через "zlib.decompress". Такой многослойный механизм скрывает исполняемый файл и не позволяет извлечь его статическими средствами.

Восстановленный исполняемый файл (в отчёте он назван afacan313131.exe) загрузчик записывает на диск в папку "%LOCALAPPDATA%" под именем "Win.Kernel_Svc_AJ8iOw.exe". Имя имитирует стандартные службы Windows, чтобы не привлекать внимания. Сразу после записи программа устанавливает атрибуты файла "HIDDEN" и "SYSTEM" (значение 8198), делая его невидимым при обычном просмотре. Запуск payload (полезной нагрузки) осуществляется с флагами, подавляющими создание консоли, - так окно не появляется.

Перед началом всей цепочки загрузчик выполняет рутину-пустышку "_IAT_PHANTOM_FIX", которая просто генерирует 1000 хешей SHA-512. Это отвлекающий манёвр для анализаторов и песочниц.

Вторая стадия - анализ самого трояна afacan313131.exe, написанного на .NET. Он использует AES-расшифровку параметров конфигурации во время выполнения. Среди них версия XWorm V7.4, адрес сервера управления "tcp://68[.]219[.]64[.]89:4444", порт 4444 и секретный ключ "<V74PV74PV74PV74PV74P>". Связь с сервером идёт по TCP с шифрованием AES-ECB. Также троян генерирует уникальный идентификатор жертвы на основе имени компьютера, имени пользователя, версии ОС и числа процессоров.

Перед подключением к серверу XWorm собирает информацию о системе: время создания файла, статус контроля учётных записей UAC, наличие веб-камеры, характеристики процессора, видеокарты, оперативной памяти (через WMI), а также список установленных антивирусов. Все эти данные отправляются на сервер.

Сервер может отправлять заражённой машине различные команды: перезагрузка трояна, самоудаление, обновление, установка дополнительных полезных нагрузок на диск и безфайловое исполнение в памяти с использованием отражённой загрузки (reflective loading). Кроме того, троян поддерживает выполнение произвольных команд, запуск URL, управление питанием и организацию DDoS-атак.

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

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

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

IPv4 Port Combinations

  • 68.219.64.89:4444

MD5

  • c7a6f220f2ff7d6718a5b2f0e85f13dd
  • d4494a5b1430f7c5347408732cdbd668

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