
Большинство современных вредоносных рассылок уже давно не используют классические макросы 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-модуль выполняет сбор информации о системе, проверяет наличие данных браузеров, почтовых клиентов, менеджеров паролей, криптовалютных расширений и других источников конфиденциальной информации. Такое поведение характерно для современных инфостилеров, основной целью которых является кража учётных данных и пользовательских данных.
В результате перед нами многоступенчатая атака, где каждый отдельный файл выглядит менее подозрительно, но вместе они формируют полноценную цепочку заражения.