Вернуться назад

GOFFEE навынос: разбираем новые техники шпионской группировки

Криминалисты F6 исследовали атаку кибершпионов на одну из российских компаний.

GOFFEE навынос: разбираем новые техники шпионской группировки

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

TODO: описать картинку

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

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

Если нелегитимную активность выявить еще на ранних этапах, то остается шанс оперативно устранить доступ злоумышленников и не допустить дальнейшего продвижения по сети. В нашей практике есть такой публичный пример: при реагировании на инцидент в компании Alex Fitness совместные действия ИТ-службы заказчика и нашей Лаборатории позволили оперативно локализовать угрозу и предотвратить деструктивное воздействие на системы.

Другой важный фактор в реагировании на инцидент — это уровень подготовки атакующих и их мотивация. Атаки финансово мотивированных группировок в большинстве случаев заканчиваются шифрованием данных с последующим требованием выкупа. У злоумышленников нет задачи долго оставаться скрытными, напротив, им нужно как можно быстрее реализовать весь цикл атаки и получить заветный выкуп. Эти группировки чаще прибегают к использованию публично доступных инструментов в своих атаках: набор утилит NirSoft или Mimikatz для извлечения паролей, Nmap для разведки сети или публичные постэксплуатационные фреймворки. Такие инструменты известны большинству средств защиты, но атакующие решают эту проблему, просто временно отключая их. Использование готового инструментария экономит время и позволяет заранее отработать сценарии, что заметно ускоряет атаки.

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

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

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

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

Анализ инструментария и управляющей инфраструктуры позволил установить, что за атакой стоит APT-группа GOFFEE (известная также как Paper Werewolf). В этом исследовании мы разберем, как проводит атаки APT-группировка GOFFEE, опишем ее техники и инструментарий.

Who is GOFFEE

Группировка GOFFEE специализируется на проведении атак с целью шпионажа. Характер используемых инструментов и действий атакующих указывает на их высокий уровень технической и организационной подготовки.

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

В своих атаках GOFFEE пользуются инструментами собственной разработки, часть из которых основана на публичных проектах. Однако злоумышленники активно применяют техники обфускации, усложняющие обнаружение и криминалистический анализ. В качестве полезной нагрузки атакующие используют агенты Mythic и SSH-бэкдоры (ElfDoor/BindSycler и SWATSSHD). При обнаружении противодействия и удалении бэкдоров GOFFEE загружают новые, которые не детектируются прежними методами.

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

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

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

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

Этапы атаки

Получение первоначального доступа

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

В исследованной атаке мы столкнулись с активным использованием злоумышленниками Mythic-агента QwakMyAgent, о котором рассказывали в своих исследованиях ранее. Экземпляры этого бэкдора загружаются на скомпрометированное устройство при помощи легитимного компонента ОС Windows mshta.exe с подконтрольных атакующим доменов. QwakMyAgent позволяет получить полный контроль над скомпрометированной системой, а также доставить инструменты для дальнейшего развития атаки.

Рис. 1 — Загрузка QwakMyAgent при помощи утилиты mshta.exe
Рис. 1 — Загрузка QwakMyAgent при помощи утилиты mshta.exe

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

Рис. 2 — Конфигурация утилиты WinSW, обеспечивающей запуск вредоносного файла
Рис. 2 — Конфигурация утилиты WinSW, обеспечивающей запуск вредоносного файла

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

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

Разведка скомпрометированных устройств

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

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

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

Примеры команд, выполненных атакующими на этапе разведки:

 hostname
quser.exe
net users
net user administrator
net user guest
systeminfo.exe
ipconfig
powershell.exe /c ping ya.ru -n 4
netstat -ano
tasklist
powershell -c Get-Process telegram | Format-List Path 

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

Рис. 3 — Скриншот лог-файла, сделанный атакующими
Рис. 3 — Скриншот лог-файла, сделанный атакующими

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

Выполнение и перемещение

Для локального выполнения команд члены GOFFEE использовали встроенные командные интерпретаторы CMD и PowerShell. Для обхода правил детектирования, основанных на анализе процессов оригинального интерпретатора, злоумышленники создавали его копию для выполнения команд. Атакующие несколько раз прибегали к такому приему, копируя легитимное ПО на рабочих станциях и серверах.

Рис. 4 — Создание копии оригинального командного интерпретатора Windows
Рис. 4 — Создание копии оригинального командного интерпретатора Windows
Рис. 5 — Выполнение разведки при помощи копии командного интерпретатора Windows
Рис. 5 — Выполнение разведки при помощи копии командного интерпретатора Windows

Для выполнения произвольных команд с уровнем привилегий СИСТЕМА атакующие использовали PsExec, а также эксплуатировали уязвимость в службе Print Spooler.

Рис 6 — Использование утилиты PsExec для выполнения команд
Рис 6 — Использование утилиты PsExec для выполнения команд

При внесении изменений в конфигурацию системы злоумышленники отдавали предпочтение встроенным инструментам ОС. Например, управление вредоносными системными службами участники GOFFEE осуществляли при помощи утилиты sc.exe.

Команды, выполненные атакующим при создании вредоносной службы:

 sc create Kyoceraprmt binPath= C:\Program Files\Kyocera\KyoRm.exe DisplayName= Kyocera queue service start= auto
sc description "Kyoceraprmt" "Kyocera queue service."
sc start Kyoceraprmt 

