Оглавление


Продолжаем знакомить вас с проправительственной группировкой Shedding Zmiy. Ранее мы уже разобрали инциденты, благодаря которым лучше поняли modus operandi злоумышленников, а также подробно описали уникальный метод эксплуатации группировкой уязвимости десериализации ненадёжных данных в параметре VIEWSTATE.

В нашем новом посте подробно опишем оригинальные самописные инструменты, использованные Shedding Zmiy в атаках: Bulldog Backdoor, nim-загрузчики и загрузчик XDHijack.

Bulldog Backdoor

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

Bulldog Backdoor - это кастомный кроссплатформенный имплант на языке golang, который обладает широкими возможностями по удаленному управлению. С ним мы столкнулись дважды. Впервые - в марте этого года, когда нам удалось получить версию v0.1.3-62-g4843e53. Второй раз - в конце мая, когда в ходе расследования атаки на ИТ-компанию мы обнаружили новую версию v0.2. На момент первого нами обнаружения имплант располагался по пути /usr/bin/crond и использовал pkg.collect.net[.]in и leo[.]rpm-bin[.]link в качестве командных серверов. Реальный IP-адрес C2 был скрыт за CloudFlare. На http://pkg.collect.net[.]in:80 порту была доступна форма аутентификации в админскую панель управления имплантом:

Форма аутентификации С2 Bulldog Backdoor
Форма аутентификации С2 Bulldog Backdoor

Так как в форме аутентификации была изображена собака, а основной модуль импланта назывался bb и после запуска устанавливалась переменная среды BB=1 (по которой также определяется, работает ли он в фоновом режиме), мы решили назвать его Bulldog Backdoor (хотя на изображении была собака породы питбуль).

Пример каталогов используемых библиотек Bulldog Backdoor
Пример каталогов используемых библиотек Bulldog Backdoor

После запуска бэкдор устанавливает себя в качестве сервиса в systemd. Файл system.crond.service с закрепленным Bulldog Backdoor выглядит в точности так:


