Нещодавно «Лабораторія Касперського» досліджувала незвичайну схему шахрайства з підпискою абонентів стільникових операторів на платні контент-послуги без відома абонентів.
Зазвичай для підписки користувача на платну контент-послугу зловмисники використовують шкідливі програми, підроблені сайти, уразливості верстки сторінок або помилки бізнес-логіки самих систем роботи з контентом. Однак в даному випадку була використана вразливість дворічної давності в одному із стандартних компонентів ОС 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 і інші, які використовують власний або оновлений движок.
- Не переходьте за посиланнями з спаму і підозрілим рекламних оголошеннях.
- Уточніть у свого оператора, як відключити можливість підписки на контент-послуги, якщо не бачите в них необхідності (хоча бувають і корисні підписки, - наприклад, « Антивірус Касперського »Для абонентів стільникових операторів).
PS Оператор застосував санкції до порушників. Зрозумівши, що їх активність помічена, зловмисники оперативно прибрали шкідливий код з веб-сторінки.
За допомогу в підготовці матеріалу дякуємо експерта ПАТ «Мобільні ТелеСистеми» Дмитра Русакова.