Три варианта вредоносных документов, кастомные загрузчики на Rust и C#, Telegram-бот вместо классического C2 - и всё это летит в одну энергетическую компанию волна за волной на протяжении месяцев. Operation Olalampo, приписываемая иранской APT-группе MuddyWater (по данным отчёта Group-IB), - не абстрактный threat intelligence для красивых слайдов. Для Red Team оператора это воспроизводимый чертёж adversary simulation. Ниже - анатомия кампании и пошаговый playbook эмуляции ключевых TTPs MuddyWater.
Бизнес-логика атаки: зачем эмулировать MuddyWater APT
MuddyWater (Boggy Serpens, Mango Sandstorm, TA450) - группировка под управлением Министерства разведки и безопасности Ирана (MOIS), активная с 2017 года (MITRE ATT&CK G0069). Цели - госучреждения, телеком, энергетика, оборонка, нефтегаз на Ближнем Востоке, в Азии, Африке и Европе. По данным Unit 42, в начале 2025 года зафиксированы операционные пересечения MuddyWater с группой Lyceum (Evasive Serpens) - координация ресурсов внутри иранского разведсообщества.Финальная цель - не деструкция и не вымогательство. MuddyWater занимается кибершпионажем: эксфильтрация переписки, документов, картографирование сетей. По данным MITRE ATT&CK, собранные данные передаются другим иранским threat actor'ам для дальнейших операций.
Зачем это Red Team оператору: если заказчик работает в энергетике, ICS-сегменте, морской логистике или госсекторе - MuddyWater входит в список реалистичных угроз. Эмуляция их TTPs на engagement'е проверяет, обнаружит ли Blue Team конкретную цепочку - от макросового документа до C2 через Telegram. Это adversary simulation с привязкой к живой группировке, а не абстрактный прогон сканера.
Operation Olalampo: разбор кампании MuddyWater
Дисклеймер: все детали кампании - имена payload (CHAR, GhostFetch, HTTP_VIP, GhostBackDoor), drop-пути, C2-домены - основаны на отчётах Group-IB и Unit 42. Прямые ссылки на первоисточники в статье не приведены; данные требуют независимой верификации.
По данным Group-IB, Operation Olalampo была направлена на организации и физических лиц в регионе MENA. Кампания совпала с эскалацией геополитической напряжённости на Ближнем Востоке.
Unit 42 (Palo Alto Networks) описала несколько волн атак на одну и ту же энергетическую и морскую компанию на Ближнем Востоке (по имеющимся публикациям, требует верификации по первоисточнику). Каждая волна адаптировала приманки под конкретные отделы - от проектных инженеров до финансистов. Такой уровень persistence указывает на целенаправленный мандат по проникновению в инфраструктуру морской логистики.
Kill chain: spear phishing со скомпрометированного ящика -> Office-документ с VBA-макросом -> decode payload из скрытого элемента UI -> drop на диск -> execute -> C2.
Фишинговые документы: три варианта целевого фишинга Office
Group-IB выделяет три варианта документов, каждый со своей темой и финальным payload:Вариант 1 - Excel, бухгалтерские таблицы. Мимикрирует под финансовую отчётность энергетической и морской компании, ориентирован на инженеров и подрядчиков. Финальный payload - CHAR (по данным Group-IB), backdoor на Rust с C2 через Telegram Bot API. Drop path:
C:\Users\Public\Downloads\novaservice.exe.Вариант 2 - Excel, та же тематика. Аналогичная приманка, но доставляет GhostFetch (по данным Group-IB) - загрузчик первой стадии, подтягивающий GhostBackDoor. Drop path:
C:\Users\Public\Documents\MicrosoftExcelUser.exe.Вариант 3 - Word/Excel, авиабилеты и отчёты (Group-IB описывает макрос как Workbook_Open, характерный для Excel, при теме Word-документа - занятная нестыковка). По данным Unit 42, один из документов содержал персонализированную бронь Air Arabia - имя пассажира, маршрут, категория «Corporate Fare». Уровень детализации указывает на использование данных из предыдущей компрометации. Доставляет HTTP_VIP (по данным Group-IB) - загрузчик, устанавливающий AnyDesk (легитимный RMM). Drop path:
C:\Users\Public\Documents\MicrosoftWordUser.exe.OPSEC-замечание: доставка авиабилета как .docx вместо PDF - операционная аномалия. Unit 42 отмечает, что качественная социальная инженерия подрывается техническим форматом доставки. На engagement'е стоит учитывать: слишком специфичная приманка привлечёт внимание SOC-аналитика быстрее, чем сработает payload.
Макросы VBA: вредоносный код в деталях
Все три варианта используют одну логику с минимальными отличиями в реализации. Ключевые элементы, по данным Group-IB:Workbook_Open() - точка входа. Макрос запускается автоматически при открытии документа на Windows с Microsoft Office, если макросы разрешены. Техника Malicious File (T1204.002, Execution).
wait() - sandbox evasion. Вместо WinAPI-вызова
Sleep() используется вложенный цикл. Песочницы перехватывают Sleep/NtDelayExecution для ускорения анализа - вложенный цикл этот хук обходит, потому что к API вообще не обращается.Payload в скрытом UserForm. Decimal-encoded строка хранится в
UserForm1.TextBox1.Text - элементе формы, невидимом пользователю. Макрос считывает строку, декодирует и записывает PE-файл на диск. Техника Visual Basic (T1059.005, Execution) в связке с Command Obfuscation (T1027.010, Defense Evasion).
Код:
' Концептуальная схема макроса Operation Olalampo (pseudo-code)
' Размещается в модуле ThisWorkbook, НЕ в стандартном .bas-модуле
' НЕ рабочий exploit - требует адаптации
Private Sub Workbook_Open()
Call wait ' anti-sandbox: nested loop
Load UserForm1 ' загрузка формы без отображения (.Show не вызывается)
Dim enc As String
enc = UserForm1.TextBox1.Text ' decimal-encoded payload
Dim parts() As String
parts = Split(enc, ",") ' разбор по разделителю
' decode bytes → write C:\Users\Public\Downloads\ -> execute
End Sub
Red Team playbook: пошаговая эмуляция MuddyWater TTPs
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Песочницы, перехватывающие
Sleep/NtDelayExecution, не могут ускорить вложенный цикл напрямую. Но (и это важно) приём работает только против примитивных песочниц без CPU heuristics: на современном CPU 5M итераций DoEvents отрабатывают за доли секунды - реальной задержки нет. Коммерческие sandbox (WildFire, Falcon Sandbox) детектируют busy-loop через CPU heuristics. Код приведён концептуально по мотивам техники из отчёта Group-IB; для реальной задержки лучше использовать GetTickCount64 с проверкой delta времени в цикле.Второй приём - hardware fingerprint через WMI (
GetObject("winmgmts:")) для проверки RAM, CPU, USB. В песочницах эти значения часто ниже пороговых.Ограничение техники: современные коммерческие sandbox (включая Palo Alto WildFire и CrowdStrike Falcon Sandbox) настраивают реалистичные аппаратные профили - простой hardware fingerprinting против них малоэффективен.
Payload drop, persistence и C2-каналы
Место в цепочке: Execution -> Persistence -> Command and Control.Пути drop, используемые MuddyWater:
C:\Users\Public\Downloads\- не требует прав администратораC:\Users\Public\Documents\- аналогично%LOCALAPPDATA%\microsoft\windows\burnutill\- GhostFetch для persistence
User Shell Folders\Startup. Техника Registry Run Keys / Startup Folder (T1547.001, Persistence).C2-каналы Operation Olalampo:
| Payload | C2-канал | Протокол | Детали |
|---|---|---|---|
| CHAR (Rust, по данным Group-IB) | Telegram Bot API | HTTPS | Бот принимает команды, отправляет результаты |
| GhostFetch -> GhostBackDoor (по данным Group-IB) | HTTP (promoverse[.]org) | HTTP | AES-encrypted PE, reflective loading в память |
| HTTP_VIP (по данным Group-IB) | HTTP | HTTP | Загрузка AnyDesk (легитимный RMM-инструмент) |
Telegram как C2 - Web Protocols (T1071.001) - выбор со смыслом: TLS-шифрование, telegram.org нередко присутствует в whitelist корпоративных прокси, блокировка сервиса снята в ряде стран. На engagement'е можно эмулировать через Python-скрипт с Telegram Bot API или фреймворки с поддержкой Telegram C2.
Использование AnyDesk как финального payload (HTTP_VIP -> AnyDesk) - Living-off-the-Land в чистом виде: MuddyWater широко применяет легитимные RMM-инструменты (Atera, ScreenConnect, SimpleHelp) для пост-эксплуатации. По данным MITRE ATT&CK, группа использовала ScreenConnect, AteraAgent, SimpleHelp, Action1, Level и PDQ для эксфильтрации данных. Это Ingress Tool Transfer (T1105, C2). Зачем писать свой RAT, когда можно поставить AnyDesk и сказать SOC'у, что это "удалённая поддержка от подрядчика"?
MITRE ATT&CK маппинг Operation Olalampo
| Тактика | Техника | ID | Применение |
|---|---|---|---|
| Initial Access | Spearphishing Attachment | T1566.001 | Office-документы со скомпрометированных ящиков |
| Execution | Malicious File | T1204.002 | Пользователь открывает .xlsm/.docm, включает макросы |
| Execution | Visual Basic | T1059.005 | VBA-макросы декодируют и запускают payload |
| Execution | PowerShell | T1059.001 | PowerShell-стейджеры в пост-эксплуатации |
| Defense Evasion | Command Obfuscation | T1027.010 | Decimal-encoding payload в UserForm, Base64 в PowerShell-скриптах |
| Persistence | Registry Run Keys | T1547.001 | User Shell Folders\Startup |
| C2 | Web Protocols | T1071.001 | HTTP для GhostFetch, Telegram API для CHAR |
| C2 | Ingress Tool Transfer | T1105 | Загрузка AnyDesk, GhostBackDoor |
CVE-2017-0199 - уязвимость Microsoft Office, позволяющая удалённое выполнение кода через специально сформированный документ (CVSS 7.8, HIGH, вектор AV:L/AC:L/PR:N/UI:R - требуется действие пользователя), внесена в CISA KEV как активно эксплуатируемая и связанная с ransomware. Ряд публикаций связывает эксплуатацию CVE-2017-0199 с MuddyWater, однако атрибуция требует подтверждения по MITRE ATT&CK G0069.
CVE-2020-0688 - уязвимость Microsoft Exchange Server с некорректной обработкой объектов в памяти (CVSS 8.8, HIGH, вектор AV:N/AC:L/PR:L/UI:N - сетевой доступ, низкие привилегии) - использовалась несколькими иранскими APT-группами для lateral movement; атрибуция конкретно к MuddyWater не подтверждена в MITRE ATT&CK G0069 и требует верификации. Модуль Metasploit -
exploit/windows/http/exchange_ecp_viewstate (EDB-48168), проверено на Metasploit Framework 6.x.Ограничения эмуляции и детект по вендорам
Макросовый initial access - техника с известным потолком. Понимание ограничений критично при планировании adversary simulation.Microsoft ASR (Attack Surface Reduction). С Office 2016+ правила ASR блокируют создание дочерних процессов из Office-приложений и запуск Win32 API из VBA-макросов. При включённом ASR в block mode макросовый вектор мёртв. Эмуляция релевантна только для сред без ASR или с ASR в audit mode.
MOTW block (Mark of the Web). С 2022 года Office блокирует макросы в документах с MOTW-флагом - файлах, полученных из интернета. MuddyWater обходит это через рассылку с внутренних скомпрометированных ящиков: документы из внутренних источников MOTW не получают.
EDR-специфика детекта:
- CrowdStrike Falcon - детектирует Office-процесс, порождающий подозрительный дочерний процесс. Правило "Office application spawning child process" срабатывает на execute-фазе.
- SentinelOne - behavior-based анализ цепочки процессов
EXCEL.EXE -> cmd.exe -> payload.exe. - Elastic Security 8.x+ с kernel ETW-TI - фиксирует syscall-цепочки записи PE на диск из контекста Office-процесса.
- Kaspersky EDR Expert - heuristic engine детектирует VBA с обращением к WMI и файловой системе.
| Параметр | Значение |
|---|---|
| Работает | Legacy Office без ASR, доставка через internal mail, отсутствие EDR |
| Не работает | Office 365 с MOTW block, ASR в block mode, modern EDR с behavior analysis |
| OPSEC-уровень | Средний - Office → child process заметен для EDR |
| Альтернативные векторы | ISO/LNK delivery, HTML smuggling, прямой abuse RMM-инструментов |
MuddyWater уже движется в сторону альтернатив: по данным MITRE ATT&CK, группа активно использует RMM-инструменты для initial access вместо макросов, а также ищет возможности эксплуатации уязвимостей на публично доступных серверах.
Множественные волны атак на одну организацию - вот что отличает MuddyWater от типичного сценария на Red Team engagement'е. Мы привыкли к формату "одна попытка, закрепились, отчёт через три недели". MuddyWater работает иначе: первая волна провалилась на инженерах - через пять месяцев прилетает вторая, адаптированная под финансовый отдел. Параллельно летит третья - персонализированный авиабилет конкретному сотруднику, собранный по данным из предыдущей компрометации. Это операционный persistence, который мало кто из заказчиков готов тестировать.
Переход группы на Rust (backdoor CHAR) и AI-ассистированную генерацию кода (по данным Unit 42) - тренд, который усилит разрыв между атакующими и защитниками на legacy-инфраструктуре. Rust-имплант с anti-analysis, Telegram C2 и AES-encrypted staging - против стандартных сигнатур AV без EDR результат предсказуем. Если заказчик до сих пор считает, что макросы - "угроза из 2018 года", покажите ему Operation Olalampo: три варианта payload, несколько волн, одна жертва. Группировки этого уровня не изобретают новые attack surface - они оптимизируют старые до тех пор, пока те работают.
Последнее редактирование модератором: