• XSS.stack #1 – первый литературный журнал от юзеров форума

Как APT прессуют почты

MaFio

(L2) cache
Пользователь
Регистрация
23.02.2021
Сообщения
324
Реакции
321
Гарант сделки
2
attack.png


ESET представила хороший отчёт по операции RoundPress, где ребята, предположительно из APT28, с наглой уверенностью ковыряют почтовые веб-серверы через XSS-уязвимости. Цель - стара как мир: утащить конфиденциальные данные из ящиков интересных личностей.


Основные моменты:
  • Вектор атаки: Целевое фишинговое письмо. Открываешь в веб-интерфейсе - получаешь инъекцию зловредного JavaScript.
  • Мишени: В 2023-м лупили только по Roundcube. В 2024-м аппетиты выросли: Horde, MDaemon, Zimbra тоже под прицелом.
  • Горяченькое: Для MDaemon хакеры использовали уязвимость нулевого дня (0-day XSS). ESET зарепортили ее 1 ноября 2024, и ее прикрыли в версии 24.5.1 (CVE-2024-11182).
  • География: В основном госсектор и оборонка в Восточной Европе (особенно Украина). Но также засветились цели в Африке, остальной Европе и Южной Америке.
  • Инструментарий: Семейство JavaScript-зловредов SpyPress (.HORDE, .MDAEMON, .ROUNDCUBE, .ZIMBRA). Умеют тырить учетки, контакты, письма. SpyPress.MDAEMON даже двухфакторку обходит.

Как это работает: Цепочка компрометации
  1. Начальный доступ: Жертве прилетает письмо, выглядящее как новостная рассылка или что-то безобидное. Например, украинской цели - письмо от kyivinfo24@ukr[.]net с темой "СБУ схопила банкіра..." с выдержками из Kyiv Post. Болгарской - от office@terembg[.]com про Путина и Трампа со ссылками на News.bg.
    В HTML-коде письма спрятан XSS-эксплойт. Если юзер открывает письмо в уязвимом веб-интерфейсе почты, скрипт выполняется в контексте его сессии.
  2. Разбор эксплойтов:
    • Roundcube (CVE-2023-43770): Использовали баг в rcube_string_replacer.php. При обработке URL для создания гиперссылок текст ссылки (то, что между квадратными скобками) недостаточно санитайзился. Это позволяло вставлять <script>...</script> прямо в страницу.
      Пример эксплойта: [ссылка]<script> вредоносный_код </script>[текст]
    • MDaemon (0-day, CVE-2024-11182): Тут все хитрее. Уязвимость в рендеринге HTML в письмах. Эксплойт использует специально созданный элемент <img> в сочетании с багом в HTML-парсере MDaemon. Вставка закрывающего тега </noembed> внутрь атрибута title элемента <p> обманывала парсер, заставляя его рендерить следующий за ним тег <img> с вредоносным кодом в onerror.
      Фрагмент эксплойта: <p title="... </noembed> ..."><img src=x onerror=eval(atob('...'))>
    • Zimbra (CVE-2024-27443 / ZBUG-3730): Уязвимость в обработке атрибута cif (calendar intended for) в календарных приглашениях. Значение этого атрибута бралось из заголовка письма X-Zimbra-Calendar-Intended-For и без должной санитайзации вставлялось на HTML-страницу.
      Эксплойт в заголовке: X-Zimbra-Calendar-Intended-For: Zimbra Calendar<img/alt=''/src='Zimbra-Calendar'/onerror="window['eval'](window['atob'](frames[0].document.getElementById('a-cashed-skinLayout2')['innerText']))">
      Скрипт читает base64-кодированный JS из скрытого div (с display:none) в теле приглашения и выполняет его.
    • Horde (неизвестный эксплойт, предположительно старый): Попытка использовать onerror в теге <img> с некорректным src=x. ESET предполагает, что Sednit тут либо допустили ошибку, либо целились в очень древние, непатченные версии, так как в актуальных версиях (даже в Horde Webmail 1.0 от 2007 года) on* атрибуты фильтровались.
      Пример: <img src=x onerror=window.parent.eval(atob('...'))>

JavaScript-нагрузки (семейство SpyPress)

Все четыре варианта (SpyPress.HORDE, .MDAEMON, .ROUNDCUBE, .ZIMBRA) имеют общие черты:
  • Обфускация: Имена переменных и функций заменены на рандомные строки. Строки (URL, команды) зашифрованы и расшифровываются по мере использования.
  • Нет персистентности/обновлений: Весь код в письме, выполняется при просмотре. Исключение – Sieve-правила в Roundcube.
  • C&C: Общение через HTTP POST-запросы на зашитые адреса. Данные кодируются в Base64.
