Разбор атак watering hole выявил новый бэкдор для macOS

Разбор атак watering hole выявил новый бэкдор для macOS

Разбор атак watering hole выявил новый бэкдор для macOS

Минувшей осенью эксперты ESET выявили кампанию кибершпионажа, направленную против участников демократического движения в Гонконге. Авторы атак использовали метод watering hole для раздачи через эксплойт незадокументированного macOS-зловреда — бэкдор, которому было присвоено кодовое имя DazzleSpy.

С этой целью злоумышленники взломали сайт гонконгской радиостанции D100 и внедрили на его страницы фреймы, загружающие эксплойт CVE-2021-1789. Соответствующая уязвимость в движке WebKit была закрыта в феврале 2021 года.

В результате отработки вредоносного кода на машине жертвы запускался промежуточный бинарник Mach-O — исполняемый в памяти простейший загрузчик. Этот зловред скачивает с указанного адреса целевую полезную нагрузку и запускает ее с правами root, используя эксплойт CVE-2021-30869 (устранена в сентябре).

Анализ DazzleSpy показал, что бэкдор обладает богатым набором функций и способен совершать следующие действия:

  • собирать информацию о зараженной системе;
  • выполнять произвольные шелл-команды;
  • составлять списки содержимого папок, проводить поиск файлов, переименовывать их, переносить и сливать на сторону;
  • открывать и завершать сессию screen (удаленного админа);
  • выводить данные из памяти iCloud Keychain с помощью эксплойта CVE-2019-8526 (актуален для macOS версий ниже 10.14.4);
  • удалять себя с компьютера.

Координаты C2-сервера DazzleSpy (IP-адрес и порт) жестко прописаны в коде. При установке связи вредонос использует TLS-хэндшейк, а затем кастомный протокол для обмена данными.

Расширения Chrome могут слить секреты URL через атаку по стороннему каналу

Как оказалось, расширения Chrome можно использовать для слива кодов авторизации, сеансовых ID и других секретов из URL любой открытой вкладки. Никаких специальных разрешений для этого не понадобится, только доступ к declarativeNetRequest API.

Этот механизм, пришедший на смену webRequest API, позволяет расширениям сообщать браузеру, что следует изменить или заблокировать на загружаемой странице (заголовки, реклама, трекеры).

Правила обработки запросов при этом добавляются динамически, а фильтрация осуществляется по регулярным выражениям, соответствующим подмножествам знаков, которые могут присутствовать на определенных позициях в URL.

Исследователь Луан Эррера (Luan Herrera) обнаружил, что блокировку, диктуемую правилами, Chrome производит почти мгновенно, за 10-30 мс, а остальные запросы выполняются дольше (~50-100ms) — из-за сетевых подключений. Эту разницу во времени расширение может использовать для бинарного поиска с целью посимвольного слива URL.

// extensions/browser/api/web_request/extension_web_request_event_router.cc:1117-1127
case DNRRequestAction::Type::BLOCK:
  ClearPendingCallbacks(browser_context, *request);
  DCHECK_EQ(1u, actions.size());
  OnDNRActionMatched(browser_context, *request, action);
  return net::ERR_BLOCKED_BY_CLIENT;

Оракул для подобной тайминг-атаки строится с использованием chrome.tabs.reload для перезагрузки страницы и перехватчика chrome.tabs.onUpdated, помогающего отследить событие status === "complete". Замер времени между reload и завершением загрузки покажет, заблокирован запрос или успешно обработан.

Повторение проверок и бинарного поиска позволяет получить полный URL (с довеском после «?»), затратив на каждый знак строки несколько прогонов. Таким образом, можно незаметно для пользователя украсть включенные приложением в адрес секреты — токены OAuth и сброса пароля, API-ключи, ссылки на контент, закрытый для поисковых систем.

Проверка PoC проводилась на Windows 11 24H2 с использованием Chrome разных версий:

  • 144.0.7559.97 (Stable)
  • 145.0.7632.18 (Beta)
  • 146.0.7647.4 (Dev)
  • 146.0.7653.0 (Canary)

В Google подтвердили возможность подобной атаки по стороннему каналу, но заявили, что решить проблему нереально.

RSS: Новости на портале Anti-Malware.ru