С апреля 2024 года команда разработчиков Sednit вновь появилась с современным набором инструментов, в основе которого лежат два парных имплантата — BeardShell и Covenant, каждый из которых использует отдельного облачного провайдера для обеспечения отказоустойчивости. Такой подход с использованием двух имплантатов позволил вести долгосрочную слежку за украинскими военнослужащими. Интересно, что эти современные инструменты имеют прямую генеалогическую связь с имплантатами группы, созданными в 2010 году.
Ключевые моменты этой статьи:
- Исследователи ESET проследили возобновление деятельности группы Sednit, занимающейся внедрением сложных имплантов, до случая 2024 года в Украине, где был развернут кейлоггер под названием SlimAgent.
- Код SlimAgent был создан на основе Xagent, флагманского бэкдора Sednit 2010-х годов.
- В ходе той операции был развернут BeardShell, второй имплантант, разработанный Sednit. Он выполняет команды PowerShell через легитимного облачного провайдера, используемого в качестве канала связи с командным центром.
- BeardShell использует характерную технику обфускации, также встречающуюся в Xtunnel — инструменте Sednit для перехода между сетями, созданном в 2010-х годах.
- В течение 2025 и 2026 годов Sednit неоднократно развертывал BeardShell вместе с Covenant — третьим основным компонентом своего современного набора инструментов.
- Sednit значительно доработал этот имплантант с открытым исходным кодом для обеспечения долгосрочного шпионажа и внедрения нового сетевого протокола, основанного на еще одном легитимном облачном провайдере.
Профиль Sednit
Группа Sednit, также известная как APT28, Fancy Bear, Forest Blizzard или Sofacy, действует по крайней мере с 2004 года. Министерство юстиции США назвало эту группу одной из ответственных за взлом Национального комитета Демократической партии (DNC) непосредственно перед выборами в США 2016 года и связало группу с подразделением 26165 ГРУ — разведывательного агентства Российской Федерации, входящего в состав Главного разведывательного управления Вооруженных сил России. Предполагается, что эта группа также стоит за взломом глобальной телевизионной сети TV5Monde, утечкой электронной почты Всемирного антидопингового агентства (ВАДА) и многими другими инцидентами.
Что стало с командой Sednit, занимавшейся установкой сложных имплантов?
Группа Sednit, пожалуй, является одной из групп APT с наиболее впечатляющим списком взломанных целей. Среди известных взломов можно выделить немецкий парламент (2015 г.), французскую телевизионную сеть TV5Monde (2015 г.) и Национальный комитет Демократической партии США (2016 г.).
В те годы громких атак Sednit полагалась на обширный набор собственных имплантов, начиная от полноценных шпионских бэкдоров, таких как Xagent и Sedreco, и заканчивая специализированными инструментариями, такими как инструмент для перехода по сети Xtunnel и программа для кражи данных с изолированных машин USBStealer. В 2016 году мы подробно описали этот сложный арсенал в нашей белой книге «En Route with Sednit».
Однако в 2019 году произошел сдвиг. С тех пор и до недавнего времени высокотехнологичные имплантаты Sednit редко наблюдались в реальных условиях (за несколькими исключениями, такими как вредоносное ПО Graphite, задокументированное Trellix в 2021 году), в то время как группа одновременно активизировала свои фишинговые операции. Используемое в этих фишинговых атаках пользовательское вредоносное ПО состояло в основном из простых имплантов на основе скриптов. Причины этого технического сдвига остаются для нас загадкой.
В этой статье мы рассказываем о повторном появлении высокотехнологичного набора инструментов Sednit с 2024 года. Здесь мы сосредоточимся на атрибуции современных инструментов группы, поскольку их внутреннее устройство уже описывалось в предыдущих публикациях CERT-UA и Sekoia.
Бутиковая студия разработчиков
Sednit самостоятельно разрабатывает свои шпионские имплантаты, что является отличительной чертой, подтверждающей подход к атрибуции на основе общих кодовых артефактов.
Чтобы проиллюстрировать эту способность, рассмотрим Xagent — флагманский бэкдор группы в 2010-х годах. В 2015 году мы обнаружили исходный код Xagent на сервере Linux в Украине, оставленный в незащищенном архиве после того, как злоумышленники скомпилировали его. На рисунке 1 показано, что плагины и каналы C&C включались или отключались путем комментирования или раскомментирования кода — выбираемого для каждой цели в соответствии с оперативными требованиями — что не оставляет сомнений в том, что разработчики и операторы работали в тесном взаимодействии.