Для модификации параметров реестра атакующие использовали утилиту reg.exe или ее аналог с графическим интерфейсом — regedit.exe.

Рис. 7 — Внесение изменений в системный реестр при помощи консольной утилиты reg.exe
Рис. 7 — Внесение изменений в системный реестр при помощи консольной утилиты reg.exe

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

Очередными инструментами, использовавшимся из числа штатных средств ОС, стали утилиты curl.exe и certutil.exe. Они использовалась атакующими для загрузки и импорта сертификатов root.crt и intermediate.crt на целевую систему.

Рис. 8 — Добавление сертификатов атакующими
Рис. 8 — Добавление сертификатов атакующими

Учитывая, что на хосте уже функционировал бэкдор с рабочим каналом связи с C2, установка сертификатов, скорее всего, не была связана с обеспечением его работы. Более вероятно, что злоумышленники готовили хост к дальнейшему использованию контролируемой ими цепочки сертификатов, в частности, для проведения атак типа Adversary-in-the-Middle и перехвата зашифрованного трафика.

Обладая доступом к ключевым устройствам сети, злоумышленники продолжали развивать атаку и компрометировать новые системы. Для доступа к тем или иным хостам участники GOFFEE использовали различные инструменты и постэксплуатационные фреймворки, работающие на основе протоколов RDP и SSH, WinRM.

Рис. 9 — Использование RDP в ходе развития атаки
Рис. 9 — Использование RDP в ходе развития атаки
Рис. 10 — Установка и использование атакующими SSH-сервера для перемещений по сети
Рис. 10 — Установка и использование атакующими SSH-сервера для перемещений по сети

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

Рис. 11 — Использование временных задач планировщика для выполнения команд
Рис. 11 — Использование временных задач планировщика для выполнения команд
Рис. 12 — Запуск командного сценария при помощи временных задач планировщика
Рис. 12 — Запуск командного сценария при помощи временных задач планировщика

Доставка вредоносного ПО

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

На начальных этапах атаки злоумышленники прибегали к популярным на тот момент сервисам временного хранения файлов для размещения своего инструментария и доставки на скомпрометированные рабочие станции и серверы:

  • BashUpload
  • DropMeFiles
  • GoFile

Позднее участники GOFFEE стали загружать вредоносное ПО с собственных ресурсов. Помимо описанного ранее способа с использованием утилиты mshta.exe, злоумышленники также применяли утилиту curl.exe. Позднее злоумышленники доставляли необходимый для развития атаки инструментарий средствами запущенных ранее бэкдоров, используя туннели из скомпрометированных систем.

Рис. 13 — Использование ранее скомпрометированной системы в локальной сети
Рис. 13 — Использование ранее скомпрометированной системы в локальной сети

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

Рис. 14 — Реализация взаимодействия с управляющими серверами
Рис. 14 — Реализация взаимодействия с управляющими серверами

Наряду с описанными способами GOFFEE доставляли инструменты в рамках интерактивных пользовательских сессий на скомпрометированных системах.

Рис. 15 — Доставка инструментов в рамках RDP-сессии
Рис. 15 — Доставка инструментов в рамках RDP-сессии

Удаленное взаимодействие с устройствами зачастую ограничивалось единственным подключением, во время которого на устройство доставляли и запускали сам бэкдор. В качестве полезной нагрузки атакующие использовали SSH-бэкдоры ElfDoor (BindSycler) и SWATSSHD, а также агенты Mythic. Они отличаются сложными методами обфускации с последовательным шифрованием полезной нагрузки различными алгоритмами. В качестве ключей шифрования выступали уникальные свойства конечной рабочей станции (имя системы, имя файла или каталога, значение переменной окружения).

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

 REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /V WFS_SERVICE_UUID /T REG_SZ /D " 6e7776a0-6ae6-4e85-ac53-fc60ad4dfdc0" /F 

Одновременно с этим GOFFEE использовали разные типы исполняемых файлов. На одну из рабочих станций ими были доставлены бэкдор в формате Node.js и оригинальный интерпретатор для его запуска.

Пример запуска Node.js-версии бэкдора:

 powershell Start-Process C:\Users\Admin\Documents\InfoBase1\1Cv8Log\node\node.exe -ArgumentList C:\Users\Admin\Documents\InfoBase1\1Cv8Log\node\main.js -WindowStyle Hidden 

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

Закрепление

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

Рис. 16 — Системная служба, обеспечивающая запуск бэкдора
Рис. 16 — Системная служба, обеспечивающая запуск бэкдора

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

Рис. 17 — Использование параметра ServiceDLL для запуска вредоносного файла
Рис. 17 — Использование параметра ServiceDLL для запуска вредоносного файла

Рис. 18 — Использование групп служб для запуска вредоносного файла
Рис. 18 — Использование групп служб для запуска вредоносного файла

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

Еще более сложными для обнаружения техниками закрепления являются модификации реестра. И если параметры Run, RunOnce достаточно популярны среди разных групп атакующих, то такие параметры как AutodialDLL, Print\Monitors и Command Processor\autorun менее распространены. Модификаций реестра, позволяющих обеспечить автоматизированный запуск вредоносного файла, великое множество, и проверить их все достаточно проблематично. Даже анализ «живой» системы не всегда решает эту проблему, так как некоторые из способов запускают полезную нагрузку только при определенных обстоятельствах.

Для запуска бэкдоров члены GOFFEE модифицировали параметр HKLM\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\AutodialDLL. Добавление в этот параметр DLL-файла обеспечивает его запуск при каждой попытке системы обратиться к сетевым ресурсам средствами библиотеки Winsock2. Устройство, не взаимодействующее с ресурсами в публичной или локальной сети, сегодня представить сложно, поэтому вредоносный файл наверняка будет запущен и выполнит свою задачу. Однако для корректной работы DLL необходимо реализовать в ней определенные функции. Это только подтверждает серьезность намерений и уровень подготовки атакующих.

Рис. 19 — Модификация параметра реестра AutodialDLL для закрепления вредоносного файла
Рис. 19 — Модификация параметра реестра AutodialDLL для закрепления вредоносного файла

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

Рис. 20 — Использование параметров реестра Print\Monitors для закрепления вредоносного файла
Рис. 20 — Использование параметров реестра Print\Monitors для закрепления вредоносного файла

Еще один параметр реестра, который позволял атакующим обеспечивать закрепление бэкдоров — HKCU\Software\Microsoft\Command Processor\AutoRun. Этот способ выполняет полезную нагрузку только при запуске пользователем командной оболочки Windows. Такое поведение редко встречается в работе рядовых сотрудников, поэтому атакующие применяли этот подход именно на рабочей станции ИТ-администратора. При этом злоумышленники не запускали вредоносный файл напрямую, а использовали вспомогательный командный сценарий.

Рис. 21 — Внесение изменений в системный реестр при помощи инструментов с графическим интерфейсом
Рис. 21 — Внесение изменений в системный реестр при помощи инструментов с графическим интерфейсом

Таким образом, закрепление представляло собой последовательную цепочку запуска модулей, которые обеспечивали работу бэкдора.

TODO: описать картинку

Способы автоматизированного запуска через модификации реестра становятся наиболее скрытными при изменении нераспространенных параметров. А использование последовательных инструментов запуска не позволяет при анализе ограниченного набора артефактов обнаружить всю цепочку и ликвидировать угрозу сразу.

Всерьез и надолго

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

В исследованной атаке злоумышленники подменили на внутреннем хранилище исполняемые файлы двух утилит — 7-Zip и Git. Выбор утилит предполагает компрометацию как широкого круга пользователей (7-Zip), так и команды разработчиков и ИТ-департамента (Git). Модифицированные файлы в полном объеме сохраняли функциональность оригинального ПО и не вызывали подозрений. При таком способе распространения сотрудник самостоятельно загружает и запускает вредоносные файлы. А факт загрузки их из закрытого корпоративного источника сильно повышает к ним доверие. Даже получив уведомление антивируса, пользователь может принудительно разрешить установку подозрительного файла. На внутренних хранилищах нередко встречаются исполняемые файлы с именами *keygen*, *crack*,  и многие пользователи уже привыкли добавлять их в исключения, что только помогает злоумышленникам.

Рис. 22 — Установка пользователем модифицированной версии 7-Zip
Рис. 22 — Установка пользователем модифицированной версии 7-Zip

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

Добавленный в образ файл Описание Комментарий
<IMAGE>\root\sources\$OEM$\$$\WFS\WFS.exe Исполняемый файл бэкдора. При установке системы будет скопирован в каталог C:\Windows\WFS\WFS.exe Для расшифровки полезной нагрузки использует значение переменной окружения WFS_SERVICE_UUID
<IMAGE>\root\sources\$OEM$\$$\Setup\Files\SetupComplete.cmd Командный сценарий, который автоматически выполняется после базовой настройки системы. Содержит команды, создающие системную службу для запуска бэкдора Создает системную службу для запуска бэкдора. Задает значение переменной окружения WFS_SERVICE_UUID
Рис. 23 — Структура модифицированного атакующими образа
Рис. 23 — Структура модифицированного атакующими образа

Оба файла будут скопированы на конечное устройство в процессе установки и первичной настройки системы. А файл SetupComplete.cmd автоматически будет запущен самой операционной системой в момент появления приветственного окна.

Рис. 24 — Содержимое файла SetupComplete.cmd
Рис. 24 — Содержимое файла SetupComplete.cmd

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

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

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

Обогащение аутентификационными данными

Как и со многими другими техниками, GOFFEE постепенно усложняли методы получения аутентификационных данных. В начале атаки злоумышленники использовали распространенные способы получения содержимого памяти системного процесса lsass.exe, отвечающего за хранение и обработку аутентификационного материала: утилиту NanoDump и штатную библиотеку comsvcs.dll. На этом же этапе атакующие применяли утилиту Impersonate и скрипт Invoke-InternalMonologue.ps1 для проведения атак на протоколы аутентификации Windows.

Рис. 25 — Хронология действий атакующих в рамках SSH-сессии
Рис. 25 — Хронология действий атакующих в рамках SSH-сессии

Вероятно, при помощи этих инструментов GOFFEE еще в начале атаки собрали множество различных учетных данных, достаточных для дальнейшего продвижения по сети. Вместе с тем участники GOFFEE постоянно обновляли свои сведения: на протяжении всей атаки регулярно осуществляли дампы базы данных Active Directory NTDS.dit. Для этого злоумышленники использовали публично доступную утилиту RawCopy. Полученные данные архивировали 7-Zip и выгружали на подконтрольные себе ресурсы средствами ранее запущенных бэкдоров. При этом для сокрытия своей деятельности атакующие использовали переименованные копии указанных утилит.

Рис. 26 — Извлечение базы данных Active Directory
Рис. 26 — Извлечение базы данных Active Directory

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

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

Рис. 27 — Фрагмент модифицированной функции OnUserLogin
Рис. 27 — Фрагмент модифицированной функции OnUserLogin

Компрометируя рабочие станции сотрудников, злоумышленники проверяли, установлен ли мессенджер Telegram и похищали его служебный каталог. Это позволяло получить доступ к личной переписке и корпоративным чатам ИТ-специалистов. В результате GOFFEE были хорошо осведомлены о реализованных и планируемых действиях по настройке инфраструктуры и мерам дополнительной защиты.

Рис. 28 — Поиск процесса мессенджера Telegram
Рис. 28 — Поиск процесса мессенджера Telegram

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

Постоянный контроль

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

По мере распространения и запуска бэкдоров злоумышленники постоянно проверяли их работоспособность и наличие сетевого соединения. Для этого атакующие использовали встроенные утилиты Windows:

 netstat -ano | findstr 49663
tasklist | findstr tponscr.exe 
Рис. 29 — Проверка злоумышленниками статуса системной службы
Рис. 29 — Проверка злоумышленниками статуса системной службы

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

Рис. 30 — Настройка вредоносной службы для автоматического перезапуска в случае сбоя
Рис. 30 — Настройка вредоносной службы для автоматического перезапуска в случае сбоя

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

Рис. 31 — Сведения о бэкдорах и способах их запуска
Рис. 31 — Сведения о бэкдорах и способах их запуска

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

Наряду с этим атакующие изучали активность администраторов сети. В процессе работ по улучшению системы журналирования специалисты использовали сценарий PCEnableAdvancedAudit.cmd, распространяя его централизованно через групповые политики и задачи планировщика. Спустя некоторое время на одном из устройств была обнаружена новая задача планировщика CryptSvc, запускающая файл с уже знакомым именем. Однако расположение и содержимое файла не оставляло сомнений в его принадлежности атакующим. Так злоумышленники обеспечивали закрепление нового бэкдора на устройстве.

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

Маскировка и противодействие обнаружению

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

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

Рис. 34 — Указание свойств вредоносной службы при помощи встроенной утилиты sc.exe
Рис. 34 — Указание свойств вредоносной службы при помощи встроенной утилиты sc.exe

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

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

Рис. 35 — Расположение вредоносного файла в каталоге прикладного ПО
Рис. 35 — Расположение вредоносного файла в каталоге прикладного ПО

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

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

Рис. 42 — Переименование вредоносного файла
Рис. 42 — Переименование вредоносного файла

Несмотря на маскировку имени, бэкдор все ещё можно выявить по временной метке.

Рис. 43 — Временные метки вредоносного файла
Рис. 43 — Временные метки вредоносного файла

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

Рис. 44 — Подмена временных меток атакующими
Рис. 44 — Подмена временных меток атакующими
Рис. 45 — Подмена временных меток атакующими
Рис. 45 — Подмена временных меток атакующими

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

Рис. 46 — Обнаружение вредоносного файла по временным меткам
Рис. 46 — Обнаружение вредоносного файла по временным меткам

При этом участники GOFFEE не обходят стороной и деструктивные методы противодействия криминалистическому анализу. Так они удаляли содержимое каталога Prefetch, хранящего сведения о запущенных исполняемых файлах и времени их запуска.

Рис. 47 — Очистка системного каталога Prefetch
Рис. 47 — Очистка системного каталога Prefetch

Эксфильтрация

Во многом применение нераспространенных техник и обеспечение продолжительного скрытного присутствия было необходимо для сохранения возможности похищать «секреты» из скомпрометированной сети.

В большинстве случаев для этого атакующие использовали возможности самих бэкдоров: данные передавались сразу на командные серверы. Также злоумышленники использовали и сторонние инструменты. Например, на файловом сервере с большим объемом ценных данных GOFFEE использовали утилиту rclone, которая способна обеспечить стабильную передачу данных. Примечательно, что конфигурационный файл, в котором были указаны данные для доступа к хранилищу Mega, атакующие загружали отдельно до установки самой утилиты.

Рис. 48 — Использование атакующими утилиты rclone для эксфильтрации данных
Рис. 48 — Использование атакующими утилиты rclone для эксфильтрации данных

Несмотря на отсутствие файлов на момент исследования и попытку атакующих переименовать исполняемый файл, нам удалось установить его функциональность. Злоумышленников выдал файл конфигурации rclone, имя которого в угоду сохранения функциональности осталось без изменений — rclone.conf.

Рис. 49 — Содержимое конфигурационного файла rclone
Рис. 49 — Содержимое конфигурационного файла rclone

Для быстрой передачи небольших объемов данных участники GOFFEE также использовали утилиту curl.exe и сервисы временного хранения данных или собственные командные серверы.

Рис. 50 — Сведения о выгрузке содержимого служебного каталога мессенджера Telegram
Рис. 50 — Сведения о выгрузке содержимого служебного каталога мессенджера Telegram

Анализ ВПО

Агент lonelymine

Агент lonelymine представляет собой 64-битное приложение для Windows формата PE32+ (EXE), разработанное на языке программирования Go.

Технические сведения о разработке программы в среде Go
Среда разработки Go go1.22.2 (дата релиза 03.04.2024 г.)
GOROOT /usr/lib/go-1.22/
GOPATH /home/hart/go/
Название lonelymine
Зависимости golang.org/x/sys (v0.15.0)
Путь к проекту /mnt/c/Users/Yakym/lonelymine/
Файлы проекта winagent.go

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

Адрес управляющего сервера (C2), содержащийся в коде программы:

https://api.netmetrics.org

Программа осуществляет взаимодействие с C2 с помощью протокола  HTTPS, данные передаются в формате JSON. Передаваемые данные шифруются с помощью AES-256 CBC, ключ содержится в коде программы в виде шестнадцатеричной строки:

541ed5e1d4dcc258c5606f07d4be357eeb745f9f18e28043b7c6f5114f505ec3

При передаче данных генерируется случайный 16-байтный вектор инициализации (IV), который помещается в начало. Зашифрованные данные передаются в закодированном в Base64 виде.

Для получения команд программа периодически направляет HTTP-запрос POST по адресу:

<C2>/api/v1/clientupdate

Где C2 — адрес управляющего сервера (C2).

В данном запросе передаются следующие данные в формате JSON:

 {
  "agent_id": "<AGENT_ID>",
  "beacon_jitter": "60",
  "beacon_max": "1800",
  "beacon_min": "1800",
  "chunk_size": "1048576",
  "hostname": "<HOST_NAME>",
  "immediate_connect": "true",
  "initial_delay": "1",
  "max_file_size": "10485760",
  "os": "windows amd64",
  "status": "alive",
  "username": "<USER_NAME>"
} 

Заголовки HTTP-запроса:

 X-Windows-Update-Client: <AGENT_ID>
User-Agent: <USER_AGENT>
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
DNT: 1
Connection: keep-alive
Content-Type: application/json
Cache-Control: max-age=0
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin 
AGENT_ID Идентификатор агента, сгенерированный при запуске программы. Идентификатор представляет собой строку из 32 случайно сгенерированных шестнадцатеричных символов
HOST_NAME Имя хоста
USER_NAME Имя пользователя
USER_AGENT Случайно выбранная строка User-Agent из списка: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 YaBrowser/24.1.0.0 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 YaBrowser/23.9.0.0 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 YaBrowser/24.1.1.0 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 YaBrowser/23.11.0.0 Safari/537.3 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 YaBrowser/23.11.1.0 Safari/537.3

В ответ программа получает команду.

Команда Описание
UPLOAD: Загрузить файл
UPLOAD_CHUNKED: Загрузить файл поблочно
UPLOAD_CHUNK: Загрузить блок файла
DOWNLOAD: Отправить указанный файл
START_BG: Запустить фоновую команду
cd Получить текущий каталог
wpd
dir Получить список элементов указанного каталога. Если каталог не указан, то текущего
whoami Получить имя пользователя и имя домена с помощью переменных окружения USERNAME и USERDOMAIN
hostname Получить имя хоста
ipconfig Получить информацию о сетевых настройках (имя хоста, имена сетевых адаптеров, MAC-адреса, IP-адреса, маски подсетей, адреса DNS-серверов, шлюзы и др.)
tasklist Получить список процессов
иное значение Выполнить указанную команду и вернуть результат ее выполнения

Результат обработки команды программа отправляет в запросе POST на тот же адрес:

<C2>/api/v1/clientupdate

При этом, к указанным выше заголовкам HTTP добавляется следующий заголовок:

X-Update-Action: report

Программа производит обработку только одной команды и прерывает работу в результате panic. Это вызвано ошибочным вызовом функции Go rand.Intn(0) при определении случайной задержки между запросами к C2 в цикле обработки команд.

SSH-бэкдоры

ElfDoor (BindSycler)

Данные бэкдоры представляют собой 64-битные приложения для Windows формата PE32+ (EXE), разработанные на языке программирования Go. Бэкдоры обфусцированы с использованием garble.

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

Каналы и команды SSH ElfDoor

Канал (channel) Команда (command) Описание
tcpip-forward Удаленный проброс портов
direct-tcpip Прямое перенаправление TCP, локальный проброс портов
ssh Запуск нового SSH-сервера
session exec Выполнение команды оболочки
shell Запуск интерактивной командной оболочки (shell)
subsystem sftp Запуск SFTP-сервера
ntfsfget: Низкоуровневое чтение содержимого указанного файла с помощью парсера NTFS (версия 4) (https://github.com/Velocidex/go-ntfs)
upload-bytes Загрузка бинарных данных (версия 3)

Начиная с версии 2 в ElfDoor (BindSycler) в качестве интерактивной командной оболочки по команде shell используется встроенная в бэкдор командная оболочка Elvish (https://github.com/elves), в которую разработчики бэкдора добавили различные встроенные команды.

Рис. 51 — Справка по встроенным командам, отображаемая при запуске команды builtin-help
Рис. 51 — Справка по встроенным командам, отображаемая при запуске команды builtin-help

Встроенные команды оболочки Elvish

Команда Описание
builtin-help Отобразить справку по встроенным командам
copy Копирование файла/каталога
dir Получение информации о каталоге
list Получение списка элементов каталога
loaded-bytes Команды для работы с бинарными данными: загрузка, вычисление хеш-суммы SHA1, расшифровка, очистка (версия 3)
mkdir Создание каталога
move Перемещение файла/каталога
rm Удаление файла
rmdir Удаление файла/каталога
runbytes Расшифровка бинарных данных (AES) и их запуск в качестве DLL непосредственно в памяти (версия 3)
rundll Запуск указанной DLL непосредственно в памяти (версия 3)
type Отображение содержимого файла
zip Сжатие файла/каталога в ZIP-архив

Конфигурационные данные ElfDoor

Параметр Описание Пример значения
Debug Режим отладки false
KnockBack Обратное подключение по указанному адресу false
DialAddress Адрес подключения example.com:443
DialNetwork Сетевой протокол подключения tcp
BindServer Создать сервер для приема входящих соединений false
BindAddress Адрес для привязки сервера
BindNetwork Сетевой протокол сервера tcp
SyclePeriod Интервал между обработкой задач при обратном подключении 20m
SycleJitterFactor Фактор случайного изменения интервала между обработкой задач 0.4
TlsKnockBack Обратное подключение по указанному адресу (TLS) true
TlsDialAddress Адрес подключения (TLS) sync.nvdisplay.com:443
TlsDialNetwork Сетевой протокол подключения (TLS) tcp
TlsCyclePeriod Интервал между обработкой задач при обратном подключении (TLS) 805s
TlsCycleJitterFactor Фактор случайного изменения интервала между обработкой задач (TLS) 0.3
BindTlsServer Создать сервер для приема входящих соединений (TLS) false
BindTlsServerAddress Адрес для привязки сервера (TLS) 0.0.0.0:49751
BindTlsServerNetwork Сетевой протокол сервера (TLS) tcp

Ключи SSH и TLS хранятся в коде программы в виде вложенных файлов (Go embedded files):

 fixtures/target-ssh-server.key
fixtures/target_authorized_keys.pub
fixtures/tls_cert.pem
fixtures/tls_key.pem 

История версий Elvish

Версия Интервалы дат Изменения
1 январь-апрель 2025 г.
2 апрель-май 2025 г. Использование по команде shell командной оболочки Elvish вместо стандартной (cmd.exe)
3 май-июль 2025 г. – добавлен канал ssh: upload-bytes – добавлены встроенные команды Elvish: loaded-bytes runbytes rundll
4 июль-август 2025 г. – добавлена команда канала ssh session: ntfsfget

SWATSSHD

Данный бэкдор представляет собой 64-битное консольное приложение для Windows формата PE32+ (EXE), разработанное на языке программирования C.

Бэкдор является модифицированной версией sshd, разработанной на основе исходных кодов OpenSSH v9.5.0.0 (https://github.com/PowerShell/openssh-portable). Для создания защищенного канала программа использует SSH-туннель. Программа может принимать входящие подключения и осуществлять обратное подключение по указанному адресу.

В коде бэкдора SWATSSHD в зашифрованном виде содержатся адрес для подключения, конфигурационные данные sshd и ключи OpenSSH.

Пример конфигурационных данных sshd

 Port 48219
HostKey [2,3]
HostKey [4,5]
HostKey [6,7]
HostKey [8,9]
AuthorizedKeysFile	[1]
PubkeyAuthentication    Yes
PermitRootLogin        Yes
AddressFamily inet
GatewayPorts Yes
AllowTcpForwarding Yes 

Все ключи OpenSSH были сгенерированы атакующими со следующей учетной записью:

turbo@DESKTOP-FN8TN19

При запуске бэкдор проверяет, что его процесс запущен в контексте системной учетной записи, в ином случае перезапускает свой процесс с аргументами «-R t». Следующие порождаемые процессы (форки) запускаются с аргументами «-R D» или «-R G» в зависимости от статуса демона основного процесса sshd.

Сборки SWATSSHD

Даты временных меток PE Путь к PDB-файлу
2024-08-28.. 2024-10-24 C:\jenkins_home\workspace\swat_openssh_windows_stealth_server_pipeline\src\openssh-windows\bin\x64\Release\sshd.pdb
2024-11-13 C:\jenkins_home\workspace\swat_openssh_windows_stealth_server\src\openssh-windows\bin\x64\Release\sshd.pdb
2024-11-25..2025-08-12 C:\jenkins_home\workspace\swat_openssh_windows_stealth_server\src\winssh\winssh\bin\x64\Release\sshd.pdb

Загрузчик Ebowla

С целью противодействия анализу и обнаружению SSH-бэкдоров атакующие применяли программы-загрузчики, в качестве полезной нагрузки которых используются ElfDoor (BindSycler) и SWATSSHD.

Программа-загрузчик представляет собой 64-битное приложение (EXE) или динамически подключаемую библиотеку (DLL) для Windows формата PE32+. Загрузчик разработан на основе фреймворка Ebowla (https://github.com/Genetic-Malware/Ebowla). Атакующие использовали два варианта Ebowla: на языке программирования Go и на C++. Загрузчик осуществляет выполнение содержащейся в его теле полезной нагрузки непосредственно в памяти текущего процесса.

Полезная нагрузка (payload), содержащаяся в загрузчике Ebowla, закодирована, сжата и зашифрована следующим образом:

 Payload -> brotli -> base64 -> AES-256 CFB -> zlib -> base64 

В более ранних образцах загрузчика Ebowla не используется алгоритм сжатия brotli.

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

Примеры паролей в виде путей к файлам/каталогам:

 c:\programdata\microsoft\crypto\md5
c:\programdata\microsoft\device stage\task\{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}\zh-hk
c:\users\public\pictures\282e5f768e53c3c7054e743cc84449d7 

Для получения ключа шифрования из пароля производится рекуррентное вычисление хеш-суммы SHA-512 с количеством итераций 10001, в более ранних образцах — 10002, 16‑байтный вектор инициализации IV содержится в начале зашифрованных данных.

Распределение видов паролей шифрования полезной нагрузки Ebowla

ElfDoor (BindSycler) SWATSSHD
Имя компьютера 18/27 22/26
Путь к файлу/каталогу 9/27 4/26

Способы запуска SSH-бэкдоров

ElfDoor (BindSycler) SWATSSHD
Непосредственный запуск 11/27 26/26
Системная служба 12/27 0/26
Параметр реестра AutodialDLL 2/27 0/26
Print Monitor (AddMonitor) 2/27 0/26

Mythic-агенты

Атакующие использовали приватные бинарные агенты кроссплатформенного фреймворка постэксплуатации Mythic (https://docs.mythic-c2.net/home), которые представляют собой обфусцированные шелл-коды. Носителями данных шелл-кодов являются троянизированные версии легитимных приложений и скрипты JavaScript, при их запуске осуществляется выполнение содержащихся в них шелл-кодов.

В шелл-коде Mythic-агентов используется динамическое разрешение адресов используемых функций API. Для этого производится перечисление загруженных системных библиотек (DLL) и экспортируемых ими функций с помощью PEB (Process Environment Block). Для идентификации DLL и функций API используются хеш-суммы от их имен, вычисленные с помощью кастомного алгоритма хеширования.

Mythic-агенты взаимодействуют с управляющим сервером (C2) по протоколу HTTPS, передаваемые данные дополнительно шифруются с использованием алгоритмов AES и RSA‑4096.

Mythic-агент (вариант 1)

Для установки на целевой компьютер этого варианта Mythic-агента использовались модифицированные инсталляторы легитимных программ 7‑Zip 25.01 (7zip-x64.exe) и Git 2.51.0 (Git-2.50.1-64-bit.exe). При их запуске на компьютер устанавливаются троянизированные версии оригинальных исполняемых файлов 7z.exe, 7zFM.exe и git.exe соответственно. Указанные исполняемые файлы были созданы путем модификации соответствующих оригинальных исполняемых файлов: добавлена PE-секция со случайным именем, содержащая исполняемый код, и изменена точка входа в PE-заголовке. При запуске такой пропатченной версии управление будет передано коду, содержащемуся в добавленной PE-секции. Данный код осуществляет внедрение шелл-кода Mythic-агента в процесс explorer.exe с помощью API функций VirtualAllocEx, WriteProcessMemory и CreateRemoteThread, после чего возвращает управление коду в оригинальной точке входа исполняемого файла.

Mythic-агенты этого варианта поддерживают широкий набор команд:

Команда Описание
exit Завершить работу
sleep Установить значения параметров интервала ожидания между запросами к управляющему серверу (C2) ("interval", "jitter")
shell Выполнить команду оболочки с помощью cmd /S /c <CMD> CMD - переданная команда
activity_time Передать информацию о текущем режиме активности агента
activity_time_set Установить параметры режима активности агента
inject_shellcode Внедрить загруженный из C2 шелл-код в запущенный процесс
bof Загрузить и запустить модуль BOF (Beacon Object File)
download Передать файл в C2
upload Загрузить файл из C2
ls Получить список элементов каталога
cd Изменить текущий каталог
rm Удалить файл/каталог
pwd Получить путь к текущему каталогу
cat Получить содержимое файла
ps Получить список запущенных процессов
kill Завершить указанный процесс
cp Копировать файл/каталог
mv Переместить файл/каталог
regls Передать список элементов раздела реестра
regrm Удалить параметр/раздел реестра
regset Установить значение параметра реестра

Примеры параметров конфигурации

7z.exe 7zFM.exe git.exe
C2 lzma-sdk.org:443 git-windows.org:443
Путь URI /sentiment/bread /merge/conception
Идентификатор UUID dfa213ec-b5c6-4cf2-9245-dc4f424d83f0 54f5dc42-af4c-45a7-aa86-e6dda37ad884
Ключ AES в кодировке Base64 icZaMB09ys0PeaQ0ilozSPYREyVaUdnkwBdtKVn+1qw= taMZMFEof5Rk+mm49/TsWIJ5ESV9W4ryNYxoWvuq9pg=
User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.3

Mythic-агент (вариант 2)

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

Основная часть шелл-кода зашифрована с помощью операции побитового сложения по модулю 2 (XOR). Формирование ключа определяется строковым параметром в шелл-коде. В соответствии с его значением «PARENT_FOLDER_NAME|WFS_SERVICE_UUID» ключ представляет собой конкатенацию имени каталога программы и значения переменной окружения WFS_SERVICE_UUID, например:

WFS6e7776a0-6ae6-4e85-ac53-fc60ad4dfdc0

Таким образом, шелл-код Mythic-агента может быть корректно запущен только при выполнении указанных условий.

Mythic-агент поддерживает следующий набор команд:

Команда Описание
exit Завершить работу
sleep Установить значения параметров интервала ожидания между запросами к управляющему серверу (C2) ("interval", "jitter")
shell Выполнить команду оболочки с помощью cmd /S /c <CMD> CMD – переданная команда
activity_time Передать информацию о текущем режиме активности агента
activity_time_set Установить параметры режима активности агента
inject_shellcode Внедрить загруженный из C2 шелл-код в запущенный процесс
bof Загрузить и запустить модуль BOF (Beacon Object File)
download Передать файл в C2
upload Загрузить файл из C2
ls Получить список элементов каталога
cd Изменить текущий каталог
rm Удалить файл/каталог
pwd Получить путь к текущему каталогу
cat Получить содержимое файла
ps Получить список запущенных процессов
kill Завершить указанный процесс
cp Копировать файл/каталог
mv Переместить файл/каталог
regls Передать список элементов раздела реестра
regrm Удалить параметр/раздел реестра
regset Установить значение параметра реестра
socks Режим прокси SOCKS

Примеры параметров конфигурации

Образец 1 Образец 2
C2 akamai-east.org:443 akamai-dns.com:443
Путь URI /ribbon/slump/east /passage/pedestrian/deficiency
Идентификатор UUID 3fb8a865-d0ea-444f-9c67-28d866fe4d11 0c6b78c0-4c17-4a51-87cc-502ab77156e6
Ключ AES в кодировке Base64 a7Iwn4yuXGZvX/CYOgB34krjHfy+3y/I1KOo9z/BwVE= /7Oq1m3SqPRzdMUCALX/ONkUeSasJJ+RLotl+cuIz+U=
User-Agent User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.3

Mythic-агент (вариант 3)

В качестве носителя шелл-кода Mythic-агента использовался скрипт JavaScript, предназначенный для выполнения в программной платформе Node.js. Указанный скрипт производит выполнение шелл-кода с использованием дополнения Node.js node-ffi-napi (https://github.com/node-ffi-napi/node-ffi-napi), позволяющего загружать DLL и вызывать экспортируемые ими функции с использованием JavaScript.

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

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

Указанный Mythic-агент поддерживает следующий набор команд:

Команда (хеш) Описание
exit (0xB2DA9C59) Завершить работу
sleep (0xB3434E23) Установить значения параметров интервала ожидания между запросами к управляющему серверу (C2) ("interval", "jitter")
shell (0x3E475B44) Выполнить команду оболочки с помощью cmd /S /c <CMD> CMD - переданная команда
inject_shellcode (0x51AF2C63) Внедрить загруженный из C2 шелл-код в запущенный процесс
bof (0x7786A478) Загрузить и запустить модуль BOF (Beacon Object File)
activity_time (0x30B7632E) Передать информацию о текущем режиме активности агента
activity_time_set (0xD16489A3) Установить параметры режима активности агента

Параметры конфигурации

C2 presentstructure.com:443
Путь URI /rehearsal/pierce
Идентификатор UUID 97896250-bc78-4cd1-a6bc-2907b5eadccf
Ключ AES в кодировке Base64 Av4JoNzMcaEsmJJs4eUsJNm8/NqQXzP8hSL3Hj/F8wE=
User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36

Туннель Neo-reGeorg

Туннель представляет собой серверное веб-приложение в виде скриптов PHP. Скрипты созданы на основе проекта Neo‑reGeorg (https://github.com/L-codes/Neo-reGeorg). Указанный инструмент является HTTP-туннелем, предназначен для проксирования (SOCKS) трафика из внешней сети во внутреннюю через скомпрометированный публичный веб-сервер.

Для идентификации серверной части при подключении клиента ему передается строка приветствия:

<!-- bVdMFVqliAWWhU50NE40oLz6TebH72B4RQj4urVgnfms1XYGxKmk8DAiMNPD -->

Трафик туннеля Neo‑reGeorg обфусцируется. Серверная часть туннеля Neo‑reGeorg идентифицирует свои HTTP-запросы по структуре запросов и содержащимся в них командам.

В скрипты туннеля атакующие также добавляли функции по просмотру и удалению текстового файла отчета, содержащего аутентификационные данные, собранные модифицированной функцией OnUserLogin скрипта ldap.php. В случае, если параметр cache POST-запроса содержит значение «cd6bfc8505b54cee», будет отображено содержимое файла отчета tmp_bx_ldap_auth, если значение «71486b69222cf66e» — файл отчета tmp_bx_ldap_auth будет удален.

Выводы

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

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

Однако если атакующие уже обосновались в сети, обычного мониторинга может быть недостаточно — потребуется проактивный поиск угроз. Для этого необходимо глубокое знание собственной инфраструктуры и актуальные данные Threat Intelligence. Единственный способ противостоять таким атакам — это системный подход к обеспечению безопасности: постоянный сбор телеметрии, регулярный анализ аномалий и готовность команды к углубленным исследованиям выявленных угроз.

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

akamai-dns.com

akamai-east.org

api.netmetrics.org

avitotechnology.com

batch.softtelematic.com

biatechglob.com

brownshields.com

forum.siburglobal.com

git-windows.org

glimpsegenie.com

itx5technology.com

lzma-sdk.org

mcstsoft.com

megafonpjsc.com

onethinkbar.com

presentstructure.com

shakysolutions.com

softtelematic.com

sync.nvdisplay.com

syssoftdistribution.com

vimpelnet.com

ydexdrive.com

zeronall.com