Трагические микрозаймы, украденные креды: какие Android-зловреды мы обнаружили в официальных маркетах

Один из основных принципов защиты мобильного устройства от киберугроз — загружать приложения только из официальных маркетов, таких как Google Play или Apple App Store. Однако несмотря на то, что софт проходит множество проверок перед публикаций, это не гарантирует, что пользователь не столкнется с фишинговым приложением или даже с банковским трояном.

image

Меня зовут Татьяна Шишкова, я — Lead Security Researcher в команде Глобального центра исследования и анализа угроз (GReAT) «Лаборатории Касперского». За более чем 25 лет существования компании мы выявили сотни и тысячи угроз, которые могут подпортить жизнь владельцам смартфонов. В этой статье я расскажу о тех угрозах для пользователей Android, которые мы с коллегами нашли в официальных Android-маркетах за последние пару лет: методы продвижения вредоносных приложений и способы обхода мер безопасности маркетов, новые семейства зловредов, которые попали в официальные и сторонние магазины приложений. Также мы рассмотрим способы обнаружения мобильных зловредов, в том числе банковских троянов, подписочных троянов, фишинговых приложений, методы защиты пользователя от них и многое другое.

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

Подписочные трояны


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

Трояны скрытно подписывают пользователя на различные платные сервисы. Как правило, это легитимные сервисы (то есть некоторые пользователи могут и сами на них подписываться), а плата списывается с мобильного счета телефона. Основная часть денег уходит провайдеру, злоумышленники же получают свой процент.

Провайдеры пытаются обезопасить пользователей от действий мошенников. Но мобильные трояны-подписочники эволюционируют и учатся обходить любые антифрод-решения.

В последние пару лет наиболее популярные семейства подписочных троянов — это Jocker, Harly, MobOk и Fleckpe.

Jocker


Начну с семейства под названием Jocker, или, как его назвал Google, Bread.

nj5ugvuaruhjdoehlybmsx0gmxw.png

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

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

dga1wjpesxjvok8rfvye2i-vl08.png
Jocker работает следующим образом.

Если заявленная функциональность приложения предполагает, что ему может потребоваться разрешение на доступ к SMS-сообщениям, при установке оно запрашивается. В противном случае запрашивается доступ к popup-нотификациям. Как правило, такие нотификации содержат текст входящих SMS-сообщений — таким образом приложение получает доступ к входящим SMS-кам.

После установки Jocker загружает полезную нагрузку. Как правило, делает он это в несколько этапов, чуть дальше я расскажу об этом подробнее. Далее он получает адрес подписочной страницы от командного сервера злоумышленника, открывает ее в невидимом окне, инжектит на эту страницу скрипты, которые запрашивают подписку, и подтверждает эту подписку кодом, перехваченным в SMS.

Jocker умеет обходить различные антифрод-решения. Например, он может модифицировать заголовок X-Requested-With http-запроса, который используется для идентификации оформившего подписку приложения. То есть он может подставлять в этот заголовок названия других приложений. Также он может блокировать или подменять антифрод-скрипты. На скриншоте пример такого кода:

whnmghx3yontxe9opwcxjrc_brg.png

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

На скриншоте можно увидеть данные с virustotal, где package name у APK-файла приложения не совпадает с названием main activity. Это в принципе нормальная ситуация, но именно в случае Jocker можно легко понять, какое приложение было взято за основу:

jw2grob2ukoj7-glunevhbliiwq.png

Чтобы пройти проверки Google Play, авторы Jocker-приложений прибегают к различным техникам.

Первый трюк — проверить, опубликовано ли уже это приложение в Google Play, прежде чем активировать вредоносную функциональность. На скриншоте как раз такой код:

zcagj4slonr2uwrarcdwuwibdlk.png

Вредоносная функциональность активируется, только если приложение уже залито на Google Play и прошло модерацию (переход по ссылке не выдает 404).

Кроме того, Jocker использует многоступенчатый загрузчик. Как правило, он выполняет до четырех шагов, прежде чем добраться до основного пейлоада. Я расписала по шагам один из примеров:

uyt9e2slhfwebjw21p7if6tuyfe.png

Исходное приложение содержит в Assets поксоренный файл. Приложение его расксоривает и получает ELF-файл. Внутри него содержится dex-файл, который он распаковывает и запускает на устройстве. Dex-файл содержит в себе ссылку на вредоносный APK, а в нем есть ссылка на вредоносный Java-архив с финальным пейлоадом, отвечающим за подписку на различные сервисы.

Поскольку здесь очень много ступеней, злоумышленники могут активировать последние из них уже после того, как приложение будет опубликовано на Google Play (когда у него будет несколько сотен или тысяч установок). Финальный пейлоад появляется на устройствах, которые успели установить приложение, только после активации.

