❮ Назад в библиотеку

ОПАСНЫЕ ФУНКЦИИ СИСТЕМЫ ANDROID

Боровиков А.И.

ГОУ ВПО «Донецкий национальный технический университет» (г. Донецк)

e-mail: aleksey.borovikov.00@mail.ru

Аннотация: Данная статья описывает опасные функции смартфонов на операционной системе Android, такие как чтение системных данных об использовании приложений, при помощи UsageStatsManager и чтение уведомлений, которые получает пользователь на свой смартфон при помощи NotificationListenerService. Описаны права, которые необходимо предоставить для использования рассматриваемых возможностей и способы защиты системой Android от случайного предоставления таких прав.

Annotation: This article describes the dangerous functions of smartphones on the Android operating system, such as reading system data about the use of applications using UsageStatsManager and reading notifications that the user receives on his smartphone using NotificationListenerService. The rights that must be granted to use the considered features and ways to protect the Android system from accidental granting of such rights are described.

Введение

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

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

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

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

Системные возможности

 В системе Android предусмотрено сохранение использованных приложений и уведомлений. Информацию о приложениях система записывает в папку /data/system/usagestats, такие файлы имеют имеют xml структуру.

 Для реализации считывания информации о запущенных приложениях в системе Android предусмотрен инструмент UsageStatsManager.

 UsageStatsManager — позволяет читать данные системных файлов usagestats. Метод queryUsageStats(int intervalType, long beginTime, long endTime) возвращает данные сгруппированные по intervalType за указанный интервал от beginTime до endTime. Группируются они на 4 интервала:


 При этом данные, сгруппированные за день, хранятся 7 дней, за неделю — 4 недели, за месяц — 6 месяцев, а за год — 2 года. Это значит, что получить информацию о запущенных приложениях можно не за любой период.

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

 Данные корректно обновляются в течении дня, но за более длительный период статистика отображается неверная. Это происходит из-за того, что файл для нового дня, к примеру на сегодня, будет создан не в 00:00, а во время близкое к к этому времени. Файл для следующего дня так же будет создан не точно в 12 часов ночи, что создаёт неточность, если вы пользовались приложением в это время. Это несущественный минус, если использовать файлы с периодом в день, но при использовании файлов с большим периодом будет иметь всё большую погрешность.

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

 Для считывания уведомления существует более простой инструмент - NotificationListenerService. Он позволяющий получить любое уведомление как только оно будет создано или удалено. Для того, чтоб получить уведомление необходимо переопределить метод onNotificationPosted, который получает экземпляр уведомления как только оно будет создано. Таким образом, оно будет уже сохранено в базу данных или отправлено на сервер до того как его увидит пользователь.

Выводы

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

Литература