[Unit]
Description=Daemon for executing programs at set times
ConditionFileIsExecutable=/usr/bin/bash
    
    
[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/usr/bin/bash "-c" "exec -a crond /usr/bin/crond"
    
    
Restart=always
    
RestartSec=120
EnvironmentFile=-/etc/sysconfig/system.crond
    
Environment=PATH=/opt/nodejs/12.3.1/bin:/opt/maven/3.5.4/bin:/opt/groovy/2.4.15/bin:/opt/ant/1.10.6//bin:/usr/local/bin:/usr/bin:/usr/bin
Environment=Path=/opt/nodejs/12.3.1/bin:/opt/maven/3.5.4/bin:/opt/groovy/2.4.15/bin:/opt/ant/1.10.6//bin:/usr/local/bin:/usr/bin:/usr/bin
[Install]
WantedBy=multi-user.target
    

Для генерации такого unit-файла в бэкдоре используется шаблон и стандартная библиотека golang для работы с шаблонами – text/template. Таким образом в шаблоне генерируются разные параметры в том числе ExecStart, Environment, временные настройки и др..

У бэкдора имеется help, в котором описываются различные возможные параметры запуска:

Конфигурация

Конфигурация хранится в сериализованном виде. За сериализацию отвечает Open Source библиотека msgpack.


"Tags": ["<victim_tag"],
"Token": "<json_web_token>"
"Secret": "KrS7BT7WOOm5TRlo9nZqv72x6h8uaSRW",
"Logging": "Debug",
"Version": "v0.1.3-62-g4843e53",
"ClientID": "<client_id>",
"ClientKey": "Xuqk4wiKqt8XZKVj",
"ProxyAddress": null,
"BackendAddress": "https://pkg.collect.net[.]in",

В тегах Shedding Zmiy указывали названия атакуемых организаций из госсектора, ИТ-разработки и производства высокотехнологичного оборудования.

Сетевое взаимодействие

Имплант может взаимодействовать с C2 по следующим протоколам:

Для обработки поступающих с С2 команд Bulldog Backdoor использует протокол RPC, реализованный в стандартной библиотеке go – net/rpc. Внутри HTTP передача данных выглядит примерно так:

[ WS | DNS | QUIC | ICMP
 [ http
   [ AES encrypted
   [ Cbor
     [ RPC
      [ payload ]
     ]
    ]
   ]
 ]
]

То есть RPC-данные сериализуются с помощью cbor, затем шифруются AES и передаются через HTTP, который туннелируется протоколами WS, DNS, QUIC или ICMP.

Версии Bulldog Backdoor

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

Дата выпуска jwt

Версия

Sha256

2023-08-28 08:08:24+00:00

v0.0.9

41d35016c78f86eee8972808c7de8c200ff24625639adff5b9d0ab8773fff6b4

2023-08-28 08:08:31+00:00

v0.0.9

8d055f3ad4d01f601df24a7c20ded981005adef7e6d26750415d1f95a471c2e3

2023-09-21 08:10:38+00:00

v0.0.9

be246cdf932aa5b1c2ada0d74c8d1eca4028538b28fb61d7a8d930b4266fd55c

2023-10-23 09:09:30+00:00

v0.0.13

32d76f2fe1188a131cb3219356639e83c60d47a703e40b8801a364d98e37128f

2024-01-25 12:33:27+00:00

v0.0.23-10-g4528ef3

ab801eaa9ad11199e1382a124d6024f9551a5a33ca1b9e5cafc0098621abb91f

2024-01-25 12:33:27+00:00

v0.0.23-10-g4528ef3

f3bb44d52e43477ce43c91eb8d9830e356fc105b96377edd6b190fcccda61e2f

2024-02-26 09:39:42+00:00

v0.1.3-4-g68c293d

e2b2ebe1b82d1c122dc2750f318f2484fe5361fcd964bfdcdcae631cf32f8d37

2024-03-08 15:09:39+00:00

v0.1.3-62-g4843e53

4561a38ff34cc71cc73d54e2adfbd378f58d54596b012ff1841fdd7fc42063c3

2024-05-22 09:58:14+00:00

v0.2.49

73a4a5d9dd45b6dc3dcf0bb48e017ff7453e5e91ce2c535d322b70883fe643f1

2024-05-23 05:56:48+00:00

v0.2.50

102f35996005b871f0f8cfc3b9419bf89c3d1e3570c0b01ccbf2861f297a4e90

2024-05-30 07:16:23+00:00

v0.2.55

ce14af27c50581b739ced6daac60e08b8965f7406ee631f244d1426bbf065df0

Два сэмпла представляли собой PE-файлы, остальные – ELF-файлы. Дату выпуска определенной версии мы привязали к дате выпуска jwt-токена, хранящегося в конфигурации всех сэмплов.

Самая ранняя версия, найденная нами, появилась в августе 2023 года – v0.0.9. Первые версии были обфусцированы Garble. В них наблюдается гораздо меньшая структура кода. Конфиг хранится в виде глобальных переменных без десериализации и base64. Крайне ограниченный функционал. Версия v0.0.13 получает уже более структурированный вид. Конфиг выносится в отдельный модуль, добавляется новый функционал в виде reverse shell. Однако в ней все еще нет части функций, которые присутствуют в последней версии сэмпла (v0.1.3-62-g4843e53), обнаруженной в ходе мартовского расследования, где мы столкнулись с данным ВПО. В частности:

  • взаимодействие с C2 возможно только через websocket и DNS-туннель;
  • аутентификация на С2 производилась через BasicAuth, хотя jwt токен уже был в конфигурации;
  • изначально собираемая информация о хосте содержит только информацию о процессах.

В версии же от 25 января 2024 года (v0.0.23-10-g4528ef3) уже добавлена возможность отслеживания действия в файловой системе. Также появились все 4 протокола для взаимодействия с С2, а из конфигурации убрали данные для Basic Authentication. Помимо этого, появилась возможность проксирования соединения.

Версия от 26 февраля 2024 года (v0.1.3-4-g68c293d) уже не так сильно отличается по функционалу. Основные отличия:

  • более полный сбор информации о зараженном хосте;
  • возможность сканирования сети при помощи библиотеки gomap.

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

Список основных доступных команд бэкдора

Команда

Описание

proxy

запускает socks-прокси на заданный адрес

file system

команды взаимодействия с файловой системой жертвы: ls, mkdir, rm, find, cat…

run command

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

revshell

выполняет подключение к указанному адресу по доступным протоколам (ws, dns, quic или icmp)

network

эксфильтрация данных, nmap, ping

get\update config and itself

получает информацию о конфигурации или обновляет файл бэкдора и конфигурацию

watch file

отслеживает изменения указанного файла / каталога

Новые версии от мая 2024 года

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

При работе в режиме реверс-шелла бэкдор скрывает свое присутствие через удаление записи о сессии в файле /var/run/utmp. Таким образом, в команде who будет отсутствовать информация о запущенных Bulldog’ом виртуальных терминалов.

В модуль utils вынесена некоторая часть функций сбора информации о системе. Злоумышленники обогатили собираемые результаты сведениями из ARP-таблицы и сетевыми маршрутами. Также Bulldog backdoor теперь получает подробные сведения о контейнерах Docker.

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

Nim-загрузчики

В кейсе 4 (Атакует великий MRX) мы наблюдали использование кастомного nim-загрузчика на Windows:

MD5

00a21f938b1e603c14f0e669850afdaf

SHA1

cfced9e0dd01e8fb125b58ddbaf6328f090b37db

SHA256

7692f02bf392170b83360a298a5194250f8de2887da809f9b10669997bc6d583

Module name

dismcore.dll

File path

C:\windows\temp\dismcore.dll

File size

16100526 bytes (15.4 MB)

Comp. timestamp

2023-11-08 21:05:58

Загрузчик представляет собой x64 DLL с debug-символами и заточен под AV/EDR Evasion. Основной функционал заложен в экспортной функции DllGetClassObject, которая должна вызываться в результате загрузки библиотеки легитимным файлом dism.exe через технику DLL side-loading. Рассмотрим подробнее используемые evasion-техники.

Техника I. Unhooking

Unhooking – процесс замены dll с хуками от EDR на чистую версию dll без хуков. Техника заключается в замене .text-секции dll в памяти на .text-секцию, взятую из аналогичной dll с файловой системы. Причем вызов NtProtectVirtualMemory осуществляется прямым системным вызовом (direct syscall) с использованием заголовочных файлов Open Source инструмента SysWhispers2, которые были подготовлены с помощью другого Open Source инструмента NimlineWhispers2.

В рассмотренном загрузчике Unhooking используется для библиотек ntdll.dll, kernel32.dll и kernelbase.dll. Его разработчики позаимствовали код для реализации этой техники из github-репозитория OffensiveNim.

В данном случае схема unhooking-а выглядит следующим образом:

MapViewOfFile() -> syscall NtProtectVirtualMemory (PAGE_EXECUTE_READWRITE) -> replace .text section -> Syscall NtProtectVirtualMemory to reset old page protection attributes

Техника II. Зашифрованный позиционно-независимый шелл-код

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

В секции .rdata nim-загрузчика содержится зашифрованный позиционно-независимый шелл-код с финальной нагрузкой – PE-файлом, который представлял собой mtls sliver в режиме beacon.

Первые байты зашифрованного шелл-кода donut v1.0
Первые байты зашифрованного шелл-кода donut v1.0

В зашифрованных байтах имелись повторяющиеся значения (0xF9), что на первый взгляд свидетельствует об использовании однобайтового xor-шифрования. Но при более подробном анализе выяснилось, что использовалось шифрование по таблице замены (подробности – далее), а значение 0xF9 заменялось на нулевой байт.

Шелл-код сгенерирован с помощью Open Source библиотеки donut v1.0. После запуска он сначала выполняет обходы:

  • DisableAMSI (Antimalware Scan Interface);
  • DisableWLDP (Windows Lockdown Policy);
  • DisableETW (Event Tracing for Windows).

После обходов загружает в память PE-файл (хранится в незашифрованном виде) и запускает его.

Для расшифровки шелл-кода используется таблица замены, размером 0x800 байт, состоящая из 256 QWORD значений. Расшифровка происходит путем замены в зашифрованном шелл-коде значений, которые представляют собой индексы расшифрованных значений в таблице:

Таблица замены nim-загрузчика
Таблица замены nim-загрузчика

Python-код для расшифровки:


sbox = [ 0xC4, 0xDF, 0x9D, …]
enc_data = [ … ]
dec_data = []
    
for i in enc_data:
    dec_data.append(sbox[i])    

Техника III. Шифрование строк

Все строки в загрузчике зашифрованы с помощью кастомного xor-подобного алгоритма, взятого из открытых источников (Nim код). Аналогичный алгоритм на Python выглядел бы так:


def custom_xor(s, key):
res = ''
for c in s:
    for f in (0,8,16,24):
        c ^= (key >> f)&0xFF
    res += chr(c)
return res

Техника IV. Волокна (Fibers)

Для запуска шелл-кода используются техника волокон.

Схема запуска шелл-кода с применением волокон:

ConvertThreadToFiber -> VirtualAlloc (RW) -> memcopy shellcode -> CreateFiber -> VirtualProtect (RX) -> SwitchToFiber

Общая схема работы загрузчика представлена на картинке:

Схема запуска mtls beacon импланта Sliver через nim-загрузчик
Схема запуска mtls beacon импланта Sliver через nim-загрузчик

Связь из прошлого

С nim-загрузчиками мы встречаемся нечасто, поэтому проверили наши коллекции на предмет похожих кейсов. В марте 2022 года мы наблюдали следующую фишинговую рассылку с вложением (MD5: 3cb55f14288f2b62f72e26d0b8cd45a7).

Фишинговое письмо из рассылки
Фишинговое письмо из рассылки

Вложение представляло собой docx-документ, который подгружал remote template со следующего удаленного сервера:

hxxps://roskazna[.]net/acpx/t.php?t=7299a7767dd9956216b3dca474505e65b917c4baf986875953dabe170bb85ef83b2bf8fa4dc248845acf13085c277d37&action=show_document&z=1&x=2500

Фишинговый документ из письма
Фишинговый документ из письма

Remote template, в свою очередь, содержал вредонос Ekipa RAT:

MD5

98809d8d0735a5a01598094387ef1c33

SHA1

80528a617c711a39d376a99bcbb1a8f7c6d11749

SHA256

472300d537fe334bd3a5443d258efacaf18fab0ba500f03a68917b9f7353bbc3

File name

t.php.dotm

File size

30084 bytes (29.4 KB)

Это тот же самый вредонос, что мы видели в кейсе №1 (Первая ниточка).

Далее через Ekipa RAT с hxxps://roskazna[.]net/acpx/t.php?get_payload=1648552904302 был загружен exe-файл, представляющий собой nim-загрузчик с debug-информацией внутри:

MD5

13450db3e912b75dd84063dab5cdde65

SHA1

e8b569e1799811fd28da7e5b4554330adee3ab53

SHA256

3860aeb66da0ac741ecf22ff68b8210319d6550f212140229c5070d05538cb60

File name

1648552904302.exe

File size

16825055 bytes (16.0 MB)

Comp. timestamp

2022-03-28 13:37:22

Значение 1648552904302 также являлось unix timestamp, указывающим на дату 2022-03-29 11:21:44.3020000 UTC. Он был практически идентичен вышеописанному загрузчику:

  • использовал технику unhooking для библиотек ntdll.dll, kernel32.dll и kernelbase.dll с кодом из репозитория OffensiveNim и direct syscalls через утилиту NimlineWhispers2;
  • расшифровывал позиционно-независимый шелл-код, сгенерированный donut v0.9.3;
  • все строки были зашифрованы аналогичным алгоритмом.

Но были и отличия:

  • donut shellcode loader с финальной нагрузкой расшифровывались не через таблицу подстановки, а с помощью AES-128 CTR:

aes_IV = { 0x52, 0x8F, 0xFF, 0xA8, 0x8B, 0x34, 0x81, 0x4E, 0x24, 0x55, 0x6C, 0xD8, 0xBA, 0xEB, 0x7C, 0x62 };
aes_key = { 0x8B, 0x09, 0x0F, 0x46, 0xE3, 0x95, 0x9D, 0x01, 0x13, 0x5E, 0xD5, 0x6F, 0x17, 0x4D, 0xD0, 0x67 };

Donut шелл-код в этом случае также загружал в память https session sliver с C2 hxxps://it-enterprise[.]cloud.

Отличия:

  • не выполнялся ETW bypass, так как он был добавлен в donut v1.0;
  • nim loader представлял из себя exe-файл, а не DLL.
Схема запуска https session импланта Sliver через nim-загрузчик
Схема запуска https session импланта Sliver через nim-загрузчик

В марте 2022, it-enterprise[.]cloud резолвился в IP 78.155.206[.]53 (RU SELECTEL AS 49505). А в ноябре 2022 – в IP 94.103.92[.]182 (RU VDSINA-AS).

Даты резолва

IP

AS

2022-03-30 – 2022-11-15

78.155.206[.]53

RU SELECTEL AS 49505

2022-11-15 – 2024-03-08

94.103.92[.]182

RU VDSINA-AS

2024-03-08 – current

199.59.243[.]225

USA AMAZON-02 AS 16509

Мы видели, что IP 94.103.92[.]182 использовался Shedding Zmiy в качестве C2 для mtls sliver импланта уже в 2024 году.

Все эти факты позволяют нам связать фишинговые рассылки с Ekipa RAT в марте и декабре 2022 года с Shedding Zmiy. Про эту кампанию в конце 2022 года была выпущена статья от подразделения SpiderLabs американской компании TrustWave.

Загрузчик XDHijack

В кейсах 2 (Атака на доверие) и 6 (Новая атака через подрядчика) мы встретили новое ВПО – загрузчик XDHijack. Он представляет собой x64 DLL, написан на языке golang и обфусцирован с помощью инструмента garble.

Имя файла

Кейс

Имя модуля

Имя экспортной функции

sha256

dismcore.dll

2

loader.dll

DllGetClassObject

81927b961b96b241bd7a32bab0b4590da3d9e2d55363f12a209d8c01b51c0aa0

dismperf.dll

6

loader.dll

DllGetClassObject

cddeb483e170c5bb431037316bebfe2164fa826f1d3fb8fac453e4c1529b79f5

mfplat.dll

6

loader.dll

MFStartup

4ffbf25af296e84c57e5f650d41773e87b9cbd36bbd1390dac87160a82180899

XDHijack в сравнении с nim-загрузчиками, использует другие evasion-техники:

1) Unhooking ntdll.dll с помощью техники Perun’s Fart (fart – на шведском скорость, на польском удача)

Данная техника известна с 2021 года. Основная идея – у suspended процесса загружается чистая ntdll.dll (без хуков), text-секция которой копируется в основной процесс.

Техника Perun’s Fart
Техника Perun’s Fart

Golang-функция LoadDLL используется в основном процессе для получения адреса ntdll.dll, который имеет такое же значение в suspended-процессе.

1) Патч NtTraceEvent для обхода ETW (Event Tracing for Windows)

2) Использование косвенных системных вызовов (indirect syscalls) через Open Source библиотеку acheron

3) Проксирование загрузки DLL

Для загрузки DLL в память используется функция RtlQueueItem и своя реализация GetProcAddress, которая получает адрес функции через таблицу экспорта в памяти DLL. Непосредственно в коде XDHijack проксирование загрузки DLL не используется, так как загружаются только kernel32.dll и ntdll.dll, которые находятся в списке исключений и загружаются напрямую с помощью стандартной golang функции windows.LoadDLL.

XDHijack запускается с помощью техники dll side-loading. Основной код располагается в экспортной функции. После запуска загрузчик:

1. распаковывает архив cfg.zip в текущем каталоге с жестко закодированным значением пароля;

2. выполняет evasion-техники, заданные в конфиге;

3. загружает основную нагрузку, используя технику reflective dll injection, которая реализуется с помощью функции LoadLibrary из пакета memmod репозитория WireGuard;

