Разбор цепочки заражения через документ Excel: от OLE-объекта до LuaJIT-инфостилера

Разбор цепочки заражения через документ Excel: от OLE-объекта до LuaJIT-инфостилера

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

В ходе анализа одного из подобных образцов была исследована полная цепочка заражения — от письма с вложением Excel до запуска LuaJIT-загрузчика и последующего инфостилера. Интересной особенностью кампании является использование файлов с нестандартными расширениями ( .PIF и .TTF ), которые на самом деле не являются ни ярлыком, ни шрифтом.

Ниже рассмотрим каждый этап работы вредоносной цепочки.

Первоначальное письмо

На электронную почту поступает письмо с вложением:

При открытии документа пользователь не наблюдает какой-либо подозрительной активности. Документ практически пустой и не содержит заметного содержимого.

Однако если открыть файл как Compound File Storage (OLE Structured Storage), можно увидеть следующую структуру:

Для документов формата XLS наличие OLE-потоков является абсолютно нормальным явлением.

Однако содержимое потока [1]Ole заслуживает внимания.

Внутри присутствует строка:

На первый взгляд URL напоминает новостную публикацию о Windows Update на сайте WindowsLatest. На самом деле это лишь попытка замаскировать вредоносную инфраструктуру под легитимный ресурс.

Сетевая цепочка

После открытия документа начинается последовательность HTTP-запросов.

Первый запрос выполняется по адресу:

Сервер отвечает:

После чего происходит перенаправление на сокращённую ссылку:

Следующий ответ:

и браузер перенаправляется на конечный адрес:

Именно здесь начинается фактическая стадия заражения.

Схематично цепочка выглядит следующим образом:

Использование нескольких HTTP-редиректов позволяет злоумышленникам:

затруднить анализ;

затруднить анализ;

быстро менять конечный сервер;

быстро менять конечный сервер;

скрывать реальную инфраструктуру;

скрывать реальную инфраструктуру;

обходить простые URL-фильтры.

обходить простые URL-фильтры.

После прохождения цепочки редиректов загружается файл

HTA (HTML Application) представляет собой обычный HTML-документ, который исполняется движком Internet Explorer с практически полными правами пользователя.

Основной код представляет собой сильно обфусцированный VBScript.

После деобфускации получается следующий код:

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

Последовательность его работы следующая:

Создаётся объект WScript.Shell .

Создаётся объект WScript.Shell .

Через %COMSPEC% запускается cmd.exe .

Через %COMSPEC% запускается cmd.exe .

Из cmd.exe запускается PowerShell.

Из cmd.exe запускается PowerShell.

PowerShell стартует в скрытом режиме.

PowerShell стартует в скрытом режиме.

Политика выполнения скриптов отключается ( ExecutionPolicy Bypass ).

Политика выполнения скриптов отключается ( ExecutionPolicy Bypass ).

Пользовательский профиль не загружается ( NoProfile ).

Пользовательский профиль не загружается ( NoProfile ).

Окно PowerShell скрывается ( WindowStyle Hidden ).

Окно PowerShell скрывается ( WindowStyle Hidden ).

Выполняется загрузка следующего этапа.

Выполняется загрузка следующего этапа.

Загруженный JavaScript сразу исполняется.

Загруженный JavaScript сразу исполняется.

Фактически данный HTA-файл не содержит вредоносной нагрузки как таковой. Его единственная задача — загрузить следующий компонент.

Следующим этапом становится выполнение файла

Несмотря на большое название, функциональность достаточно простая. Скрипт скачивает два файла:

На первый взгляд может показаться, что:

PIF — старый ярлык Windows;

PIF — старый ярлык Windows;

TTF — обычный шрифт.

TTF — обычный шрифт.

Однако оба файла используются совершенно иначе.

Необычное использование PIF

на самом деле является исполняемым LuaJIT Loader.

Второй файл

не является шрифтом. Это обычный Lua-скрипт.

Запуск происходит следующим образом:

Таким образом:

Расширение .ttf используется исключительно для маскировки.