Кроме того, в обвинительном заключении Министерства юстиции США от 2018 года прямо указано, что Xagent был разработан собственными силами, при этом конкретные сотрудники подразделения 26165 ГРУ обвиняются в том, что они являются его разработчиками.
В этом блоге мы используем эти следы разработки в качестве механизма атрибуции. Отслеживая общие артефакты кода в разных имплантатах, мы связываем наборы инструментов группы 2010-х годов с теми, что используются в настоящее время.
SlimAgent
Наш обзор современной деятельности Sednit начинается с SlimAgent, шпионского импланта, обнаруженного CERT-UA в апреле 2024 года на компьютере украинского правительства. SlimAgent — это простой, но эффективный шпионский инструмент, способный регистрировать нажатия клавиш, делать снимки экрана и собирать данные из буфера обмена.
Предшественники
Интересно, что в телеметрии ESET мы обнаружили ранее неизвестные образцы с кодом, похожим на SlimAgent, которые были запущены еще в 2018 году — за шесть лет до украинского случая — против правительственных структур в двух европейских странах. Эти образцы демонстрируют сильное сходство на уровне кода с SlimAgent, включая идентичный шестиэтапный цикл сбора данных, показанный на рисунке 2. Каждый шаг реализован практически одинаково, как показано на рисунке 3 на примере подпрограммы, отвечающей за регистрацию исполняемого файла окна переднего плана; единственные различия заключаются в расположении внутренних структур данных.


SlimAgent включает в себя несколько функций, которых не было в образцах 2018 года, таких как шифрование собранных журналов. Тем не менее, примечательно, что образцы, запущенные с разницей в шесть лет, демонстрируют столь сильное сходство кода.
Поэтому мы с высокой степенью уверенности считаем, что и образцы 2018 года, и образец SlimAgent 2024 года были созданы на основе одного и того же кода. Остается вопрос: откуда взялись образцы 2018 года?
Печально известная родословная
Образцы 2018 года имеют внутреннее название, которое может быть знакомо коллегам-аналитикам: RemoteKeyLogger.dll. Это название модуля кейлоггера Xagent, флагманского шпионского бэкдора Sednit с 2012 по 2018 год (описанного в нашей белой книге «En Route with Sednit»).
Изучив некоторые старые образцы Xagent (например, SHA-1: D0DB619A7A160949528D46D20FC0151BF9775C32), мы действительно смогли обнаружить некоторые поразительные сходства, такие как показанное на рисунке 4. В этом коде логика кейлоггера запускается только в том случае, если курсор мыши не сместился более чем на 10 пикселей (путем сравнения квадрата расстояния между последним и текущим положением с 0x64, т. е. 100), и она реализована с помощью тех же вызовов API.

В качестве другого примера: SlimAgent выводит свои шпионские журналы в формате HTML, где название приложения, зарегистрированные нажатия клавиш и название окна отображаются синим, красным и зеленым цветами соответственно. На рисунке 5 показан пример, сгенерированный при вводе и копировании текста в вновь созданный файл TXT с помощью notepad.exe. Кейлоггер Xagent также генерирует HTML-журналы, используя ту же цветовую схему. Это проиллюстрировано на рисунке 6 с определением соответствующих HTML-тегов цвета в исходном коде Xagent 2015 года.