4. вызывает экспортную функцию.

В качестве триггеров dll side-loading Shedding Zmiy использовали легитимные файлы dism.exe (dismcore.dll) и MDEServer.exe (mfplat.dll).

image021.png
Схема запуска нагрузки через загрузчик XDHijack

Примечательно, что жестко закодированный пароль пока не менялся и позволил расшифровать cfg.zip в кейсе 2 (Атака на доверие) спустя длительное время, так как тогда мы еще не обладали сэмплами XDHijack.

Архивы cfg.zip, которые мы видели на расследованиях, содержали два файла:

  • config.yaml – конфигурационный файл XDHijack;
  • DLL-файл – финальный payload.

DLL-файл всегда располагался в корне архива, а config.yaml – либо в корне, либо в каталоге scripts.

Формат yaml-конфига представлен в таблице:

Ключ yaml

golang тип

Описание

unhook

bool

использовать ntdll unhooking

etw

bool

использовать etw bypass (патч NtTraceEvent)

deletezip

bool

удалить cfg.zip архив после окончания чтения

process

string

путь до процесса жертвы, из которого будет копироваться чистая ntdll.dll

args

string

аргументы запуска процесса жертвы

export

string

имя экспортной функции, которую нужно вызвать, чтобы запустить основную нагрузку