Сам LuaJIT Loader получает путь к файлу и интерпретирует его как Lua-код.

Подобный подход имеет сразу несколько преимуществ:

обход простых сигнатур;

обход простых сигнатур;

сокрытие настоящего назначения файла;

сокрытие настоящего назначения файла;

усложнение статического анализа;

усложнение статического анализа;

снижение количества детектов антивирусами.

снижение количества детектов антивирусами.

После запуска начинается активный сбор информации о системе.

Сбор сведений о системе

Сначала производится чтение различных ключей реестра.

Получается:

MachineGuid;

MachineGuid;

ComputerName;

ComputerName;

InstallationType;

InstallationType;

версия таблиц сортировки NLS.

версия таблиц сортировки NLS.

Это позволяет сформировать уникальный идентификатор заражённой системы.

Отключение журналирования

Далее вредоносная программа изменяет настройки трассировки Windows.

Изменяется значение:

Параметр:

Тем самым отключается файловое журналирование RAS API.

Подобная техника соответствует MITRE ATT&CK:

Проверка параметров Internet Explorer

Следующим этапом читаются настройки безопасности Internet Explorer.

В частности анализируются параметры:

Даже несмотря на то, что Internet Explorer давно считается устаревшим, его компоненты до сих пор используются многими системными механизмами Windows.

Запуск браузеров

Интересной особенностью является запуск Chrome и Microsoft Edge с необычными параметрами.

Например:

Создаётся полностью отдельный профиль пользователя.

Это позволяет избежать конфликтов с уже работающим браузером и выполнять операции независимо от основной пользовательской сессии.

Поиск конфиденциальной информации

Наиболее интересная часть начинается далее. Lua-скрипт начинает проверять наличие множества файлов и директорий.

Почтовые клиенты

Проверяются:

В Outlook производится обращение к ключам профиля:

Проверяются:

Изучаются:

Cookies;

Cookies;

Local State;

Local State;

профили пользователей;

профили пользователей;

настройки браузеров.

настройки браузеров.

Менеджеры паролей

Производятся обращения к расширениям популярных менеджеров паролей.

Например:

Криптовалютные кошельки

Проверяются каталоги расширений:

Каждый идентификатор соответствует определённому браузерному расширению криптовалютного кошелька.

Также производится поиск:

В частности:

где могут храниться токены авторизации.

Общая схема заражения

Полная цепочка выглядит следующим образом:

Каждый этап выполняет только одну функцию, благодаря чему вся цепочка становится значительно менее заметной для средств защиты. И все полученные данные отправляет уже на IP как 38.49.217.157.

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

Номер заказа 6482 .xls

a95dedfe8471179b42d61538954be3d42aec68321181ac9bc74fefc30160991d

fdd.hta

540a0c9d12b13a3b084fac354c6c3cf7bfaea52bdf7c00ef69f9bb1881060498

JJGIMJPBTQUZEYUL.PIF

52f0c0230b580e2fdf53a378b5c6d0db9829af900dae43e0df8f18635cd9f0c1

JJGIMJPBTQUZEYUL.ttf

c33c556661cb27e1277702cbba93dfd466742690edca38ea55bf5532387068a6

Отдельно хочется отметить, что на момент анализа сервер http://192.236.217.77/33 всё ещё оставался доступен, а файлы, которые использовались в данной цепочке заражения, продолжали находиться на нём. То есть инфраструктура атаки не была отключена и всё ещё могла использоваться для дальнейшего распространения.

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

Разобранная цепочка показывает современный подход к распространению вредоносного ПО. Вместо одного исполняемого файла злоумышленники используют несколько этапов, где каждый компонент выполняет свою задачу: документ Microsoft Excel Workbook (*.xls) запускает начальную цепочку, HTML Application (*.hta) загружает следующий этап, PowerShell получает скрипт JavaScript (*.js) , а LuaJIT Loader запускает основной Lua-код, скрытый под расширением TrueType Font (*.ttf) .

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

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

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

← Cybersecurity