Манипуляции троянцев с Google Play

Манипуляции троянцев с Google Play

Для вирусописателей Google Play – это своеобразная Земля Обетованная. Попав туда, вредоносное приложение получает широкую аудиторию, доверие этой аудитории и снисходительное отношение систем безопасности ОС (например, очень часто камнем преткновения для зловреда является запрет по умолчанию на установку приложений из источников, отличных от официального магазина). Но попасть в Google Play очень непросто: одним из главных условий попадания приложения в магазин Google Play является тщательная проверка программы на нежелательное поведение различными системами анализа, как автоматическими, так и ручными.

Некоторые вирусописатели, отчаявшись обойти проверки, вместо этого научились использовать клиентское приложение магазина в своих корыстных целях. В последнее время мы часто наблюдаем троянцев, которые используют приложение Google Play, чтобы в рамках рекламных кампаний скачивать, устанавливать и запускать приложения из магазина на смартфон без ведома его владельца, а также оставлять комментарии и проставлять рейтинг приложению. Как правило, устанавливаемые троянцем приложения не наносят пользователю прямого вреда, но жертва может терять деньги с мобильного счета, оплачивая дорогой мобильный трафик. Кроме того, троянцы могут скачивать и устанавливать не только бесплатные, но и платные приложения, тем самым заставляя пользователя платить еще более внушительные суммы.

Рассмотрим способы, с помощью которых осуществляются подобные манипуляции с Google Play.

Уровень 1. N00b

Первый способ – это заставить официальный клиент Google Play совершать требуемые злоумышленнику действия. Общая идея заключается в том, чтобы при помощи троянца запустить клиент, открыть в нем страницу нужного приложения, затем искать и программно взаимодействовать с элементами интерфейса (кнопками), чтобы вызвать загрузку, установку и запуск приложения. Необходимые элементы интерфейса выделены красным цветом на рисунке ниже:

Методика взаимодействия с интерфейсом разнится, в общем случае можно выделить следующие техники:

  1. Использование Accesibility сервисов операционной системы (используется модулями Trojan.AndroidOS.Ztorg).
  2. Имитация пользовательского ввода (используется Trojan-Clicker.AndroidOS.Gopl.c).
  3. Инжектирование в процесс клиента 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’, которая позволяет устанавливать приложения без согласия пользователя) и запуск приложения.

📎📎📎📎📎📎📎📎📎📎