Ключевые возможности зловредов:
  • SpyPress.HORDE:
    • Воровство учетных данных: создает невидимые поля horde_user, horde_pass (width/opacity 0%), чтобы браузер/менеджер паролей их заполнил.
  • SpyPress.MDAEMON (самый навороченный):
    • Воровство учетных данных (аналогично Horde, поля User, Password).
    • Эксфильтрация контактов и истории входов.
    • Эксфильтрация писем (обходил папки, качал исходники писем, вел список скачанного).
    • Обход 2FA:
      1. Кража секрета 2FA: Получал секрет (эквивалент QR-кода) для регистрации аккаунта в приложении-аутентификаторе. Требовался пароль, который уже был украден.
      2. Создание пароля приложения (App Password): Генерировал пароль приложения, который позволяет подключаться к ящику через почтовый клиент без 2FA-кода, даже если 2FA активна. MDaemon, похоже, не требовал 2FA для генерации App Password.
  • SpyPress.ROUNDCUBE:
    • Воровство учетных данных:
      • Аналогично Horde (поля _user, _pass).
      • Принудительный выход: создавал iframe, который разлогинивал жертву (/?_task=logout&_token=<CSRF_token>), заставляя заново вводить данные на подлинной форме входа, но с перехватчиком на кнопке submit. CSRF-токен брался из rcmail.env.request_token.
    • Эксфильтрация адресной книги и страницы "О программе" (версия Roundcube, плагины).
    • Эксфильтрация писем (раз в 2 часа, не более 150 писем за сессию, чтобы не шуметь).
    • Создание Sieve-правил: Некоторые образцы создавали правило для пересылки копий всех входящих писем на ящик атакующих (например, srezoska@skiff[.]com). Это уже какая-никакая персистентность.
  • SpyPress.ZIMBRA:
    • Воровство учетных данных (аналогично Horde, поля username, password).
    • Эксфильтрация контактов (через SOAP-запрос к /service/soap/SearchRequest) и настроек (содержимое глобальной переменной ZmSetting).
    • Эксфильтрация писем (раз в 4 часа, первые 80 писем из каждой папки через SOAP-запрос, затем исходники через /service/home/~/?auth=co&view=text&id=<email_ID>).

Что в итоге?

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

ESET представила хороший отчёт по операции RoundPress, где ребята, предположительно из APT28, с наглой уверенностью ковыряют почтовые веб-серверы через XSS-уязвимости. Цель - стара как мир: утащить конфиденциальные данные из ящиков интересных личностей.


Основные моменты:
  • Вектор атаки: Целевое фишинговое письмо. Открываешь в веб-интерфейсе - получаешь инъекцию зловредного JavaScript.
  • Мишени: В 2023-м лупили только по Roundcube. В 2024-м аппетиты выросли: Horde, MDaemon, Zimbra тоже под прицелом.
  • Горяченькое: Для MDaemon хакеры использовали уязвимость нулевого дня (0-day XSS). ESET зарепортили ее 1 ноября 2024, и ее прикрыли в версии 24.5.1 (CVE-2024-11182).
  • География: В основном госсектор и оборонка в Восточной Европе (особенно Украина). Но также засветились цели в Африке, остальной Европе и Южной Америке.
  • Инструментарий: Семейство JavaScript-зловредов SpyPress (.HORDE, .MDAEMON, .ROUNDCUBE, .ZIMBRA). Умеют тырить учетки, контакты, письма. SpyPress.MDAEMON даже двухфакторку обходит.