Исходя из этих сходств, мы полагаем, что SlimAgent является эволюцией модуля кейлоггера Xagent, который развертывался в качестве автономного компонента по крайней мере с 2018 года. Более того, поскольку Xagent представляет собой набор пользовательских инструментов, используемый исключительно группой Sednit на протяжении более шести лет, мы с высокой степенью уверенности приписываем SlimAgent группе Sednit.
Это поднимает вопрос: зачем Sednit повторно использовать имплантат, созданный на основе столь хорошо известной кодовой базы? Одним из возможных объяснений является сокращение разработческих ресурсов. Однако SlimAgent был не единственным имплантатом, обнаруженным на украинском компьютере в 2024 году; там также был развернут BeardShell — гораздо более позднее пополнение набора пользовательских инструментов Sednit.
BeardShell
BeardShell — это сложный имплантат, способный выполнять команды PowerShell в среде выполнения .NET, используя при этом легитимный облачный сервис хранения данных Icedrive в качестве канала связи с командным центром.
Этот компонент несет на себе следы интенсивной разработки и является основной причиной, по которой мы полагаем, что передовая команда разработчиков Sednit вновь активизировалась. Например, поскольку Icedrive не предоставляет публично документированного API, разработчики заново реализовали запросы, отправляемые официальным клиентом Icedrive. Всякий раз, когда изменения в закрытом API Icedrive нарушают связь BeardShell, разработчики Sednit в течение нескольких часов выпускают обновленную версию для восстановления доступа.
Математический взрыв из прошлого
Хотя нам не удалось найти другие семейства вредоносных программ, напрямую связанные с BeardShell, мы обнаружили удивительное сходство с прошлыми инструментами Sednit, начиная со статического инициализатора на C++, выполняемого в самом начале работы BeardShell. Цель этой процедуры, код которой показан на рисунке 7, — расшифровать токен аутентификации для облачного хранилища Icedrive.

Процедура содержит классический пример техники обфускации, известной как вставка непрозрачных предикатов (выделено красным прямоугольником на рисунке 7):
- В качестве условия для цикла while используется арифметическое выражение, которое при всех возможных значениях входных переменных — обозначенных на рисунке 7 как x и y — дает нулевой результат. На практике тело цикла никогда не выполняется, поскольку у предиката
2
(x2 + 1) + 2 =y2 + 5 нет целочисленного решения. - Тело этого искусственного цикла состоит из двух исходных инструкций (показанных в желтом блоке на рис. 7), а также фиктивного обновления входной переменной y, имитирующего структуру тела реального цикла.
- За фиктивным циклом следуют две исходные инструкции, которые будут выполнены: вызов процедуры дешифрования токена Icedrive и регистрация процедуры очистки.
Непрозрачные предикаты обычно используются для затруднения статического анализа, но в такой небольшой процедуре они не особенно полезны. Обратите внимание, что другие статические инициализаторы BeardShell — которые не обрабатывают важные данные — защищены с помощью той же техники, поэтому кажется, что разработчики просто применили эту защиту ко всем из них без разбора.
Теперь формулу предиката можно упростить следующим образом (вычитая 2 с обеих сторон):
2
(x2 + 1) = y2 + 3 . Интересно, что тот же непрозрачный предикат использовался в Xtunnel, инструменте для переключения сетевых соединений, который использовался исключительно Sednit с 2013 по 2016 год и описан в нашем техническом документе «En Route with Sednit». На рисунке 8 показан пример запутываемого кода из Xtunnel (SHA-1: 99B454262DC26B081600E844371982A49D334E5E) с оператором if, предикат которого не может быть истинным.

Предикат не только идентичен тому, что используется в BeardShell, но и никогда не выполняемый блок построен аналогичным образом: путем дублирования двух исходных инструкций (в желтом блоке) и выполнения фиктивного обновления одного из входных значений предиката (в данном случае x).
Насколько нам известно, этот непрозрачный предикат не наблюдался нигде, кроме Xtunnel. Можно даже задаться вопросом, не использовался ли он в качестве ложного флага, особенно учитывая, что он публично упоминался как уникальный для Xtunnel, например, в презентации на BlackHat Europe 2016. Тем не менее, в операции с ложным флагом, скорее всего, использовался бы идентичный предикат, а не вариант с +2 по обе стороны уравнения.
Совместное использование этой редкой техники обфускации в сочетании с ее совместным применением с SlimAgent позволяет нам с высокой степенью уверенности сделать вывод, что BeardShell входит в индивидуальный арсенал Sednit.
Начиная с первоначального случая в 2024 году, Sednit продолжала использовать BeardShell в течение 2025 и 2026 годов, в основном в рамках долгосрочных шпионских операций, направленных против украинского военного персонала. Чтобы обеспечить постоянный доступ к этим ценным целям, Sednit систематически развертывает наряду с BeardShell еще один имплантант : Covenant, последний компонент своего современного арсенала.
Covenant
Covenant — это фреймворк с открытым исходным кодом для .NET, предназначенный для постоперационной деятельности, впервые выпущенный в феврале 2019 года. Он позволяет создавать имплантаты .NET и управлять ими через веб-панель управления — см. пример на рисунке 9 — и предоставляет более 90 встроенных задач, поддерживая такие возможности, как экфильтрация данных, мониторинг целей и переход по сети.

С 2023 года разработчики Sednit внесли ряд изменений и провели ряд экспериментов с Covenant, чтобы сделать его своим основным шпионским имплантом, оставив BeardShell в основном в качестве запасного варианта на случай, если у Covenant возникнут операционные проблемы, такие как отключение его облачной инфраструктуры.
Например, Sednit заменил исходный механизм генерации имен имплантов Covenant на детерминированный метод (см. рис. 10), создающий идентификаторы, производные от характеристик машины, вместо генерации нового случайного значения при каждом запуске (см. столбец «Name» в разделе «Grunts» на рис. 9). Эта модификация иллюстрирует, как Sednit адаптировал Covenant для долгосрочного шпионажа, а не для краткосрочной деятельности после взлома: в длительных операциях появление одной и той же машины под разными идентификаторами после каждой перезагрузки загромождало бы панель мониторинга и снижало бы операционную эффективность.

Sednit также изменил поток выполнения Covenant, представляющий собой двухэтапный имплантат, вероятно, чтобы избежать поведенческого обнаружения. Вместо того, чтобы загрузчик первого этапа вызывал первый метод сборки .NET второго этапа с использованием фиксированного индекса (как было реализовано изначально), они ввели атрибут DisplayName и прошли по атрибутам методов, чтобы найти точку входа. В вариантах начала 2023 года разработчики Sednit даже экспериментировали со встраиванием обеих стадий в один бинарный файл.
Covenant официально поддерживает только HTTP и SMB, что привело к самой значительной модификации Covenant со стороны Sednit: добавлению облачного сетевого протокола. Для этого разработчики Sednit использовали проект C2Bridge — автономный фреймворк, созданный первоначальным автором Covenant для облегчения интеграции новых протоколов связи. С помощью C2Bridge разработчикам нужно лишь реализовать класс, соответствующий интерфейсу IMessenger на стороне импланта, предоставляя методы Read и Write для управления низкоуровневыми коммуникациями. Затем C2Bridge может работать как автономный компонент на контроллере для ретрансляции сообщений, в то время как новые имплантаты, созданные контроллером, используют реализованные методы связи.
На рисунке 11 показаны классы, введенные разработчиками Sednit для связи с облачным провайдером Filen, используемым с июля 2025 года. Класс FilenMessenger реализует IMessenger и использует FilenClient для взаимодействия с API Filen. Ранее, в 2023 году, Covenant от Sednit злоупотреблял легитимным облачным сервисом pCloud, а в 2024–2025 годах — Koofr, используя аналогичные реализации.