Значения параметров в конфигах, которые мы наблюдали:

Ключ yaml

Значение

unhook

false или true

etw

false или true

deletezip

false или true

process

"C:\\Windows\\System32\\query.exe"

args

""

export

StartW или DllGetClassObject

Не до конца понятно, почему в некоторых случаях Shedding Zmiy не использовала evasion-техники. Возможно, загрузчик XDHijack все еще находится в активной разработке, и операторы используют dev-конфиги.

Возможно, XDHijack – это замена "устаревшим" nim-загрузчикам. Его первые версии были замечены ITW во второй половине 2023 года, вредонос предположительно все еще находится в стадии “обкатки”, поэтому его функционал пока что используются не в полном объеме.

Заключение

Shedding Zmiy использует намного больше defense-evasion-техник, чем все остальные группировки, которые мы наблюдали. Скрытность – это второе имя группировки. Они мимикрируют под различное легитимное ПО, запускают основные нагрузки только в памяти, предпринимают всё возможное для усложнения обнаружения и анализа вредоносных инструментов.

Хотя мы видели множество вредоносных инструментов Shedding Zmiy, мы считаем, что весь арсенал еще не раскрыт и продолжаем следить за активностью группировки. Результатами нашего исследования будем и дальше делиться с читателями блога.

А если вы увидели подозрительную активность в своей сети и считаете, что тоже стали жертвой хакерской группировки, пишите нам. Эксперты Solar 4RAYS помогут выявить инцидент и ограничить его распространение, а также защитить вашу инфраструктуру от подобных атак в будущем.

