ТЕХНИЧЕСКИЕ НАУКИ (TECHNICAL SCIENCE)
УДК 1
Беспалова Н.В.
кандидат физико-математических наук, доцент кафедры «Информационная безопасность автоматизированных систем» «Саратовский государственный технический университет имени Гагарина Ю.А.» (г. Саратов, Россия)
Гречуха Н.В.
магистрант направления «Информатика и вычислительная техника» «Саратовский государственный технический университет имени Гагарина Ю.А.» (г. Саратов, Россия)
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ СЕТЕВОГО ФИЛЬТРА ДЛЯ ОС ANDROID
Аннотация: статья посвящена описанию методов и принципов разработки сетевого фильтра для ОС Android, предназначенной для защиты устройств под управлением ОС Android от сетевых атак. Разработанный авторами программный продукт ставит своей целью фильтрацию нежелательного трафика и ограничение доступа заданным приложениям в интернет.
Ключевые слова: программное
обеспечение, алгоритм, информационные технологии.
OS Android относительно новая и набирающая популярность открытая операционная система, обладающая высокой степенью уязвимости, потому что это «открытая» система, набравшая популярность и используемая на многих устройствах. Android, молодая и еще не утвердившаяся платформа, способна
89
проявить себя на обоих концах спектра мобильных телефонов и, возможно, даже стать мостом через пропасть между работой и игрой.
Так как Android является наиболее «лакомой» мобильной ОС для злоумышленников, то нет ничего удивительного в том, что всё чаще в данной платформе обнаруживаются различные уязвимости, которые позволяют получать доступ к различным аппаратным компонентам устройства, а также обходить встроенные в Android механизмы защиты. Одна из самых главных уязвимостей системы Android (в отличие от той же iOS) возможность устанавливать не только рекомендуемые производителем ОС (например, Google Play) приложения, но и любые другие, только лишь предупреждая пользователя, к каким именно ресурсам будет иметь доступ устанавливаемая программа. Пользователи и на эти сообщения, в общем-то, мало обращают внимания, а, если и их не будет - всё для кибер-преступников станет на порядок проще.
Сегодня многие сетевые или поддерживающие сеть устройства работают на том или ином варианте ядра Linux. Это солидная платформа: недорогая в развертывании и поддержке и хорошо принимаемая благодаря удобному подходу к развертыванию. Пользовательский интерфейс таких устройств зачастую основан на HTML и может просматриваться с помощью браузера для РС или Mac. Но не всяким устройством нужно управлять посредством компьютера.
Целью данной работы является разработка программного обеспечения сетевого фильтра для OS Android.
Разработанный программное обеспечение, работает под ОС Android 4.0 и
выше.
Преимуществом предложенного программного обеспечения является простота и наглядность в использовании, удобство интерфейса.
Данное приложение позволяет выборочно заблокировать доступ приложений к интернету, что существенно экономит мобильный трафик и
зарядку. Приложение построено для OS Android с обращением к стандартным средствам ядра Iptables/Netfilter.
Мобильное приложение состоит из нескольких файлов описания пользовательского интерфейса в формате XML и нескольких программных модулей Java. Во время выполнения ПО файлы описания загружаются и на их основе происходит построение пользовательского интерфейса. На рисунке 1 изображены модули программы и XML файлы, загружаемые модулями. При запуске активность указывает, в каком XML файле описан ее интерфейс, после чего он будет отображен. На рисунке отображена взаимосвязь между активностями и файлами описания пользовательского интерфейса, предназначенными для использования соответствующей активностью.
Рис 1 Структура модулей программы.
Модуль MainActivity является точкой входа в программу. С него начинается её выполнение. Активность отображает интерфейс, с помощью которого можно выбрать, к какому пункту перейти.
Модуль RulesDialog предоставляет пользователю создание, выбор из созданных и и удаление правил приложения.
Модуль UserSettings предназначен для отображения настроек приложения и взаимодействия с ними.
Модуль NfloService реализовывает функцию журналирования и ее отображение.
Модуль PassDialog нужен для реализации функции защиты приложения паролем
Разработанное программное обеспечение это GUI-оболочка над IPTables. А IPTables - это утилита командной строки, которая даёт возможность управлять работой межсетевого экрана NetFilter для ядер Linux. Иногда брандмауэром называют и IPTables, но это не так. Для использования утилиты IPTables необходимы права суперпользователя; отсюда проистекают и требования к рутованности Android-устройства. Приложение формирует скрипт со специальными командами, и далее этот скрипт запускается с помощью IPTables с правами суперпользователя. При отсутствии root скрипт не будет выполнен. Обращается ПО к IPTables первый раз при загрузке Android , а затем при добавлении или удалении приложений или при изменении правил. В экосистеме Linux iptables является широко используемым инструментом брандмауэра, который взаимодействует с инфраструктурой фильтрации пакетов ядра netfilter.
Базовое программное обеспечение брандмауэра, наиболее часто используемое в Linux, называется iptables. Брандмауэр iptables работает, взаимодействуя с хуками фильтрации пакетов в сетевом стеке ядра Linux. Эти хуки ядра известны как инфраструктура netfilter. Каждый пакет, который входит в сетевую систему (входящий или исходящий), будет вызывать эти перехватчики по мере прохождения через стек, позволяя программам, которые регистрируются с этими перехватчиками, взаимодействовать с трафиком в ключевых точках. Модули ядра, связанные с iptables, регистрируются на этих хуках, чтобы
гарантировать, что трафик соответствует условиям, изложенным правилами брандмауэра. Алгоритм работы NetШter/iptaЫes показан на рисунке 2
Рис 2 архитектура Netfilter/iptables
Сетевые пакеты поступают в сетевой интерфейс, настроенный на стек TCP/IP и после некоторых простых проверок ядром (например, контрольная сумма) проходят последовательность цепочек (chain) (обозначены пунктиром). Пакет обязательно проходит первоначальную цепочку PREROUTING. После цепочки PREROUTING, в соответствии с таблицей маршрутизации, проверяется кому принадлежит пакет и, в зависимости от назначения пакета, определяется куда он дальше попадет (в какую цепочку). Если пакет НЕ адресован (в TCP пакете поле адрес получателя - НЕ локальная система) локальной системе, то он направляется в цепочку FORWARD, если пакет адресован локальной системе, то направляется в цепочку INPUT и после прохождения INPUT отдается локальным демонам/процессам. После обработки локальной программой, при
необходимости формируется ответ. Ответный пакет пакет отправляемый локальной системой в соответствии с правилами маршрутизации направляется на соответствующий маршрут (хост из локальной сети или адрес маршрутизатора) и направляется в цепочку OUTPUT. После цепочки OUTPUT (или FORWARD, если пакет был проходящий) пакет снова сверяется с правилами маршрутизации и отправляется в цепочку POSTROUTING. Может возникнуть резонный вопрос: почему несколько раз пакет проходит через таблицу маршрутизации? (об этом - ниже).
Каждая цепочка, которую проходит пакет состоит из набора таблиц (table) (обозначены овалами). Таблицы в разных цепочках имеют одинаковое наименование, но тем не менее никак между собой не связаны. Например таблица nat в цепочке PREROUTING никак не связана с таблицей nat в цепочке POSTROUTING. Каждая таблица состоит из упорядоченного набора (списка) правил. Каждое правило содержит условие, которому должен соответствовать проходящий пакет и действия к пакету, подходящему данному условию.
Проходя через серию цепочек пакет последовательно проходит каждую таблицу (в указанном на иллюстрации порядке) и в каждой таблице последовательно сверяется с каждым правилом (точнее сказать - с каждым набором условий/критериев в правиле), и если пакет соответствует какому-либо критерию, то выполняется заданное действие над пакетом. При этом, в каждой таблице (кроме пользовательских) существует заданная по-умолчанию политика. Данная политика определяет действие над пакетом, в случае, если пакет не соответствует ни одному из правил в таблице. Чаще всего - это действие ACCEPT, чтобы принять пакет и передать в следующую таблицу или DROP -чтобы отбросить пакет. В случае, если пакет не был отброшен, он завершает свое путешествие по ядру системы и отправляется в сетевую карту сетевой интерфейс, которая подходит по правилам маршрутизации.
Для отображения интерфейса используются стандартные элементы-Активности^с^^), Меню(Main), появляющееся при нажатии физической
кнопки, либо элемента на экране в случае отсутствия таковой, иконки(кнопки с изображениями), поля для ввода текста. Для запуска необходимо иметь любое устройство на базе Android 4.0 и выше (планшет, смартфон). После запуска приложения отображается интерфейс, позволяющий взаимодействовать с ним. На экране сразу отобразится список установленных приложений на устройстве, название самого приложения вместе с состоянием(включено-выключено), кнопка меню. Так же предусмотрен выбор режима работы: черный и белый списки.
В 2:44
a i Г Y. а 4:41
FirewallDiplomON
Режим: Белый список (разрешить выбранные)
Режим: Черный список (блокировать выбранные)
Рис 3 Основной экран
Основной экран отображен на рисунке 3, он позволяет пользователю выбрать отметив галочкой приложения которые нужно заблокировать в случает работы в черном режиме, либо выбрать которые нужно разрешить в белом режиме.
<t * # W * с 3:11 В 6. * # * 2d В 3:11
FirewallDiplomON : FirewallDiplomON :
Режим: Белый список (разрешить выбранные) Режим: Черный список (блокировать выбранные)
WIFI DATA ROAM CLEAR win DATA ROAM CLEAR
W В В В 10084: WPS Office W □ □ □ 10084: WPS Office
► в в в 10083: YouTube ► □ □ □ 10083:YouTube
с в в в 10089: Альфа-Центр с □ □ □ 10089: Альфа-Центр
1 □ □ □ 10056: Браузер > в В В 10056: Браузер
га и в в 10018: Галерея □ □ □ □ 10018: Галерея
+ в в в 10049: Календарь г □ □ □ 10049: Календарь
• в в в 10009: Контакты • □ □ □ 10009: Контакты
€ в в в 1000: Мастер uarmnwi/w € □ □ □ 1000: Мастер ЦЯГТППМ1^М
Рисунок 4
Выделяем любое приложение, например «браузер» (рисунок 4) в любом режиме и затем в меню нажимаем «применить правила» как на рисунке 5. После сворачиваем приложение и видим, что оно выполняет данную функцию и можно заметить, теперь доступу в интернет у приложения «браузер» отсутствует.
Н Ы # 3:03
Firew Брандмауэр включен
Режим: |Ру6 включен
выбран
и Применить правила | Экспорт правил ^ Импорт правил
Управление Правило файлов
Справка
^ [ Выход
□ □ □ 10082:4PDA
□ □ □ Ю046:
Рисунок 5
<Ь % # Ч В 3:03 В
<t * # V *А Е 3:18
Р1ге\Л Брандмауэр включен
Режим: |Ру6 включен
выбран
Применить правила
Экспорт правил
Импорт правил
Управление Правило файлов
Справка
□ □ □ 10082:4PDA
□ □ □ 10046:
Firewall! опции
Режим: Чер Журнал отключен
выбранные^
тп Показать журнал
Ц Показать правила
Очистить журнал
Установить пароль
Установить сценарий
Уведомления отключены DULJ Ю082:4PDA
trjk □ □ □ 10076: Android ^^ System WebView
' ' □ □ □ Ю046:
Рисунок 6
При нажатии активной кнопки в верхней части откроется меню (рисунок
6).
На нем можно увидеть возможность включения и отключения брандмауэра, функцию IPv6, возможности управления пользовательскими правилами.
Перейдя по вкладке опции открываются функции журналирования; пароль для ПО; прописывание собственных сценариев в Iptables ; уведомления.
В итоге, разработанное программное обеспечение достаточно прост и удобен для пользователя, так как имеет понятный интерфейс. Функциональность приложения обеспечивается стандартными средствами ядра IptaЫes/NetШter. Приложение выполняет функции межсетевого экрана по ограничению доступа приложений в интернет. В связи с широким распространением смартфонов подобное приложение актуально и востребовано.
СПИСОК ЛИТЕРАТУРЫ:
Международный научный журнал «Вестник науки» // г. Тольятти. ISSN 2712-8849 // Электронный ресурс: https://вестник-науки.рф/home
Дарвин Ян, Вильямс - Android. Сборник рецептов. Задачи и решения для разработчиков приложений — Москва: Вильямс, 2018 - 768 c.
В. Олифер -Компьютерные сети. Принципы, технологии, протоколы: Учебник»/ В. Олифер, Н. Олифер — СПб.: Питер, 2016. - 318 c.
Г.Шилдт - Java 8. Руководство для начинающих - Москва: Вильямс, 2015 - 712 с.
Bespalova N.V.
Candidate of Physical and Mathematical Sciences, Associate Professor of the Department "Information security of automated systems" Saratov State Technical University named after Gagarin"
(Saratov, Russia)
Grechukha N.V.
Master's student of the direction "Informatics and Computer Engineering" Saratov State Technical University named after Gagarin"
(Saratov, Russia)
SOFTWARE DEVELOPMENT NETWORK FILTER FOR ANDROID OS
Abstract: the article is devoted to the description of methods and principles for developing a network filter for Android OS, designed to protect devices running Android OS from network attacks. The software product developed by the authors aims to filter unwanted traffic and restrict access to specified applications on the Internet.
Keywords: software, algorithm, information technology.