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

Стилер Lumma: исследование каналов распространения

Введение

С развитием модели «вредоносное ПО как услуга» (MaaS) входной барьер для начинающих киберпреступников значительно снизился, а стилеры стали одним из самых доходных инструментов в арсенале злоумышленников. Среди подобных предложений особенно выделяется стилер Lumma, впервые представленный в 2022 году злоумышленником с ником Lumma. Изначально он распространялся под названием LummaC2 со стартовой ценой 250 долл. США и быстро набрал популярность на теневых форумах. По состоянию на март 2025 года число связанных с ним предложений в даркнете и Telegram-каналах продолжает расти, а клиентская база стилера насчитывает более тысячи активных подписчиков.

Официальный сайт продавца LummaC2

Официальный сайт продавца LummaC2

Доставка Lumma обычно требует взаимодействия с пользователем, который должен, например, перейти по ссылке или запустить выполнение вредоносных команд. Недавно в ходе обработки одного из обращений за сервисом реагирования глобальная команда экстренного реагирования на киберинциденты «Лаборатории Касперского» (GERT) обнаружила в системе клиента стилер Lumma. Анализ показал, что причиной инцидента стали именно действия пользователя. Его обманом заставили запустить вредоносную команду через поддельную страницу CAPTCHA. В этой статье мы подробно расскажем, как происходит заражение в сценарии с поддельной CAPTCHA, и представим индикаторы компрометации, которые мы обнаружили в ходе исследования. Хотя мы уже рассматривали этот метод распространения в одной из предыдущих статей, с тех пор нам удалось обнаружить новые детали этой кампании.

Векторы распространения стилера Lumma

Методы распространения стилера Lumma разнообразны, но при этом используются общие подходы, характерные для кампаний по сбору и краже данных. Основными векторами заражения являются фишинговые письма с вредоносными вложениями или ссылками, а также троянизированные легитимные приложения. Эти обманные тактики заставляют пользователей запускать вредоносное ПО, которое будет незаметно работать в фоновом режиме и собирать ценную информацию. Также в некоторых кампаниях Lumma использовались наборы эксплойтов, социальная инженерия и скомпрометированные веб-сайты, чтобы расширить охват жертв и избежать обнаружения средствами безопасности. В этой статье мы сосредоточимся на векторе распространения через поддельные CAPTCHA.

Он включает поддельные страницы верификации, которые выглядят как легитимные и часто размещаются на платформах, использующих сети доставки контента (CDN). Как правило, подделки маскируются под популярные CAPTCHA, например Google reCAPTCHA и Cloudflare CAPTCHA, чтобы пользователи поверили, что они работают с доверенным сервисом.

Векторы распространения поддельных CAPTCHA

Схема распространения Lumma через поддельные CAPTCHA

Схема распространения Lumma через поддельные CAPTCHA

Существует две разновидности ресурсов, через которые распространяются поддельные страницы CAPTCHA.

  • Веб-сайты для распространения пиратского медиаконтента, материалов для взрослых и взломанного ПО. Злоумышленники клонируют такие сайты и размещают на их дубликатах вредоносную рекламу, которая перенаправляет пользователей на фальшивую CAPTCHA.
  • Поддельные Telegram-каналы на тему пиратского контента и криптовалют. Злоумышленники создают Telegram-каналы с названиями, в которых есть ключевые слова, связанные с криптовалютами или пиратским контентом — программным обеспечением, фильмами и т. д. Когда пользователь ищет такой контент, мошеннические каналы появляются в верхней части результатов поиска. Кроме того, злоумышленники используют посты в социальных сетях, чтобы привлечь жертв в эти каналы. Когда пользователь присоединяется к такому каналу, ему предлагают пройти проверку личности с помощью мошеннического бота Safeguard Captcha.
    Бот Safeguard Captcha

    Бот Safeguard Captcha

    После нажатия пользователем кнопки Verify бот открывает всплывающее окно с поддельной CAPTCHA.

Поддельная страница CAPTCHA

Пользователи видят всплывающее окно, похожее на стандартную проверку CAPTCHA, с предложением нажать кнопку I’m not a robot, Verify, Copy или аналогичную. Тут и начинаются различия с реальной проверкой.

Примеры поддельных страниц CAPTCHA

Примеры поддельных страниц CAPTCHA

Вредоносное содержимое поддельной страницы

После нажатия кнопки I’m not a robot, Verify или Copy от пользователя требуется выполнить необычную последовательность действий:

  • открыть диалоговое окно Выполнить (Win+R);
  • нажать Ctrl+V;
  • нажать Enter.