IOCs

File hashes

md5

cd76c9652a6146200039481375d24fe8
30049ea8ac7e3029f911c11ddbcd92dc
1256d62b4d15ca785766c4bc4f0e0a01
3cb55f14288f2b62f72e26d0b8cd45a7
98809d8d0735a5a01598094387ef1c33
13450db3e912b75dd84063dab5cdde65
89d25c215b4d7ce3d1cb3cc9d538a0bf
00a21f938b1e603c14f0e669850afdaf
3c543e7ef66e1bb5017d41939608972d
0385b0f83dbfc99c243ff066e3fe3cb2
fc3b7f47958f6c1c6a93a2f2f970734c
7dc1e49f1664af70d85d31af70f29071
fad11b841d84bbe33248719341b298d3
c02bee46d6a7a46f54e6abe003fec897
887b166e87809c313ace45667665d32e
92281c6ba30314bba6d710f0954bc5d6
6f6e7fe49a8d5696f389e202d3b8c7e2
9942cf8c5a8101ed82bbfd9cd1714d47
caf68b393d56548074b9434564cb0625
d3cd9d9bad6450e8fd4fd2e972639c69
7943432dc87697eb8b9b68d99cfd42c6

sha1

331f9d94a7a16d3aad6288537c9da47cc12d9f6b
3d974a11c0ff2dffc1ca9aab89f32b3a1779e23b
2243f9900ec981e8fa9415b34f77f81680fbba8e
482388f4dae14a6a7527fd8e6ed5cf4cf6bb5621
9df13daecf5e3f3e9ade27eb3e0f0220630aab8a
80528a617c711a39d376a99bcbb1a8f7c6d11749
e8b569e1799811fd28da7e5b4554330adee3ab53
23f7b196babfd8449c139be416321318ed477497
Cfced9e0dd01e8fb125b58ddbaf6328f090b37db
d7228ba3ca1dcf3097409215b84fbc0e11230477
4f6164321d10c7a54a54398ccc7b11c1e7390e38
8030f2430234426ab3bdc8cdd995be7c4805d7d2
1981f9a1d885c0ccb2d1f5910765a52d1989bc37
fd7532d2a42dd3ba26a1a3453698b8bc481f4675
58d03630792f287184177660d9fd846fbde5416c
7334d98a10fb76696845a2deef0202d1857682fa
1d784e6c7d12fb7730895f21e4bfd3cde4b3900f
64a29322509b22cfb7a164a691cb678935f6864f
680cb0a25e4a5148f5a1f7d3b75fad4fd345cdb0
a190448a0c01a6e58610de27d022ccba0e755f79
c88ae1c6b08600971c395957797fb82cbccca8a7

