Набираем людей к себе в команду! Читай подробности: тут

Разрешения Android 6.0 в защите и нападении

Разрешения Android 6.0 в защите и нападении

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

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

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

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

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

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

Архитектура ОС Android построена таким образом, что позволяет обмениваться разного рода информацией между приложениями. Приложению, работающему с картами, нужно местоположение, диктофону — доступ к микрофону. Таким образом, с виду все ясно и прозрачно.

Мы открыто прописываем в манифесте приложения требуемые данные или возможности и получаем их при установке. Никто никого не обманывает, все добровольно. Но проблема состоит в том, что пользователи ужасно неграмотны в информационных технологиях. Мало кто задумывается, для чего тому же диктофону требуется твое местоположение или доступ к СМС. Приложение открыто заявляет о своих намерениях в манифесте, и странно было бы ожидать от него другого поведения.

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

«Тебе эти данные зачем?» обнажает истинные намерения ее создателей.

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

Если мы отберем все разрешения у приложения, ОС во избежание падения программы может просто отдать ему пустые значения. Можно обмануть приложение, подсунув ему заведомо ложные данные (местоположение Северного полюса) или просто нули. Например, приложение может спросить список контактов на устройстве, и   разработчик предполагает в своей архитектуре, что он может быть пустым (совсем новое устройство). Тут даже и заподозрить нечего — и данные спасены, и приложение не сломалось.

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

На такие ухищрения приходилось идти вплоть до версии Android 6.0 Marshmallow. В ней появился новый механизм работы с разрешениями.

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

Рассмотрим работу данного механизма на устройстве с версией Android 6.0. Давай установим птичек, но перед первым запуском отберем у них все права.

При запросе прав при установке из гуглплея мы видим, что targetSdkVersion у приложения меньше 23.

Экран настроек говорит нам о несколько завышенных интересах создателей приложения.

Рис. 1. Запрос прав при            Рис. 2. Список разрешений птичек

установке птичек из маркета

Как насчет того, чтобы немного их укоротить?

Рис. 3. Забираем разрешения      Рис. 4. Вот так-то будет лучше

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

Теперь давай рассмотрим работу с обновленным приложением Skype. Вот перед нами часть манифеста «похожего» приложения. Список разрешений и требований из манифеста приложения вдохновляет:

Если бы только пользователи это видели...

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

Рассмотрим процесс установки приложения. При установке из маркета никаких диалоговых окон не показывается — все разрешения приложение будет спрашивать потом.

Проверим в настройках (рис. 5).  Перепроверим... (рис. 6).

Рис. 5. У скайпа разрешений нет     Рис. 6. У скайпа разрешений совсем нет

Запустим приложение. Последовательно идут семь запросов (рис. 7).

Последовательно отклоняем все запросы, и скайп превращается в интернет-чат :).

Постой, я сказал «в интернет-чат»? А почему он не спросил разрешения на доступ в интернет? А все потому, что разрешения делятся на две группы: обычные и опасные. Доступ теперь должны запрашивать только последние. Список обычных разрешений можно посмотреть тут. А вот — опас-ные разрешения (и их группы).

Для создания запросов на разрешения есть подробные материалы: шаблоны использования запросов на доступ к разрешениям, рекомендации для доступа к разрешениям, а вот и полный список разрешений.

С теорией мы более-менее разобрались, теперь перейдем к практике.

Рис. 7. Запрос скайпа 1

ПРОНИКАЕМ В СПИСОК КОНТАКТОВ (ПО-ХОРОШЕМУ)

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

Нажатием на кнопку мы проверяем версию ОС и, если она 23 и выше, делаем запрос на получение прав:

Рис. 8.Диалог на запрос прав

Исходный код проекта доступен по ссылке.

После диалога в методе onRequestPermissionsResult нужно обработать ответ:

Читаем контакты в одну строчку с переходами на новую строку:

Показываем контакты в окне, при клике по окну оно скроется:

А вот результат работы чтения контактов (рис. 9).

ПРОНИКАЕМ В СПИСОК КОНТАКТОВ (ПО-ПЛОХОМУ)

Теперь проделаем то же самое, но   в сервисе, как и положено плохому приложению. Сервис никаких запросов слать не будет, а будет пытаться просто в лоб читать контакты. Запуск сервиса сделаем по событию подключения к Wi-Fi. Код сервиса:

Код приемника:

Если у приложения есть права, то сервис покажет Toast сообщение со списком контактов, если прав нет — вызовет ошибку с сообщением.
Теперь исследуем поведение приложения, если выставить ему targetSdkVersion ниже 23.
По умолчанию приложению были выданы права, и все работает штатно без запросов. После отключения прав в настройках приложения список контактов стал приходить пустым. Никаких ошибок мы не получили, но и контактов тоже. Значит, без нашего ведома приложения будут получать неактуальную информацию.

ЗАКЛЮЧЕНИЕ
Новая версия Android включает в себя более надежные и гибкие настройки прав для приложений. Можно сказать, что в новой версии наши данные защищены более эффективно, но это не значит, что теперь тебе можно вслепую соглашаться со всеми предложениями, поступающими из всплывающих окошек. Будь бдителен!

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

2 2Rabbit Android / Статьи 1 280 05 февраль 2016

Рекомендуем также

Уязвимость может позволить хакерам контролировать 66% Android-устройств
Уязвимость может позволить хакерам контролировать 66% Android-устройств

Недавно обнаруженная уязвимость может позволить хакерам контролировать 66% Android-устройств....

Единственная уязвимость ставит под вопрос всю безопасность Blackphone
Единственная уязвимость ставит под вопрос всю безопасность Blackphone

Компания Silent Circle, создавшая защищенный аппарат Blackphone, недавно представила обновление,...

Следим за девушкой с помощью Android
Следим за девушкой с помощью Android

Сегодня мы проведем небольшое шпионское исследование и попробуем незаметно собрать данные о...

Dead Trigger
Dead Trigger

Взлом игры Dead Trigger через Titanium backup. Взломано: деньги, монет, все улучшения, игровой...


Комментарии (0)


Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

iOS cydia small iconRepo [cydia.shlyahten.ru]

G iconGAPPS (все версии)