В декабре 2025 года команда Solar 4RAYS вновь столкнулась с атакой Partisan Zmiy (объединение «Киберпартизаны» (Cyber Partisans) признано экстремистским, его деятельность запрещена на территории РФ), в этот раз — на медицинскую организацию. В ходе расследования мы встретили уже известные инструменты и техники этой группировки, а также обнаружили обновленный инструментарий атакующих. Атакованная организация имела разветвленную инфраструктуру и многочисленные доступы в другие медицинские организации. Мы закончили длительное расследование и сегодня публикуем его результаты.
Ключевые выводы
- Наиболее ранние следы компрометации исследованной части инфраструктуры датируются началом 2024 года. Атакующие находились в сети около двух лет, не переходя к деструктивным действиям. Для группировки, известной разрушительными кампаниями, это необычно, хотя шпионаж тоже входит в ее профиль.
- Атакованная организация обладала разветвленной инфраструктурой и двусторонними доверенными отношениями с многочисленными дочерними медицинскими структурами. Мы предполагаем, что отсутствие разрушения инфраструктуры связано именно с ценностью этого доступа для дальнейшего шпионажа и атак типа trusted relationship.
- Мы обнаружили ранее не описанный загрузчик-планировщик, который запускает полезные нагрузки по cron-расписанию под видом компонентов VMware Tools и WSUS, а также немного обновленную версию бэкдора Vasilek (внутренняя версия 1.5.8).
- Закрепление реализовано через службы Windows и подмену библиотеки vmtools.dll в каталоге VMware Tools. Средства виртуализации были установлены в инфраструктуре легитимно задолго до атаки и не использовались администраторами — атакующие просто воспользовались этим «слепым пятном».
- Бэкдор Vasilek управлялся через Telegram Bot API: команды и ответы передавались через групповой чат. Параллельно атакующие использовали DNS-туннели (DNSCat2, PartisanDNS) и прокси-цепочку GOST + 3proxy, поэтому потеря одного канала не лишала их доступа.
Обзор инцидента
В декабре 2025 года специалисты Solar 4RAYS подключились к расследованию очередного инцидента. Поводом стало сканирование домена нашего заказчика из сети дочерней медицинской организации. При анализе систем мы сразу же заметили многочисленные срабатывания антивирусного ПО (АВПО), в том числе вердикты Vasilek и GOST. Vasilek до сих пор встречался только в атаках Partisan Zmiy, поэтому мы предварительно связали инцидент с этой группировкой. Дальнейший анализ подтвердил связь пересечениями по сетевой инфраструктуре и TTP.
Наиболее ранние следы компрометации исследованной части инфраструктуры мы относим к началу 2024 года, когда АВПО в
системах внутреннего контура зафиксировало командные строки cmd.exe с перенаправлением вывода в
\\127.0.0.1\ADMIN$\__<unix timestamp>.<microseconds>. Такое имя файла характерно для
Impacket
wmiexec.py: команда выполняется через WMI, а ее вывод записывается в общую папку ADMIN$
(C:\Windows) и забирается по
SMB. Пустой файл C:\Windows\__<unix timestamp>.<microseconds>, найденный на одной из
систем, — остаток
такого вывода.
Закрепление
Службы Windows
В исследованных системах мы обнаружили многочисленные сервисы, запускающие DLL-библиотеки из директории
C:\Windows\System32\. Кроме того, события создания исторических сервисов остались в журнале System
(event id 7045).
При этом атакующие заменяли собственные вредоносные файлы по тем же путям, то есть один и тот же путь на протяжении кампании мог соответствовать разным инструментам и разным хеш-суммам.
| Служба | Отображаемое имя | Запускаемый файл | Нагрузка |
|---|---|---|---|
| tpvmmon | Windows Insiders Service | C:\Windows\System32\tpvmmon.dll | DNSCat2 |
| aweman32 | Windows Channels Service | C:\Windows\System32\aweman32.dll | DNSCat2 |
| msadcs32 | Sybase Inc. Product File | C:\Windows\System32\msadcs32.dll | PartisanDNS |
| uplay_r164 | Access FT Imager Service | C:\Windows\system32\uplay_r164.dll | DNSCat2 |
| vmauad | VMware Auth Adapter | C:\Program Files\VMware\VMware Tools\authd.exe | Загрузчик-планировщик |
| - | VMware Service | C:\Windows\System32\vmtoolsd.exe | - |
Отображаемые имена подобраны злоумышленниками так, чтобы не вызывать вопросов при беглом просмотре списка служб: они
имитируют компоненты Windows, ПО для виртуализации и специализированные продукты. Как видно из таблицы, атакующие
мимикрировали в числе прочего под ПО VMware. ПО для виртуализации было легитимно установлено задолго до начала
атаки и не использовалось администраторами, то есть каталог
C:\Program Files\VMware\VMware Tools\
представлял собой доверенный, но никем не наблюдаемый участок файловой системы.
При анализе окрестности вредоносной активности мы обнаружили модификацию меток ветки реестра легитимной службы
AppMgmt. На момент анализа служба содержала легитимную нагрузку. Предположительно, атакующие перезаписали
параметры службы, выполнили вредоносную нагрузку и вернули исходное значение. Косвенно это подтверждается тем, что
временные метки рассогласованы: метка изменения самого ключа AppMgmt позже меток изменения ключей его
параметров,
чего не бывает при штатной установке или обновлении службы. Отметим, что из публичных инструментов такой способ
запуска поддерживают StealthyWMIExec
и NimExec.
Сервис vmauad (отображаемое имя VMware Auth Adapter) запускал файл
C:\Program Files\VMware\VMware Tools\authd.exe.
Этот кастомный загрузчик, не описанный ранее, по расписанию запускал другие вредоносные инструменты по фиксированным
путям:
C:\Program Files\VMware\VMware Tools\vmtoolsd32.exe(GOST)C:\Program Files\VMware\VMware Tools\rpctool32.exe(Vasilek)E:\WSUS\UpdateServicesPackages\WsusService.exe(GOST)
Загрузчик имеет три режима запуска через командную строку:
- Без аргументов — регистрация и запуск windows-службы.
- run <команда> — дочерний режим: запуск произвольной команды.
- test — валидация конфигурации без запуска сервиса.
Разделение ролей через аргументы позволяет одному файлу быть и оркестратором, и исполнителем без дополнительных компонентов на диске.
После старта служба проверяет, соответствует ли текущий хост целевому:
- Последовательно перебирает все форматы имени компьютера.
- Приводит каждое имя к нижнему регистру.
- Вычисляет SHA-256.
- Сравнивает 32 байта результата с токеном из конфигурации.
- Если ни одно из имен не совпало, служба немедленно завершает работу.
В исследованном нами экземпляре токен не задан, поэтому проверка пропускается и сервис стартует на любой машине. Мы предполагаем, что злоумышленники могли адаптировать образец под конкретную цель на этапе развертывания, но в данном случае забыли это сделать. Аналогичный прием используется и в бэкдоре Vasilek.
Конфигурация состоит из 5 элементов:
| argv[0] | |
| #<hash> | SHA-256-токен целевой машины |
| <cmd> +<N> | интервальная задача: N минут, одноразовый таймер |
| <cmd> <cron1> <cron2> | временно́е окно: cron-старт/cron-конец |
| <cmd> <cron1> - | временно́е окно без явного конца |
Под каждую задачу выделяется структура размером 80 байт:
| Смещение | Размер | Назначение |
|---|---|---|
| 0x0 | 0x8 | Командная строка пейлоада |
| 0x8 | 0x4 | Тип триггера: 0 = интервал, 1 = время, 2 = время + конец |
| 0xC | 0x1A | Cron-спецификация старта |
| 0x26 | 0x1A | Cron-спецификация завершения (для типа 2) |
| 0x40 | 0x4 | Счетчик в секундах для типа 0 |
| 0x44 | 0x4 | PID запущенного экземпляра пейлоада |
| 0x48 | 0x8 | Указатель на путь к процессу |
В конфигурации исследуемого нами образца было три задачи:
| Путь к нагрузке | Тип триггера | Расписание | Тип нагрузки |
|---|---|---|---|
| C:\Program Files\VMware\VMware Tools\vmtoolsd32.exe | 2 (время + конец) | старт "0 22 * * 6", стоп "0 23 * * 6" (каждую субботу 22:00-23:00) | GOST |
| e:\WSUS\UpdateServicesPackages\WsusService.exe | 0 (интервал) | +480 минут после старта службы, однократно | GOST |
| C:\Program Files\VMware\VMware Tools\rpctool32.exe | 0 (интервал) | +480 минут после старта службы, однократно | Vasilek |
Выбор субботнего вечернего окна (22:00–23:00), вероятно, связан со стремлением снизить вероятность обнаружения: для большинства сотрудников это нерабочее время. Туннель поднимается лишь на час в неделю — скорее всего, это резервный канал. Две другие задачи — бэкдор и туннель — запускаются однократно через 8 часов после старта службы. Вероятно, задержка нужна, чтобы сетевая активность не совпадала по времени с загрузкой системы.
Отдельно отметим зашитый в конфигурацию путь E:\WSUS\UpdateServicesPackages\. UpdateServicesPackages — стандартная
подпапка хранилища WSUS, но том, на котором она расположена, зависит от настроек конкретного сервера. Указать такой
путь можно было только после разведки хоста, то есть конфигурация собиралась под конкретную цель. Имя
WsusService.exe совпадает с именем исполняемого файла настоящей службы WSUS, а vmtoolsd32.exe и rpctool32.exe
имитируют компоненты VMware Tools (vmtoolsd.exe, rpctool.exe).
DLL hijacking
В декабре 2025 года, незадолго до обнаружения, атакующие заменили легитимную библиотеку по пути C:\Program
Files\VMware\VMware Tools\vmtools.dll на бэкдор Vasilek. При этом атакующие скопировали оригинальный файл
vmtools.dll в эту же директорию под именем vmtoolsd.dll. Вероятно, чтобы иметь возможность
отката.
Подмененный файл является неподписанной динамически подключаемой библиотекой, тогда как оригинальная
библиотека VMware подписана. Проверка подписи файлов в каталогах доверенного ПО — дешевый и эффективный способ
обнаружения таких подмен. В данном случае она выявила бы не только подмененную vmtools.dll, но и неподписанные исполняемые файлы authd.exe, vmtoolsd32.exe и rpctool32.exe в том же каталоге — задолго до начала расследования.
Инструментарий
Боковое перемещение
Для бокового перемещения в исследованном сегменте инфраструктуры атакующие использовали легитимные RDP-доступы и исполнение команд по протоколу SMB.
Следы удаленного исполнения команд также сохранились в журнале Microsoft-Windows-SMBServer/Security: Event ID 1015 («Ошибка вызова расшифровки») (об этом событии мы писали пост в нашем канале).
Vasilek
Vasilek — 32-битный бэкдор для Windows, который получает команды из группы в Telegram и туда же возвращает результаты, работая через публичный Bot API. Впервые данное ВПО описано Kaspersky ICS CERT в 2025 году. Исследованный нами образец — более поздняя сборка.
Большая часть функций бэкдора обфусцирована обфускатором на базе OLLVM. Функции расшифровки строк и таблицы команд при этом не обфусцированы. Данный инструмент использует технику Control Flow Flattening (CFF): тело функции преобразовано в цикл-диспетчер while(true) с таблицей переходов в виде инструкции switch, управляемой 32-битной переменной состояния. Дополнительно присутствуют ложные ветви управления, мертвый код и непрозрачные предикаты, что затрудняет статический анализ графа управления.
Помимо обфускации, часть API (например, GetCommandLineA и GetTickCount64) бэкдор получает динамически: имена библиотек и функций хранятся в зашифрованном виде, поэтому этих функций нет в таблице импорта.
Перед началом работы бэкдор вычисляет SHA-256 от имени хоста с солью и сравнивает результат с зашитым эталоном. При несовпадении он завершается, не выполнив никаких действий. Поэтому на любой машине, кроме целевой, в том числе в песочнице, бэкдор не проявляет никакой активности.
Строки и конфигурация в секции .data зашифрованы на основе XOR с повторяющимся ключом: каждый байт ключа приводится к нижнему регистру и циклически сдвигается влево на (i mod 8) бит. Ключ — та же 156-символьная строка, что используется и для таблицы команд (см. ниже):
def decrypt_xor(cipher: bytes, key: bytes) -> bytes:
key = key.lower()
return bytes(cipher[i] ^ rol8(key[i % len(key)], i % 8) for i in range(len(cipher)))
При этом таблица команд хранится отдельно, в секции .rdata, и зашифрована другим алгоритмом — шифром Виженера с собственным алфавитом из 98 символов (\r, \n, \t и 95 печатных символов ASCII). Что интересно, данный шифр практически не используется в ВПО и обычно используется в учебных целях. Перед использованием каждый символ ключа заменяется «противоположным» в алфавите (индекс i → N − i). Вывод подавляется до первой расшифрованной точки (настоящий токен начинается после нее), а расшифрованный перевод строки сбрасывает и указатель ключа, и признак начала вывода, поэтому один зашифрованный блок может расшифровываться сразу в несколько независимых строк:
ALPHABET = ("\r\n\t !\"#$%&'()*+,-./0123456789:;<=>?@"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~")
N = len(ALPHABET)
def transform_key(raw):
return "".join(ALPHABET[(N - ALPHABET.index(c)) % N] for c in raw)
def decrypt_cmd(ct: bytes, key: str) -> bytes:
out = bytearray(); ki = 0; started = False
for b in ct:
o = ALPHABET[(ALPHABET.index(key[ki]) + ALPHABET.index(chr(b))) % N]
if started:
out.append(ord(o))
else:
started = (o == '.')
ki += 1
if ki >= len(key) or o == '\n':
ki = 0
if o == '\n':
started = False
return bytes(out)
При запуске бэкдор собирает сведения о системе: имя хоста (GetComputerNameA), путь к собственному файлу,
рабочую
директорию и настройки прокси текущего пользователя (WinHttpGetIEProxyConfigForCurrentUser). При этом
стоит
отметить, что бэкдор таким образом использует корпоративные настройки прокси и его трафик идет тем же путем, что и
легитимный. По команде v оператор получает отчет по шаблону:
Version: [%s]
Hostname: [%s]
Exepath: [%s]
Params: [%s]
WD: [%s]
PID: [ %d ]
ChatId: [%I64d]
User: [%s]
Admin rights: [%s]
Таблица команд содержит 59 команд, включая короткие псевдонимы:
| Команда | Описание |
|---|---|
| c, ci, cl, cil, cr, reset | Исполнение команд через командную оболочку |
| cpr, cpri | Создание процесса через ShellExecuteA |
| dwl | Выгрузка файла с хоста в группу Telegram |
| #UPLOAD, #UPLOAD_ERROR | Прием файла из Telegram и запись на диск; уведомление об ошибке |
| update, wget | Загрузка файла по HTTP; самообновление |
| v, vv | Отчет о зараженной системе |
| screenshot, ss, ss_debug | Снимок экрана |
| track_window, screenshots_track, sst, screenshots_cycle, ssc | Слежение за активным окном, серии снимков экрана, сбор буфера обмена |
| key_on, ko, key_off, key_flush, kf | Кейлоггер: включение, выключение, выгрузка журнала |
| touch, move_cursor, click, lclick, lc, rclick, rc, double_click, dc | Имитация пользовательского ввода: перемещение курсора, щелчки мышью |
| sleep, sl, sleep_except, sle, deep_sleep | Режимы ожидания, в том числе выборочный и глубокий |
| poll, accum_delay, flush | Управление опросом C2 и задержками |
| prevent_sleep, wake_up | Предотвращение перехода ОС в спящий режим |
| mute, unmute | Отключение и включение исходящих сообщений |
| cadmin, force_cadmin | Повышение привилегий через runas |
| self_delete, self_delete_yes, self_delete_no | Самоудаление с подтверждением |
| start, restart, kill, kill_except | Запуск, перезапуск и завершение работы бэкдора |
| ` fat_libs` | Отладочная заглушка разработчика |
Мы сравнили сборку 1.5.8 из данного инцидента с публично описанным образцом версии 1.5.4 и нашли в таблице команд единственное различие — новую команду move_cursor, которая перемещает курсор на экране жертвы.
Бэкдор уведомляет оператора о старте и перезапуске, а при перезапуске завершает предыдущий процесс по PID. При перезапуске очередь команд сбрасывается. Отдельный сторожевой поток (memory watchdog) следит за внутренними счетчиками и параметрами памяти процесса и при сбоях перезапускает бэкдор, но не более 10 раз подряд, сообщая оператору причину.
Команда update сохраняет новую версию в new.bak, переименовывает работающий файл в
old-<timestamp>.bak и
ставит new.bak на его место. Таким образом, new.bak — загруженная новая версия бэкдора, old- — замененная. В отчете Kaspersky ICS CERT new.bak описан как файл конфигурации, но в сборках 1.5.4 и 1.5.8 конфигурация на диске не хранится. Самоудаление выполняется через
cmd /c del "<path>" > nul.
Команды cadmin и force_cadmin проверяют параметр политики UAC ConsentPromptBehaviorAdmin в ключе
SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System и пытаются перезапустить бэкдор с runas. Эта
эскалация
реализована в самой нагрузке и дополняет механизм олицетворения токена, который, согласно публичному отчету,
реализован в отдельном загрузчике Vasilek. В исследованной инфраструктуре этот загрузчик не был обнаружен.
Команды mute/unmute устанавливают и снимают флаг, блокирующий исходящие сообщения: «заглушенный» бэкдор продолжает собирать данные, но перестает отправлять их в Telegram. Это удобный режим на время, когда оператор ожидает повышенного внимания к сети.
Отдельно отметим команду ` fat_libs`. Vasilek собран вместе с открытыми парсерами аудиоформатов, и обработчик команды декодирует захардкоженный файл MySong.mp3 и печатает три числа — свойства аудиопотока. Команда выглядит как забытая отладочная заглушка.
Из памяти легитимных процессов, в которые внедрялся код из vmtools.dll, нам удалось извлечь фрагменты
обмена Vasilek
с C2. Имя бота содержало фрагмент названия зараженной организации — так оператор различает чаты при работе с
несколькими жертвами. Фрагмент ответа Telegram Bot API:
{
"ok": true,
"result": [
{
"update_id": 463261918,
"message": {
"message_id": 3103,
"from": {
"id": [REDACTED],
"is_bot": true,
"first_name": "Group",
"username": "GroupAnonymousBot"
},
"author_signature": "1",
"sender_chat": {
"id": -1002113172843,
"title": "[REDACTED] group:KEYON",
"type": "supergroup"
},
"chat": {
"id": -1002113172843,
"title": "[REDACTED] group:KEYON",
"type": "supergroup"
},
"date": [TIMESTAMP],
"text": "/v",
"entities": [
{
"offset": 0,
"length": 2,
"type": "bot_command"
}
]
}
}
]
}
Оператор пишет команду (в данном случае /v — запрос отчета о системе) в группу от имени
GroupAnonymousBot, то есть
от лица группы, скрывая свой аккаунт. Бэкдор забирает команду методом getUpdates в режиме
длинного опроса и
отвечает в ту же группу:
{
message_id":3024,
"from":{
"id":[REDACTED],
"Is_bot":true,
"first_name":"[REDACTED]",
"username":"[REDACTED]"},
"сhat":
{"id":-1002113172843,
"title":"[REDACTED] group:KEYON",
"type":"supergroup"
},
"date":[TIMESTAMP],
"text":"[ 82896 ]
dir \"C:\Program Files\VMware\VMware Tools\vmtoolsd32.exe\"
Volume in drive C has no label.
Volume Serial Number is [REDACTED]
Directory of C:\Program Files\VMware\VMware Tools
29.05.2020 04:45 24 vmtoolsd32.exe
1 File(s) 24 415 0232 bytes
0 Dir(s) 71 532 0175 0360 bytes free
C:\Windows\system32"},
"document": {
"file_name": "[HOSTNAME]-tun.yml",
"mime_type": "application/yaml",
"file_id": "BQACAgEAAx0CffR1awACC9RpTbqN4zXVuoeLn-Q6RG_hzE7ScAACOgYAAg3HcUbDZ2-37tpswDYE",
"file_unique_id": "AgADOgYAAg3HcUY",
"file_size": 498
},
"caption": "82896 \"C:\\Program Files\\VMware\\VMware Tools\\gost.yml\""
}}]}
Ответ Vasilek: результат команды и выгрузка файла
Число 82896 — идентификатор задачи, по которому оператор сопоставляет ответ с командой, если в группе работает
несколько бэкдоров. Дата файла vmtoolsd32.exe — 29.05.2020 — подменена под даты легитимных компонентов
VMware Tools,
чтобы файл не выделялся в листинге каталога.
В приведенном фрагменте видно наличие конфигурационного файла gost.yml для прокси GOST. Для доступа к
инфраструктуре атакующие использовали цепочку из GOST и 3proxy.
Vasilek собирает URL вида https://api.telegram.org/bot<token>/<method> из фрагментов строк и
использует
методы getUpdates, sendMessage, sendDocument, getFile,
getChat, deleteMessage и answerCallbackQuery. Таймаут длинного опроса — 60 секунд. Каждый обработчик команды сверяет chat_id входящего сообщения с
идентификатором
группы. TLS реализован не через системные WinHTTP/Schannel, а через статически слинкованный стек TLSe с криптографическими примитивами LibTomCrypt. Использование встроенного TLS-стека TLSe/LibTomCrypt вместо
системного Schannel означает, что приложение не наследует стандартное доверенное хранилище Windows. Это может
приводить к несовместимости с корпоративными TLS inspection-прокси. Кроме того, параметры TLS ClientHello,
формируемые данным стеком, скорее всего, будут отличаться от браузеров и системных компонентов Windows, что делает возможным его выделение по JA3/JA4.
Помимо Telegram, в бэкдоре есть вторичный HTTP(S)-канал с режимами работы через прокси: PROXY ONLY, PROXY FIRST, DIRECT FIRST и UNDEFINED. Вероятно, данные режимы связаны с блокировками Telegram в России. Однако Partisan Zmiy«Киберпартизаны», Cyber Partisans признано экстремистской организацией, его деятельность запрещена на территории РФ, как и раньше, используют и другие каналы — DGA-домены и DNS-туннели.
Сетевая инфраструктура
Инфраструктура этого инцидента пересекается с ранее опубликованной — адресами C2-серверов DNSCat2 из отчета Kaspersky ICS CERT. Домен gov-by[.]com использовался повторно, а еще четыре домена отличаются от известных одним символом, добавленным в начало имени:
| C2, обнаруженный в инциденте | Ранее известный C2 |
|---|---|
| c0ce[.]org | 0ce[.]org |
| p7cp[.]org | 7cp[.]org |
| w3a01[.]net | 3a01[.]net |
| f91j[.]org | 91j[.]org |
| gov-by[.]com | gov-by[.]com |
Заключение
При ретроспективном анализе выяснилось, что средства защиты детектировали вредоносную активность в инфраструктуре на протяжении длительного времени, а с какого-то момента — и сами инструменты Partisan Zmiy«Киберпартизаны», Cyber Partisans признано экстремистской организацией, его деятельность запрещена на территории РФ. Этот случай еще раз показывает, что установить средства защиты недостаточно: их сработки нужно разбирать и расследовать.
Partisan Zmiy«Киберпартизаны», Cyber Partisans признано экстремистской организацией, его деятельность запрещена на территории РФ известны масштабными деструктивными кампаниями. В этом инциденте они присутствовали в инфраструктуре с дополнительными средствами защиты и мониторингом на протяжении почти двух лет. Атакующие получили доступ к чувствительным медицинским данным и имели все возможности реализовать атаки trusted relationship, потому что атакованная организация обладала обширной инфраструктурой и имела двусторонние трастовые отношения с многочисленными дочерними структурами. Возможно, поэтому атакующие были заинтересованы продолжать шпионаж, хотя получили доступ к контроллерам домена и другим системам централизованного управления.
Группировка последовательно вкладывается в незаметность и Operational Security, а не в новые возможности: привязка к имени хоста в двух независимых компонентах, запуск нагрузок по ночному расписанию, наследование системного прокси, маскировка под легитимно установленное, но неиспользуемое ПО, ротация файлов по одним и тем же путям, тайм-стомпинг, режим подавления исходящих сообщений и анонимные сообщения от имени группы в чатах операторов. Набор возможностей самого бэкдора за четыре ревизии почти не изменился.
Из-за блокировки Telegram в России на уровне провайдеров коммуникация бэкдора Vasilek с С2 стала нестабильной. При этом Partisan Zmiy«Киберпартизаны», Cyber Partisans признано экстремистской организацией, его деятельность запрещена на территории РФ, как и ранее, используют различные способы коммуникации, включая DGA-домены и DNS-туннели. Поэтому было бы ошибкой считать, что усиление блокировок значительно затруднит таргетированные кибератаки — атакующие находят и будут находить способы обхода.
Обнаружение Vasilek на хосте почти всегда означает многоинструментальное вторжение. Параллельно следует искать DNS-туннели, прокси-цепочки, средства бокового перемещения и — с учетом известных деструктивных кампаний группировки — отложенные деструктивные нагрузки, которые могут сработать уже после того, как инцидент будет выглядеть закрытым.
Индикаторы
Приложение 1. IOCs
Файловые
MD5
a6af32b1381d8985049e2d5ec1889bd9
338f7eafdfe45e93e57889ebd064d0d5
39e64553b7ddf579240e6642042e6840
a6ce67f063fce60954bb6cea4c969aac
1199d2f2b1a58435113555b02172bc79
ccf73d3b1e9c625d79ce2c76650ca3e7
6b21d7574b53b753bfdc2acf9c389a90
560397a1bfb7fc32f7eeb7794183993d
041a3ae432840507a755a79a22a1237a
2538be4331f69dbf4a9b79565fd39581
f34430fb88bda6c904c57facab761fc2
86f330eb072216ffc807aff4013950f9
SHA1
bdeac4b8e9a3c48661adf0c2ee5f05b58cee76eb
ed999aaaf1d032c76a51f4aececb99d06c371b33
cd61f92873625dd25a31f414617347d1fa132747
56df605a33fb77c91bdb92033efe983f336deb23
efe3503bd021de67e884878c6de1e8b110ed2ee7
42f5cbbe0feba3e31ac8642791dd48eef8eae123
3b1424176c9c1083b79961783b38f5176ff99fee
3834c4c83cf9758385347a8b34a3e20e17aced3b
f2fb4a3ba5802df7ae83ac7fb362bce45223312b
d93f810fa02c3d4391810ab512519d89f2f0ceee
c4e623ab0a15db0896bf8a68eb9b45ebe6ae2f28
23831129ad88da40cd0bdeae2350f956ca0b2db2
4335474d9fd48d7d28e244802e210f1e78dc2f3a
SHA256
cc8c707bf49c0cdb79b806d41df6254efc0e9f566a02d223871550f414469d13
e5c6b6d37ff168def37dfd86c636e512be3ed7ead9a2dc93d5c741c42b47c1f1
07381d79670129277211a4373e5518799a54b427946602539463ec2dd9cdb5e7
4f0e23a83d83d901c76353d8b9b6ee2940eb63d531ad15f736193903b5c7c8c3
8c37c4b1f168219a1ce495c9822730981b20ff03d937ddcd8795fca14a9b7869
5bc4fa9916c0883d45cb85639e328ed484dc75f4dfda294eb52f4b8b612889f2
c499fab59acbb1750e1e0e5a3c51d119ccd6374e5f0b45639f29598720222766
87e713f9b6ae14d97d3fa4d1a882c029e7e963d844d9c93ea383cab3d46a949c
d7aedc020ce832334abf0d03986da31f41cb2191355f25b17989dcfa8bb2775b
e55431d6f15aa78ada3f60ed30a3f32b444b952bdc53a652546c1820f8bfa513
5076286c26f2a5c7dd7f507365fe404db2b05d39b350c463faa053baa37b3742
125ead2c3b1d0f7aee03d13b927744ec8dc1d046912ce73efc9c5a10243b99dc
Сетевые индикаторы
172.67.210[.]25 (CLOUDFLARE)
104.21.34[.]242 (CLOUDFLARE)
199.59.243[.]228 (AMAZON)
okkgb[.]com
c-oh[.]com
89e[.]org
parker-inc[.]com
c0ce[.]org
p7cp[.]org
gov-by[.]com
f91j[.]org
w3a01[.]net
DGA-домены Partisan DNS
vpnosljjk[.]pro
vfvnfaq[.]top
vfvnfaq[.]link
vfvnfaq[.]cyou
vfvnfaq[.]pro
vfvnfaq[.]me
vfvnfaq[.]my
vfvnfaq[.]buzz
vfvnfaq[.]info
vfvnfaq[.]space
vfvnfaq[.]in
vfvnfaq[.]sbs
vfvnfaq[.]work
vfvnfaq[.]casa
vfvnfaq[.]lol
vfvnfaq[.]lat
vfvnfaq[.]net
vfvnfaq[.]org
vfvnfaq[.]com
Приложение 2. Расширенная информация по файловым IOCs
| Путь | Хэш-сумма MD5 | Хэш-сумма SHA1 | Хэш-сумма SHA256 | Комментарий |
|---|---|---|---|---|
| C:\Windows\System32\msadcs32.dll | a6af32b1381d8985049e2d5ec1889bd9 | bdeac4b8e9a3c48661adf0c2ee5f05b58cee76eb | cc8c707bf49c0cdb79b806d41df6254efc0e9f566a02d223871550f414469d13 | PartisanDNS |
| C:\Windows\System32\tpvmmon.dll C:\Windows\system32\omega.dll |
338f7eafdfe45e93e57889ebd064d0d5 | ed999aaaf1d032c76a51f4aececb99d06c371b33 | e5c6b6d37ff168def37dfd86c636e512be3ed7ead9a2dc93d5c741c42b47c1f1 | DNSCat2 под UPX |
| C:\Windows\System32\aweman32.dll | 39e64553b7ddf579240e6642042e6840 | cd61f92873625dd25a31f414617347d1fa132747 | 07381d79670129277211a4373e5518799a54b427946602539463ec2dd9cdb5e7 | DNSCat2 под UPX |
| C:\Windows\System32\msadcs32.dll C:\Windows\System32\msadcs32.bak |
a6ce67f063fce60954bb6cea4c969aac | 56df605a33fb77c91bdb92033efe983f336deb23 | 4f0e23a83d83d901c76353d8b9b6ee2940eb63d531ad15f736193903b5c7c8c3 | PartisanDNS |
| C:\Windows\system32\uplay_r164.dll | 1199d2f2b1a58435113555b02172bc79 | efe3503bd021de67e884878c6de1e8b110ed2ee7 | 8c37c4b1f168219a1ce495c9822730981b20ff03d937ddcd8795fca14a9b7869 | DNSCat2 под UPX |
| C:\Program Files\VMware\VMware Tools\authd.exe | ccf73d3b1e9c625d79ce2c76650ca3e7 | 42f5cbbe0feba3e31ac8642791dd48eef8eae123 | 5bc4fa9916c0883d45cb85639e328ed484dc75f4dfda294eb52f4b8b612889f2 | Загрузчик-планировщик для запуска ВПО. Запуск выполняется исходя из установленной конфигурации |
| C:\Program Files\VMware\VMware Tools\rpctool32.exe | 6b21d7574b53b753bfdc2acf9c389a90 | 3b1424176c9c1083b79961783b38f5176ff99fee | c499fab59acbb1750e1e0e5a3c51d119ccd6374e5f0b45639f29598720222766 | 3proxy |
| C:\Program Files\VMware\VMware Tools\rpctool32.exe | 560397a1bfb7fc32f7eeb7794183993d | 3834c4c83cf9758385347a8b34a3e20e17aced3b | 87e713f9b6ae14d97d3fa4d1a882c029e7e963d844d9c93ea383cab3d46a949c | Vasilek |
| C:\Program Files\VMware\VMware Tools\vmtoolsd32.exe | 041a3ae432840507a755a79a22a1237a | f2fb4a3ba5802df7ae83ac7fb362bce45223312b | d7aedc020ce832334abf0d03986da31f41cb2191355f25b17989dcfa8bb2775b | GOST |
| C:\Windows\fstab.exe | 2538be4331f69dbf4a9b79565fd39581 | d93f810fa02c3d4391810ab512519d89f2f0ceee | e55431d6f15aa78ada3f60ed30a3f32b444b952bdc53a652546c1820f8bfa513 | PartisanDNS |
| C:\Update\169\WSUSSCAN.exe | – | c4e623ab0a15db0896bf8a68eb9b45ebe6ae2f28 | – | Неизвестный файл, удален на момент исследования |
| E:\WSUS\UpdateServicesPackages\WsusService.exe | f34430fb88bda6c904c57facab761fc2 | 23831129ad88da40cd0bdeae2350f956ca0b2db2 | 5076286c26f2a5c7dd7f507365fe404db2b05d39b350c463faa053baa37b3742 | GOST, удален на момент исследования |
| C:\Program Files\VMware\VMware Tools\vmtools.dll | 86f330eb072216ffc807aff4013950f9 | 4335474d9fd48d7d28e244802e210f1e78dc2f3a | 125ead2c3b1d0f7aee03d13b927744ec8dc1d046912ce73efc9c5a10243b99dc | Подмененный файл, загружает PartisanDNS |
Матрица MITRE
| Тактика | ID | Техника | Процедура |
|---|---|---|---|
| Execution | T1047 | Windows Management Instrumentation | Удаленное исполнение команд с выводом в \\127.0.0.1\ADMIN$\__<ts>.<us> |
| T1569.002 | System Services: Service Execution | Запуск нагрузки через временную подмену параметров службы AppMgmt |
|
| T1059.003 | Command and Scripting Interpreter: Windows Command Shell | Команды Vasilek c, ci, cl, cil, cr, reset | |
| T1106 | Native API | CreateProcessA в загрузчике-планировщике, ShellExecuteA в Vasilek |
|
| Persistence | T1543.003 | Create or Modify System Process: Windows Service | Службы tpvmmon, aweman32, msadcs32, uplay_r164,
vmauad
|
| T1574.004 | Hijack Execution Flow: Dylib Hijacking | Подмена vmtools.dll, загружаемой службой VMware Tools |
|
| Privilege Escalation | T1548.004 | Abuse Elevation Control Mechanism: Elevated Execution with Prompt | Команды Vasilek cadmin, force_cadmin: проверка ConsentPromptBehaviorAdmin, запуск с runas |
| Defense Evasion | T1480.001 | Execution Guardrails: Environmental Keying | SHA-256 от имени хоста в Vasilek и в загрузчике-планировщике |
| T1036.004 | Masquerading: Masquerade Task or Service | Имена и отображаемые имена служб: vmauad (VMware Auth Adapter), tpvmmon (Windows Insiders Service) и другие |
|
| T1036.005 | Masquerading: Match Legitimate Name or Location | Размещение ВПО в каталоге VMware Tools и в хранилище WSUS под именами их компонентов |
|
| T1070.006 | Indicator Removal: Timestomp | Даты файлов подменены под даты компонентов VMware Tools | |
| T1070.004 | Indicator Removal: File Deletion | Самоудаление Vasilek через cmd /c del |
|
| T1027.002 | Obfuscated Files or Information: Software Packing | DNSCat2, упакованный UPX | |
| T1027 | Obfuscated Files or Information | OLLVM-обфускация Vasilek, шифрование строк и таблицы команд | |
| T1140 | Deobfuscate/Decode Files or Information | XOR-шифр для строк и шифр Виженера для таблицы команд (общий ключ) | |
| T1112 | Modify Registry | Временная подмена параметров службы AppMgmt |
|
| T1497.001 | Virtualization/Sandbox Evasion: System Checks | Проверка размера рабочего множества процесса | |
| Discovery | T1082 | System Information Discovery | Команды Vasilek v, vv |
| T1016 | System Network Configuration Discovery | Получение настроек прокси через WinHttpGetIEProxyConfigForCurrentUser |
|
| T1010 | Application Window Discovery | Команда track_window | |
| Lateral Movement | T1021.001 | Remote Services: Remote Desktop Protocol | Использование легитимных RDP-доступов |
| T1021.002 | Remote Services: SMB/Windows Admin Shares | Получение вывода удаленно исполненных команд через общую папку ADMIN$ |
|
| Collection | T1113 | Screen Capture | Команды screenshot, ss, ss_debug |
| T1056.001 | Input Capture: Keylogging | Команды key_on, key_off, key_flush | |
| Command and Control | T1102.002 | Web Service: Bidirectional Communication | Vasilek использует Telegram Bot API как канал C2 |
| T1071.004 | Application Layer Protocol: DNS | PartisanDNS, DNSCat2 используют DNS в качестве канала передачи данных | |
| T1568.002 | Dynamic Resolution: Domain Generation Algorithms | PartisanDNS использует DGA-домены | |
| T1573.002 | Encrypted Channel: Asymmetric Cryptography | Vasilek использует в TLS-стеке криптографические примитивы из библиотеки LibTomCrypt | |
| T1090 | Proxy | Partisan Zmiy«Киберпартизаны», Cyber Partisans признано экстремистской организацией, его деятельность запрещена на территории РФ используют GOST и 3proxy для проксирования трафика, а также наследование системного прокси | |
| T1105 | Ingress Tool Transfer | Команды wget, #UPLOAD, update | |
| Exfiltration | T1041 | Exfiltration Over C2 Channel | Выгрузка файлов в группу Telegram |
































