sha256

81927b961b96b241bd7a32bab0b4590da3d9e2d55363f12a209d8c01b51c0aa0
cddeb483e170c5bb431037316bebfe2164fa826f1d3fb8fac453e4c1529b79f5
4ffbf25af296e84c57e5f650d41773e87b9cbd36bbd1390dac87160a82180899
a1b0b5d298bf3d73e6bd275ac16aeb89f70c7da5186bc5951c148d20e71ff297
bd3446338f46145955d0249dabc4ec3b8a0217b2ace90f1622f17785564ea60d
472300d537fe334bd3a5443d258efacaf18fab0ba500f03a68917b9f7353bbc3
3860aeb66da0ac741ecf22ff68b8210319d6550f212140229c5070d05538cb60
6c04dcae47be5e371af4e7e92d74aa5e4411be7ef27b37ee1dbc1b5e77da2140
7692f02bf392170b83360a298a5194250f8de2887da809f9b10669997bc6d583
7f8be5a9e8bc1932bc44f22252490930f06dd49a915b0c767e2ca3b8e195d141
32d76f2fe1188a131cb3219356639e83c60d47a703e40b8801a364d98e37128f
ab801eaa9ad11199e1382a124d6024f9551a5a33ca1b9e5cafc0098621abb91f
f3bb44d52e43477ce43c91eb8d9830e356fc105b96377edd6b190fcccda61e2f
e2b2ebe1b82d1c122dc2750f318f2484fe5361fcd964bfdcdcae631cf32f8d37
4561a38ff34cc71cc73d54e2adfbd378f58d54596b012ff1841fdd7fc42063c3
102f35996005b871f0f8cfc3b9419bf89c3d1e3570c0b01ccbf2861f297a4e90
41d35016c78f86eee8972808c7de8c200ff24625639adff5b9d0ab8773fff6b4
73a4a5d9dd45b6dc3dcf0bb48e017ff7453e5e91ce2c535d322b70883fe643f1
8d055f3ad4d01f601df24a7c20ded981005adef7e6d26750415d1f95a471c2e3
be246cdf932aa5b1c2ada0d74c8d1eca4028538b28fb61d7a8d930b4266fd55c
ce14af27c50581b739ced6daac60e08b8965f7406ee631f244d1426bbf065df0

