В декабре 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)

Загрузчик имеет три режима запуска через командную строку:

  1. Без аргументов — регистрация и запуск windows-службы.
  2. run <команда> — дочерний режим: запуск произвольной команды.
  3. test — валидация конфигурации без запуска сервиса.

Разделение ролей через аргументы позволяет одному файлу быть и оркестратором, и исполнителем без дополнительных компонентов на диске.

После старта служба проверяет, соответствует ли текущий хост целевому:

  1. Последовательно перебирает все форматы имени компьютера.
  2. Приводит каждое имя к нижнему регистру.
  3. Вычисляет SHA-256.
  4. Сравнивает 32 байта результата с токеном из конфигурации.
  5. Если ни одно из имен не совпало, служба немедленно завершает работу.

В исследованном нами экземпляре токен не задан, поэтому проверка пропускается и сервис стартует на любой машине. Мы предполагаем, что злоумышленники могли адаптировать образец под конкретную цель на этапе развертывания, но в данном случае забыли это сделать. Аналогичный прием используется и в бэкдоре 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-.bak — замененная. В отчете 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"
          }
        ]
      }
    }
  ]
}

Команда оператора в группе Telegram

Оператор пишет команду (в данном случае /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