После нажатия кнопки в буфер обмена без ведома пользователя автоматически копируется команда PowerShell. Когда пользователь вставляет команду в диалоговое окно Выполнить и нажимает Enter, система выполняет эту команду.

Примеры скриптов, скопированных в буфер обмена и выполняемых через диалоговое окно "Выполнить"

Примеры скриптов, скопированных в буфер обмена и выполняемых через диалоговое окно «Выполнить»

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

Команда, запускающая цепочку заражения Lumma

Команда, запускающая цепочку заражения Lumma

Команда довольно проста. Она декодирует и запускает содержимое удаленного файла win15.txt, размещенного по адресу https://win15.b-cdn.net/win15.txt. Содержимое файла win15.txt представляет собой скрипт PowerShell, закодированный с помощью алгоритма Base64, который загружает и запускает стилер Lumma. После расшифровки вредоносный скрипт PowerShell выглядит следующим образом:

Содержимое файла win15.txt

Содержимое файла win15.txt

Скрипт выполняет следующие действия.

  1. Загрузка вредоносного ПО. Он загружает файл win15.zip по адресу https[:]//win15.b-cdn[.]net/win15.zip и сохраняет его как [профиль пользователя]\AppData\Roaming\bFylC6zX.zip.
  2. Извлечение вредоносного ПО. Загруженный ZIP-файл распаковывается в C:\Users\[пользователь]\AppData\Roaming\7oCDTWYu — скрытую папку в каталоге AppData пользователя.
  3. Выполнение вредоносного ПО. Скрипт запускает из распакованного архива файл Set-up.exe, который находится по пути C:\Users\[пользователь]\AppData\Roaming\7oCDTWYu\Set-up.exe.
  4. Закрепление в системе. Скрипт создает запись в реестре Windows для закрепления, чтобы вредоносная программа запускалась при каждом запуске системы. Запись добавляется в раздел HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Имя записи — 5TQjtTuo, а ее значение указывает на файл Set-up.exe.

Однако в некоторых случаях механизм доставки вредоносного ПО может быть более сложным. В следующем примере скрипт доставки представляет собой JavaScript-код, скрытый внутри файла с расширением .mp3 (также использовались и другие форматы, в том числе .mp4 и .png). На деле такой файл может содержать не только JavaScript, но и поврежденный медиаконтент в формате MP3 или MP4, фрагменты легитимного ПО или просто случайные данные.

Скрипт запускается с помощью движка Microsoft HTML Application (mshta.exe) после того, как пользователя обманом вынуждают вставить в окно Выполнить следующую команду:

Команда, запускающая цепочку заражения на основе JavaScript

Команда, запускающая цепочку заражения на основе JavaScript

Команда mshta обрабатывает файл как HTA-приложение (Microsoft HTML Application), выполняет любой JavaScript-код, содержащийся в теге <script>, и инициирует дальнейшую цепочку заражения.

Уровень (1)

Скрипт JavaScript внутри файла .mp3 выполняется программой mshta.

Скрипт JavaScript внутри файла never.mp3

Скрипт JavaScript внутри файла never.mp3

Уровень (2)

После вычисления значения Kwb получается следующий скрипт, который затем выполняется функцией eval.

Скрипт JavaScript уровня (2)

Скрипт JavaScript уровня (2)

Уровень (3)

После вычисления значений для kXN и zzI создается и выполняется финальная команда ActiveX. Она содержит закодированный PowerShell-скрипт в переменной $PBwR.

Деобфусцированный скрипт JavaScript уровня (2)

Деобфусцированный скрипт JavaScript уровня (2)

Уровень (4)

Расшифровав скрипт PowerShell, мы выяснили, что его основная цель — загрузить и выполнить другой файл PowerShell с командного сервера по адресу hXXps://connect[.]klipfuzj[.]shop/firefire[.]png.

Расшифрованный PowerShell-скрипт уровня (3)

Расшифрованный PowerShell-скрипт уровня (3)

Анализ файла firefire.png

Файл firefire.png представляет собой большой файл PowerShell (~31 МБ) с различными уровнями обфускации и защиты от отладки. После деобфускации и удаления ненужного кода мы обнаружили, что основная цель файла — это генерация и выполнение зашифрованного скрипта PowerShell, как показано ниже:

firefire.png

firefire.png

Ключ для расшифровки генерируется в результате выполнения команды Invoke-Metasploit, которая будет заблокирована, если активирована функция AMSI. В таком случае AMSI выведет сообщение об ошибке: AMSI_RESULT_NOT_DETECTED, которое и будет использоваться в качестве ключа. Если функция AMSI отключена, вредоносная программа не сможет расшифровать скрипт.

