November 28, 2018

Разбор приложения сбербанк онлайн на Android.

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

Приложение Сбербанк онлайн не даст использовать себя без знания PIN-кода, при первом запуске он обязательно проверит смартфон на наличие прав root и, если они есть, не даст переводить деньги куда угодно, ограничив функциональность шаблонами (правда, этот механизм довольно легко обойти). У него есть встроенная клавиатура, которая защищает от шпионских приложений, реализованных в виде сторонних клавиатур. Для общения с сервером он, естественно, использует токены и зашифрованный канал.

[ad name=»Responbl»]

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

В чем проблема приложения Сбербанк онлайн?

Первая проблема мобильного Сбербанка — это его размер. APK-файл с приложением весит ни много ни мало 41 Мбайт. Для сравнения: игра Smash Hit с отличной трехмерной графикой весит 80 Мбайт, игра Geometry Dash с кучей уровней и музыкальных треков — 48 Мбайт, а Google Chrome — те же 41 Мбайт. Заметь, что в данном случае мы сравниваем сложный комплексный софт с кли- ентским приложением, единственная задача которого — получать данные с сервера и отправлять их обратно в ответ на действия пользователя.

$ ls -lh *.apk

-rw-r--r-- 1 j1m j1m 41M апр 26 08:21com.android.chrome.apk

-rw-r--r-- 1 j1m j1m 41M апр 25 07:20ru.sberbankmobile.apk

ОK, я согласен, что при текущих объемах встроенной памяти и скоростях интернета размер приложения не имеет особого значения, однако его вес также влияет и на количество оперативной памяти, потребляемой приложением. На разных устройствах с разным объемом RAM и разными настройками Low Memory Killer размер приложения в оперативке может варьироваться от 40 до 80 Мбайт. Опять же для сравнения: одно из самых прожорливых на оперативку приложений Google Chrome с одной открытой вкладкой потребляет ~90 Мбайт. А самое печальное, что в отличие от того же Chrome, который будет вытеснен из памяти через некоторое время после закрытия, Сбербанк останется в ней висеть в виде сервиса на все время работы смартфона. Если ты его убьешь — он перезапустится, если перезагрузишь смартфон — он запустится при загрузке, применишь таск-киллер — получишь пинг-понг под названием «Прощай, батарея»: таск-киллер убивает сервис, система его запускает, и так продолжается бесконечно.

За двенадцать часов Сбербанк разбудил смартфон 27 раз. Не мешай ему режим энергосбережения в Android 6.0, он делал бы это еще чаще

Ну ладно, висит и висит, может быть это такая оптимизация для ускорения

запуска или еще что, на современных смартфонах с тремя гигами памяти 80 Мбайт — это ерунда. Но нет же, сервис не просто висит в памяти, он регулярно будит смартфон, чтобы обновить информацию о местоположении устройства и выполнить какие-то другие свои дела. Еще раз: приложение, которым ты пользуешься раз в неделю, чтобы положить деньги на телефон или проверить баланс, постоянно висит в фоне и регулярно будит смартфон! Если тебе кажется это странным, тогда читай дальше, и ты узнаешь, что такое действительно «странно».

«БАНК ЗАБОТИТСЯ О ВАШЕЙ ФИНАНСОВОЙ БЕЗОПАСНОСТИ»

Именно такой ответ я получил от @ sberbank в твиттере, когда показал им приведенный ниже скриншот. Что это такое? Это сообщение встроенного в Сбербанк антивируса Касперского. Да, дорогой читатель, Сбербанк не только висит в фоне и постоянно будит смартфон, он еще и просыпается каждый раз, когда ты устанавливаешь новое приложение, а еще у него есть определенный распорядок проверки. Ты сидишь, читаешь книжку — и вдруг просыпается Сбербанк и начинает сканировать систему. Как это влияет на батарейку, я думаю, пояснять не надо.

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

Это только часть полномочий, которые запрашивает приложение сбербанк онлайн

Недурно, не правда ли? Не каждый троян обладает таким внушительным списком полномочий. И не надо говорить, что все это нужно антивирусу, — мне трудно придумать, зачем ему может понадобиться возможность звонить, снимать, управлять Wi-Fi или читать логи звонков. О списках контактов я не заикаюсь, Сбербанк использует доступ к ним, чтобы совершать быстрые переводы денег. Ты же не против, чтобы твоя книга контактов сливалась в Сбербанк, не так ли?

ЧТО ДЕЛАТЬ?

Сбербанк не единственное приложение, ставшее жертвой стремления запихать в приложение все, что только можно. В маркете таких огромное количество, и методики «борьбы» с ними почти всегда одинаковы. Первое, что необходимо сделать, — это отозвать у приложения полномочия. Если у тебя стоит Android 6.0, то сделать это можно, открыв «Настройки Приложения Сбербанк» и отключив в меню «Разрешения» все, кроме «Память». При следующем запуске приложение вновь запросит разрешения, и их надо отклонить.

Если нет Android 6.0, но есть CyanogenMod, то же самое можно сделать в меню «Настройки — Конфиденциальность — Защищенный режим — Сбербанк» (правда, в этом случае приложение может падать). Если нет ни Android 6.0, ни CyanogenMod, но есть root, следует поставить Xposed, через него установить модуль Xprivacy ,

и уже с его помощью отозвать полномочия.

Далее необходимо сделать так, чтобы Сбербанк не висел в фоне и не выжирал батарейку. Для этого обязательно нужны права root и приложение Greenify .

Устанавливаем приложение, соглашаемся предоставить ему права root, нажимаем кнопку + в тулбаре и видим список будящих смартфон приложений. Наверняка Сбербанк окажется где-то в начале. Тапаем по нему и нажимаем круглую кнопку внизу экрана. Теперь приложение будет заморожено сразу после выключения экрана и уже не запустится самостоятельно.

ВМЕСТО ВЫВОДОВ

На самом деле я, конечно же, понимаю, откуда в клиенте Сбербанка взялась подобная функциональность. Как ни крути, а проще встроить в приложение антивирус, чем разбираться с тысячами пользователей, у которых увели деньги. Да и многие юзеры любят гиперфункциональные приложения, которые умеют варить кофе. Тот же ES File Explorer очень популярен, несмотря на просто фантастическую перегруженность всевозможными функциями. Вот только в качестве аргумента в разгоревшемся споре «приложения vs боты» я все чаще слышу слова: «Боты простые, быстрые и не требуют установки, а современные приложения громоздкие и садят батарейку». На этом все, удачи.