Еще один интересный прием — Jocker часто использует легитимные источники для загрузки своего пейлоада. Например, он может получать кусочки ссылки на финальный пейлоад с GitHub Pages или jsDelivr. Если приложение обращается к таким легитимным ресурсам, автоматические проверки, как правило, ничего подозрительного не обнаруживают.

hqg2sb5_tkfbuefs2qupfqnry1y.png

urj9-zh7hoq6andbdzr4lucuhwq.png

Для затруднения ручного анализа Jocker использует различные коммерческие пакеры, такие как AliProtect, SecShell, Qihoo360 и другие. Дополнительно в приложение может добавляться проверка актуального времени на девайсе, чтобы активировать вредоносную функциональность только в определенную дату — например, через неделю или две после того, как оно попало в Google Play.

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

Злоумышленники раскручивают свое приложение так же, как и обычные легитимные, оплачивая рекламу на различных сервисах. В Twitter мы наткнулись на пример, когда авторы Jocker использовали рекламу YouTube.

yw5hdlr9cusginoqi64fwwphzze.png

j23nqmcrylpq2ywfcq-qo0cntby.png

Ну и есть стандартный способ накрутки — это фейковые ревью на Google Play.
На скриншоте видно, что у приложения много однотипных отзывов в духе «очень хорошее приложение, 5 звезд». Причем все авторы этих ревью без аватарок. Понятно, что это все боты.

gspdr3kbh2wld_6fxulss56ssxo.png

Harly


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

vopsuayqp-2yfwbyd2pnpnufgii.png

Все обнаруженные нами приложения зарепорчены в Google и удалены.

Harly нацелен преимущественно на пользователей из Юго-Восточной Азии. Вот примеры этих приложений — это опять различные фоторедакторы, обои, мессенджеры и так далее.

ikan5r7qyfjnpttqj7z23w4tusg.png

В отличие от Jocker, который является многоступенчатым загрузчиком, Harly, как правило, содержит весь пейлоад внутри исходного APK-файла. Просто в несколько шагов его расшифровывает и запускает.

Harly собирает информацию о девайсе пользователя, переключает телефон на мобильную сеть и просит командный сервер составить список подписок, который нужно на него оформить. Также этот троян проверяет коды мобильных операторов, поскольку нацелен на строго определенных.

На скриншоте в теле трояна зашиты коды операторов, которые все относятся к Таиланду.

hamuv2u6xo6jznzy1dhryfjfyiu.png

Затем Harly, как и Jocker, открывает адрес страницы с подпиской в невидимом окне, вводит номер телефона, нажимает за пользователя все нужные кнопки и вставляет код подтверждения, перехваченный из SMS или popup-нотификации.

В отличие от Jocker, вся полезная нагрузка у Harly содержится внутри тела, поэтому у него есть свои хитрости для обхода премодерации Google Play. Последние версии трояна для затруднения анализа используют нативные библиотеки, написанные на Go и Rust. С их помощью они декриптят полезную нагрузку из ресурсов и загружают вредоносный SDK. Также для затруднения детектирования Harly очень часто меняет версию вредоносного SDK и адреса командных серверов.

Как и Jocker, Harly набирает пользовательскую базу с помощью приемов versioning и фейковых ревью. И мы нашли страницы на Facebook*, которые рекламируют данные приложения и выглядят вполне легитимно.

* ДИСКЛЕЙМЕР. Американская компания Meta, владеющая социальными сетями Facebook и Instagram, признана экстремистской на территории Российской Федерации.

qgvmotj6tjt5qufuikti7qcp9ji.png

То есть разработчик активно ведет Facebook*-страницу, также рекламируя и другие приложения, содержащие в себе трояна.

Как правило, Jocker и Harly просто берут готовые приложения и добавляют в них вредоносный код. Но на теневом рынке можно купить уже готовые загрузчики вредоносных приложений. Согласно недавнему исследованию моих коллег, стоимость такого загрузчика в Google Play варьируется от 2 до 20 тысяч долларов. Приложения могут имитировать различные криптовалютные или финансовые инструменты, сканеры qr-кодов, дейтинговые сервисы и так далее. Также на теневом рынке есть предложения о рекламе таких приложений в Google Ads (стоимость рекламы сильно зависит от целевой страны).

Вот пример с теневого форума со средними ценами на подобные услуги. Так, аккаунт разработчика в Google Play можно купить за 60 долларов. Исходники приложения можно получить за 4–20 тысяч долларов. Аренда или разработка загрузчика стоит от 2,5 до 5 тысяч долларов, и так далее.

vdbgdccghwz0lwuux-h4nibyu5y.png