Размер расшифрованного скрипта PowerShell составляет примерно 1,5 МБ, и его основная цель — сгенерировать и запустить вредоносный исполняемый файл.

Расшифрованный скрипт PowerShell

Расшифрованный скрипт PowerShell

Методы и способы заражения

В кампаниях Lumma применялись разные методы распространения, среди которых особенно выделяются два ключевых подхода: техника DLL sideloading и внедрение полезной нагрузки в секцию overlay легитимного бесплатного ПО. Эти методы дают эффективную защиту от обнаружения, так как они опираются на доверие пользователей к популярным приложениям и системным процессам.

  • Техника DLL sideloading

    Техника DLL sideloading — это широко известный метод, при котором вредоносные DLL-библиотеки загружаются легитимным приложением. Этот метод полагается на уязвимости или ошибки в настройках программного обеспечения, из-за которых DLL-файлы загружаются из ненадежных каталогов. Злоумышленники могут поместить DLL-библиотеку стилера Lumma в тот же каталог, что и доверенное приложение, в результате чего она будет загружена при его запуске. Поскольку вредоносная DLL загружается в контексте доверенного процесса, традиционным средствам безопасности гораздо сложнее выявить вторжение.

  • Внедрение полезной нагрузки в секцию overlay программного обеспечения

    Еще один распространенный прием, применяемый стилером Lumma, — это внедрение полезной нагрузки в секцию overlay бесплатных программ. Через секцию overlay обычно реализуются легитимные функции ПО, например вывод графического интерфейса или обработка определенных событий ввода. Вмешательство в эту секцию позволяет злоумышленнику внедрить полезную нагрузку, не нарушив нормальное функционирование программы. Такой метод особенно опасен: приложение выглядит как легитимное и продолжает работать, но в фоновом режиме незаметно выполняет вредоносный код. Кроме того, это позволяет зловреду обходить средства защиты, осуществляющие мониторинг на системном уровне.

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

Анализ образца Lumma

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

Начальное выполнение и самораспаковывающийся архив RAR (SFX)

Начальная полезная нагрузка в этом образце представляет собой файл ProjectorNebraska.exe, содержащий поврежденный легитимный исполняемый файл с вредоносным кодом в секции overlay. Его запускает жертва. После выполнения файл распаковывает и запускает самораспаковывающийся архив RAR (SFX). В этом архиве содержится следующий этап заражения: установщик на основе Nullsoft Scriptable Install System (NSIS), популярного инструмента для создания установщиков в среде Windows.

Компоненты установщика NSIS

Установщик NSIS содержит несколько компонентов, необходимых для выполнения вредоносной программы.

Компоненты установщика NSIS

Компоненты установщика NSIS

К ним относятся компоненты AutoIt и обфусцированный загрузчик на основе batch-скриптов под названием Hose.cmd. В системе сохраняются следующие компоненты AutoIt.

  • Фрагменты легитимного исполняемого файла AutoIt: части легитимного файла AutoIt, которые попадают в систему жертвы и собираются воедино в ходе заражения.
  • Скомпилированный скрипт AutoIt: именно он выполняет ключевые функции стилера Lumma, включая кражу учетных данных и эксфильтрацию похищенной информации.

Впоследствии эти компоненты объединяются в конечную исполняемую полезную нагрузку с помощью загрузчика на основе batch-скриптов, который собирает и запускает отдельные фрагменты.

Файл Hose.cmd отвечает за финальные этапы выполнения вредоносной программы. Ниже приведен разбор его ключевых компонентов (после деобфускации).

Деобфусцированный код batch-скрипта

Деобфусцированный код batch-скрипта

Дерево процессов после выполнения batch-скрипта

Дерево процессов после выполнения batch-скрипта