Эти адаптации показывают, что разработчики Sednit приобрели глубокий опыт в использовании Covenant — импланта, официальная разработка которого была прекращена в апреле 2021 года и который, возможно, считался защитниками неиспользуемым. Этот неожиданный оперативный выбор, похоже, окупился: Sednit успешно полагается на Covenant уже несколько лет, особенно против отдельных целей в Украине. Например, в 2025 году наш анализ облачных дисков Covenant, контролируемых Sednit, выявил машины, которые находились под наблюдением более шести месяцев. В январе 2026 года Sednit также использовала Covenant в серии кампаний по целевому фишингу, эксплуатируя уязвимость CVE-2026-21509, как сообщила CERT‑UA.
Заключение
В этом блоге мы показали, что передовая команда разработчиков Sednit вновь активизировалась, используя арсенал, в центре которого находятся два импланта — BeardShell и Covenant, развернутые параллельно и использующие разных облачных провайдеров. Такая конфигурация позволяет операторам быстро восстанавливать доступ, если инфраструктура одного из них будет сбита. Мы полагаем, что эта стратегия с двумя имплантами не является новой. Например, в кампании 2021 года, задокументированной Trellix, Sednit параллельно развернул два импланта: Graphite, который использовал OneDrive в качестве канала C&C, и PowerShell Empire, который опирался на отдельную выделенную инфраструктуру.
Сложность BeardShell и обширные модификации, внесенные в Covenant, демонстрируют, что разработчики Sednit по-прежнему вполне способны создавать сложные настраиваемые имплантаты. Кроме того, общий код и методы, связывающие эти инструменты с их предшественниками 2010-х годов, явно указывают на преемственность в составе команды разработчиков.
Это поднимает вопрос о том, чем занимались эти разработчики все эти годы, когда сообщество специалистов по безопасности в основном наблюдало фишинговую активность со стороны Sednit. Одной из возможностей является то, что усилия по продвинутой разработке были возобновлены после вторжения России в Украину. Другая — что они никогда не прекращали работу, а просто стали более осторожными.
По любым вопросам, касающимся наших исследований, опубликованных на WeLiveSecurity, обращайтесь к нам по адресу threatintel@eset.com.ESET Research предлагает частные отчеты по APT-угрозам и каналы данных. По любым вопросам об этой услуге посетите страницу ESET Threat Intelligence.
IoC
Файлы
Полный список индикаторов компрометации (IoC) и образцов можно найти в нашем репозитории GitHub.
| SHA-1 | Имя файла | Обнаружение | Описание |
| 5603E99151F8803C13D4 |
eapphost.dll | Win64/Spy.KeyLogger.LS | SlimAgent. |
| 6D39F49AA11CE0574D58 |
tcpiphlpsvc.dll | Win64/BeardShell.A | BeardShell. |
Техники MITRE ATT&CK
Эта таблица была составлена с использованием версии 18 фреймворка MITRE ATT&CK.
| Tactic | ID | Имя | Описание |
| Разработка ресурсов | T1583.006 | Приобретение инфраструктуры: веб-сервисы | BeardShell использует облачное хранилище Icedrive. Covenant использует облачное хранилище Filen. |
| T1587.001 | Разработка возможностей: вредоносное ПО | BeardShell и SlimAgent — это вредоносное ПО, созданное на заказ. | |
| Выполнение | T1059.001 | Интерпретатор команд и скриптов: PowerShell | BeardShell выполняет команды PowerShell. |
| T1129 | Общие модули | BeardShell и SlimAgent представляют собой полноценные DLL-файлы. | |
| Повышение привилегий | T1546.015 | Выполнение, инициируемое событием: перехват COM | BeardShell и SlimAgent обеспечивают постоянное присутствие в системе путем перехвата COM-объектов. |
| Обход средств защиты | T1027 | Запутывание файлов или информации | Расшифровка токена Icedrive в BeardShell запутывается. |
| T1140 | Деобфускация/декодирование файлов или информации | BeardShell расшифровывает свои строки. | |
| T1480 | Ограничения на выполнение | BeardShell выполняется только в taskhost.exe или taskhostw.exe. SlimAgent выполняется только в explorer.exe. |
|
| T1564 | Скрытие артефактов | Журналы SlimAgent записываются в скрытый файл. | |
| Обнаружение | T1082 | Обнаружение системной информации | BeardShell отправляет отпечаток скомпрометированной машины. |
| Сбор | T1005 | Данные из локальной системы | BeardShell, Covenant и SlimAgent собирают данные с взломанного компьютера. |
| T1056.001 | Перехват ввода: кейлоггинг | SlimAgent осуществляет перехват нажатий клавиш. | |
| T1113 | Снимок экрана | SlimAgent делает снимки экрана с зараженного компьютера. | |
| T1115 | Данные буфера обмена | SlimAgent собирает данные из буфера обмена. | |
| Управление и контроль | T1001 | Запутывание данных | BeardShell выводит данные в поддельных изображениях. |
| T1071.001 | Протокол прикладного уровня: веб-протоколы | BeardShell и Covenant используют HTTPS для связи с командно-контрольным сервером. | |
| T1102 | Веб-сервис | BeardShell получает команды от Icedrive. Covenant получает команды от Filen. |
|
| T1573.002 | Зашифрованный канал: асимметричная криптография | Обмен данными между BeardShell и Icedrive шифруется с помощью HTTPS. Связь Covenant с его контроллером использует сеансовые ключи, зашифрованные по алгоритму RSA. |
|
| Экфильтрация | T1567 | Передача данных через веб-сервис | BeardShell выводит данные в Icedrive. Covenant выводит данные в Filen. |