Как это работает: Цепочка компрометации
  1. Начальный доступ: Жертве прилетает письмо, выглядящее как новостная рассылка или что-то безобидное. Например, украинской цели - письмо от kyivinfo24@ukr[.]net с темой "СБУ схопила банкіра..." с выдержками из Kyiv Post. Болгарской - от office@terembg[.]com про Путина и Трампа со ссылками на News.bg.
    В HTML-коде письма спрятан XSS-эксплойт. Если юзер открывает письмо в уязвимом веб-интерфейсе почты, скрипт выполняется в контексте его сессии.
  2. Разбор эксплойтов:
    • Roundcube (CVE-2023-43770): Использовали баг в rcube_string_replacer.php. При обработке URL для создания гиперссылок текст ссылки (то, что между квадратными скобками) недостаточно санитайзился. Это позволяло вставлять <script>...</script> прямо в страницу.
      Пример эксплойта: [ссылка]<script> вредоносный_код </script>[текст]
    • MDaemon (0-day, CVE-2024-11182): Тут все хитрее. Уязвимость в рендеринге HTML в письмах. Эксплойт использует специально созданный элемент <img> в сочетании с багом в HTML-парсере MDaemon. Вставка закрывающего тега </noembed> внутрь атрибута title элемента <p> обманывала парсер, заставляя его рендерить следующий за ним тег <img> с вредоносным кодом в onerror.
      Фрагмент эксплойта: <p title="... </noembed> ..."><img src=x onerror=eval(atob('...'))>
    • Zimbra (CVE-2024-27443 / ZBUG-3730): Уязвимость в обработке атрибута cif (calendar intended for) в календарных приглашениях. Значение этого атрибута бралось из заголовка письма X-Zimbra-Calendar-Intended-For и без должной санитайзации вставлялось на HTML-страницу.
      Эксплойт в заголовке: X-Zimbra-Calendar-Intended-For: Zimbra Calendar<img/alt=''/src='Zimbra-Calendar'/onerror="window['eval'](window['atob'](frames[0].document.getElementById('a-cashed-skinLayout2')['innerText']))">
      Скрипт читает base64-кодированный JS из скрытого div (с display:none) в теле приглашения и выполняет его.
    • Horde (неизвестный эксплойт, предположительно старый): Попытка использовать onerror в теге <img> с некорректным src=x. ESET предполагает, что Sednit тут либо допустили ошибку, либо целились в очень древние, непатченные версии, так как в актуальных версиях (даже в Horde Webmail 1.0 от 2007 года) on* атрибуты фильтровались.
      Пример: <img src=x onerror=window.parent.eval(atob('...'))>

JavaScript-нагрузки (семейство SpyPress)

Все четыре варианта (SpyPress.HORDE, .MDAEMON, .ROUNDCUBE, .ZIMBRA) имеют общие черты:
  • Обфускация: Имена переменных и функций заменены на рандомные строки. Строки (URL, команды) зашифрованы и расшифровываются по мере использования.
  • Нет персистентности/обновлений: Весь код в письме, выполняется при просмотре. Исключение – Sieve-правила в Roundcube.
  • C&C: Общение через HTTP POST-запросы на зашитые адреса. Данные кодируются в Base64.
Ключевые возможности зловредов:
  • SpyPress.HORDE:
    • Воровство учетных данных: создает невидимые поля horde_user, horde_pass (width/opacity 0%), чтобы браузер/менеджер паролей их заполнил.
  • SpyPress.MDAEMON (самый навороченный):
    • Воровство учетных данных (аналогично Horde, поля User, Password).
    • Эксфильтрация контактов и истории входов.
    • Эксфильтрация писем (обходил папки, качал исходники писем, вел список скачанного).
    • Обход 2FA:
      1. Кража секрета 2FA: Получал секрет (эквивалент QR-кода) для регистрации аккаунта в приложении-аутентификаторе. Требовался пароль, который уже был украден.
      2. Создание пароля приложения (App Password): Генерировал пароль приложения, который позволяет подключаться к ящику через почтовый клиент без 2FA-кода, даже если 2FA активна. MDaemon, похоже, не требовал 2FA для генерации App Password.
  • SpyPress.ROUNDCUBE:
    • Воровство учетных данных:
      • Аналогично Horde (поля _user, _pass).
      • Принудительный выход: создавал iframe, который разлогинивал жертву (/?_task=logout&_token=<CSRF_token>), заставляя заново вводить данные на подлинной форме входа, но с перехватчиком на кнопке submit. CSRF-токен брался из rcmail.env.request_token.
    • Эксфильтрация адресной книги и страницы "О программе" (версия Roundcube, плагины).
    • Эксфильтрация писем (раз в 2 часа, не более 150 писем за сессию, чтобы не шуметь).
    • Создание Sieve-правил: Некоторые образцы создавали правило для пересылки копий всех входящих писем на ящик атакующих (например, srezoska@skiff[.]com). Это уже какая-никакая персистентность.
  • SpyPress.ZIMBRA:
    • Воровство учетных данных (аналогично Horde, поля username, password).
    • Эксфильтрация контактов (через SOAP-запрос к /service/soap/SearchRequest) и настроек (содержимое глобальной переменной ZmSetting).
    • Эксфильтрация писем (раз в 4 часа, первые 80 писем из каждой папки через SOAP-запрос, затем исходники через /service/home/~/?auth=co&view=text&id=<email_ID>).

Что в итоге?

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


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх