Манипуляции троянцев с Google Play
Для вирусописателей Google Play – это своеобразная Земля Обетованная. Попав туда, вредоносное приложение получает широкую аудиторию, доверие этой аудитории и снисходительное отношение систем безопасности ОС (например, очень часто камнем преткновения для зловреда является запрет по умолчанию на установку приложений из источников, отличных от официального магазина). Но попасть в Google Play очень непросто: одним из главных условий попадания приложения в магазин Google Play является тщательная проверка программы на нежелательное поведение различными системами анализа, как автоматическими, так и ручными.
Некоторые вирусописатели, отчаявшись обойти проверки, вместо этого научились использовать клиентское приложение магазина в своих корыстных целях. В последнее время мы часто наблюдаем троянцев, которые используют приложение Google Play, чтобы в рамках рекламных кампаний скачивать, устанавливать и запускать приложения из магазина на смартфон без ведома его владельца, а также оставлять комментарии и проставлять рейтинг приложению. Как правило, устанавливаемые троянцем приложения не наносят пользователю прямого вреда, но жертва может терять деньги с мобильного счета, оплачивая дорогой мобильный трафик. Кроме того, троянцы могут скачивать и устанавливать не только бесплатные, но и платные приложения, тем самым заставляя пользователя платить еще более внушительные суммы.
Рассмотрим способы, с помощью которых осуществляются подобные манипуляции с Google Play.
Уровень 1. N00b
Первый способ – это заставить официальный клиент Google Play совершать требуемые злоумышленнику действия. Общая идея заключается в том, чтобы при помощи троянца запустить клиент, открыть в нем страницу нужного приложения, затем искать и программно взаимодействовать с элементами интерфейса (кнопками), чтобы вызвать загрузку, установку и запуск приложения. Необходимые элементы интерфейса выделены красным цветом на рисунке ниже:
Методика взаимодействия с интерфейсом разнится, в общем случае можно выделить следующие техники:
- Использование Accesibility сервисов операционной системы (используется модулями Trojan.AndroidOS.Ztorg).
- Имитация пользовательского ввода (используется Trojan-Clicker.AndroidOS.Gopl.c).
- Инжектирование в процесс клиента Google Play для модификации логики его работы (используется Trojan.AndroidOS.Iop)
Рассмотрим работу подобных троянцев на примере Trojan.AndroidOS.Ztorg.n. Этот зловред использует сервисы Accesibility, изначально предназначенные для создания приложений, помогающих людям с ограниченными возможностями (например, приложений для голосового управления графическим интерфейсом). Троянец получает с командного сервера задание, которое содержит ссылку на нужное приложение, открывает его в Google Play и затем запускает следующий код:
Код нужен для отслеживания появления на экране необходимого элемента интерфейса и программного клика по нему. Таким образом осуществляется последовательное нажатие кнопок «BUY» (на изображении на ней указана цена), «ACCEPT» и «CONTINUE». Этого достаточно, чтобы осуществить покупку приложения, если пользователь имеет привязанную к аккаунту Google платежеспособную банковскую карту.
Уровень 2. Pro
Некоторые вирусописатели не ищут легких путей. Вместо того чтобы использовать простой и надежный способ, упомянутый выше, они реализовывают свой клиент для магазина приложений, используя HTTPS API.
Сложность подхода заключается в том, что для успешной работы такого «самодельного» клиента необходима информация (например, логин и пароль пользователя, аутентификационные токены), которая недоступна обычному приложению. К большой удаче злоумышленников все необходимые данные хранятся на устройстве в открытом виде, в удобном формате SQLite. Доступ к ним ограничивает лишь модель безопасности Android, однако приложения могут нарушить ее, например, с помощью рутования устройства, и без проблем получить доступ к данным.
Например, свой клиент для Google Play есть у некоторых версий зловреда Trojan.AndroidOS.Guerrilla.a, который распространяется с помощью рутовальщика Leech. Этот клиент успешно выполняет задачи по скачиванию и установке платных и бесплатных приложений, а также умеет оценивать приложения и оставлять комментарии к ним в магазине Google.
После запуска Guerrilla начинает сбор необходимой информации:
-
Аутентификационные данные аккаунта пользователя в Google Play.
Чтобы осуществлять операции в Google Play необходимо использовать специальные токены, которые создаются при аутентификации пользователя. В самом простом случае, если пользователь уже авторизован в Google Play, троянец может использовать кэшированные локально токены. Осуществляется это простым поиском по базе данных, расположенной в /data/system/users/0/accounts.db:
С помощью кода ниже троянец проверяет, есть ли на зараженном устройстве готовые токены, т.е. пользователь авторизован и может совершать операции в Google Play:
Если таких токенов нет, то зловред получает логин и захэшированный пароль пользователя и авторизуется самостоятельно через OAuth:
Сперва зловред пытается получить этот идентификатор стандартными средствами, но если по каким-либо причинам не удается, выполняет следующий код:
Guerrilla получает его следующим образом:
После того, как троянец собрал приведенные выше данные, он начинает прием задач на скачивание и установку приложений. Структура одной такой задачи приведена ниже:
Загрузка приложения троянцем происходит с помощью POST-запросов которые выполняются по ссылкам, приведенным ниже:
-
– выполняется поиск по пришедшему от злоумышленников запросу. Этот запрос нужен для того, чтобы симулировать взаимодействие пользователя с клиентом Google Play (основной сценарий установки приложений из официального клиента предполагает, что пользователь сначала выполнит поисковый запрос и только потом перейдет на страницу приложения). – с помощью этого запроса собирается дополнительная информация о приложении, требуемая для его загрузки. – загружаются токен и данные о покупке, используемые в следующем запросе. – троянец получает URL и cookie, необходимые для скачивания .apk. – подтверждение загрузки (для увеличения счетчика скачиваний). – выставление оценки и добавление комментария.
Формируя свои запросы, злоумышленники старались наиболее точно воспроизвести аналогичные запросы, отправляемые официальным клиентом. Например, в каждом из них используется следующий набор HTTP-заголовков:
После выполнения запросов опционально может производиться собственно скачивание, установка (командой ‘pm install -r’, которая позволяет устанавливать приложения без согласия пользователя) и запуск приложения.