Старые песни на новый лад

Недавно «Лаборатория Касперского» исследовала необычную схему мошенничества с подпиской абонентов сотовых операторов на платные контент-услуги без ведома абонентов.
Обычно для подписки пользователя на платную контент-услугу злоумышленники используют вредоносные приложения, поддельные сайты, уязвимости вёрстки страниц или ошибки бизнес-логики самих систем работы с контентом. Однако в данном случае была использована уязвимость двухлетней давности в одном из стандартных компонентов ОС Android – штатном браузере Android Browser (AOSP Browser, стандартное название пакета – com.android.browser). Данная уязвимость позволяет вредоносному скрипту с сайта злоумышленников исполняться в контексте другого, легитимного, сайта.

Пока кибермошенники опробовали новую схему на относительно недорогом для бюджета атакуемых пользователей сценарии, однако потенциально возможности её использования гораздо шире. Аналогичный сценарий может быть применим и в других случаях: при совершении покупок через мобильные версии сайтов, при работе с интернет-банкингом в браузере, а не в приложении, что совсем не редкость среди пользователей планшетов.

Справка. AOSP Browser использовался в качестве системного приложения по умолчанию до выхода Android 4.4, когда Google потребовал от производителей установить стандартным браузером Chrome Mobile, либо до перевода браузеров на отдельный движок обработки страниц, вынесенный в отдельное, обновляемое через Google Play приложение (Android 5.0). У некоторых крупных производителей существуют браузеры, доработанные на основе кода данного приложения. Основная проблема браузера состоит в том, что обновляется он обычно лишь с обновлением прошивки на устройстве, если таковое выпущено.

AOSP Browser присутствует в том или ином виде на многих устройствах с операционной системой, не обновлённых до Android 5.0. Таким образом, в группе риска потенциально оказывается более 500 миллионов устройств.

Разбор атаки

Изначально наше внимание привлекло различное поведение браузеров AOSP Browser и Chrome Mobile при попытке пользователя получить доступ к некой подписке: в Chrome всё работало корректно, и пользователю демонстрировалась страница с запросом на согласие оформить платную подписку; в браузере AOSP же всплывало фоновое окно, после чего пользователю без всяких подтверждений с его стороны приходило SMS-сообщение об успешной подписке на контент-услугу.

Вооружившись дампами трафика Chrome и AOSP Browser с подопытного устройства, мы начали разбираться в происходящем. Стоит заметить, что для анализа использовался бюджетный смартфон Alcatel на всё ещё широко распространённой ОС Android 4.1.1, купленный по меркам обычного пользователя относительно недавно – немногим более полутора лет назад.
Сначала Chrome и AOSP Browser ведут себя одинаково: с некоего внешнего адреса (например, из контекстной рекламы) пользователь попадает на стандартный сайт-дорвей, предназначенный для отправки пользователя на страницу с платной подпиской.

Если пользователь кликает по ссылке, он попадает на страницу, имитирующую видеоплеер, на которую загружен JavaScript. Когда пользователь пытается посмотреть видео, скрипт запускает цепочку редиректов.

aosp_mobile_01

Фрагмент JavaScript, запускающего цепочку редиректов

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

Дальше в поведении браузеров начинаются различия.

Chrome с загруженной страницы отправляет пользователя по цепочке переадресаций (HTTP-переадресации, код 302) через сервер контент-провайдера на страницу подтверждения (лендинг) оператора сотовой связи, где указаны сути услуги, стоимость и другие параметры подписки.

aosp_mobile_02

Проверки браузера

В случае браузера AOSP схема иная. В начале цепочки редиректов пользователь перенаправляется на страницу с обработчиком onclick и обфусцированным скриптом. Именно с этой страницы эксплуатируется уязвимость в браузере.

aosp_mobile_03

Цепочка редиректов и применение уязвимости в браузере AOSP

Происходит ряд редиректов, аналогичных редиректам в Chrome, и обработчик onclick каждую секунду проверяет, какой URL-адрес открыт в этом окне. Как только открывается легитимная страница платной подписки оператора (лендинг), попадающая под условие регулярного выражения «/moipodpiski.ssl.mts.ru\/lp/g», выполняется следующий код (через метод window.opener.postMessage):