Второй пример — тут продают уже готовый загрузчик приложения в Google Play за 5 тысяч долларов. Причем здесь разработчик дает гарантию, что если это приложение будет удалено из Google Play в течение одной недели, то он бесплатно предоставит новое приложение.

atafvdaet994ge_g_a5fxkbodu0.png

MobOk


Следующее семейство подписочных троянов — MobOk. Его поведение похоже на Jocker. Но распространяется он не только через зараженные приложения в Google Play, а и в форме полезной нагрузки трояна Triada.

Triada встречается в предустановленных приложениях на некоторых моделях смартфонов, преимущественно китайских. Также были случаи, когда его находили внутри популярных приложений, таких как официальный клиент APKPure или различные моды WhatsApp. В подобные приложения Triada обычно попадает в результате атаки на цепочку поставок — через рекламный SDK, который и содержит в себе его код.

MobOk также умеет обходить механизм captcha, который используется для подтверждения подписки. Он просто отправляет картинку с капчей специальному сервису и получает ответ.

zjgg0ccbj5mevp0ohi32g5oit1k.png

Троян Triada был обнаружен в достаточно популярном моде WhatsApp (YoWhatsApp, v. 2.22.11.75). Зловред загружал и запускал основной пейлоад, которым мог быть и подписочный троян MobOk.

Распространялся троян через рекламу на SnapTube и встроенный магазин приложений Vidmate.

xlze0hsnjrxuihzwqttpwgrlqpy.png

Банковские трояны


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

Популярные банковские трояны нацелены на сотни различных финансовых приложений. Они используют оверлей для кражи кредов, перехватывают нотификации в SMS или popup-нотификации, чтобы получить одноразовые коды подтверждения операций, используют сервисы Accessibility, чтобы выполнять действия на телефоне вместо пользователя, и так далее.

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

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

eaav0x-rksbeblabaetpfojshgu.png

Если злоумышленники хотят что-то более функциональное, чем просто отображение пользователю фишинговой страницы, они размещают в Google Play загрузчики банковских троянов. Пример — загрузчик полнофункционального банкера Sharkbot.

ohdhuub5ph4_b6wyotjh1v2ov-0.png

Его пейлоад в виде банкера Sharkbot может выполнять на устройстве практически все, что злоумышленник захочет: получать доступ ко всем SMS, нотификациям, показывать оверлеи, транслировать экран, нажимать за пользователя различные кнопки и так далее. Заметьте, этот загрузчик имитирует файловый менеджер. Это сделано для того, чтобы установить дополнительные пакеты, то есть полезную нагрузку — сам банкер. Для этого трояну нужно разрешение REQUEST_INSTALL_PACKAGES. А поскольку вредонос имитирует файловый менеджер, такое разрешение не выглядит подозрительно.

Этот загрузчик имеет множество проверок на эмулятор, чтобы отличить ситуацию, когда он запускается не на реальном устройстве.

ah94hai42bdsg8bzywapq9kf_ay.png

Также есть проверка кода страны в номере телефона (троян нацелен на определенные страны) и наличия на телефоне одного из финансовых приложений, интересующих злоумышленников.

4vdcsda11659022wwbt81_tyaum.png

На скриншоте виден список из нескольких десятков приложений. Троян будет работать на девайсе, только если там стоит одно из них.

Стиллеры и шпионы


Еще один тип угроз, который можно найти в Google Play, — это различные стиллеры и шпионы. Там же встречаются угрозы типа Advanced Persistent Threats (APT), но подробнее об этом расскажу далее.

FaceStealer


sitw7wiv6ilzgg5_3xczokckgfi.png

Начну с простого стиллера — FaceStealer. Это зловред, который крадет креды Facebook*. Когда пользователь запускает это приложение, оно просит его авторизоваться через Facebook*, и далее все креды отправляются злоумышленнику.

Вот примеры подобных приложений Google Play. Это опять фоторедактор, а также приложение для VPN.

bzwtrroy-3vifeq9zfqfxk00wam.png

Fake Telegram


Следующий пример шпиона — различные моды Telegram. Недавно мои коллеги выпустили исследование, в котором рассказали о том, что мы нашли в Google Play Store несколько шпионских модов Telegram на различных языках, в том числе на китайском.

Это приложение крадет сообщения и контакты пользователя. При этом выглядит оно практически как официальный клиент Telegram, за исключением небольшого кусочка кода, отвечающего за подключение к командному серверу — telegrnm[.]org (не очень похоже на легитимный сервис).

6xjzym6stfqfsyyl06rajefuijk.png

2oqdt_7ot42ejfulhde5sxovkvq.png

Иными словами, от официального клиента эти приложения отличаются тем, что они просто пересылают все данные на свой командный сервер.

Mandrake spy