Batch-скрипт выполняет следующие задачи.

  • Обход решений безопасности.
    • Скрипт проверяет систему на наличие защитного ПО SecureAnywhere и Quick Heal AntiVirus с помощью команды tasklist. Если одно из них обнаружено, выполнение скрипта приостанавливается командой ping -n 198, которая пингует localhost 198 раз. Этот прием позволяет обойти обнаружение в песочнице, так как песочница обычно покидает процесс до окончания выполнения команды ping скриптом.
    • Скрипт проверяет наличие Avast, AVG, McAfee, Bitdefender или Sophos с помощью команды tasklist. Если обнаружена хотя бы одна из этих программ, исполняемый файл AutoIt будет сохранен под именем AutoIt3.exe. В противном случае он будет переименован в Suggests.pif.
  • Настройка среды и подготовка полезной нагрузки. Скрипт устанавливает переменные окружения для исполняемого файла AutoIt и конечной полезной нагрузки. Кроме того, он создает рабочий каталог с именем 195402 в папке Temp для хранения вредоносных компонентов.
  • Обфускация и извлечение. Скрипт фильтрует и очищает файл с именем Sitting из состава установщика NSIS: удаляет строку OptimumSlipProfessionalsPerspective и сохраняет результат как Suggests.pif. Затем с помощью команды copy /b скрипт объединяет Suggests.pif с дополнительным компонентом из установщика NSIS под названием Oclc и сохраняет полученный исполняемый файл AutoIt под именем Suggests.pif.
  • Сборка полезной нагрузки. Скрипт объединяет несколько файлов из установщика NSIS, включая Italy, Holmes, True и другие, чтобы создать итоговый исполняемый файл с именем h.a3x, который является скриптом AutoIt.
  • Выполнение стилера Lumma. Наконец, скрипт запускает Suggests.pif, который, в свою очередь, выполняет h.a3x, инициируя выполнение стилера Lumma через AutoIt.

Анализ скрипта AutoIt

Во время анализа для декомпиляции и извлечения скрипта из файла h.a3x использовалась утилита AutoIt Extractor. Скрипт был сильно обфусцирован и требовал дополнительной деобфускации для получения чистого .au3-файла, пригодного для анализа. Ниже приведен анализ поведения загрузчика AutoIt.

Извлечение скрипта AutoIt

Извлечение скрипта AutoIt

Проверки для обхода анализа

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

Проверка среды

Проверка среды

Затем скрипт проверяет наличие процессов таких популярных антивирусных программ, как Avast (avastui.exe), Bitdefender (bdagent.exe) и Kaspersky (avp.exe).

Проверки для обхода антивирусных решений

Проверки для обхода антивирусных решений

Если выполняется хотя бы одно из этих условий, скрипт приостанавливает работу, чтобы избежать обнаружения.

Выполнение шелл-кода загрузчика

Если проверки на наличие средств анализа пройдены, скрипт динамически выбирает в зависимости от архитектуры системы 32- или 64-разрядный шелл-код, хранящийся в переменной $vinylcigaretteau скрипта. Затем он выделяет исполняемую область памяти и внедряет в нее выбранный шелл-код. После этого шелл-код инициализирует среду выполнения и подготавливается к полезной нагрузке второго этапа.

Часть загрузчика AutoIt, отвечающая за выполнение шелл-кода

Часть загрузчика AutoIt, отвечающая за выполнение шелл-кода

Обработка полезной нагрузки $dayjoy

После выполнения шелл-кода загрузчика скрипт обрабатывает полезную нагрузку второго этапа, хранящуюся в переменной $dayjoy. Она расшифровывается с использованием алгоритма RC4 и заранее заданного ключа 1246403907690944.

Зашифрованная полезная нагрузка

Зашифрованная полезная нагрузка

Для расшифровки полезной нагрузки мы написали собственный Python-скрипт, который представлен на скриншоте ниже.

Python-скрипт для расшифровки полезной нагрузки

Python-скрипт для расшифровки полезной нагрузки

Расшифрованная полезная нагрузка распаковывается с помощью алгоритма LZNT1.

Распаковка полезной нагрузки

Распаковка полезной нагрузки

Выполнение конечной полезной нагрузки

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

Выполнение конечной полезной нагрузки

Выполнение конечной полезной нагрузки

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

  • учетные данные криптовалютных кошельков (например, Binance, Ethereum) и связанные с ними расширения для браузера (например, MetaMask);
  • данные двухфакторной аутентификации (2FA) и расширения аутентификаторов;
  • учетные данные и файлы cookie, сохраненные в браузере;
  • сохраненные учетные данные для инструментов удаленного доступа, например AnyDesk;
  • сохраненные учетные данные из менеджеров паролей, например KeePass;
  • данные системы и приложений;
  • финансовую информацию, например номера кредитных карт.

Взаимодействие с командным сервером

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

Идентифицированные командные серверы

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

Через эти домены передаются украденные данные из зараженных систем. Связь с ними обычно устанавливается через зашифрованные запросы HTTP POST.

Выводы

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

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

Ниже приведен список URL-адресов, обнаруженных в ходе нашего исследования. Обратите внимание, что злоумышленники почти ежедневно меняют вредоносные ссылки и Telegram-каналы, и на момент публикации указанные индикаторы компрометации уже были неактивны. Тем не менее они могут быть полезны для ретроспективного обнаружения угроз.

Вредоносные поддельные страницы CAPTCHA

Telegram-каналы, распространяющие Lumma

Стилер Lumma: исследование каналов распространения

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

 

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

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