Основная ошибка — это проблема оптимизации, возникающая во время JIT-компиляции FTL. Оба эксплойта также используют одну и ту же структуру эксплуатации, которая предоставляет злоумышленникам набор утилит для выполнения произвольного кода (например, собственный загрузчик и анализатор MachO, обходы PAC и JIT).
Между этими двумя эксплойтами есть несколько небольших различий, в том числе:
- Режим отказа. Если во время эксплуатации что-то пойдет не так, эксплойт Watering Hole отправит информацию обратно в C2 и попытается аварийно завершить работу браузера из-за ошибки нехватки памяти. Если эксплойт Intellexa терпит неудачу, он не возвращает никакой информации, а просто перенаправляет пользователя на законный веб-сайт.
- Сбор дополнительных данных с целевого устройства. У эксплойта Waterhole есть дополнительная функция, называемая даксилоскопом, которая использует примитивы чтения/записи для сбора еще большего количества информации о целевом устройстве. Эта информация затем используется для принятия решения о том, следует ли выполнять полезную нагрузку похитителя файлов cookie. Например, если на устройстве нет PAC (что может быть в случае iPhone 8 под управлением iOS 16.X), полезная нагрузка похитителя файлов cookie просто не запустится.
Вор печенья
Эксплойт для iOS загрузил ту же систему кражи файлов cookie, которую TAG наблюдал в марте 2021 года, когда злоумышленник, поддерживаемый российским правительством, воспользовался CVE-2021-1879 для получения файлов cookie аутентификации с популярных веб-сайтов, таких как LinkedIn, Gmail и Facebook. В ходе этой кампании злоумышленники использовали сообщения LinkedIn для нападения на чиновников в странах Западной Европы, отправляя им вредоносные ссылки.
В кампаниях по раздаче воды порядок действий в версиях iOS до 16.6 аналогичен описанному в Анализ первопричин для CVE-2021-1879. Для каждого целевого веб-сайта:
- Создайте веб-сокет, подключенный к IP-адресу, контролируемому злоумышленником.
- Установите для m_universalAccess значение 1 в классе SecurityOrigin, пройдя по набору указателей.
- Создайте новый объект URL, указывающий на целевой домен.
- Раздавить все URL-адреса документов веб-сокета w с URL-адресом u.
- Раздавить m_url Поле websocket w с URL-адресом u.
- Запустите отправку на веб-сокете.
- В конце веб-сокета злоумышленник получает запросы в том виде, в котором они были бы доставлены на целевые веб-сайты, включая файлы cookie аутентификации целевых веб-сайтов.
- Восстановите m_universalAccess в исходное состояние.
Модуль кражи файлов cookie нацелен на следующий набор жестко запрограммированных веб-сайтов:
[«webmail.mfa.gov.mn/owa/auth», «accounts.google.com», «login.microsoftonline.com», «mail.google.com/mail/mu/0», «www.linkedin.com», «linkedin.com», «www.office.com», «login.live.com», «outlook.live.com», «login.yahoo.com», «mail.yahoo.com», «facebook.com», «github.com», «icloud.com»]
В более новых версиях iOS полезная нагрузка вызывает WebCore::NetworkStorageSession::getAllCookies() для сбора всех файлов cookie перед их передачей в C2.
Кампания Google Chrome
В конце июля 2024 года на сайте mfa.gov появился новый водопой.[.]сайт mn, где трек-реклама[.]com был перепрофилирован, чтобы предоставить пользователям Android рабочий канал Google Chrome. С общей точки зрения, атака и конечная цель по существу такие же, как и в iOS — использование уязвимостей n-day для кражи идентификационных файлов cookie — с некоторыми техническими отличиями. В данном случае для атаки потребовалась дополнительная уязвимость выхода из песочницы, чтобы выйти из Chrome. изоляция сайта.
- Вместо простого iframe, добавленного непосредственно в HTML, злоумышленники теперь используют фрагмент запутанного JavaScript для внедрения вредоносного iframe, указывающего на https://track-adv.[.]com/analytics.php?personalization_id=
. - Перед отправкой шага генерируются ключи шифрования, которые обмениваются ими с помощью соответствующего обмена ключами ECDH. Предыдущие кампании получали статический ключ дешифрования от C2.
- В обеих кампаниях атака использует indexedDB для хранения информации о состоянии на стороне клиента. В эксплойте для iOS база данных называлась минус, а в эксплойте для Chrome база данных называлась tracker.
- Уникальный идентификатор в том же формате (например, 2msa5mmjhqxpdsyb5vlcnd2t) был сгенерирован и передан в качестве параметра tt= на всех этапах.