Вы находитесь на странице: 1из 32

Министерство образования и науки РФ

федеральное государственное бюджетное


образовательное учреждение высшего образования
«Омский государственный технический университет»

Факультет элитного образования и магистратуры

Кафедра «Автоматизированные системы обработки


информации и управления»

КУРСОВОЙ ПРОЕКТ

по дисциплине «Разработка программного кода»


на тему «Разработка сервиса оценки системы защиты мобильных
устройств «Android» на уровне операционной системы»»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

КП - 2068999 - 43 - 14 - 00.00.000 ПЗ

Студента
Ефанова Елена Владимировна
Иванов Алексей Евгеньевич
Курс 1, Группа ИВТм - 203
Направление 09.04.01 Информатика и
вычислительная техника

Руководитель: к.ф.-м.н., доцент,


Надточий Павел Николаевич
Выполнил(а) 20 г.
К защите 20 г.

Выполнение Защита КП Итогов


и ый
подготовка рейтин
к защите КП г

Проект защищен с оценкой

Омск-2021
ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ

Тема "Разработка программного приложения «Разработка сервиса оценки


системы защиты мобильных устройств «Android» на уровне операционной
системы»"

Срок сдачи проекта 1-5 июня 2021

Содержание пояснительной записки

1. Расписать функциональные требования к программному обеспечению.


2. Описать логическую структуру программы, входные\выходные потоки
и данные.
3. Разработать тестовые сценарии проверки работоспособности
программы, демонстрирующие успешную реализацию
функциональных требований.
4. Предоставить отчет о проведении тестирования.
5. Сделать вывод о результатах, полученных в ходе выполнения работы.

При решении задач курсового проектирования опираться на материал


сопутствующих дисциплин: «Проверка работоспособности программного
обеспечения», «Разработка технических спецификаций программного
обеспечения».

Методические и информационные источники


1. Дарвин Ян Ф. "Android. Сборник рецептов. 2-е изд. 2019. - 768с

2. Колисниченко Денис Программирование для Android. Самоучитель;


БХВ- Петербург - М., 2018. - 270 c.

2
РЕФЕРАТ

Курсовой проект по дисциплине «Разработка программного кода» на


тему " Разработка сервиса оценки системы защиты мобильных устройств
«Android» на уровне операционной системы»". Работа изложена на 31
страницах. Состоит из: введения, 3 разделов, заключения, списка литературы
из 4 источников. Содержит 12 рисунков.

Целью курсового проекта является:

 углубление знаний, полученных в результате изучения


теоретического курса дисциплины;
 развитие практических навыков написания программного кода и
использования полученных теоретических знаний на практике;
 представить разработанную программу для OC Android, объяснить
принцип её работы и среду её применения.

Ключевые слова:
СОДЕРЖАНИЕ

ВВЕДЕНИЕ..............................................................................................................5
РАЗДЕЛ 1. Функциональные требования к программному продукту...............6
РАЗДЕЛ 2.Проектирование системы защиты......................................................9
РАЗДЕЛ 3. Логическая структура приложения..................................................21
ЗАКЛЮЧЕНИЕ......................................................................................................29
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ............................................30
ВВЕДЕНИЕ
В настоящее же время мобильные телефоны прочно укоренились в
нашей повседневной жизни благодаря широкому спектру функций.
Смартфон в наши дни это, прежде всего: камера, доступ в Интернет и звонки
т.д. Количество вредоносного кода и выявляемых уязвимостей в мобильном
коде так же растет год от года практически с геометрической прогрессией.

Обеспечение информационной безопасности современных мобильных


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

Назначение разрабатываемого приложения: разрабатывается


система ранжирования уровня опасности Android приложений, а так же
инсталируемое Android Package приложение, реализующее работу системы
на пользовательском устройстве.

Цели преследуемые при написании приложения:

 Оценка уровня опасности разрешений, предоставляемых приложениям


операционной системой Android.
 Оценка эффективности работы разработанной системы в среде системы
Android.
РАЗДЕЛ 1. Функциональные требования к программному продукту

Инструменты для разработки ПО:

Приложение разрабатывается в среде разработки Android Studio. В


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

Входные данные программного продукта:

 Пользовательские данные
 Системные ресурсы
 Подготовленный список существующих базовых разрешений с их
описанием и уровнями опасности
  Список установленных на смартфоне приложений с их собственными
используемыми..разрешениями

Выходные данные программного продукта:

 Подготовленный список с разрешениями приложения


 Общий уровень опасности
 Описание предоставляемых разрешением возможностей
Функциональные требования к программному продукту:

Реализовать считывание списка установленных на Android устройстве


приложений
Реализовать поиск, анализ и оценку опасности разрешений и уровней
доступа, используемых этим приложением на Android устройстве
Спроектировать внешний вид приложения. В основном виджете
разместить следующие элементы:
 значок приложения
 экран информации о вашем устройстве и приложениях для
считывания и анализа данных;
 кнопка Управление, для перехода в настройки приложения;
 экран информации содержащий данные с уровнем угрозы и
описание приложения;
 экран информации содержащий данные с уровнем угрозы:1;
 экран информации содержащий данные с уровнем угрозы:2;
 экран информации содержащий данные с уровнем угрозы:3;
РАЗДЕЛ 2. Проектирование системы защиты
Основная идея работы приложения заключается в непредвзятой оценки
установленных приложений посредством стандартных возможностей
Android, не используя опасных разрешений и уязвимостей.
Основой данного подхода послужила официальная документация для
Android SDK (Source Development Kit - средства разработчика), из которой
были взяты основные низкоуровневые разрешения приложений, от которых
отталкиваются все остальные разрешения и без которых невозможна их
работа.
Конкретной санкции для найденных угроз не было выбрано, так как
такая возможность противоречила бы идее неиспользования опасных
разрешений. В качестве замены такой санкции приложение должно строить
список из наиболее привилегированных приложений, тем самым указывая
какие из них имеют наибольший доступ к устройству. В рамках такой
системы пользователю необходимо рассуждать критически и самостоятельно
оценивать необходимость ограничить доступ к устройству для такого
приложения. Стоит отметить, что список привилегированных приложений
так же содержит в себе системные приложения, которые по умолчанию
имеют самый полный спектр доступов к системе, так как они необходимы
для её функционирования.
Основной причиной удаления потенциально опасного приложения
является несоответствие его функционала, доступного пользователю, с теми
действиями, которые оно может совершать.
Все приложения на Android работают в изолированной программной
среде (песочнице). По умолчанию приложение Android может получить
доступ только к ограниченному кругу системных ресурсов. Система сама
управляет доступом к ресурсам, которые могут быть использоваться
неправильно или злонамеренно, а также могли бы негативно повлиять на
пользователей, сети, или данные на устройстве.
Эти ограничения применяются в различных формах. Некоторые
возможности ограничены преднамеренно путем исключения прямых
интерфейсов к чувствительной функциональности устройства (например, не
существуют прямых API функций для непосредственного использования SIM
карты). В некоторых случаях разделение ролей обеспечивает меры
безопасности на ряду с разделением хранимых данных приложения. В других
случаях, чувствительные интерфейсы, предназначенные для использования
доверенными приложениями, защищены через особый механизм
безопасности известный как «разрешения».
В список защищенных разрешениями API функций входят такие
функции как:
функции камеры
Данные о местоположении (GPS) Функции Bluetooth
Функции телефонии SMS / MMS функции
Функции сети / передачи данных
Эти ресурсы напрямую доступны только через операционную систему.
Чтобы использовать защищенные API, приложение должно определить
необходимые возможности в своём манифесте. При подготовке к установке
приложения, система выводит диалоговое окно для пользователя, в котором
указывает разрешения и спрашивает согласия пользователя чтобы
продолжить установку. Если пользователь даёт разрешение на установку то
система считает, что пользователь предоставил все необходимые
разрешения. Пользователь не может разрешить или запретить
индивидуальные права доступа - пользователь должен разрешить или
запретить все необходимые разрешения в виде блока.
После принятия разрешений и установкой приложения, принятые
разрешения действуют пока приложение установлено в системе. Чтобы
избежать путаницы пользователей, система не уведомит пользователя заново
о предоставленных разрешениях, так же не будет уведомлений о
приложениях, которые входят в ядро операционной системы или в комплекте
по OEM. Разрешения будут удалены, если приложение будет удалено, так что
последующая переустановка будет снова приведёт к отображение запроса
разрешений.
В настройках устройства пользователи могут просмотреть разрешения
для приложений, которые они ранее уже установили. Пользователи могут
также отключить некоторые функции глобально, например отключить GPS,
радио, или Wi-Fi.
В случае если приложение пытается использовать защищенную
функцию, которая не была объявлена в манифесте приложения, то такое
поведение классифицируется как исключительное и выводится сообщение об
ошибке. Проверки разрешения на доступ к защищённым API введены в
действие на низком уровне, чтобы предотвратить обход.
Некоторые API функции объединены в особые группы:
API Функции, чувствительные к цене. Речь идет о функциях,
использование которых может повлечь дополнительные траты со стороны
пользователя и сети оператора. Пользователь должен будет предоставить
явное разрешение для сторонних приложений, запрашивающих разрешение
на использование чувствительных API. Эти API включают в себя:
Телефония SMS / MMS
Сеть / Internet данные Билинг внутри приложений NFC доступ
В Android 4.2 добавляется дополнительный контроль по
использованию SMS. Android предоставит уведомление если приложение
пытается отправить SMS на короткий номер, который используется для
доступа к ПРЕМИУМ сервисам, которые могут привести к дополнительной
оплате. Пользователь может выбрать, следует ли разрешить приложению
отправлять сообщение или заблокировать его.
Доступ к SIM карте. Низкоуровневый доступ к SIM-карта не доступен
для сторонних приложений. ОС обрабатывает все связи с SIM-картой, в том
числе доступом к личной информации (контактам) в памяти на SIM-карте.
Приложение также не может получить доступ к AT командам модема, так как
они управляются исключительно их слоя радио интерфейса (RIL). RIL не
предоставляет высокоуровневого доступа к этим командам.
Персональная информация. В Android все функции, работающие с
личной информацией помещены в специальный набор защищенных API. При
нормальных условиях эксплуатации, в Android устройствах накапливаются
данные пользователя в сторонних приложениях, установленных
пользователями. Приложения, которые решили поделиться этой
информацией могут использовать механизм проверки прав доступа для
защиты данных от сторонних приложений (проверка разрешений).
На Рисунке 1 представлена схема взаимодействия приложения с
личной информацией пользователя, чувствительными устройствами ввода а
так же метаданными устройства через разграничение разрешений.

Рис.1 - Взаимодействие приложения с данными пользователя.

Так как большая часть Android приложений использует язык


программирования Java и его использование имеет полную поддержку со
стороны Google в виде документаций программного интерфейса Android API
на английском, а так же учитывая опыт своих разработок, в качестве языка
для реализации системы был выбран Java. В рамках Java доступны все
стандарты программирования приложений для OC Android а так же описаны
возможности управления этой системой.
Другие доступные языки такие как Kotlin и C\C++ были исключены в
ходе изучения темы. Kotlin является достаточно молодым языком, созданным
для программирования исполняемого кода для ОС Android, основанным на
Java, большая часть реализаций программы была бы труднодоступна для
изучения, так как в общем доступе документаций по этому языку крайне
мало. C\C++ является мощным языком для разработки графических и
математических приложений, но в рамках задачи основополагающим
критерием выбора языка была доступность управления устройством через
Android API, для доступа к списку разрешений установленных приложений.
Что же касается самой разработки системы ранжирования уровней
опасности Android приложений, в качестве основы, для оценки уровней
опасности, были выбраны разрешения устройства, доступные приложениям,
которые являются основополагающими для других разрешений. В ходе
исследования документаций были отобраны следующие права доступа
(Далее полный перечень проверяемых приложением разрешений):
android.permission.ACCESS_MEDIA_LOCATION - Доступ к
расположению медиафайлов
com.android.launcher.permission.INSTALL_SHORTCUT - Создание
ярлыка для запуска
android.permission.FOREGROUND_SERVICE - Сообщать системе о
своей активности
android.permission.BLUETOOTH - Позволяет приложению
просматривать конфигурацию Bluetooth на телефоне, а также создавать и
принимать соединения с сопряженными устройствами
android.permission.RECORD_AUDIO - Позволяет приложению
записывать аудио с помощью микрофона. Это разрешение позволяет
приложению записывать аудио в любое время без вашего подтверждения.
android.permission.ACCESS_ALL_EXTERNAL_STORAGE - Позволяет
приложению получить доступ к внешнему хранилищу для всех
пользователей
android.permission.WRITE_MEDIA_STORAGE - Позволяет
приложению изменять содержимое внутреннего носителя данных.
android.permission.WRITE_EXTERNAL_STORAGE - Позволяет
приложению изменять содержимое внешнего носителя данных (SD Card)
android.permission.READ_EXTERNAL_STORAGE - Позволяет
приложению просматривать содержимое внешнего носителя данных (SD
Card)
android.permission.MOUNT_UNMOUNT_FILESYSTEMS - Позволяет
приложению монтировать и размонтировать файловые системы для съемного
хранения
android.permission.SYSTEM_ALERT_WINDOW - Позволяет рисовать
это приложение поверх других приложений или частей пользовательского
интерфейса. Может помешать вам использовать интерфейс в любом
приложении или подменить элементы интерфейса других приложений.
android.permission.ACCESS_WIFI_STATE - Позволяет приложению
просматривать информацию о сети Wi-Fi, например, включен ли Wi-Fi и имя
подключенных устройств Wi-Fi.
android.permission.INTERNET - Позволяет приложению создавать
сетевые сокеты и использовать пользовательские сетевые протоколы.
Браузер и другие приложения предоставляют средства для отправки
данных в интернет, поэтому это разрешение не требуется для отправки
данных в интернет.
android.permission.ACCESS_NETWORK_STATE - Позволяет
приложению просматривать информацию о сетевых соединениях, например
о том, какие сети существуют и подключены.
android.permission.WAKE_LOCK - Позволяет приложению
предотвратить переход телефона в спящий режим.
android.permission.RECEIVE_BOOT_COMPLETED - Позволяет
приложению само запуститься, как только система завершит загрузку. Это
может занять больше времени для запуска телефона и позволить
приложению замедлить работу всего телефона, постоянно работая.
android.permission.ACCESS_COARSE_LOCATION - Позволяет
приложению получить ваше приблизительное местоположение. Это
местоположение определяется службами определения местоположения с
использованием сетевых источников местоположения, таких как вышки
сотовой связи и Wi-Fi. Эти службы определения местоположения должны
быть включены и доступны для вашего устройства, чтобы приложение могло
их использовать. Приложения могут использовать это, чтобы
приблизительно определить, где вы находитесь.
android.permission.ACCESS_FINE_LOCATION - Позволяет
приложению получить ваше точное местоположение с помощью глобальной
системы позиционирования (GPS) или сетевых источников местоположения,
таких как вышки сотовой связи и Wi-Fi. Эти службы определения
местоположения должны быть включены и доступны для вашего устройства,
чтобы приложение могло их использовать. Приложения могут использовать
это, чтобы определить, где вы находитесь, и могут потреблять
дополнительную зарядку аккумулятора.
android.permission.VIBRATE - Позволяет приложению управлять
вибрацией.
android.permission.CAMERA - Позволяет приложению снимать
фотографии и видео с помощью камеры. Это разрешение позволяет
приложению использовать камеру в любое время без вашего подтверждения.
android.permission.CHANGE_NETWORK_STATE - Позволяет
приложению изменять состояние сетевого подключения.
android.permission.CHANGE_WIFI_STATE - Позволяет приложению
подключаться и отключаться от точек доступа Wi-Fi, а также вносить
изменения в конфигурацию устройства для сетей Wi-Fi.
android.permission.READ_CONTACTS - Позволяет приложению
считывать данные о ваших контактах, хранящихся на вашем телефоне,
включая частоту, с которой вы звонили, отправляли электронную почту или
общались другими способами с конкретными людьми. Это разрешение
позволяет приложениям сохранять ваши контактные данные, а вредоносные
приложения могут обмениваться контактными данными без вашего ведома.
android.permission.READ_PROFILE - Позволяет приложению
считывать информацию личного профиля, хранящуюся на вашем устройстве,
например ваше имя и контактную информацию. Это означает, что
приложение может идентифицировать вас и может отправлять информацию
о вашем профиле другим пользователям.
android.permission.READ_PHONE_STATE - Позволяет приложению
получить доступ к функциям телефона устройства. Это разрешение
позволяет приложению определять номер телефона и идентификаторы
устройств, является ли вызов активным, а также удаленный номер,
подключенный к вызову.
android.permission.MODIFY_AUDIO_SETTINGS - Позволяет
приложению изменять глобальные настройки звука, такие как громкость и
то, какой динамик используется для вывода.
android.permission.AUTHENTICATE_ACCOUNTS - Позволяет
приложению использовать возможности проверки подлинности учетных
записей менеджера учетных записей, включая создание учетных записей и
получение и установку их паролей.
android.permission.BROADCAST_STICKY - Позволяет приложению
отправлять липкие трансляции, которые остаются после окончания
трансляции. Чрезмерное использование может сделать телефон медленным
или нестабильным, заставляя его использовать слишком много памяти.
android.permission.CALL_PHONE - Позволяет приложению звонить по
телефонным номерам без вашего вмешательства. Это может привести к
неожиданным расходам или звонкам. Обратите внимание,что это не
позволяет приложению вызывать экстренные номера. Вредоносные
приложения могут стоить вам денег, совершая звонки без вашего
подтверждения.
android.permission.DISABLE_KEYGUARD - Позволяет приложению
отключить блокировку ключей и любую связанную с ней защиту паролем.
Например, телефон отключает блокировку клавиш при приеме входящего
телефонного вызова, а затем повторно включает блокировку клавиш после
завершения вызова.
android.permission.GET_ACCOUNTS - Позволяет приложению
получить список учетных записей, известных по телефону. Сюда могут
входить любые учетные записи, созданные установленными вами
приложениями.
android.permission.GET_TASKS - Позволяет приложению извлекать
информацию о текущих и недавно запущенных задачах. Это может
позволить приложению обнаружить информацию о том, какие приложения
используются на устройстве.
android.permission.MANAGE_ACCOUNTS - Позволяет приложению
выполнять такие операции, как добавление и удаление учетных записей, а
также удаление их пароля.
android.permission.READ_SYNC_SETTINGS - Позволяет приложению
считывать настройки синхронизации для учетной записи. Например, это
может определить, синхронизируется ли приложение People с учетной
записью.
android.permission.READ_SYNC_STATS - Позволяет приложению
считывать статистику синхронизации для учетной записи, включая историю
событий синхронизации и количество синхронизируемых данных.
android.permission.USE_CREDENTIALS - Позволяет приложению
запрашивать маркеры аутентификации.
android.permission.WRITE_CONTACTS - Позволяет приложению
изменять данные о ваших контактах, хранящиеся на вашем телефоне,
включая частоту, с которой вы звонили, отправляли электронную почту или
общались другими способами с определенными контактами. Это разрешение
позволяет приложениям удалять контактные данные.
android.permission.WRITE_SETTINGS - Позволяет приложению
изменять данные системных настроек. Вредоносные приложения могут
повредить конфигурацию вашей системы.
android.permission.WRITE_SYNC_SETTINGS - Позволяет приложению
изменять настройки синхронизации для учетной записи. Например, это
можно использовать для включения синхронизации приложения People с
учетной записью.
android.permission.DOWNLOAD_WITHOUT_NOTIFICATION -
Позволяет приложению загружать файлы через менеджер загрузок без
какого-либо уведомления Пользователя.
android.permission.INTERACT_ACROSS_USERS - Позволяет
приложению выполнять действия между различными пользователями на
устройстве. Вредоносные приложения могут использовать это для нарушения
защиты между пользователями.
android.permission.GET_PACKAGE_SIZE - Позволяет приложению
извлекать свой код, данные и размеры кэша.
android.permission.BLUETOOTH_ADMIN - Позволяет приложению
настраивать локальный Bluetooth, а также обнаруживать и выполнять
сопряжение с удаленными устройствами.
android.permission.READ_CALENDAR - Позволяет приложению
считывать все события календаря, хранящиеся на вашем телефоне, в том
числе события друзей или коллег. Это может позволить приложению
делиться или сохранять ваши данные календаря, независимо от
конфиденциальности или чувствительности.
android.permission.READ_CALL_LOG - Позволяет приложению
считывать журнал вызовов вашего телефона, включая данные о входящих и
исходящих вызовах. Это разрешение позволяет приложениям сохранять
данные журнала вызовов, а вредоносные приложения могут обмениваться
данными журнала вызовов без вашего ведома.
android.permission.READ_SMS - Позволяет приложению считывать
SMS-сообщения, хранящиеся на вашем телефоне или SIM-карте. Это
позволяет приложению читать все SMS-сообщения, независимо от
содержания или конфиденциальности.
android.permission.SEND_SMS - Позволяет приложению отправлять
SMS-сообщения. Это может привести к неожиданным обвинениям.
Вредоносные приложения могут стоить вам денег, отправляя
сообщения без вашего подтверждения.
android.permission.WRITE_CALENDAR - Позволяет приложению
добавлять, удалять и изменять события, которые вы можете изменить на
своем телефоне, в том числе события друзей или коллег. Это может
позволить приложению отправлять сообщения, которые, как представляется,
исходят от владельцев календаря, или изменять события без ведома
владельцев.
android.permission.WRITE_SMS - Позволяет приложению записывать
SMS-сообщения, хранящиеся на вашем телефоне или SIM-карте.
Вредоносные программы могут удалять ваши сообщения.
android.permission.FLASHLIGHT - Позволяет приложению управлять
фонариком.
android.permission.SET_WALLPAPER - Позволяет приложению
устанавливать системные обои.
android.permission.SET_WALLPAPER_HINTS - Позволяет приложению
устанавливать подсказки по размеру системных обоев.
android.permission.BIND_APPWIDGET - Позволяет приложению
сообщать системе, какие виджеты могут быть использованы каким
приложением. Приложение с таким разрешением может предоставлять
доступ к персональным данным другим приложениям. Не для использования
обычными приложениями.
android.permission.CHANGE_WIFI_MULTICAST_STATE - Позволяет
приложению получать пакеты, отправленные на все устройства в сети Wi-Fi с
использованием многоадресных адресов, а не только на ваш телефон. Он
использует больше энергии, чем режим без многоадресной рассылки.
android.permission.MANAGE_USB - Позволяет приложению управлять
настройками и разрешениями для USB-устройств.
android.permission.NFC - Позволяет приложению взаимодействовать с
метками Near Field Communication (NFC), картами и считывателями.
android.permission.EXPAND_STATUS_BAR - Позволяет приложению
развернуть или свернуть строку состояния.
android.permission.REORDER_TASKS - Позволяет приложению
перемещать задачи на передний план и фон. Приложение может сделать это
без вашего участия.
android.permission.WRITE_SECURE_SETTINGS - Позволяет
приложению изменять данные безопасных настроек систем. Не для
использования обычными приложениями.
android.permission.KILL_BACKGROUND_PROCESSES - Позволяет
приложению завершать фоновые процессы других приложений. Это может
привести к тому, что другие приложения перестанут работать.
android.permission.READ_USER_DICTIONARY - Позволяет
приложению читать все слова, имена и фразы, которые пользователь,
возможно, сохранил в пользовательском словаре.
android.permission.WRITE_USER_DICTIONARY - Позволяет
приложению записывать новые слова в пользовательский словарь.
android.permission.RECEIVE_SMS - Позволяет приложению получать и
обрабатывать SMS-сообщения. Это означает, что приложение может
отслеживать или удалять сообщения, отправленные на ваше устройство, не
показывая их вам.
android.permission.SUBSCRIBED_FEEDS_READ - Позволяет
приложению получать подробную информацию о текущих
синхронизированных каналах.
android.permission.SUBSCRIBED_FEEDS_WRITE - Позволяет
приложению изменять ваши текущие синхронизированные каналы.
Вредоносные приложения могут изменить ваши синхронизированные
каналы.
android.permission.MODIFY_PHONE_STATE - Позволяет приложению
управлять функциями телефона устройства. Приложение с таким
разрешением может переключать сети, включать и выключать телефонное
радио и тому подобное, даже не уведомляя вас.
android.permission.FORCE_STOP_PACKAGES - Позволяет
приложению принудительно останавливать другие приложения.
android.permission.BATTERY_STATS - Позволяет приложению
считывать текущие данные об использовании низкоуровневой батареи.
Может позволить приложению узнать подробную информацию о том, какие
приложения вы используете.
android.permission.CLEAR_APP_CACHE - Позволяет приложению
освободить память телефона, удалив файлы в каталогах кэша других
приложений. Это может привести к тому, что другие приложения будут
запускаться медленнее, так как им потребуется повторно получить свои
данные.
android.permission.GET_APP_OPS_STATS - Позволяет приложению
извлекать собранную статистику работы приложения. Не для использования
обычными приложениями.
android.permission.READ_LOGS - Позволяет приложению считывать
данные из различных лог-файлов системы. Это позволяет ему обнаружить
общую информацию о том, что вы делаете с телефоном, потенциально
включая личную или частную информацию.
android.permission.INTERACT_ACROSS_USERS_FULL - Позволяет
осуществлять все возможные взаимодействия между пользователями.
android.permission.MANAGE_USERS - Позволяет приложениям
управлять пользователями на устройстве, включая запросы, создание и
удаление.
android.permission.CHANGE_CONFIGURATION - Позволяет
приложению изменять текущую конфигурацию, например языковой стандарт
или общий размер шрифта.
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS -
Позволяет приложению получить доступ к дополнительным командам
поставщика местоположения. Это может позволить приложению
вмешиваться в работу GPS или других источников определения
местоположения.
Так же обратившись к официальным статьям и документациям, были
оценены возможности, которые предоставляют приложению данные
разрешения, и выставлены оценки опасности в следующей градации:
0 - неопасное разрешение;
1 - разрешение, собирающее незначительную информацию или
меняющие незначительные настройки (может использоваться для
таргетированной рекламы или, к примеру, для управления фонариком
устройства при получении уведомлений);
2 - доступ к агрессивному сбору информации (такие как точное
местоположение), а так же некоторые возможности управления системы,
которые могут быть неприятны, в случае несанкционированного
редактирования, в нормальном случае используется вспомогательными
программами для настройки устройства или приложениями для навигации;
3 - опасные доступы, такие как отправка СМС сообщений,
совершение вызовов, доступ к файловой системе и системным настройкам, а
так же доступ к личной информации пользователя и его данным.
Рис. 2.Схема алгоритма запуска и показ действий приложения
Рис. 3. Схема алгоритма управления

РАЗДЕЛ 3. Логическая структура приложения

Принцип работы разработанной системы заключается в считывании


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

Рис. 4.Внешний вид иконки приложения

При запуске система считывает список всех установленных


приложений, дальнейшая актуализация списка происходит при перезапуске
программы. Список проходит через итератор, проверяющий каждое из
установленных приложений, с целью получения списка разрешений, который
задекларирован в файле - манифесте. В ходе итерации списка приложений
для каждого из приложений формируется объект, содержащий информацию
об использовании данным приложением опасных разрешений, которые
указаны в JSON словаре, а так же подсчитывается общий уровень опасности,
или если говорить правильно, привилегированности приложения, который
характеризуется общей оценкой угрозы. После полного анализа всех
установленных на устройство приложений система выводит на экран
пользователя их список, отсортированный по общей оценке угрозы в порядке
убывания.
Для понимания полной картины доступных приложению действий
была реализована возможность просмотра полного списка найденных
разрешений с указанием оценки опасности и описания данного разрешения.
Список разрешений для каждого приложения так же отсортирован в порядке
убывания оценки опасности.
Интерфейс разработанной системы представляет собой стандартное
Android приложение, содержащие два основных экрана: информация о
версии вашего устройства и список приложений, перечень используемых
выбранным приложением разрешений.

Рис. 5. Информация об устройстве

Список приложений отсортирован в порядке убывания общей


субъективной оценки угрозы, с указанием оценки в виде числового значения
справа от названия приложения.
Рис. 6. Список приложений
Данная оценка существует для того, чтобы указать на приложения,
которым доступно много опасных, с точки зрения конфиденциальности
информации, действий с устройством и его содержимым. Эта оценка не
претендует на то, чтобы быть побуждением к действию, и служит лишь
сигналом необходимости присмотреться к соответствующему приложению
для дальнейшей оценки пользователем обоснованности предоставляемых
приложению разрешений управления системой Android. Для понимания
угрозы исходящей от того или иного приложения необходимо
удостовериться в том, является ли оно пользовательским, для этого строки,
содержащие системные приложения окрашены в зелёный цвет. Так же
необходимо сравнить возможности, которые приложение предоставляет
пользователю, с возможностями, которые предоставляют этому приложению
запрашиваемые им разрешения управлением OC Android. Так, при наличии у
пользовательского приложения оценки, сопоставимой с оценкой системных
приложений, таких как “Google” или “Безопасность”, необходимо
удостовериться в отсутствии у приложения скрытых от пользователя
возможностей, и, в случае несоответствия, деинсталлировать такое
приложение с устройства.
Для полноты картины при одном тапе по приложению из общего
списка открывается экран разрешений приложения, содержащий полный
список исследуемых разрешений с указанием оценки угрозы и описанием
предоставляемых разрешением возможностей. Для удобства элементы списка
с уровнем угрозы 3 окрашены красным цветом, элементы, уровень угрозы
которых равняется 2 - жёлтым, а элементам с уровнем угрозы 1 присвоен
зелёный цвет, безопасные же разрешения не имеют отличительного цвета.

Рис. 7. Уровень угрозы красный

Рис. 8.Уровень угрозы жёлтый


Рис. 7. Уровень угрозы зеленый

Рис. 9. Безопасное приложение

В качестве превентивной меры, доступной в разработанной системе,


под списком разрешений расположена кнопка “Управление” для перехода в
настройки выбранного приложения, где доступно управление некоторыми
разрешениями приложения, а так же предоставлена возможность его
деинсталлировать.

Рис. 10. Кнопка управления

Результатом работы данной системы является список установленных


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

Рис. 11. Список запрашиваемых приложением AliExpress разрешений

Для того чтобы избежать потери конфиденциальной информации, а так


же запретить приложению AliExpress изменять настройки устройства,
необходимо перейти в пункт управления с помощью кнопки “Управление” в
интерфейсе разработанной системы, затем перейти в пункт разрешения и
запретить данному приложению использовать опасные разрешения.
Рис. 12. Отключение подозрительных разрешений приложения

Стоит отметить что приложение AliExpress скорее всего не несёт


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

В данном курсовом проекте было спроектировано и разработано


приложение «Разработка сервиса оценки системы защиты мобильных
устройств «Android» на уровне операционной системы». Приложение
позволяет ранжировать уровень опасностей ОС Android приложений, а так
же инсталируемое Android Package приложение, реализующее работу
системы на пользовательском устройстве. Результаты тестирования показали
хорошую работоспособность продукта: высокую точность и скорость
расчетов.
На этапах разработки и тестирования был разработан интерфейс
взаимодействия с пользователем. Была разработана соответствующая
документация. Документация включила в себя наглядное пособие по работе с
системой с иллюстрациями. Наряду с программной частью была проделана
работа по оценке уровня опасности разрешений, предоставляемых
приложениям операционной системой Android, а так же проведена оценка
эффективности работы разработанной системы. Благодаря выбору
пользовательского OC Android приложения, была достигнута независимость
работы системы от подключений по различным интерфейсам к сторонним
устройствам и самостоятельная его работа на целевом проверяемом
устройстве.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Anti-Malware.ru — независимый российский информационно-

2. Аналитический центр. Урозы для мобильных [Электронный


ресурс] URL: https://www.anti-
malware.ru/analytics/Threats_Analysis/keeping-mobile-devices-safe-
from-cyber- threats (датаобращения: 28.05.2020).

3. Голощапов А.Л. Google Android. Программирование для


мобильных устройств; БХВ-Петербург - М., 2016. - 433 c.

4. Дейтел П., Дейтел Х., Дейтел Э., Моргано М. Android для


программистов. Создаем приложения; Питер - М., 2017. - 560 c.

5. Информационный портал android-shark (Акулы андроида) -


Архитектура операционной системы Android - 2020г.
[Электронный ресурс] URL: http://android- shark.ru/arhitektura-
operatsionnoy-sistemyi-android/ (дата обращения: 11.05.2021).

6. Платформа онлайн курсов обучения программированию на Java -


Статья “История версий ОС Android” - 2017г. [Электронный
ресурс] URL: https://javarush.ru/groups/posts/97-istorija-versiy-os-
android- (дата обращения: 15.05.2020).

7. Сайт Habr.com - информ.-аналит. портал - статья


“Информационная безопасность на мобильных устройствах –
взгляд потребителей” - 2017г. - [Электронный ресурс] URL:
https://habr.com/ru/company/gemaltorussia/blog/319366/ (дата
обращения: 05.05.2020).