С2

pkg.collect.net[.]in
roskazna[.]net
it-enterprise[.]cloud
78.155.206[.]53
94.103.92[.]182
infras[.]pics
leo[.]jython27[.]xyz
leo[.]rpm-bin[.]link
lib[.]rest
sula[.]rpm-bin[.]link
svch[.]org

Related Infrastructure

Проанализировав полученные адреса С2, мы нашли дополнительные инфраструктуру, которая напрямую не связана с описанными вредоносами, но с высокой вероятностью принадлежит Shedding Zmiy.

upd-rkn[.]net
rpm-bin[.]link
get[.]rpm-bin[.]link
hummingbird[.]rpm-bin[.]link
unicorn[.]rpm-bin[.]link
source[.]rpm-bin[.]link
base[.]upd-rkn[.]net
ops[.]rpm-bin[.]link
ci[.]upd-rkn[.]net
git[.]upd-rkn[.]net
ci[.]rpm-bin[.]link
git[.]rpm-bin[.]link
narwhal[.]rpm-bin[.]link
rhl[.]rpm-bin[.]link
i386[.]rpm-bin[.]link
amd64[.]rpm-bin[.]link
jython27[.]xyz
sula[.]jython27[.]xyz
tiger[.]jython27[.]xyz
get[.]jython27[.]xyz

Приложение I. Расширенная информация по файловым IOCs

Имя файла

MD5

Комментарий

dismcore.dll

cd76c9652a6146200039481375d24fe8

XDHijack

dismperf.dll

30049ea8ac7e3029f911c11ddbcd92dc

XDHijack

mfplat.dll

1256d62b4d15ca785766c4bc4f0e0a01

XDHijack

dismcore.dll

00a21f938b1e603c14f0e669850afdaf

Nim loader, загружающий mtls beacon sliver

mtls_beacon_sliver.bin

3c543e7ef66e1bb5017d41939608972d

mtls beacon sliver

Приказ №21 от 29-03-2022.docx

3cb55f14288f2b62f72e26d0b8cd45a7

Фишинговое вложение в марте 2022

t.php.dotm

98809d8d0735a5a01598094387ef1c33

remote template с VBA RAT (Ekipa RAT)

1648552904302.exe

13450db3e912b75dd84063dab5cdde65

nim-загрузчик, запускающий https session sliver (2022 г.)

https_session_sliver.bin

89d25c215b4d7ce3d1cb3cc9d538a0bf

https session sliver (2022 г.)

-

0385b0f83dbfc99c243ff066e3fe3cb2

Bulldog backdoor v0.0.13

-

fc3b7f47958f6c1c6a93a2f2f970734c

Bulldog backdoor v0.0.23-10-g4528ef3

-

7dc1e49f1664af70d85d31af70f29071

Bulldog backdoor v0.0.23-10-g4528ef3

scrond

c02bee46d6a7a46f54e6abe003fec897

Bulldog backdoor v0.1.3-62-g4843e53

crond

887b166e87809c313ace45667665d32e

upx packed Bulldog backdoor v0.1.3-4-g68c293d (unpacked fad11b841d84bbe33248719341b298d3)

-

fad11b841d84bbe33248719341b298d3

upx unpacked Bulldog backdoor v0.1.3-4-g68c293d

-

9942cf8c5a8101ed82bbfd9cd1714d47

upx unpacked Bulldog backdoor v0.2.49

scrond

073b0d10ccefbdd191b709a223ff2f0a

packed Bulldog backdoor v0.2.49

-

92281c6ba30314bba6d710f0954bc5d6

upx unpacked Bulldog backdoor v0.2.50

scrond

56c61e09d201a458b8ed2dd7e2faea8c

packed Bulldog backdoor v0.2.50

-

7943432dc87697eb8b9b68d99cfd42c6

upx unpacked Bulldog backdoor v0.2.55

scrond

abb0265aa0cbf9d2deb4315a047029dd

packed Bulldog backdoor v0.2.55