setTimeout(function(){
$('#ButtonSubmit').click();
}, 500);

По сути данный код и «нажимает» на открытой странице платной подписки кнопку «Да» за ничего не подозревающего пользователя.

В результате пользователь получает доступ к контенту и SMS с сообщением об успешной подписке. А на сервер злоумышленников отправляется POST-запрос с информацией об устройстве подписанного пользователя и копией загруженной страницы с контентом.

aosp_mobile_04

Передача параметров устройства пользователя после успешной эксплуатации уязвимости

Уязвимость

Вся схема становится возможной благодаря уязвимости CVE-2014-6041 в браузере AOSP, опубликованной почти два года назад. Уязвимость заключается в возможности обхода механизма SOP (Same Origin Policy), что в итоге дает возможность осуществления UXSS-атаки (Universal Cross-Site Scripting).

Справка. Обычно XSS-уязвимость в коде сайта позволяет атакующему добавить на него некий вредоносный скрипт и заставить его исполниться в контексте атакуемого ресурса. В случае с UXSS уязвимость присутствует в самом браузере, который позволяет атакующему исполнить вредоносный скрипт с одного сайта в контексте совсем другого, легитимного сайта.
Использование данной уязвимости значительно облегчает наличие примеров её эксплуатации, как на сайте нашедшего её исследователя, так и в популярных инструментах для тестирования на проникновение.

aosp_mobile_05

Образец кода, использующего уязвимость, предложенный нашедшим её исследователем

Исходное описание уязвимости указывает на то, что при наличии определённых заголовков, таких как X-Frame-Options (а страница подписки оператора как раз использует X-FRAME-Options: Deny), она неприменима. Однако злоумышленники нашли другой способ эксплуатации этой уязвимости. Дело в том, что параметр X-Frame-Options работает на объектах frame, iframe или object, а, в отличие от публичного примера с appendChild(object), метод window.open и ссылка на него window.opener вполне успешно эксплуатируют уязвимость браузера и при наличии данного заголовка.

aosp_mobile_06

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

Заключение

Громкие заголовки «очередная уязвимость в Android» сейчас достаточно примелькались и уже не привлекают внимания обычных пользователей. Однако так же, как и с крупными уязвимостями в Adobe Flash или в продуктах Microsoft, рано или поздно найдутся злоумышленники, которые будут использовать их против тех организаций и пользователей, кто за год или два так и не удосужились обновить свои приложения.

По статистике различных исследований, доля уязвимых к CVE-2014-6041 устройств может составлять от 30 до 45% от общего количества девайсов. Несмотря на выпущенное исправление безопасности для Android Jelly Bean, большинство производителей устройств, особенно бюджетных, не озаботилось выпуском исправленной прошивки.

Статистика Google свидетельствует о победоносном шествии Android 5 и 6 версий по всему миру. Однако на самом деле не всё так замечательно: в России до сих пор значительна доля Android 4й версии, в том числе на бюджетных устройствах, производители которых не следуют рекомендованным Google практикам. Нередко в целях экономии на поддержке подобные устройства не получают обновлений Android вообще, оставаясь на тех версиях ОС, с которыми они были выпущены с завода.

Наши рекомендации:

  1. Зайдите на сайт производителя, проверьте, предоставил ли он обновления прошивки, и при возможности обновите своё устройство.
  2. Установите любой современный браузер, доступный в Google Play: Chrome, Яндекс.Браузер, Firefox Mobile и другие, использующие собственный или обновлённый движок.
  3. Не переходите по ссылкам из спама и подозрительным рекламным объявлениям.
  4. Уточните у своего оператора, как отключить возможность подписки на контент-услуги, если не видите в них необходимости (хотя бывают и полезные подписки, – например, «Антивирус Касперского» для абонентов сотовых операторов).

P.S. Оператор применил санкции к нарушителям. Поняв, что их активность замечена, злоумышленники оперативно убрали вредоносный код с веб-страницы.

За помощь в подготовке материала благодарим эксперта ПАО «Мобильные ТелеСистемы» Дмитрия Русакова.

Постинги на схожие темы 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *