Лаборатория K7 Labs обнаружила масштабную фишинг-кампанию, нацеленную на пользователей в Бразилии. Злоумышленники используют автоматизированные скрипты для распространения вредоносного ПО через WhatsApp Web, активно задействуя доверительные отношения между контактами для повышения эффективности атак.
Описание
Кампания, получившая название Water-Saci, использует многоэтапный подход к компрометации систем. Атака начинается с фишингового письма, содержащего ZIP-архив со злонамеренным VBS-скриптом. Для обхода сигнатурных систем обнаружения скрипт применяет технику кодирования символами и XOR-шифрование.
После ручной деобфускации исследователи выявили две основные функции скрипта: загрузку MSI-файла и VBS-файла с последующим их выполнением. Загружаемый VBS-скрипт содержит аналогичные методы обфускации и развертывает BAT-скрипт, который устанавливает Python, ChromeDriver и PIP для загрузки веб-драйвера Selenium, после чего выполняет Python-скрипт whats.py.
Ключевой особенностью атаки является использование Selenium Chrome Driver для внедрения вредоносного JavaScript-кода в WhatsApp Web. Злоумышленники задействуют внутренние API WhatsApp Web с помощью вспомогательного JS-файла с GitHub. Для сбора логов и контактов используется PHP-сервер в качестве командного центра (C2).
Скрипт whats.py перечисляет стандартные расположения браузеров и проверяет профили пользователей для извлечения артефактов сессии. Затем Selenium Chromedriver запускается с временным путем в качестве аргумента user-data-dir, что позволяет запустить браузер с предыдущей сессией WhatsApp Web жертвы, избегая необходимости аутентификации через QR-код.
Браузер загружает WhatsApp Web как вошедшую в систему сессию с использованием функции Selenium для выполнения скрипта в контексте веб-страницы. Вспомогательный JavaScript используется для доступа к внутренним API-вызовам WhatsApp Web, включая WPP.contact.list, WPP.chat.sendTextMessage и WPP.chat.sendFileMessage.
С помощью внедренного JavaScript скрипт получает список контактов через внутристраничные API и применяет фильтры, настроенные злоумышленником. Затем загружается полезная нагрузка (payload) из настроенного URL-адреса, причем вместо сохранения файла на диск используется Base64-кодированная строка, передаваемая в контекст страницы WhatsApp Web через execute_async_script Selenium.
На стороне страницы JavaScript декодирует полученную строку и оборачивает ее в объект Blob/File, хранящийся в памяти. Этот объект затем передается непосредственно внутреннему API WhatsApp, что имитирует действие пользователя по прикреплению файла с диска.
Для каждого проверенного контакта отправляется приветственное сообщение, затем файл с полезной нагрузкой и завершающее сообщение. Скрипт использует createChat:true для обеспечения существования чата и создания нового при необходимости. Все собранные контакты и результаты отправки передаются на сервер злоумышленника.
MSI-компонент кампании запускает AutoIt-скрипт, который содержит бесконечный цикл для мониторинга активных окон и определения момента выполнения вредоносной полезной нагрузки. Скрипт проверяет все видимые заголовки окон на наличие названий бразильских банков, криптобирж или других финансовых целей.
Для обеспечения постоянства скрипт регистрирует удаленный VBS в записи реестра Run. AutoIt-скрипт устанавливает рабочий каталог в реестре Windows и проверяет наличие файла executed.dat в рабочем каталоге.
Системная информация, включая имя компьютера, данные ОС, имя пользователя, IP-адреса, антивирусные продукты, характеристики процессора и посещенные банковские сайты, отправляется на сервер злоумышленника. Скрипт пытается идентифицировать установленные антивирусы, файрволы и антишпионские программы через WMI SecurityCenter2, проверку запущенных процессов и поиск в реестре.
Особое внимание уделяется сбору информации о бразильских банковских приложениях и истории браузера Chrome. Скрипт ищет ключевые слова, связанные с банками, такие как Santander и Sicredi, во временной папке.
Затем скрипт проверяет последний PID SVCHOST и получает названия активных окон, нормализуя их для сопоставления со списком банков и криптокошельков. При обнаружении совпадения он ищет файлы .tda или .dmp, сброшенные MSI ранее, читает, расшифровывает и распаковывает их в памяти.
Расшифровка полезной нагрузки выполняется с помощью простой XOR-операции. После дешифровки происходит декомпрессия полезной нагрузки с использованием встроенной функции Windows RtlDecompressFragment. Полученный PE-файл выполняется с использованием методов рефлексивной загрузки.
Перед рефлексивной загрузкой AutoIt-скрипт читает дополнительные заголовки для проверки архитектуры PE-файла, исходного ImageBase, SizeOfImage и AddressOfEntryPoint. Загрузчик вызывает VirtualAlloc для резервирования памяти с разрешениями PAGE_READWRITE.
После копирования разделов, применения перемещений и разрешения импортов загрузчик вызывает VirtualProtect для изменения разрешений на PAGE_EXECUTE_READWRITE. Затем проверяются характеристики PE-файла для определения типа. Для EXE создается новая нить, а для DLL вызывается DLLMain.
Загруженный PE-файл внедряется в SVCHOST и отправляет информацию на сервер злоумышленника с использованием IMAP через TCP-соединение, когда AutoIt обнаруживает активные окна из целевого списка. Этот подход позволяет избежать записи конечной полезной нагрузки на диск, поскольку реальный двоичный файл выполняется исключительно в памяти.
Исследование показало, что вредоносная программа нацелена на набор бразильских банков и криптокошельков. Эксперты отмечают множество аналогичных кампаний в текущем киберпространстве. Особую опасность представляет распространение вредоносного ПО через WhatsApp, поскольку файлы, отправленные из доверенных контактов, вызывают меньше подозрений у пользователей.
Рекомендуется использовать надежные решения безопасности, которые могут защитить от подобных кампаний и обеспечить безопасность информации и ресурсов. Повышенная бдительность при получении файлов через мессенджеры, даже от известных контактов, становится критически важной в условиях роста подобных атак.
Индикаторы компрометации
Domains
- vip-imap-az.terra.com.br
URLs
- https://varegjopeaks.com/altor/receptor.php
MD5
- 45027d8ea53921b59c70c38d90dd8c14
- 5bcb9f187320893d1b1c36fa0c18e094
- 6f1b82b320feda1f719c3028da73e843
- 8dbf440436eb57f38827351ddd05911a
- ce45c057113ba1ca6f1d7ae7e2004afb
- db0eab25b047f82a4644b3b86767a1aa
- f8dc59af96e73f14fefbc34840096153
- fb6a29742389af2a0cb2ad114442d0fb
