Оглавление
Введение
Группа Cloud Atlas известна с 2014 года и нацелена на страны Восточной Европы и Центральной Азии. Мы решили рассказать о ранее неописанном инструментарии злоумышленников, который они активно использовали в 2024 году. Заражения происходят с помощью фишинговых писем, содержащих вредоносный документ, который использует уязвимость в редакторе формул (CVE-2018-0802) для скачивания и выполнения вредоносного кода. Схема заражения представлена ниже.
При открытии документа с удаленного сервера, контролируемого злоумышленниками, загружается вредоносный шаблон в виде RTF-файла. Он содержит эксплойт для редактора формул, который скачивает и выполняет файл HTML Application (HTA), находящийся на том же C2-сервере. Скачивание RTF-шаблонов и HTA-файлов ограничено как по времени, так и по IP-адресам жертв: разрешаются запросы только из целевых регионов.
Вредоносный HTA-файл извлекает из себя и записывает на диск несколько файлов, являющихся частями бэкдора VBShower. После этого VBShower скачивает и устанавливает другой бэкдор, PowerShower. Эта схема заражения была описана еще в 2019 году и лишь незначительно меняется из года в год.
Ранее группа Cloud Atlas использовала PowerShower для скачивания и запуска исполняемого файла — DLL-библиотеки, которая загружала с C2-сервера и выполняла в памяти другие исполняемые модули (плагины), в том числе и плагин, занимающийся эксфильтрацией файлов с интересующими злоумышленников расширениями: *.doc, *.docx, *.xls, *.xlsx, *.pdf, *.rtf, *.jpg, *.jpeg. Загрузка плагинов и выгрузка результатов их работы происходила по протоколу WebDAV с использованием публичных облачных сервисов. Примечательным является тот факт, что после успешной загрузки плагина DLL удаляла файл с этим плагином из облачного сервиса.
Теперь же схожая функциональность исполняемого файла — загрузка и выполнение вредоносных плагинов, коммуникация с облаком и другие задачи — реализована в бэкдоре VBCloud. Впервые мы обнаружили атаки с этим имплантом в августе прошлого года и с тех пор отмечаем множество различных модификаций бэкдора, позволяющих ему оставаться незамеченным. В новой кампании VBCloud загружается при помощи бэкдора VBShower, который также скачивает модуль PowerShower. PowerShower используется для исследования локальной сети и дальнейшего проникновения, а VBCloud — для сбора информации о текущей системе и кражи файлов. Далее мы подробно рассмотрим каждый этап атаки Cloud Atlas с новым инструментарием на примере образца, замеченного в сентябре 2024 года.
Технические детали
HTA
HTA-файл загружается при помощи RTF-шаблона, после чего запускается, извлекает из себя и создает на диске по пути %APPDATA%RoamingMicrosoftWindows несколько файлов, составляющих бэкдор VBShower, при помощи альтернативных потоков данных (NTFS ADS).
Ниже представлены компоненты VBShower, загружаемые HTA-дроппером.
Имя файла
Описание
AppCache028732611605321388.log:AppCache02873261160532138892.vbs
VBShower Launcher (copy)
AppCache028732611605321388.log:AppCache028732611605321388.vbs
VBShower Launcher
AppCache028732611605321388.log:AppCache028732611605321388.dat
Зашифрованный бэкдор VBShower
AppCache028732611605321388.log:AppCache0287326116053213889292.vbs
VBShower Cleaner
После загрузки в реестр добавляется ключ для автоматического запуска скрипта VBShower Launcher.
«SoftwareMicrosoftWindows\CurrentVersionRun»,»dmwappushservice»,»wscript /B «%APPDATA%Roaming
MicrosoftWindowsAppCache028732611605321388.log:AppCache028732611605321388.vbs»
Бэкдор также запускает скрипты VBShower Launcher (copy) и VBShower Cleaner.
wscript /B «%APPDATA%Roaming
MicrosoftWindowsAppCache028732611605321388.log:AppCache02873261160532138892.vbs
wscript /B «%APPDATA%Roaming
MicrosoftWindowsAppCache028732611605321388.log:AppCache0287326116053213889292.vbs
Атакующие создают HTA-файлы для конкретной жертвы, поэтому имена скриптов и ключей реестра чаще всего уникальны. Например, мы видели использование
intertwine в качестве шаблона имени, а сами имена файлов выглядели следующим образом:
intertwine.ini:intertwineing.vbs;
intertwine.ini:intertwineinit.vbs;
intertwine.ini:intertwine.vbs;
intertwine.ini:intertwine.con.
VBShower
VBShower::Launcher
Этот скрипт представляет собой загрузчик, в задачи которого входят чтение и расшифровка содержимого файла AppCache028732611605321388.log:AppCache028732611605321388.dat, а также передача управления этому файлу с использованием функции
Execute().
VBShower::Cleaner
В задачи этого скрипта входит очистка содержимого всех файлов из папки
LocalMicrosoftWindowsTemporary Internet FilesContent.Word путем открытия файлов на запись. Сами файлы при этом остаются, но их содержимое стирается. Таким образом троянец избавляется от следов вредоносных документов и шаблонов, загруженных из сети в процессе атаки.
Таким же методом скрипт стирает собственное содержимое, а также содержимое копии VBShower Launcher, которая используется только для первого запуска зловреда.
VBShower::Backdoor
Тело бэкдора содержится в DAT-файле в зашифрованном виде.
Скрипт VBShower::Launcher расшифровывает бэкдор в несколько этапов.
Затем бэкдор VBShower запускается в памяти, после чего выполняет несколько операций в цикле:
Проверяет наличие ключа автозапуска в реестре и восстанавливает его, если не обнаруживает.
Пытается скачать с С2-сервера дополнительные зашифрованные VB-скрипты и выполнить их. Если размер скачанных данных больше 1 МБ, модуль сохраняет скрипт на диск в альтернативных потоках данных (NTFS ADS) и запускает его с использованием утилиты wscript. В противном случае выполняет скрипт в текущем контексте.
Если в альтернативном потоке данных есть файл с расширением .tmp, бэкдор отправляет этот файл на С2-сервер при помощи POST-запроса. В TMP-файл скачанные с С2-сервера дополнительные скрипты сохраняют результаты своей работы.
VBShower::Payload
Нам удалось обнаружить и проанализировать ряд скриптов, скачанных и выполненных бэкдором VBShower.
VBShower::Payload (1)
Первый обнаруженный нами скрипт выполняет следующие действия:
Получает информацию о домене, именах пользователя и компьютера;
Получает имена и значения ключей реестра из ветки SOFTWAREMicrosoftWindowsCurrentVersionRun;
Получает информацию об именах и размере файлов из следующих папок:
%AppData%;
%AllUsersProfile%;
%AllUsersProfile%Canon;
%AllUsersProfile%Intel;
%AllUsersProfile%Control;
%AllUsersProfile%libs;
%AllUsersProfile%Adobe;
%AllUsersProfile%Yandex;
%AllUsersProfile%Firefox;
%AllUsersProfile%Edge;
%AllUsersProfile%Chrome;
%AllUsersProfile%avp.
Получает имена запущенных процессов, дату их запуска и команды, которые их запустили;
Получает список задач планировщика с помощью команды cmd.exe /c schtasks /query /v /fo LIST.
Все собранные данные сохраняются в альтернативном потоке данных с расширением .tmp и отправляются на С2-сервер компонентом VBShower::Backdoor.
Перечисленные выше пути (%AllUsersProfile%<подпапка>) используются для установки бэкдора VBCloud, и, скорее всего, выполняемые скриптом действия нужны для проверки наличия этого бэкдора либо корректности его установки.
VBShower::Payload (2)
Второй скрипт отправляет систему в перезагрузку.
VBShower::Payload (3)
Еще один скрипт скачивает ZIP-архив, распаковывает его в каталог %TMP%, а также собирает информацию об именах и размере загруженных файлов для последующей отправки отчета о распаковке на С2. Таким образом выполняется проверка получения и распаковки файлов.
VBShower::Payload (4) и (5)
VBShower скачивает два похожих скрипта, которые предназначены для установки бэкдоров VBCloud и PowerShower. Сначала такой скрипт скачивает архив по заданной ссылке, затем распаковывает его в папку %ALLUSERSPROFILE%. В случае с VBCloud скрипт меняет расширение распакованного файла с .txt на .vbs и создает задачу на запуск VBCloud в планировщике. В случае с PowerShower расширение распакованного файла меняется с .txt на .ps1, после чего скрипт прописывает его в реестр в ветку Run.
В отличие от скриптов самого VBShower, загружаемые скрипты с полезной нагрузкой присутствуют на диске в виде файлов, а не скрыты в альтернативных потоках данных.
Помимо установки бэкдоров, эти скрипты собирают в отчет имена запущенных процессов, даты их запуска и команды, которые их запустили, ключи реестра и значения из ветки Run, а также список файлов и каталогов по пути, в который распаковывался архив. Затем этот отчет отправляется на С2-сервер.
PowerShower
Функциональность бэкдора PowerShower практически идентична функциональности VBShower.
PowerShower скачивает с С2 и выполняет дополнительные PowerShell-скрипты. Если первый символ в загружаемых данных — «P», PowerShower интерпретирует полученные данные как ZIP-архив, а не как PowerShell-скрипт, и сохраняет этот архив на диск в файл %TMP%Firefox.zip. Архив при этом не распаковывается, а PowerShower выступает в таком случае только в качестве загрузчика.
Выполнение скачиваемых PowerShell-скриптов происходит в памяти без сохранения на диск. Большинство скриптов сохраняют результаты своей работы в файл sapp.xtx, после чего PowerShower отправляет его в качестве отчета на С2-сервер.
В скриптах PowerShower в качестве С2 используются те же домены, что и в VBShower.
PowerShower::Payload (1)
Скрипт получает список локальных групп и их участников на удаленных компьютерах при помощи интерфейсов службы Active Directory (ADSI). Чаще всего этот скрипт используется на контроллерах доменов.
PowerShower::Payload (2)
Скрипт для перебора паролей к учетным записям по словарю.
Скрипт распаковывает архив Firefox.zip, предварительно скачанный бэкдором PowerShower, а также в отдельном процессе PowerShell со скрытым окном выполняет содержащийся в архиве скрипт keb.ps1. Он относится к популярному фреймворку PowerSploit для тестирования на проникновение и запускает атаку Kerberoasting.
PowerShower::Payload (4)
Скрипт получает список групп администраторов.
PowerShower::Payload (5)
Скрипт получает список контроллеров домена.
PowerShower::Payload (6)
Скрипт получает информацию о файлах, содержащихся в каталоге ProgramData.
PowerShower::Payload (7)
Скрипт получает параметры политики учетных записей и политики паролей на локальном компьютере.
PowerShower::Payload:: Inveigh
Мы также наблюдали применение PowerShell Inveigh — утилиты для атак Machine-in-the-Middle, которая используется при тестировании на проникновение. Inveigh проводит атаки с подменой пакетов данных, а также собирает хэши и учетные данные как с помощью перехвата пакетов, так и с помощью сокетов, специфичных для различных протоколов.
Скрипт Inveigh извлекается из ZIP-архива, скачиваемого PowerShower, и запускается способом, описанным в PowerShower::Payload (3).
VBCloud
Как описывалось выше, VBCloud устанавливается с помощью VBShower. Мы обнаружили следующие пути для установки модуля:
C:ProgramDataavpavp_upd.vbs
C:ProgramDataAdobeAdobeLog.vbs
C:ProgramDataAdobemanager.vbs
C:ProgramDataAdobesysman.vbs
C:ProgramDataAdobenews_adobe.vbs
C:ProgramDataAdobeupgrade.vbs
C:ProgramDataEdgeSrvMngrUpd.vbs
C:ProgramDataEdgeintelog.vbs
C:ProgramDataChromeChromeSys.vbs
Примеры путей основного модуля VBCloud
Основная функциональность модуля VBCloud дублирует функциональность VBShower — они скачивают и выполняют PowerShell-скрипты с полезной нагрузкой, после чего отправляют результат на С2. Но в отличие от VBShower, VBCloud использует публичные облачные хранилища в качестве С2.
Скрипт VBCloud не содержит циклов и рассчитан на разовое выполнение. Однако он запускается через задачу планировщика при каждом входе пользователя в систему, а значит, запускаться он будет часто. Кроме того, мы видели модификации бэкдора, в которых его основная функциональность выполнялась в цикле c задержкой 30 минут между повторами. В этих модификациях скрипт запускался однократно через ветку реестра Run при первой загрузке системы после заражения.
VBCloud выполняет следующие действия:
Проверяет доступность WedDav-сервера kim.nl.tab.digital, отправляя запрос HTTP MKCOL на создание директорий kmsobuqjquut и rwqdmpaohxns с заданными в скрипте учетными данными. Если ресурс недоступен, скрипт переключается на резервный адрес — webdav.mydrive.ch.
Если WedDav-сервер доступен, создает файл в каталоге kmsobuqjquut на этом сервере при помощи запроса HTTP PUT. Имя файла выглядит как ddmmyy_HHMMSS, а в качестве расширения выбирается случайное из списка .txt, .rtf, .doc, .ppt, .mds, .png, .jpeg. Мы видели файлы под названиями 070824_001919.txt и 250724_002919.doc. Такие файлы содержат имя пользователя и информацию о MAC-адресах сетевых адаптеров, фактически подтверждая, что скрипт активен в зараженной системе.
Затем троянец пробует скачать из каталога rwqdmpaohxns один из трех файлов: criclyqnduv.txt, jhflenoqelp.txt или avnwiabihik.txt. Если VBCloud удалось скачать файл, он тут же удаляет его из облачного хранилища при помощи запроса HTTP DELETE, а затем выполняет его в текущем процессе через функцию Execute(), предварительно расшифровав содержимое. Как и в случае с PowerShower, полезной нагрузкой могут быть различные скрипты.
VBCloud::Payload (1)
Скрипт предназначен для отправки информации о дисках на C2.
VBCloud::Payload (2)
Скрипт предназначен для эксфильтрации файлов и документов. Он последовательно перебирает локальные диски и съемные накопители в поисках файлов с расширениями .doc, .docx, .xls, .xlsx, .pdf, .txt, .rtf, .rar. Если в системе обнаруживаются файлы, соответствующие этому критерию, проверяется их размер: для эксфильтрации собираются файлы более 1000 и менее 3 000 000 байт. Дата модификации файла должна быть не ранее чем за три дня до текущей. Затем скрипт создает ZIP-архив с именем mapping.zip, куда копирует подходящие файлы. Дополнительно в архив копируется файл с метаданными, содержащий информацию о времени создания, модификации, последнем открытии и полном пути выгружаемых файлов. Если архив начинает превышать 4 000 000 байт, он отправляется в облачное хранилище и удаляется из системы. На его месте создается новый пустой архив, в котором продолжается сбор файлов. В хранилище архив отправляется в зашифрованном при помощи RC4 виде под названием, сгенерированным по следующему принципу: в качестве имени используется шаблон %d_13134, а в качестве расширения — случайное значение из списка .mp3, .aac, .mp2, .flac, .wav, .alac, .mqa, .ogg, .dsd, .wma, .mp4.
VBCloud::Payload (3)
Скрипт получает различную информацию о системе, такую как версия ОС, объем памяти, производитель, имена компьютера, пользователя и домена.
VBCloud::Payload (4)
Скрипт для эксфильтрации файлов Telegram:
файл D877F783D5D3EF8Cs содержит идентификатор пользователя и ключ шифрования, используемый для взаимодействия десктопной версии клиента Telegram с серверами мессенджера;
файл key_datas содержит локальные ключи шифрования.
География атак
В 2024 году атакам подверглось несколько десятков пользователей. 82% атакованных пользователей находились в России. Единичные атаки были также зафиксированы в Беларуси, Канаде, Молдове, Израиле, Кыргызстане, Вьетнаме и Турции.
Заключение
Мы продолжаем отслеживать активность, связанную с группой Cloud Atlas. В новой кампании, начавшейся в августе 2023 года, злоумышленники изменили знакомый нам инструментарий — теперь вместо исполняемой библиотеки, при помощи которой загружались вредоносные модули, группа использует бэкдор VBShower в качестве загрузчика. Кроме того, в атаке появился новый модуль VBCloud: с его помощью собирается и выгружается информация о системе и другие данные. Эти действия выполняются при помощи различных PowerShell-скриптов, позволяющих атакующим осуществлять разнообразные задачи в системе жертвы. В качестве C2-сервера VBCloud использует открытые облачные хранилища.
Цепочка заражения состоит из нескольких этапов и в конечном итоге направлена на кражу данных с устройств жертв. Мы отмечаем, что, как и в предыдущих кампаниях Cloud Atlas, вектором получения первоначального доступа остаются фишинговые письма. Это подчеркивает по-прежнему актуальную потребность организаций в усилении защиты инфраструктуры и повышении осведомленности сотрудников для предотвращения подобных атак.
Индикаторы компрометации
Домены для загрузки HTA-файлов
content-protect[.]net
control-issue[.]net
office-confirm[.]com
onesoftware[.]info
serverop-parametrs[.]com
web-privacy[.]net
net-plugin[.]org
triger-working[.]com
VBShower C2
yandesks[.]net
yandisk[.]info
mirconnect[.]info
sber-cloud[.]info
gosportal[.]net
riamir[.]net
web-wathapp[.]com
PowerShower C2
yandisk[.]info
yandesktop[.]com
web-wathapp[.]com
Облачные хранилища, используемые VBCloud
webdav.opendrive.com
webdav.mydrive.ch
webdav.yandex.ru
kim.nl.tab.digital
HTA MD5
9D3557CC5C444FE5D73E4C7FE1872414
CBA05E11CB9D1D71F0FA70ECD1AF2480
CBFB691E95EE34A324F94ED1FF91BC23
2D24044C0A5B9EBE4E01DED2BFC2B3A4
88BE01F8C4A9F335D33FA7C384CA4666
A30319545FDA9E2DA0532746C09130EB
PowerShower MD5
15FD46AC775A30B1963281A037A771B1
31B01387CA60A1771349653A3C6AD8CA
389BC3B9417D893F3324221141EDEA00
VBShower::Launcher MD5
AA8DA99D5623FAFED356A14E59ACBB90
016B6A035B44C1AD10D070ABCDFE2F66
160A65E830EB97AAE6E1305019213558
184CF8660AF7538CD1CD2559A10B6622
1AF1F9434E4623B7046CF6360E0A520E
1BFB9CBA8AA23A401925D356B2F6E7ED
21585D5881CC11ED1F615FDB2D7ACC11
242E86E658FE6AB6E4C81B68162B3001
2FE7E75BC599B1C68B87CF2A3E7AA51F
36DD0FBD19899F0B23ADE5A1DE3C2FEC
389F6E6FD9DCC84C6E944DC387087A56
3A54ACD967DD104522BA7D66F4D86544
3F12BF4A8D82654861B5B5993C012BFA
49F8ED13A8A13799A34CC999B195BF16
4B96DC735B622A94D3C74C0BE9858853
F45008BF1889A8655D32A0EB93B8ACDD
VBCloud MD5
0139F32A523D453BC338A67CA45C224D
01DB58A1D0EC85ADC13290A6290AD9D6
0F37E1298E4C82098DC9318C7E65F9D2
6FCEE9878216019C8DFA887075C5E68E
D445D443ACE329FB244EDC3E5146313B
F3F28018FB5108B516D802A038F90BDE
Securelist