05 июня 2025

    TTP группы Киберпартизаны: шпионаж и дестабилизация

      Общие сведения

      Киберпартизаны (Деятельность организации признана экстремистской и запрещена на территории РФ) — это группа хактивистов, о которой стало публично известно в 2020 году. Группа — очень активна в медиапространстве. Она многократно заявляла об атаках на государственные учреждения и промышленные предприятия c целью похитить конфиденциальную информацию и дестабилизировать работу ИТ-инфраструктуры атакуемых организаций.

      Экспертам Kaspersky ICS CERT удалось выявить и проанализировать вредоносные программы и утилиты, с большой вероятностью использованные в серии недавних атак на промышленные предприятия и государственные учреждения России и Беларуси. В ряде случаев удалось установить наиболее вероятный вектор атаки.

      Ключевой находкой стал неизвестный ранее бэкдор, который функционирует только на целевых системах и вместо классического командного сервера использует для отправки собранных данных и получения команд группу в Telegram. Также были обнаружены вредоносные программы класса вайпер (wiper), применявшиеся для уничтожения данных, и утилиты, использованные злоумышленниками для туннелирования и проксирования сетевого трафика вредоносного ПО. Возможно, эти инструменты позволяли атакующим обходить меры по сегментации сети и системы обнаружения подозрительной сетевой активности. С ноября 2021 в атаках на промышленные предприятия группа впервые применила техникутак называемых «бомб» — заранее установленных в систему вредоносных программ, автоматически активирующихся по заданным параметрам, например, в определенное время.

      За дополнительной информацией обращайтесь, пожалуйста, по адресу:
      ics-cert@kaspersky.com

      Технические данные

      Первоначальное заражение

      В своих публикациях злоумышленники упоминают различные векторы заражения — от эксплуатации уязвимостей до вербовки сотрудника организации, способного «открыть дверь» в ее инфраструктуру. Возможно, такие сценарии описываются, чтобы ввести в заблуждение, поскольку на практике мы зафиксировали применение группой иного, куда более распространенного начального вектора атаки — фишинговых писем.

      Фишинговое письмо, использованное в атаке, содержит инсталлятор, который устанавливает на систему легитимную программу FortiClient VPN, а также скрытно устанавливает утилиту DNSCat2, позволяющую злоумышленникам получить контроль над системой. Эта утилита подробно рассматривается в следующем разделе.

      После запуска инсталлятора пользователем производится распаковка утилиты DNSCat2 по пути C:\Windows\System32\FortiGateUpdate.dll, а также извлекается файл C:\Windows\System32\FortiGateUpdate.manifest, содержащий ключ шифрования, используемый для расшифровки кода DNSCat2. В рассмотренном нами случае в качестве ключа использовалась строка FortiGateUpdate.

      Интересно, что данная тактик применяется исключительно в процессе проникновения в корпоративную сеть. Как показало дальнейшее исследование, при использовании DNSCat2 на этапе развития атаки они создают специализированную сборку утилиты, в которой в качестве ключа расшифровки задается имя атакуемого компьютера. Это связано с тем, что на начальном этапе атаки злоумышленникам неизвестно имя целевой системы, и они вынуждены использовать менее безопасный способ шифрования.

      Рассмотрим процесс установки вредоносного ПО в систему, который сводится к выполнению последовательности команд в интерпретаторе командной строки (cmd):

      Команда

      Описание

      sc create FortiGateUpdate binPath= “C:\Windows\System32\svchost.exe -k FortiGateUpdate” type= share start= auto

      Создается служба Windows с именем FortiGateUpdate и типом запуска «Автоматически» после загрузки системы

      reg add HKLM\SYSTEM\CurrentControlSet\services\FortiGateUpdate\Parameters /v ServiceDll /t REG_EXPAND_SZ /d c:\Windows\System32\FortiGateUpdate.dll /f

      Указывается путь к исполняемому файлу создаваемой службы — c:\Windows\System32\FortiGateUpdate.dll (DNSCat2)

      reg add “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost” /v FortiGateUpdate /t REG_MULTI_SZ /d FortiGateUpdate /f

      Создается ключ реестра, обеспечивающий загрузку DLL-файла службы FortiGateUpdate процессом svchost.exe

      reg add HKLM\SYSTEM\CurrentControlSet\services\FortiGateUpdate\Parameters /v ServiceMain /t REG_SZ /d InitHelperDll@8 /f

      Задаются аргументы для запуска исполняемого файла службы FortiGateUpdate

      net start FortiGateUpdate

      Запускается служба FortiGateUpdate

      sc config FortiGateUpdate DisplayName= “FortiGateUpdate Service”

      Задается отображаемое имя службы FortiGateUpdate

      sc failure FortiGateUpdate actions= restart/60000/restart/120000/ restart/240000 reset= 1

      Задаются аргументы для запуска службы FortiGateUpdate в случае сбоя

      sc failureflag FortiGateUpdate 1

      Включается автоматическое восстановление службы FortiGateUpdate после сбоя

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

      После установки и запуска DNSCat2, инсталлятор запускает легитимный установщик FortiClient VPN:

      DNSCat2 и SeekDNS

      DNSCat2 представляет собой полнофункциональный бэкдор, позволяющий злоумышленникам удаленно управлять зараженной системой. Его ключевая особенность заключается в способности обходить меры изоляции сети, такие как правила блокирования трафика, поскольку взаимодействие с командным сервером осуществляется по протоколу DNS.

      Злоумышленники использовали собственный обфускатор программного кода, который вычисляет хеш имени системы (как упоминалось ранее, за исключением этапа первоначального заражения) и сравнивает его со значением, переданным DNSCat2 через аргументы командной строки. Если значения не совпадают, выполнение вредоносного кода прекращается. Это не новая техника, но ее реализация в данном случае заслуживает внимания, так как значение хеша используется не только как условие верификации, но и в качестве ключа расшифровки строк вредоносной программы, включая имена динамически импортируемых API-функций.

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

      В одном из случаев злоумышленники допустили ошибку и не удалили следы своей активности, благодаря чему нам удалось узнать параметры, с которыми была запущена вредоносная программа, включая искомое значение хеша. Это позволило нам расшифровать сборку DNSCat2, использованную на этапе развития атаки:

      Инструмент предоставляет удаленный доступ к командной строке, с помощью которой злоумышленники запускали на зараженных системах другие вредоносные компоненты. Ниже приведен список команд, поддерживаемых DNSCat2:

      • echo — отправка сообщения клиенту для проверки подключения или отладки
      • help — отображение списка доступных команд и их описаний
      • kill — закрытие указанного окна или туннеля (на стороне сервера)
      • quit — завершение сессии и выход из утилиты
      • set — установка настроек или параметров
      • start — открытие нового туннеля или сессии
      • stop — остановка указанного туннеля или сессии (на стороне клиента)
      • tunnels — отображение списка активных туннелей
      • unset — удаление параметров конфигурации
      • window — выбрать заданное окно сессии (на стороне сервера)
      • windows — показать активное окно сессии (на стороне сервера)

      В ходе исследования мы зафиксировали несколько случаев использования утилиты DNSCat2. Чаще всего применялось встроенное шифрование трафика с помощью алгоритма Salsa20. Ключи и подписи сообщений формируются при помощи алгоритма Диффи — Хеллмана на эллиптических кривых (ECDH), что делает невозможной расшифровку такого трафика без знания общего ключа.

      Однако в одном случае шифрование не использовалось. Причина этого неизвестна — возможно, это была ошибка оператора, но благодаря этому нам удалось получить несколько примеров расшифрованных команд:

      На рисунке 4 показан ответ вредоносной программы на запрос информации о ее работе. В частности, отображается имя процесса amdfendrsr — это указывает на то, что исполняемый файл DNSCat2 маскируется под утилиту AMD Crash Defender Service. Также видны идентификатор вредоносного процесса и имя скомпрометированной системы.

      По-видимому, злоумышленники испытывали трудности при построении цепочек туннелей между серверами внутри сетей крупных организаций. Чтобы определять, какие прокси-серверы доступны с конкретной зараженной машины, они написали специализированную утилиту, которую мы назвали Seekdns.

      Утилита Seekdns выполняет поиск доступных DNS-серверов (выявляя системы, на которых открыт порт 53) и при запуске принимает два аргумента командной строки:

      CIDR range — диапазон IP-адресов для сканирования в формате бесклассовой междоменной маршрутизации (Classless Inter-Domain Routing, CIDR).

      Domain name — имя домена, для которого запрашивается A-запись с целью проверки ответа DNS-сервера.

      Vasilek — бэкдор, управляемый через Telegram

      Одним из основных результатов нашего исследования стало обнаружение ранее неизвестного бэкдора, которому мы дали имя Vasilek. Особенность этого бэкдора заключается в том, что управление им (получение команд и отправка результатов их выполнения) осуществляется не через классический командный сервер (C&C), а через группу в мессенджере Telegram. Нам удалось установить, что злоумышленники использовали Vasilek сразу в нескольких атаках.

      Загрузчик Vasilek

      Назначение данного модуля — загрузка и запуск главного модуля Vasilek с правами указанного пользователя с помощью техники имперсонализации токена. В аргументах командной строки загрузчику передаются путь к исполняемому файлу главного модуля вредоносного ПО, а также идентификатор сеанса пользователя, от имени которого должен быть выполнен запуск.

      Если в аргументах командной строки не указан идентификатор пользователя, вредоносная программа получает список активных RDP-сеансов, извлекает информацию о подключенных к системе пользователях и получает соответствующие идентификаторы сеансов. Поскольку администраторы часто подключаются к системам удаленно через RDP для выполнения настроек, вредоносное ПО может получить информацию о сеансе привилегированного пользователя.

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

      Отметим, что для сокрытия своей вредоносной активности злоумышленники использовали динамический импорт API-функций по хешам, а в качестве алгоритма хеширования была применена операция ROL4 со сдвигом на 13 бит.

      Вредоносная нагрузка Vasilek

      После запуска Vasilek обрабатывает полученные аргументы командной строки. Среди них могут присутствовать следующие параметры:

      —sec — включает шифрование сетевого трафика вредоносной программы с использованием встроенного TLS-сертификата;

      —clear-commands — инициирует получение нового значения chat_id с помощью API-функции Telegram getUpdates.

      Вредоносная программа также поддерживает загрузку параметров из конфигурационного файла, который должен находиться в той же папке, что и основной модуль, и иметь имя new.bak. С помощью конфигурационного файла могут быть заданы настройки прокси-сервера; по умолчанию используются системные настройки (то есть прокси-сервер, заданный для Internet Explorer).

      Полученные настройки заносятся в переменные окружения, с которыми в дальнейшем работает вредоносная программа:

      Злоумышленники предусмотрели механизм, позволяющий запускать вредоносную программу только на целевых системах: для имени зараженной машины вычисляется значение хеш-функции SHA256 (с использованием «соли»), и результат сравнивается с заданным в код программы значением. Если значения не совпадают, выполнение программы прекращается.

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

      Если значения хешей совпадают, вредоносная программа проверяет значение переменной окружения CLEAR_OLD_UPDATES. Если оно равно 1, Vasilek вызывает API-функцию Telegram getUpdates с параметром offset=0 (запрос последних непрочитанных сообщений) и получает новое значение chat_id (идентификатор Telegram-группы, через которую будут получаться команды и отправляться результаты их выполнения). Для выполнения запроса используется токен, заданный в коде программы (параметр bot_id).

      В противном случае (если значение переменной CLEAR_OLD_UPDATES равно нулю) используется идентификатор группы, указанный в коде вредоносной программы. После этого Vasilek запускает цикл чтения и выполнения команд, передаваемых в виде сообщений в указанной Telegram-группе. Для этого злоумышленники заранее добавляют бота в нужный чат, токен которого также задан в коде вредоносной программы.

      Ниже приведен список команд, поддерживаемых бэкдором:

      Команда

      Описание

      document

      Загрузить указанный файл из Telegram-чата

      kill

      Завершить процесс с указанным PID

      kill_except

      Завершить процесс с указанным PID, предварительно проверив, не является ли он процессом вредоносной программы

      dwl

      Отправить указанный файл в Telegram-чат

      c

      Выполнить команду через командную строку на всех экземплярах бота (зараженных системах), находящихся в Telegram-чате

      ci

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

      cl

      Многократно выполнить команду с заданной задержкой; можно также задать количество попыток выполнения команды

      cil

      Комбинация действий команд ci и cl

      reset

      Перезапустить процесс интерпретатора командной строки (cmd.exe)

      v

      Отправить информацию о зараженной системе:

      • Версия вредоносного ПО
      • Имя компьютера
      • Путь к исполняемому файлу вредоносной программы
      • Аргументы командной строки вредоносной программы
      • Рабочий каталог вредоносной программы
      • Архитектура процессора
      • PID вредоносного процесса
      • Текущий ID Telegram-чата
      • Кодировка, в которой работает система

      update

      Получить новые данные для конфигурационного файла (new.bak)

      cr

      Выполнить команду через командную строку без получения результата выполнения

      sleep

      Приостановить выполнение на заданное время

      sleep_except

      Приостановить выполнение на заданное время

      wget

      Загрузить файл по указанному URL-адресу

      restart

      Перезапустить процесс вредоносной программы

      cpr

      Создать новый процесс с использованием заданных аргументов командной строки

      cpri

      Создать новый процесс через функцию CreateProcessA

      screenshot

      Сделать снимок экрана и отправить его в Telegram-чат с именем файла screenshot.png

      #UPLOAD

      Загрузить бинарные данные и записать их в указанный файл, затем отправить в Telegram-чат сообщение Fileuploaded; в случае ошибки отправляется сообщение Fileuploadfailed

      accum_delay

      Установить временной интервал между выполнением команд

      flush

      Команда не выполняет никаких действий (вероятнее всего, не реализована в рассматриваемой версии вредоносной программы)

      key_on

      Активировать кейлоггер и записывать коды нажатых клавиш в файл keys.txt, затем отправить этот файл в Telegram-чат

      key_off

      Отключить кейлоггер

      key_flush

      Очистить буфер, содержащий коды клавиш, зафиксированные кейлоггером

      click

      Переместить курсор в указанные координаты и сымитировать щелчок левой кнопкой мыши

      lclick

      Аналогична команде click

      rclick

      Переместить курсор в указанные координаты и сымитировать щелчок правой кнопкой мыши

      double_click

      Переместить курсор в указанные координаты и сымитировать двойной щелчок левой кнопкой мыши

      wake_up

      Отправить в Telegram-чат сообщение Alreadyawake

      prevent_sleep

      Блокировать переход системы в спящий режим на заданное количество секунд

      mute

      Не реализовано в рассматриваемой версии вредоносной программы

      unmute

      Не реализовано в рассматриваемой версии вредоносной программы

      track_window

      Включить передачу информации об активном окне: имя процесса, путь к исполняемому файлу, заголовок окна

      screenshots_track

      Аналогична команде track_window, но дополнительно отправляет в Telegram-чат скриншот активного окна

      screenshots_cycle

      Повторяет поведение команды screenshots_track

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

      Вайпер Pryanik

      В ходе исследования нам удалось обнаружить инструмент уничтожения данных на атакованных машинах — вайпер, которому мы дали имя Pryanik.

      Первое, что обращает на себя внимание, — вайпер действует как логическая бомба: его функциональность активируется в определенную дату и время.

      Вредоносная программа получает значение хеш-функции, вычисленное на основе строки Windows; при этом применяемый алгоритм хеширования основан на системной дате и времени:

      Полученное значение сравнивается с константой 0x6C6B1F34. Согласно алгоритму, это хеш-значение может быть получено не чаще одного раза в месяц, например, 18.03.2024, 17.04.2024, 16.05.2024 и так далее. Если вычисленное значение не совпадает с заданным, вредоносная программа завершает выполнение.

      Сообщения об атаке на предприятие по производству удобрений появились как раз 17 апреля 2024 года, поэтому мы предполагаем, что именно в этот день Pryanik был впервые активирован. И, если такое вредоносное ПО своевременно не удалить, оно может активироваться повторно спустя месяц.

      В случае успешной проверки даты программа переходит к проверке времени запуска. В соответствии с условиями, заданными в коде, выполнение будет отложено, пока поля часа и минуты системного времени равны нулю. Проще говоря, первая активация произойдет в 01:01 UTC.

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

      Таким образом, 17 апреля 2024 года в 01:01 UTC вайпер смог приступить к своей вредоносной активности. Чтобы вредоносная программа выполнялась с наивысшими привилегиями (в режиме ядра), злоумышленники применили технику BYOVD (Bring Your Own Vulnerable Driver), ранее описанную в одной из наших публикаций.

      Для этого вайпер использует две версии драйвера защитного решения Zemana Anti-Malware, содержащие уязвимость CVE-2021-31728 (одна для систем с архитектурой x86, другая для x64). В зависимости от архитектуры зараженной системы вредоносное ПО распаковывает нужную версию драйвера и копирует ее в папку Windows, присваивая случайное имя из восьми символов, например: PWWXXXYY.sys. Временным меткам файла устанавливается значение 09.08.2020 16:31:13 UTC+3 (это делается, чтобы скрыть факт появления нового файла в системе), после чего создается служба, которая загружает и запускает уязвимый драйвер.

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

      Затем вайпер очищает журналы событий Windows с помощью системной утилиты wevtutil.exe:

      Далее вредоносная программа выполняет ряд действий с каждым устройством хранения данных, подключенным к системе:

      1. Получает сведения о геометрии диска (количестве цилиндров, головок и секторов на дорожке) путем отправки управляющего кода (IOCTL) уязвимому драйверу.

      1. Отправляет другой управляющий код (IOCTL), что приводит к утере информации, ранее записанной в указанную область диска:

      Структура SectorBuffer — наиболее интересная часть этого API-вызова; при ее заполнении выбирается смещение, с которого вредоносная программа начинает перезапись данных. Для этого используется схема <номер подключенного носителя информации> * 28, полученное число является номером блока данных по схеме адресации LBA.

      Поле Length заполняется значением 200h, а поле Count — значением 100h, и, таким образом, значение размера перезаписываемого блока (DataTransfersLength) определяется по следующей формуле: Length * Count = 200h * 100h = 20 000h = 131 072 байта, т. е. вредоносное ПО перезаписывает область размером всего 128 мегабайт.

      Инструменты для развития атаки

      В ходе анализа инструментов, используемых злоумышленниками, мы обнаружили огромное количество утилит, применяемых для развития атаки (т. е. заражения других компьютеров в сети), из которых практически все, за редким исключением, являются утилитами с открытым исходным кодом и используются злоумышленниками «как есть», без каких-либо изменений. Эти утилиты можно условно разделить на несколько групп:

      • Полнофункциональные фреймворки постэксплуатации
      • Инструменты для кражи учетных данных
      • Средства удаленного доступа

      Из-за большого количества обнаруженных инструментов, а также их широкой распространенности мы представляем их в этом разделе в виде краткой справки.

      Многофункциональные фреймворки постэксплуатации

      Вместо стандартных утилит для анализа сети, таких как nmap, злоумышленники используют полнофункциональные фреймворки, позволяющие продвигаться по сети атакуемой организации. Эти программные пакеты совмещают в себе сразу несколько функций: кражу учетных данных, сканирование IP-адресов и портов, подключение к удаленным системам с помощью стандартных механизмов (используя ранее похищенные учетные данные) и даже эксплуатацию уязвимостей на удаленных системах. Рассмотрим подробнее фреймворки, которые были задействованы в атаках.

      В частности, в исследуемых атаках использовался Metasploit Framework — один из самых известных инструментов для проведения тестов на проникновение, часто применяемый и в реальных атаках. Он отличается широкими возможностями по эксплуатации различных уязвимостей.

      С помощью Metasploit Framework можно сканировать удаленные системы, выявлять уязвимые сервисы, проводить атаку с использованием эксплойта из базы фреймворка, а также создавать вредоносную нагрузку — например, бэкдор Meterpreter, позволяющий выполнять команды на атакуемой системе, используя командную строку (удаленная оболочка).

      Мы также обнаружили косвенные свидетельства того, что злоумышленники могли использовать и другие фреймворки, такие как SharpSploit, Cobalt Strike и Sliver.

      Кража учетных данных

      Для продвижения по сети атакуемой организации и удаленного запуска вредоносного ПО на новых системах злоумышленникам требовались данные для аутентификации с правами привилегированных пользователей. В их арсенале присутствует несколько известных утилит с открытым исходным кодом. Например, Mimikatz — инструмент для извлечения данных учетных записей пользователей Windows, кэшируемых в оперативной памяти (в процессе lsass.exe).

      Используемая злоумышленниками версия Mimikatz имеет ряд особенностей. В частности, для сокрытия своей активности злоумышленники применяли технику Invoke-ReflectivePEInjection, при которой PowerShell используется для загрузки и выполнения исполняемых файлов с внедрением их непосредственно в активный процесс без записи на диск. PowerShell-скрипты основаны на коде фреймворка для тестов на проникновение PowerSploit.

      Утилиты удаленного администрирования

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

      Для удаленного доступа к зараженным системам злоумышленники применяли модифицированную версию VNC-сервера, основанную на TightVNC. Особенность этой версии в том, что она входит в состав Metasploit Framework в виде одной из возможных вредоносных нагрузок. Злоумышленник может перенести DLL-библиотеку этой версии VNC на атакуемую машину, после чего она загружается в память с помощью техники reflective loading, после чего злоумышленник получает возможность подключиться к скомпрометированной системе по протоколу VNC с использованием графического интерфейса.

      Еще одно средство удаленного управления, которое мы обнаружили в арсенале злоумышленников, — это утилита Aspia Remote Desktop, которая поддерживает как подключение через интернет (по ID), в том числе к устройствам, находящимся за NAT, так и прямое подключение по локальной сети.

      Помимо классических механизмов удаленного управления с графическим интерфейсом, таких как RDP, Windows также поддерживает утилиты, использующие механизм удаленного вызова процедур (Remote Procedure Call, RPC), который часто применяется злоумышленниками.

      Наиболее известной утилитой этого класса является PSExec, которую мы также видели в инструментарии злоумышленников. Она входит в состав пакета Sysinternals от Microsoft и работает следующим образом:

      1. Исполняемый файл утилиты PsExesvc.exe (имя по умолчанию) копируется на удаленную систему в сетевую папку ADMIN$ с помощью протокола SMB.
      2. С помощью удаленного вызова процедур (RPC) создается служба, которая запускает исполняемый файл PSExec.
      3. Создается набор именованных каналов для взаимодействия (удаленная оболочка), имена которых обычно начинаются с RemCom или psexesvc.

      Для обнаружения активности утилит, подобных PSExec, рекомендуется использовать решения класса EDR и XDR в связке с SIEM-системами.

      Сокрытие сетевой активности

      В ходе исследования мы выявили несколько техник и соответствующих утилит, используемых злоумышленниками для туннелирования вредоносного сетевого трафика и, как следствие, сокрытия своего присутствия в инфраструктуре атакуемой организации. Помимо утилит, группа активно использовала скомпрометированные системы внутри сети жертвы в качестве прокси-серверов. Можно предположить, что это позволяло обеспечить взаимодействие с вредоносными программами на системах, не имеющих прямого доступа в интернет.

      3proxy — утилита для создания прокси-серверов. Эта утилита с открытым исходным кодом поддерживает множество сетевых протоколов (HTTP, SOCKS4, SOCKS5, FTP, SMTP, HTTPS), различные типы аутентификации (basic, digest, NTLM, по IP-адресу), а также функции перенаправления запросов и кэширования веб-страниц. Кроме того, 3proxy поддерживает фильтрацию трафика (например, блокирование доступа и ограничение скорости доступа к ресурсу), журналирование и сбор статистики.

      Образцы 3proxy, найденные в ходе нашего исследования, содержали зашифрованные строки. В одних случаях расшифровка выполнялась на основе строки ABCDEF, в других — на основе строки Knondiv1Rabbit. По умолчанию используемые сборки 3proxy ожидают соединения по TCP-порту 47135.

      Gost — утилита для проксирования и туннелирования сетевого трафика. Особенность Gost заключается в способности создавать цепочки из нескольких прокси-серверов с применением различных сетевых протоколов и методов обфускации: HTTP, HTTP2, SOCKS4, SOCKS4a, SOCKS5, Shadowsocks, Shadowsocks с AEAD, SNI, Forward (псевдопротокол для переадресации трафика на определенный порт системы), Relay (собственный протокол Gost, поддерживает проксирование TCP и UDP, reverse proxy и т. д.), TCP, TLS, Multiplexed TLS, WebSocket, Multiplexed WebSocket, WebSocket с шифрованием TLS, Multiplexed WebSocket с шифрованием TLS, KCP, QUIC, SSH, OBFS4 (в частности, используется для подключения к сети Tor), обфусцированный HTTP и обфусцированный TLS.

      Прочие инструменты

      Evlx — утилита для удаления событий из журналов событий Windows, поддерживающая как полную очистку журналов, так и выборочное удаление отдельных событий (или групп событий) по заданным критериям. Также способна полностью отключить службу журналирования Windows и удалить свой исполняемый файл после выполнения заданных действий.

      Инфраструктура и связи с другими группами

      Как уже отмечалось ранее, обнаруженный нами бэкдор использует группу в Telegram для получения команд от злоумышленника (оператора) и отправки результатов их выполнения, включая собранные на зараженной системе данные. Очевидно, что при этом было задействовано сразу несколько типов объектов, входящих в инфраструктуру Telegram: пользователь (аккаунт), бот и чат (группа).

      После анализа всех обнаруженных образцов вредоносного ПО нам удалось извлечь конфигурационные данные, которые позволили получить информацию о ботах, задействованных в атаках. С помощью API Telegram мы смогли выявить несколько пользовательских аккаунтов, отправлявших указанным ботам команду /start. Учитывая назначение этих ботов, можно предположить, что обнаруженные аккаунты принадлежат операторам вредоносного ПО.

      Получив идентификаторы (ID) пользователей, мы провели поиск среди участников открытых Telegram-каналов и групп, связанных с киберпреступной активностью. Оказалось, что один из найденных аккаунтов состоит в группах, связанных с ИТ-армией Украины, что косвенно подтверждает заявления злоумышленников о сотрудничестве с украинскими «коллегами».

      В 2022 году предполагаемый участник группы задал вопрос в чате ИТ-армии Украины о проверке работоспособности прокси-серверов — инструмента, которым группа активно пользуются в своих атаках.

      Наконец, нам также удалось выявить несколько доменных имен, указанных в качестве командных серверов (DNS-серверов для туннелирования запросов вредоносных программ) в сборках утилиты DNScat2, используемых злоумышленниками:

      Доменное имя

      DNS-записи

      w.3a01[.]net

      103.219.153[.]203

      c.0ce[.]org

      Отсутствуют на момент исследования

      p.7cp[.]org

      Отсутствуют на момент исследования

      gov-by[.]com

      Используется сервис CloudFlare

      f.91j[.]org

      Используется сервис CloudFlare

      in.vmware.org[.]mx

      Используется сервис CloudFlare

      ns.p-society[.]org

      Используется сервис CloudFlare

      Выводы

      Хактивизм остается одной из наиболее актуальных угроз для промышленных предприятий в регионах с высокой геополитической напряженностью — ранее мы писали об этом в отчетах об атаках, проводимых группами ИТ-армия Украины1 и TWELVE2.

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

      Отдельного упоминания заслуживают вредоносная программа Vasilek и утилита DNSCat2: они осуществляют вредоносную активность только на целевых системах. Для верификации используется имя компьютера, на котором запущена вредоносная программа. Полученное из имени системы значение хеша используется не только как условие дальнейшего выполнения вредоносной программы, но и как ключ для расшифровки строк, таких как имена импортируемых API-функций.

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

      Дополнительно при проведении атак злоумышленники не активируют все вредоносное ПО сразу, а оставляют так называемые «бомбы», которые срабатывают спустя определенное время. Такой подход направлен на повторное выведение ИТ-инфраструктуры предприятия из строя, когда системы уже восстановлены после первого этапа атаки. Учитывая это, мы настоятельно рекомендуем проведение комплексного реагирования на инцидент с привлечением квалифицированных специалистов, даже если факт компрометации вызывает сомнения или кажется, что последствия атаки были устранены своими силами.

      Действия злоумышленников могут иметь серьезные последствия для промышленных предприятий: они чреваты не только потерей работоспособности ИТ-систем, но и киберфизическим ущербом. По заявлениям самих злоумышленников, в ходе атаки на предприятие по производству удобрений они остановили работу котельной, «но не пошли дальше, хотя имели возможность нарушить функционирование и других энергетических объектов предприятия, что могло привести к серьезным физическим последствиям или даже к возникновению чрезвычайной ситуации».

      Следует отметить, что многим заявлениям злоумышленников нельзя доверять — свидетельства этому были получены в ходе исследования. Например, в своих заявлениях злоумышленники утверждают, что зашифровали данные на системах атакуемых организаций, однако наш анализ показал, что группа использовала вредоносное ПО класса вайпер. Это ставит под сомнение возможность восстановления данных даже в случае выполнения требований атакующих. Также в своих публикациях злоумышленники упоминают различные векторы заражения — от эксплуатации уязвимостей до вербовки сотрудника организации, способного «открыть дверь» в ее инфраструктуру. На практике мы зафиксировали применение иного, куда более распространенного начального вектора атаки — фишинговых писем.

      Если у вас возникли вопросы или комментарии после прочтения этого отчета, либо имеется дополнительная информация, относящаяся к описанной вредоносной кампании, пожалуйста, свяжитесь с нами по адресу: ics-cert@kaspersky.com.

      Рекомендации

      При выявлении каких-либо индикаторов компрометации необходимо немедленно выполнить следующие действия:

      1. Изолировать скомпрометированную подсеть или отключить всю корпоративную сеть от интернета. Осуществить мониторинг на предмет подозрительной сетевой активности, в частности:
        • аномально большого количества DNS-запросов;
        • подключений к VPN;
        • активности утилит удаленного администрирования;
        • частых попыток подключиться к API-серверам мессенджеров.
      2. Сменить все пароли к доменным учетным записям — как пользователей, так и компьютеров. Чтобы исключить возможность проведения атак класса Golden Ticket, пароль к доменной учетной записи службы krbtgt необходимо сменить дважды с минимальным временным интервалом между сменами.
      3. Выполнить срочную перезагрузку рабочих станций и серверов, чтобы восстановить работу защитных решений, которые могли быть деактивированы злоумышленниками.
      4. Убедиться, что защитное решение работает на всех системах, все модули включены, установлены актуальные версии баз и программных модулей, используются технологии Kaspersky Security Network (KSN) на группах систем, где законодательством или нормативными актами не запрещено использование облачных сервисов. Доступ к серверам KSN должен быть открыт только из Kaspersky Security Center с использованием технологии KSN Proxy.
      5. Немедленно запустить полную антивирусную проверку всех систем.
      6. Для получения дополнительных инструкций и помощи в реагировании на инцидент обращайтесь к нам по адресу: ics-cert@kaspersky.com.

      Мы рекомендуем принять следующие меры, чтобы не стать жертвой атаки по описанному выше сценарию:

      1. Изолировать скомпрометированную подсеть или отключить всю корпоративную сеть от интернета. Осуществить мониторинг на предмет подозрительной сетевой активности, в частности:
        • исходящим VPN-подключениям;
        • большому количеству DNS-запросов;
        • большому количеству обращений к API мессенджеров;
        • попыткам сканирования сети организации;
        • попыткам установить соединения между системами внутри сети по нестандартным портам.
      1. Дополнить существующую SIEM-систему следующими правилами корреляции:
        • установка нового драйвера в системе;
        • успешная авторизация пользователя с правами администратора на новой системе;
        • создание новой службы Windows;
        • завершение процессов защитного решения;
        • появление скрытых пользователей в системе;
        • очистка журналов событий Windows;
        • отключение службы ведения журналов Windows;
        • обнаружение событий запуска утилиты PSExec и аналогичных инструментов.
      1. Настроить фильтрацию контента, пересылаемого по электронной почте, для автоматического удаления исполняемых файлов из входящих сообщений (с внешних адресов).
      2. Реализовать практику, при которой доменные учетные записи обычных пользователей не имеют прав локального администратора. Это поможет снизить риск повышения привилегий в случае компрометации такой учетной записи.
      3. Настроить защитные решения на блокировку запуска утилит удаленного администрирования (за исключением используемых администраторами).
      4. Установить актуальные версии централизованно управляемых защитных решений на всех системах (как серверах, так и рабочих станциях), и регулярно обновлять антивирусные базы и программные модули. Для систем, работающих в технологических сетях, рекомендуется использовать специализированные решения, такие как KICS for Nodes.
      5. Убедиться, что все компоненты защитного решения включены на всех системах, а действующие политики запрещают отключать защиту и завершать работу защитных решений или удалять их без ввода пароля администратора.
      6. Убедиться, что защитные решения получают актуальную информацию об угрозах из Kaspersky Security Network на тех группах систем, где использование облачных сервисов не запрещено законом или нормативными актами.
      7. Убедиться, что все устройства распределены по группам (отсутствуют устройства в группе «Неизвестные устройства»), лицензионные ключи защитных решений установлены на всех устройствах, и для всех групп созданы задачи периодической проверки.
      8. Обновить операционные системы до версий, поддерживаемых производителями этих операционных систем. Установить актуальные обновления безопасности (патчи) для ОС и приложений. Особое внимание уделить обновлению гипервизоров.
      9. Обновить прикладное программное обеспечение, включая Microsoft Office, веб-браузеры. Устанавливать все виды обновлений: накопительные (CU), сервисные пакеты (SP) и обновления безопасности (патчи). Особое внимание уделить сервисам, доступным из интернета.
      10. Настроить фильтрацию контента, передаваемого по электронной почте, и реализовать многоуровневую фильтрацию входящего почтового трафика.
      11. Ограничить использование протоколов RDP и SMB с помощью списков контроля доступа (ACL).
      12. Потребуйте от администраторов использовать привилегированные учетные записи только в тех случаях, когда без этого невозможно выполнение их рабочих задач. Рекомендуется использовать выделенные учетные записи для администрирования разных групп систем, например, серверов баз данных, почтовых серверов.
      13. Обязать сотрудников использовать разные пароли для различных доменов, сервисов и систем.
      14. Установить в групповых политиках Active Directory следующие требования к сложности паролей:
        • Минимальная длина пароля: не менее 12 символов для непривилегированных учетных записей и не менее 16 символов для привилегированных.
        • Пароль должен содержать заглавные и строчные буквы, цифры и специальные символы:
          (! @ # $ % ^ & * ( ) – _ + = ~ [ ] { } | \ : ; ‘ ” < > , . ? /)
        • Пароль не должен содержать словарных слов или персональных данных пользователя, которые могут быть использованы для его подбора, таких как: имя или фамилия, номер телефона, памятные даты (дни рождения и т. д.).
        • Пароль не должен содержать символы, последовательно расположенные на клавиатуре (12345678, QWERTY и т. д.), а также распространенные сокращения и шаблонные слова (USER, TEST, ADMIN и др.).
        • Срок действия пароля — не более 90 дней.
      15. Запретить хранение и передачу паролей в открытом виде. Для хранения и передачи паролей использовать специализированные программы — менеджеры паролей.
      16. Развернуть (если она еще не внедрена) систему сбора событий информационной безопасности и управления ими (SIEM) — например, Kaspersky Unified Monitoring and Analysis Platform.
      17. Настроить систему хранения резервных копий таким образом, чтобы они хранились на отдельном сервере, не входящем в домен, а права на их удаление и изменение были только у выделенной учетной записи, также не входящей в домен. Эта мера позволяет защитить резервные копии в случае компрометации домена.
      18. Увеличить частоту создания резервных копий, чтобы избежать потери критичных объемов информации в случае выхода сервера из строя.
      19. Хранить не менее трех резервных копий для каждого сервера и других систем, имеющих критически важное значение для работы организации. При этом по крайней мере одна копия должна находиться на отдельном автономном устройстве хранения данных.
      20. Использовать RAID-массивы на серверах, где хранятся резервные копии. Это позволяет повысить отказоустойчивость системы резервного копирования.
      21. Внедрить процедуру периодической проверки целостности и работоспособности резервных копий. Также следует регулярно проводить антивирусное сканирование резервных копий.
      22. Обучить сотрудников правилам безопасной работы в интернете, с электронной почтой и другими каналами связи. В частности, объяснить возможные последствия загрузки и открытия файлов из непроверенных источников. Особое внимание уделить распознаванию фишинговых писем и безопасным методам работы с исполняемыми файлами и документами Microsoft Office.
      23. Усилить сегментацию сети. Разделить сети различных подразделений (а также различных предприятий) на отдельные сегменты. Ограничить передачу данных между сегментами сети до минимально необходимого набора портов и протоколов, требуемых для обеспечения рабочих процессов организации.
      24. Убедиться, что политики Active Directory содержат ограничения на попытки входа пользователей в систему. Пользователи должны иметь доступ только к тем системам, которые необходимы им для выполнения служебных обязанностей.
      25. Включить двухфакторную аутентификацию для входа в консоли администрирования и веб-интерфейсы защитных решений. В Kaspersky Security Center, например, это можно настроить вручную.
      26. Развернуть специализированные решения для защиты от целевых атак, такие как Kaspersky Anti Targeted Attack и Kaspersky Endpoint Detection and Response.
      27. Свести к минимуму количество исключений в политиках защитных решений. По возможности избегать задания исключений с помощью универсальных масок (*), заменяя их исключениями для конкретных файлов или расширений.
      28. Реализовать двухфакторную аутентификацию для авторизации (по RDP и другим протоколам) на системах, содержащих конфиденциальные данные, а также на критически важных системах ИТ-инфраструктуры организации, таких как контроллеры доменов.
      29. Перенести сервисы, связанные с обеспечением информационной безопасности организации, в отдельный сегмент сети, а по возможности — в отдельный домен. Ограничить передачу данных между этим сегментом и остальной сетью, оставив только список портов и протоколов, минимально необходимых для работы защитных решений и мониторинга инцидентов информационной безопасности.
      30. Если требуется удаленный доступ к системам в других сегментах сети, использовать концепцию демилитаризованной зоны (DMZ) для организации взаимодействия между сегментами и осуществлять удаленный доступ через терминальные серверы.
      31. Независимо от наличия или отсутствия признаков инцидента информационной безопасности установить настройки Kaspersky Security Center в соответствии с рекомендациями, описанными в Руководстве по усилению защиты.

      Индикаторы компрометации

      Контрольные суммы файлов (MD5)

      Вердикты защитных решений

      Доменные имена и IP-адреса

      Имена служб

      Ключи реестра

      Пути к файлам


      1. https://tip.kaspersky.com/ отчет: Researcher notes: insider on contractor’s side uses remote access to attack electric power facilities in Russia ↩︎
      2. https://tip.kaspersky.com/ отчет: Pro-Ukrainian hacker group attacked industrial organization in Russia ↩︎