Недавно «Лаборатория Касперского» исследовала необычную схему мошенничества с подпиской абонентов сотовых операторов на платные контент-услуги без ведома абонентов.
Обычно для подписки пользователя на платную контент-услугу злоумышленники используют вредоносные приложения, поддельные сайты, уязвимости вёрстки страниц или ошибки бизнес-логики самих систем работы с контентом. Однако в данном случае была использована уязвимость двухлетней давности в одном из стандартных компонентов ОС 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. Когда пользователь пытается посмотреть видео, скрипт запускает цепочку редиректов.
Фрагмент JavaScript, запускающего цепочку редиректов
В результате первой переадресации загружается веб-страница, сжатая с помощью gzip. При этом на сервер злоумышленников отправляются параметры устройства, и сервер решает, перенаправлять ли пользователя на страницу, где происходит эксплуатация уязвимости.
Дальше в поведении браузеров начинаются различия.
Chrome с загруженной страницы отправляет пользователя по цепочке переадресаций (HTTP-переадресации, код 302) через сервер контент-провайдера на страницу подтверждения (лендинг) оператора сотовой связи, где указаны сути услуги, стоимость и другие параметры подписки.
Проверки браузера
В случае браузера AOSP схема иная. В начале цепочки редиректов пользователь перенаправляется на страницу с обработчиком onclick и обфусцированным скриптом. Именно с этой страницы эксплуатируется уязвимость в браузере.
Цепочка редиректов и применение уязвимости в браузере AOSP
Происходит ряд редиректов, аналогичных редиректам в Chrome, и обработчик onclick каждую секунду проверяет, какой URL-адрес открыт в этом окне. Как только открывается легитимная страница платной подписки оператора (лендинг), попадающая под условие регулярного выражения «/moipodpiski.ssl.mts.ru\/lp/g», выполняется следующий код (через метод window.opener.postMessage):
setTimeout(function(){
$('#ButtonSubmit').click();
}, 500);
По сути данный код и «нажимает» на открытой странице платной подписки кнопку «Да» за ничего не подозревающего пользователя.
В результате пользователь получает доступ к контенту и SMS с сообщением об успешной подписке. А на сервер злоумышленников отправляется POST-запрос с информацией об устройстве подписанного пользователя и копией загруженной страницы с контентом.
Передача параметров устройства пользователя после успешной эксплуатации уязвимости
Уязвимость
Вся схема становится возможной благодаря уязвимости CVE-2014-6041 в браузере AOSP, опубликованной почти два года назад. Уязвимость заключается в возможности обхода механизма SOP (Same Origin Policy), что в итоге дает возможность осуществления UXSS-атаки (Universal Cross-Site Scripting).
Справка. Обычно XSS-уязвимость в коде сайта позволяет атакующему добавить на него некий вредоносный скрипт и заставить его исполниться в контексте атакуемого ресурса. В случае с UXSS уязвимость присутствует в самом браузере, который позволяет атакующему исполнить вредоносный скрипт с одного сайта в контексте совсем другого, легитимного сайта.
Использование данной уязвимости значительно облегчает наличие примеров её эксплуатации, как на сайте нашедшего её исследователя, так и в популярных инструментах для тестирования на проникновение.
Образец кода, использующего уязвимость, предложенный нашедшим её исследователем
Исходное описание уязвимости указывает на то, что при наличии определённых заголовков, таких как X-Frame-Options (а страница подписки оператора как раз использует X-FRAME-Options: Deny), она неприменима. Однако злоумышленники нашли другой способ эксплуатации этой уязвимости. Дело в том, что параметр X-Frame-Options работает на объектах frame, iframe или object, а, в отличие от публичного примера с appendChild(object), метод window.open и ссылка на него window.opener вполне успешно эксплуатируют уязвимость браузера и при наличии данного заголовка.
Образец кода, эксплуатирующего уязвимость в мошеннической схеме
Заключение
Громкие заголовки «очередная уязвимость в Android» сейчас достаточно примелькались и уже не привлекают внимания обычных пользователей. Однако так же, как и с крупными уязвимостями в Adobe Flash или в продуктах Microsoft, рано или поздно найдутся злоумышленники, которые будут использовать их против тех организаций и пользователей, кто за год или два так и не удосужились обновить свои приложения.
По статистике различных исследований, доля уязвимых к CVE-2014-6041 устройств может составлять от 30 до 45% от общего количества девайсов. Несмотря на выпущенное исправление безопасности для Android Jelly Bean, большинство производителей устройств, особенно бюджетных, не озаботилось выпуском исправленной прошивки.
Статистика Google свидетельствует о победоносном шествии Android 5 и 6 версий по всему миру. Однако на самом деле не всё так замечательно: в России до сих пор значительна доля Android 4й версии, в том числе на бюджетных устройствах, производители которых не следуют рекомендованным Google практикам. Нередко в целях экономии на поддержке подобные устройства не получают обновлений Android вообще, оставаясь на тех версиях ОС, с которыми они были выпущены с завода.
Наши рекомендации:
- Зайдите на сайт производителя, проверьте, предоставил ли он обновления прошивки, и при возможности обновите своё устройство.
- Установите любой современный браузер, доступный в Google Play: Chrome, Яндекс.Браузер, Firefox Mobile и другие, использующие собственный или обновлённый движок.
- Не переходите по ссылкам из спама и подозрительным рекламным объявлениям.
- Уточните у своего оператора, как отключить возможность подписки на контент-услуги, если не видите в них необходимости (хотя бывают и полезные подписки, – например, «Антивирус Касперского» для абонентов сотовых операторов).
P.S. Оператор применил санкции к нарушителям. Поняв, что их активность замечена, злоумышленники оперативно убрали вредоносный код с веб-страницы.
За помощь в подготовке материала благодарим эксперта ПАО «Мобильные ТелеСистемы» Дмитрия Русакова.
Старые песни на новый лад