GOFFEE навынос: разбираем новые техники шпионской группировки
Криминалисты F6 исследовали атаку кибершпионов на одну из российских компаний.
В момент обнаружения инцидента специалист в большинстве случаев еще не знает, с чем столкнулся: с загруженным пользователем трояном вместе с активатором офисного ПО или бэкдором APT-группировки. В любом случае работы будут инициированы по одному и тому же сценарию.
В случае обнаружения угроз, связанных с действиями самих пользователей (посещение вредоносных веб-ресурсов, загрузка и установка непроверенного ПО), процесс реагирования может занять от нескольких часов до пары дней. Несмотря на то, что такие инциденты все еще могут нести большую опасность для корпоративной среды, работы по их локализации чаще всего не требуют привлечения больших ресурсов.
Иначе дело обстоит с человекоуправляемыми атаками. В этом случае работы по выявлению и локализации угроз могут продолжаться несколько недель и потребовать участия целой команды специалистов. За такими атаками стоят группы профессионалов, движимых желанием финансовой наживы или политическими мотивами. Они способны адаптироваться к особенностям инфраструктуры и противодействовать команде защиты. Успех последних во многом зависит от того, на каком этапе была обнаружена атака.
Если нелегитимную активность выявить еще на ранних этапах, то остается шанс оперативно устранить доступ злоумышленников и не допустить дальнейшего продвижения по сети. В нашей практике есть такой публичный пример: при реагировании на инцидент в компании 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 позволяет получить полный контроль над скомпрометированной системой, а также доставить инструменты для дальнейшего развития атаки.
Наиболее ранние следы нелегитимной активности в рамках рассматриваемого инцидента были зафиксированы задолго до выявления активной фазы инцидента на файловом сервере. Это говорит о том, что уже тогда атакующие обладали высоким уровнем привилегий и могли взаимодействовать с ключевыми устройствами инфраструктуры. За столь продолжительное время на устройствах инфраструктуры не было выявлено следов разведки или дальнейшего развития атаки. При этом остались свидетельства работы бэкдоров за это время.
Вероятно, после компрометации и определения принадлежности сети к промышленному сектору атакующие решили сохранить доступы и не осуществлять активных действий, которые могли бы их раскрыть. Для них это стало своеобразным активом, цена которого сильно возросла после смены геополитической обстановки.
Вариативность поведения злоумышленников в зависимости от деятельности скомпрометированной организации мы уже описывали в исследовании группировки 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
На некоторых устройствах мы также обнаружили лог-файлы, содержащие сведения о пользователях и источниках подключений к этим системам. Вероятно, таким образом злоумышленники изучали, кто удаленно подключался к хостам и выявляли потенциальные устройства администраторов и привилегированных пользователей.
В результате продолжительного присутствия в сети у атакующих сформировалось полное представление об используемом ПО, типах устройств, драйверах, соответствующих им именах служб и задачах планировщика, а также привычках пользователей. Все эти сведения в будущем будут использованы для создания наиболее скрытных и сложных для обнаружения точек закрепления.
Выполнение и перемещение
Для локального выполнения команд члены GOFFEE использовали встроенные командные интерпретаторы CMD и PowerShell. Для обхода правил детектирования, основанных на анализе процессов оригинального интерпретатора, злоумышленники создавали его копию для выполнения команд. Атакующие несколько раз прибегали к такому приему, копируя легитимное ПО на рабочих станциях и серверах.
Для выполнения произвольных команд с уровнем привилегий СИСТЕМА атакующие использовали PsExec, а также эксплуатировали уязвимость в службе Print Spooler.
При внесении изменений в конфигурацию системы злоумышленники отдавали предпочтение встроенным инструментам ОС. Например, управление вредоносными системными службами участники 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.
Таким образом, при локальном выполнении команд атакующие избегали использования нестандартных инструментов, выбирая легитимные или популярные среди ИТ-специалистов, что существенно снижало риск обнаружения.
Очередными инструментами, использовавшимся из числа штатных средств ОС, стали утилиты curl.exe и certutil.exe. Они использовалась атакующими для загрузки и импорта сертификатов root.crt и intermediate.crt на целевую систему.
Учитывая, что на хосте уже функционировал бэкдор с рабочим каналом связи с C2, установка сертификатов, скорее всего, не была связана с обеспечением его работы. Более вероятно, что злоумышленники готовили хост к дальнейшему использованию контролируемой ими цепочки сертификатов, в частности, для проведения атак типа Adversary-in-the-Middle и перехвата зашифрованного трафика.
Обладая доступом к ключевым устройствам сети, злоумышленники продолжали развивать атаку и компрометировать новые системы. Для доступа к тем или иным хостам участники GOFFEE использовали различные инструменты и постэксплуатационные фреймворки, работающие на основе протоколов RDP и SSH, WinRM.
Одной из наиболее популярных техник в арсенале атакующих является использование временных задач планировщика. Они создаются для разового выполнения команды и сразу удаляются. Так злоумышленники выполняли отдельные команды и запускали скрипты.
Доставка вредоносного ПО
Участники GOFFEE отличились использованием разнообразных версий бэкдоров и способами их доставки на устройства. В хронологии инцидента четко прослеживается переход к более сложным для обнаружения техникам по мере изучения инфраструктуры. Наиболее удачные становились массовыми и применялись атакующими на постоянной основе.
На начальных этапах атаки злоумышленники прибегали к популярным на тот момент сервисам временного хранения файлов для размещения своего инструментария и доставки на скомпрометированные рабочие станции и серверы:
- BashUpload
- DropMeFiles
- GoFile
Позднее участники GOFFEE стали загружать вредоносное ПО с собственных ресурсов. Помимо описанного ранее способа с использованием утилиты mshta.exe, злоумышленники также применяли утилиту curl.exe. Позднее злоумышленники доставляли необходимый для развития атаки инструментарий средствами запущенных ранее бэкдоров, используя туннели из скомпрометированных систем.
Впоследствии устройства локальной сети также использовались в качестве C2 при конфигурации бэкдоров. Такой подход позволял атакующим избегать обнаружения за счет сокращения количества систем, взаимодействующих с внешними командными серверами напрямую, и мимикрии под легитимный трафик в локальной сети.
Наряду с описанными способами GOFFEE доставляли инструменты в рамках интерактивных пользовательских сессий на скомпрометированных системах.
Удаленное взаимодействие с устройствами зачастую ограничивалось единственным подключением, во время которого на устройство доставляли и запускали сам бэкдор. В качестве полезной нагрузки атакующие использовали 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.
Продолжая развивать закрепления при помощи системных служб, участники GOFFEE использовали также параметры ServiceDLL и группы служб для запуска вредоносных файлов.
Такой подход существенно усложняет работу аналитика. Для выявления файла, который запускается группой служб, требуется дополнительный анализ системного реестра и других артефактов системы.
Еще более сложными для обнаружения техниками закрепления являются модификации реестра. И если параметры Run, RunOnce достаточно популярны среди разных групп атакующих, то такие параметры как AutodialDLL, Print\Monitors и Command Processor\autorun менее распространены. Модификаций реестра, позволяющих обеспечить автоматизированный запуск вредоносного файла, великое множество, и проверить их все достаточно проблематично. Даже анализ «живой» системы не всегда решает эту проблему, так как некоторые из способов запускают полезную нагрузку только при определенных обстоятельствах.
Для запуска бэкдоров члены GOFFEE модифицировали параметр HKLM\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\AutodialDLL. Добавление в этот параметр DLL-файла обеспечивает его запуск при каждой попытке системы обратиться к сетевым ресурсам средствами библиотеки Winsock2. Устройство, не взаимодействующее с ресурсами в публичной или локальной сети, сегодня представить сложно, поэтому вредоносный файл наверняка будет запущен и выполнит свою задачу. Однако для корректной работы DLL необходимо реализовать в ней определенные функции. Это только подтверждает серьезность намерений и уровень подготовки атакующих.
Другой модификацией, которой пользовались злоумышленники, стала ветка реестра Print\Monitors. Для корректной работы DLL-файл также должен экспортировать определенные функции. Примечательно, что эта скрытная техника использовалась атакующими преимущественно на контроллерах домена.
Еще один параметр реестра, который позволял атакующим обеспечивать закрепление бэкдоров — HKCU\Software\Microsoft\Command Processor\AutoRun. Этот способ выполняет полезную нагрузку только при запуске пользователем командной оболочки Windows. Такое поведение редко встречается в работе рядовых сотрудников, поэтому атакующие применяли этот подход именно на рабочей станции ИТ-администратора. При этом злоумышленники не запускали вредоносный файл напрямую, а использовали вспомогательный командный сценарий.
Таким образом, закрепление представляло собой последовательную цепочку запуска модулей, которые обеспечивали работу бэкдора.
Способы автоматизированного запуска через модификации реестра становятся наиболее скрытными при изменении нераспространенных параметров. А использование последовательных инструментов запуска не позволяет при анализе ограниченного набора артефактов обнаружить всю цепочку и ликвидировать угрозу сразу.
Всерьез и надолго
С точки зрения классификации, техники из этого раздела следовало бы разобрать ранее. Однако методы GOFFEE, которые будут рассмотрены в этом блоке, встречаются в реальных инцидентах исключительно редко. Они рассчитаны на длительное и скрытное присутствие в инфраструктуре, а при определенных обстоятельствах могут и вовсе не сработать. Из-за специфики мы и решили вынести их в отдельный раздел и рассмотреть подробнее. Речь идет о подмене легитимного инструментария на закрытом корпоративном хранилище разрешенного ПО и модификации установочных ISO-образов Windows-систем в хранилищах ИТ-департамента.
В исследованной атаке злоумышленники подменили на внутреннем хранилище исполняемые файлы двух утилит — 7-Zip и Git. Выбор утилит предполагает компрометацию как широкого круга пользователей (7-Zip), так и команды разработчиков и ИТ-департамента (Git). Модифицированные файлы в полном объеме сохраняли функциональность оригинального ПО и не вызывали подозрений. При таком способе распространения сотрудник самостоятельно загружает и запускает вредоносные файлы. А факт загрузки их из закрытого корпоративного источника сильно повышает к ним доверие. Даже получив уведомление антивируса, пользователь может принудительно разрешить установку подозрительного файла. На внутренних хранилищах нередко встречаются исполняемые файлы с именами *keygen*, *crack*, и многие пользователи уже привыкли добавлять их в исключения, что только помогает злоумышленникам.
Модификация установочных образов — не менее творческий подход к закреплению и распространению вредоносного ПО. Устройство будет скомпрометировано только в случае переустановки системы или введения в эксплуатацию нового устройства. Важно, что бэкдор начнет функционировать еще до первого входа пользователя и тем более до установки им антивирусных решений и других защитных систем. Добиться этого атакующим позволили две модификации исходного 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 |
Оба файла будут скопированы на конечное устройство в процессе установки и первичной настройки системы. А файл SetupComplete.cmd автоматически будет запущен самой операционной системой в момент появления приветственного окна.
Таким образом, злоумышленники модифицировали три версии установочных образов разных версий Windows. Как и при подмене ПО, атакующие могут выбирать жертв, но теперь не пользователей, а типы устройств: серверы или рабочие станции. Так можно сразу получить удаленный доступ к только что развернутому контроллеру домена или серверу резервных копий.
Сам факт использования подобных техник говорит об уверенности атакующих в существующих каналах доступа. Указанные подходы используются для параллельного захвата других устройств без непосредственного вмешательства. Это постепенно обеспечивает еще больший контроль над инфраструктурой, а также потенциально может восстановить доступ в случае утраты остальных каналов управления. Например, даже если все остальные бэкдоры обнаружены и удалены, новый сотрудник может получить рабочую станцию с предустановленным бэкдором из образа или самостоятельно установить модифицированный 7-Zip из корпоративного хранилища.
Однако у этих двух подходов есть также и существенный общий недостаток. Если в большинстве случаев злоумышленники подготавливали уникальный сэмпл под большинство устройств, то в этом случае распространяется один и тот же экземпляр. А они, в свою очередь, легко обнаруживаются при массовом сканировании устройств на известные индикаторы.
Обогащение аутентификационными данными
Как и со многими другими техниками, GOFFEE постепенно усложняли методы получения аутентификационных данных. В начале атаки злоумышленники использовали распространенные способы получения содержимого памяти системного процесса lsass.exe, отвечающего за хранение и обработку аутентификационного материала: утилиту NanoDump и штатную библиотеку comsvcs.dll. На этом же этапе атакующие применяли утилиту Impersonate и скрипт Invoke-InternalMonologue.ps1 для проведения атак на протоколы аутентификации Windows.
Вероятно, при помощи этих инструментов GOFFEE еще в начале атаки собрали множество различных учетных данных, достаточных для дальнейшего продвижения по сети. Вместе с тем участники GOFFEE постоянно обновляли свои сведения: на протяжении всей атаки регулярно осуществляли дампы базы данных Active Directory NTDS.dit. Для этого злоумышленники использовали публично доступную утилиту RawCopy. Полученные данные архивировали 7-Zip и выгружали на подконтрольные себе ресурсы средствами ранее запущенных бэкдоров. При этом для сокрытия своей деятельности атакующие использовали переименованные копии указанных утилит.
Помимо этого, атакующие также использовали возможности своих бэкдоров. В процессе обновления инструментов злоумышленники установили на контроллере домена бэкдор с расширенным списком доступных команд. Он позволял напрямую извлекать данные из файловой системы при помощи библиотеки ПО Velociraptor.
Одновременно с этим для сбора сведений о пользователях корпоративных и бизнес-ресурсов злоумышленники модифицировали исходный код сервисов на базе Битрикс. Они внедрили модули, осуществляющие скрытое логирование всех вводимых пользователями в процессе авторизации данных в отдельный файл. Выгрузить или удалить его можно было, указав определенное имя пользователя в форме авторизации.
Компрометируя рабочие станции сотрудников, злоумышленники проверяли, установлен ли мессенджер Telegram и похищали его служебный каталог. Это позволяло получить доступ к личной переписке и корпоративным чатам ИТ-специалистов. В результате GOFFEE были хорошо осведомлены о реализованных и планируемых действиях по настройке инфраструктуры и мерам дополнительной защиты.
Благодаря разнообразию способов получения и источников аутентификационных данных злоумышленники на протяжении всей атаки обладали актуальными учетными данными широкого круга пользователей. Этого было достаточно для привилегированного доступа к различным устройствам локальной сети, сервисам удаленного доступа и иным корпоративным ресурсам.
Постоянный контроль
Еще одной отличительной чертой группировки стала внимательность к деталям и готовность осуществлять постоянный контроль как за работой собственных инструментов, так и за действиями сотрудников ИТ- и ИБ-подразделений.
По мере распространения и запуска бэкдоров злоумышленники постоянно проверяли их работоспособность и наличие сетевого соединения. Для этого атакующие использовали встроенные утилиты Windows:
netstat -ano | findstr 49663
tasklist | findstr tponscr.exe
В случае частых сбоев в работе бэкдоров атакующие обеспечивали их перезапуск штатными средствами операционной системы после заданного таймаута.
На ключевых устройствах сети — контроллерах домена, файловых серверах и рабочих станциях администраторов и руководителей — злоумышленники часто устанавливали несколько бэкдоров с различными способами запуска.
На одном из устройств был обнаружен бэкдор, использующий для расшифровки полезной нагрузки имя рабочей станции. Однако же ни имя выявленной системы, ни любое другое из инфраструктуры заказчика не подошло в качестве ключа. Поэтому в некоторых случаях атакующие заменяли исполняемые файлы бэкдоров сразу после неудачного запуска.
Наряду с этим атакующие изучали активность администраторов сети. В процессе работ по улучшению системы журналирования специалисты использовали сценарий PCEnableAdvancedAudit.cmd, распространяя его централизованно через групповые политики и задачи планировщика. Спустя некоторое время на одном из устройств была обнаружена новая задача планировщика CryptSvc, запускающая файл с уже знакомым именем. Однако расположение и содержимое файла не оставляло сомнений в его принадлежности атакующим. Так злоумышленники обеспечивали закрепление нового бэкдора на устройстве.
Во многом именно внимательность к действиям пользователей позволила атакующим долго сохранять скрытный доступ к системам, так как большинство их действий маскировались или полностью повторяли легитимное поведение других систем.
Маскировка и противодействие обнаружению
Маскировка — основа атак группировки GOFFEE, так как их задача оставаться незамеченными в скомпрометированной сети как можно дольше. Атакующие не используют принципиально новых подходов к сокрытию следов своей деятельности, но то, как умело и эффективно они применяют уже известные техники, определенно заслуживает внимания.
Как и с другими техниками и инструментами, злоумышленники постепенно переходили от простого к сложному по мере развития атаки и изучения сети. В начале их бэкдоры часто скрывались в каталогах ProgramData. Позднее атакующие стали прятать свои вредоносные файлы в не столь очевидных местах. Изучив устройства в сети и установленное на них ПО, злоумышленники стали использовать свойства легитимных модулей ОС и драйверов для закрепления на других системах. Так, например, атакующие воспроизвели свойства легитимной службы (имя, описание, расположение файла) WcsPlugInService на скомпрометированном устройстве и обеспечили запуск бэкдора.
Такой подход очень эффективен. Даже при обнаружении вредоносного файла нет возможности использовать его полное имя или название службы в качестве индикатора из-за множества ложноположительных сработок.
Другим подходом к маскировке стало изучение содержимого каталогов прикладного ПО. В таких директориях хранятся файлы, необходимые для работы приложений. В этом множестве исполняемых и конфигурационных файлов легко спрятать бэкдор, который долго не будет вызывать подозрений. У многих прикладных решений часто встречаются одноименные файлы с различными расширениями, например, .exe и .dll. Однако наличие такой пары — вовсе не правило, чем умело пользуются атакующие.
Актуальный перечень всех легитимных файлов из системного каталога приложения редко можно быстро получить из документации или других источников. В таком случае единственным способом обнаружения «лишних» модулей является самостоятельная установка ПО и сравнение содержимого каталогов. Однако в условиях реагирования на инцидент такой подход невозможен, а с учетом версионности ПО еще и не гарантирует результат. В этом случае для обнаружения угроз необходимы явные признаки нелегитимной активности или сигнатуры для поиска.
Большую часть бэкдоров злоумышленники доставляли на устройство уже с именем, соответствующим окружению. Но иногда исполняемый файл загружали и уже на хосте переименовывали, маскируя под легитимный.
Несмотря на маскировку имени, бэкдор все ещё можно выявить по временной метке.
Однако позднее атакующие стали подменять временные метки. Если большинство злоумышленников устанавливают метку, сильно предшествующую инциденту, то GOFFEE используют контекст системы для выбора поддельных свойств. Они подставляют временную метку остальных файлов в каталоге, что может навести на мысль, что файл был создан в процессе установки или обновления ПО.
Однако при детальном изучении атрибутов файла все еще возможно выявить аномалию.
При этом участники GOFFEE не обходят стороной и деструктивные методы противодействия криминалистическому анализу. Так они удаляли содержимое каталога Prefetch, хранящего сведения о запущенных исполняемых файлах и времени их запуска.
Эксфильтрация
Во многом применение нераспространенных техник и обеспечение продолжительного скрытного присутствия было необходимо для сохранения возможности похищать «секреты» из скомпрометированной сети.
В большинстве случаев для этого атакующие использовали возможности самих бэкдоров: данные передавались сразу на командные серверы. Также злоумышленники использовали и сторонние инструменты. Например, на файловом сервере с большим объемом ценных данных GOFFEE использовали утилиту rclone, которая способна обеспечить стабильную передачу данных. Примечательно, что конфигурационный файл, в котором были указаны данные для доступа к хранилищу Mega, атакующие загружали отдельно до установки самой утилиты.
Несмотря на отсутствие файлов на момент исследования и попытку атакующих переименовать исполняемый файл, нам удалось установить его функциональность. Злоумышленников выдал файл конфигурации rclone, имя которого в угоду сохранения функциональности осталось без изменений — rclone.conf.
Для быстрой передачи небольших объемов данных участники GOFFEE также использовали утилиту curl.exe и сервисы временного хранения данных или собственные командные серверы.
Анализ ВПО
Агент 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), в которую разработчики бэкдора добавили различные встроенные команды.
Встроенные команды оболочки 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