Следующий шпион более сложный — это Mandrake. Впервые его зарепортил Bitdefender. Примечательно, что этот шпион присутствовал в Google Play около четырех лет.

ymwnk_05pbaeckhn1asbh0bnssk.png

Данный шпион может совершать на устройстве множество различных действий — красть сообщения, список контактов, загружать и устанавливать дополнительные модули и так далее.

Шпион состоит из Dropper-а, который и был опубликован на Google Play. Dropper загружает и устанавливает Loader, который прячет свое присутствие на девайсе и динамически подгружает уже основной пейлоад. Основной пейлоад содержит логику для передачи данных злоумышленнику и различных механизмов persistence — закрепления на устройстве.

Вот так выглядят пользовательские отзывы на это приложение в Google Play:

wggqqpal7p35cojlq0r7ikkx7xy.png

Как вы можете заметить, тут разработчик даже отвечает пользователям, которые оставляют отзывы, и заподозрить что-то очень сложно. Оценка 4,2, вполне разные отзывы — есть и одна, и пять звезд, и ответы разработчика. Выглядит вполне легитимно.

PhantomLance spy


Следующий пример — это уже продвинутая APT-кампания PhantomLance. Мои коллеги нашли несколько десятков таких приложений, в том числе и в Google Play. Вот один из них — это некий сканер и клинер для телефона.

mmje3jgdibbbowtaaprr_bge9cs.png

Как в коде приложения, так и в инфраструктуре коллеги обнаружили пересечение с APT-кампанией Ocean Lotus. Этот шпион собирает на телефоне различную чувствительную информацию — геолокацию, лог звонков, список контактов, SMS, список установленных приложений, данные о девайсе. Он может загружать и выполнять различные варианты пейлоада.

Чтобы обойти проверки Google Play, его авторы старались воспользоваться специальными техниками. В частности, в манифесте не было указано никаких подозрительных разрешений. Вместо этого необходимые разрешения запрашивались динамически уже после загрузки пейлоада. Они были спрятаны внутри исполняемого Dex-файла. И если на устройстве были Root-права, зловред мог вызывать недокументированную API-функцию setUidMode для получения нужных разрешений без какого-то привлечения пользователя.

В последних версиях этого шпиона ключ для расшифровки пейлоада в тушке зловреда не хранился, а приходил на телефон через Google Firebase.

Для раскрутки приложения в Google Play разработчики создали аккаунт на GitHub и разместили там фейковое лицензионное соглашение (EULA). Также они использовали versioning: первые версии приложения, загруженного на Google Play, были чистые и не содержали в себе ничего вредоносного. Дополнительная вредоносная функциональность прилетала позднее.

Всего с 2016 года было обнаружено около 300 атак на мобильных пользователей в таких странах, как Индия, Вьетнам, Бангладеш, Индонезия, Непал и другие.

l5dpq4s9iydcdnun2kndwmqxxbm.png

PUA


Говоря об угрозах, нельзя не упомянуть различные приложения, не являющиеся вредоносными, но остающиеся потенциально нежелательными. Таких приложений в Google Play миллионы. Как правило, это различное агрессивное Adware, которое использует похожие на троянские методы для показа навязчивой рекламы. Мы также находили в Google Play интересные версии приложений категории Riskware. Далее я покажу один из примеров.

w4diis-jrckpfvsdwah5mdg2ute.png

SpyLoan


Мы нашли сотни приложений микрозаймов, которые запрашивали разрешение на доступ к контакт-листу пользователя, фотографиям, сообщениям и так далее.

muokhg3zekgclijob2_91ssl-lc.png

Если пользователь брал микрозаем, но не выплачивал его вовремя, ему прилетали угрозы, что у приложения есть доступ ко всей информации на его телефоне и оно разошлет эту информацию по контакт-листу.

Такие приложения особенно популярны в Индии и Латинской Америке. Были даже трагические случаи из-за такого шантажа. В отзывах на такие приложения можно найти истории людей, которые получали угрозы за один день просрочки.

br1nxqewmsjpy9xagjfe8ugng34.png

Как защитить себя от таких приложений


Мои советы стандартны:

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


Если вам интересны подобные исследования и вы хотели бы заниматься чем-то аналогичным — исследовать вредоносные кампании, выуживать из приложений их реальный функционал и т. п., приходите к нам в «Лабораторию Касперского» в подразделение Threat Research или в команду Security Services, в зависимости от того, с какой стороны вы хотите смотреть на интересные находки, подобные нашим. Злоумышленники каждый день придумывают новые приемы, позволяющие обойти проверки маркетов и усыпить бдительность конечных пользователей. Будем вместе расследовать уже случившиеся инциденты и предупреждать будущие.

© Habrahabr.ru