Безопасность Android: взгляд внутрь

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

Предпосылки к появлению угроз Android

1. Открытость
Открытость системы Android заключается в нескольких факторах. Во-первых, это доступность кода, который может быть использован, модифицирован и улучшен разработчиками в зависимости от их потребностей и идей. С одной стороны, для производителей устройств и разработчиков это несомненный плюс, с другой стороны, это дает возможность не только исследователям, но и злоумышленникам более продуктивно находить уязвимости и ошибки. Во-вторых, существует возможность установить приложения как из официального каталога приложений Google Play (ранее назывался Android Market), так и из любого другого доступного источника. В-третьих, создание приложений является практически общедоступным, так как необходимо заплатить всего $25 в случае, если разработчик желает размещать свои продукты в официальном каталоге, а для распространения программ вне его материальные затраты вообще не нужны. В-четвертых, размещаемые в Google Play программы до недавнего времени не подвергались предварительной проверке или тестированию со стороны Google. Совсем недавно была анонсирована система Bouncer , которая должна проверять приложения, размещенные в каталоге Play, на наличие вредоносных функций; проверке также будут подвергаться учетные записи разработчиков.
2. Фрагментация платформы
Из-за того, что систему Android использует большое количество производителей мобильных устройств, и при этом не существует определенных рамок по их техническим характеристикам, потребителям доступны устройства с самым различным функционалом. По мере выхода очередного обновления системы в нее добавляются не только новые функции, но и закрываются обнаруженные ранее уязвимости. Производители на свое усмотрение выпускают соответствующие версии обновлений. Иногда случается так, что аппарат, еще недавно бывший флагманом, не получает новую версию ОС или программного обеспечения и, соответственно, остается незащищенным от потенциальных угроз. Причиной этому могут быть как экономические соображения (адаптация обновления потребует слишком больших финансовых вложений, или же производитель просто хочет заработать на продажах новых устройств), так и чисто технические (обновление не сможет корректно функционировать на устаревшем аппаратном обеспечении, либо для установки не хватит физической памяти устройства)


3. Человеческий фактор: халатность, социальная инженерия и глупость

Каким бы ни был уровень защищенности системы, далеко не последнюю роль в обеспечении безопасности играет человеческий фактор. В качестве примера можно привести элементы социальной инженерии, которую используют злоумышленники, например, уже упоминавшийся ранее способ распространения вредоносных программ через рекламу в приложениях с использованием громких фраз («Требуется срочное обновление системы», «Ваша версия браузера устарела», «Немедленно установите обновление Skype» и т. п.). То же самое можно сказать и о случаях распространения вредоносных программ при помощи спам-рассылок по СМС (таким способом, например, распространялся бэкдор Android.Crusewind).

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



Теория механизмов безопасности Android
Система Android базируется на ядре Linux, тем не менее ее разработчики сильно модифицировали некоторые базовые механизмы, что в конечном итоге привело и к усилению защиты. В частности, рабочая среда Android включает в себя драйверы оборудования, поддержку сетевого стека, файловую систему, а также механизмы управления памятью, процессорным временем и расходом электроэнергии. Все эти механизмы реализуются с помощью библиотек, написанных на языке Си/Си++, но все приложения для Android исполняются в виртуальной машине Dalvik VM, которая, по своей сути, является подмножеством Java 5 Standard Edition.
В отличии от Java, в Android используются свои библиотеки классов и более компактный метод сохранения исполняемых файлов (выполняемые программы для Android имеют расширение .dex). Приложения для Android формируются в специальные пакеты, которые имеют расширение .apk и очень похожи на jar-файлы Java.

Каждое приложение Android имеет собственный идентификатор и запускается в собственной виртуальной машине. Для каждой такой машины действует принцип изоляции по потокам и низкоуровневому распределению памяти. Все взаимодействие отдельных процессов происходит только через ядро Linux, а не напрямую. В Android вместо одного пользователя с высокими привилегиями предусмотрено целых три: root, system и rild. ОС Android во время загрузки в память запускает мастер-процесс zygote, который порождает новые экземпляры Dalvik VM — по одному для каждого приложения. Кроме того, во время старта ОС запускается несколько системных процессов system_server, которые реализуют все необходимые сервисы операционной системы: процесс init, инициализирующий операционную систему; mountd, отвечающий за работу со съемными дисками; rild, управляющий взаимодействием с телефонной сетью и другими коммуникационными интерфейсами.

В Android используется отличный от принятого в Linux механизм распределения прав, называемый привилегиями. Так, есть привилегии для работы с мобильной сетью (например, CALL_PHONE), работы с изображениями (CAMERA) или доступа к Интернет (INTERNET), и, чтобы получить определенные привилегии, приложение должно их декларировать в своем описании. При установке приложения набор этих привилегий проверяется, и пользователю предлагается их подтвердить. Например, первый отечественный троянец, который рассылал SMS на платные короткие номера, при установке просил привилегии на отсылку SMS. А поскольку он представлялся как медиаплеер, то подобное разрешение должно было насторожить пользователя — зачем плееру нужны права на отсылку SMS?

Все эти механизмы позволяют решить основную проблему Linux — всесилие пользователя root. Поскольку каждое приложение запускается под своим идентификатором, то и запущенные процессы можно легко классифицировать по приложениям и определить для каждого из них правила контроля доступа к объектам ОС. При этом для доступа к радиосети нужно получить доступ не столько к идентификатору root, сколько к пользователю rild, который обеспечивает работу сетевых сервисов. Фактически в Android используется классическая модель разделения властей в государстве: root выполняет законодательные функции, занимаясь конфигурацией, rild — исполнительные функции, связанные сетью, а system — судебную, контролируя работу внутрисистемных сервисов.

Основные угрозы и атаки на Android

1. Вирусы и другое вредоносное ПО
Итак, какие вредоносные программы для ОС Android существуют и чем они опасны?
Список уверенно возглавляют СМС-троянцы (семейство Android.SmsSend). Целью таких программ является отправка сообщений с повышенной тарификацией на короткие номера. Часть стоимости этих сообщений поступает в карман злоумышленников, обогащая их.  Чаще всего они распространяются под видом популярных приложений и игр, таких как Opera Mini, ICQ, Skype, Angry Birds и т. п., при этом используется соответствующая иконка.

Далее по списку следуют более «тяжеловесные» троянцы. К ним относятся, например, Android.Gongfu, Android.Wukong, Android.DreamExploid, Android.Geinimi, Android.Spy и пр. В зависимости от семейства, эти вредоносные программы обладают таким функционалом, как, например, сбор конфиденциальной информации пользователя, добавление закладок в браузер, выполнение команд, поступающих от злоумышленников (функции бэкдора и бота), отправка СМС-сообщений, установка других приложений и т. п.
Однако, нужно понимать, что бы реализовать возможность установки приложений, не вызывая подозрений со стороны пользователя, троянцам необходимы права root (права, с которыми работает ядро системы).

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

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


2. Уязвимости Android и ПО
Архитектура Android построена таким образом, что все приложения работают с ограниченными правами и не имеют доступа к защищенным данным других приложений. Начиная с Android 5.0 в системе по умолчанию включен режим SELinux (Security Enhanced Linux). Он предусматривает принудительный контроль прав доступа на уровне ядра ОС.

Одна из главных проблем, с которыми могут столкнуться пользователи, — уязвимости системы, позволяющие получить права root. Существуют специальные приложения, скрипты и программные модули, выполняющие эту задачу. В повседневной жизни подобные вещи пользователям не страшны, так как чаще всего их используют осознанно для получения большего контроля над устройством. Другое дело, что эти же уязвимости (например, CVE-2009-1185 , CVE-2011-1823 ) взяли на вооружение создатели вредоносных приложений. Используя эксплойты (те самые программные модули и скрипты) для повышения своих прав до уровня root, они получают возможность, например, беспрепятственно устанавливать другие программы без разрешения пользователя (как это делают различные модификации Android.Gongfu и Android.DreamExploid). Некоторые вредоносные программы не используют эксплойты сами, напрямую, а вводят пользователя в заблуждение и побуждают его самого выполнить необходимые действия, тем самым дав вредоносной программе требуемые ей возможности.

Одним из ключевых элементов безопасности Android является система разрешений (Permission System). При установке приложений пользователю демонстрируется список всех функций, которые будут доступны той или иной программе. После установки приложения получают возможность выполнять заложенные в них функции без участия пользователя. Но это не последний недостаток данной системы. Например, существует возможность создания приложений, которые не будут требовать никаких разрешений для своей работы, что может создать ложное ощущение полной безопасности. Однако на самом деле такие приложения смогут получить доступ к определенной информации (например, файлам, хранящимся на карте памяти в незащищенном виде, списку установленных программ, используемому оператору мобильной связи) и даже отправить эту информацию злоумышленникам через Интернет.

Угрозу также может представлять использование неофициальных или сторонних прошивок. Поводов для беспокойства здесь несколько.
Во-первых, в такие прошивки изначально могут быть встроены вредоносные программы. Во-вторых, когда цифровой подписью образа системы подписывается какое-либо приложение, оно получает те же права, что и сама система, в которой оно работает. В рамках Android Open Source Project (AOSP) подписи для образов являются приватными, поэтому такой сценарий возможен, например, в случае кражи соответствующей подписи. Подобный способ заражения применялся, в частности, вредоносной программой Android.SmsHider, которая могла незаметно для пользователей, использующих определенные сторонние прошивки, установить содержащийся в ней троянский apk .

Системные приложения, как стандартные, так и приложения от поставщиков Android-устройств, тоже подвержены уязвимостям. Например, некоторые уязвимости браузера WebKit позволяют потенциальным вредоносным программам выполнить произвольный JavaScript-код и получить доступ к защищенным данным браузера.

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


А теперь более подробно о методах защиты платформы Android

Безопасность физического доступа
1.1 Экран блокировки. Чтобы никто не считал личную информацию пока наш смартфон находится вне поля зрения, нужно обязательно ставить защиту на разблокировку экрана. Это можно сделать разными способами:
  • Пароль – классический надежный способ, если конечно пароль сложный. Единственная неудобность состоит в том, что не совсем здорово десятки раз за день вводить такой пароль.
  • Графический ключ – позволяет более комфортно провести процесс разблокировки смартфона, но надежность такой защиты ниже, чем парольной.
  • Сканер отпечатков пальцев – использует биометрические особенности наших пальцев. Самый удобный, при условии, что удачно реализован в смартфоне, и достаточно надежный способ снятия блокировки экрана. Чтобы его взломать преступнику придётся провести довольно сложные манипуляции, требующие времени и специального оснащения. Сканер отпечатков пальцев мы детально рассматривали в одной из наших статей. Напомню лишь, что его нативная поддержка появилась только в Android 6.0.
  • Начиная с пятой версии Android появилась нормально работающая функция Доверенное лицо, которая разблокирует смартфон только если узнает Вас в лицо. Также можно задать Доверенное место, например, в вашей квартире телефон будет постоянно разблокирован.
  • Также нововведением Android 5.0 стала возможность снятие блокировки экрана через Bluetooth или NFC. Осуществить это можно с помощью, например, смарт-часов. Удобно, но в вопросе безопасности имеет некоторые уязвимости.

1.2 Шифрование данных. Впервые появилось в Android 4.3, где пользователь мог ее по желанию активировать. В Android 5.0 Lollipop она же задействована по умолчанию. Шифрование данных привязывается к паролю или ПИН-коду на снятие блокировки экрана смартфона – как только вы его ввели происходит дешифровка данных. Также пароль будет запрошен при включении устройства. Полезность шифрования состоит в том, что у злоумышленника может иметь возможность считать ваши данные не снимая блокировку экрана. Также вы можете зашифровать и внешнюю SD карту.


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

1.4 KNOX – система политики безопасности, которая предусматривает разделение информации на личную и рабочую, централизованный контроль и аудит, удаленный поиск и блокировку устройства и т.п. Разработка компании Samsung , ориентированная в основном на корпоративных пользователей. В пятой версии Android были использованы некоторые API KNOX

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

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

Общие рекомендации по повышению уровня безопасности Android
Подытоживая все вышесказанное, хочу дать пару советов, как защитить свой смартфон и информацию в нем:
  • придумывайте сложные пароли, не менее восьми знаков состоящие из букв, цифр и других символов. Также это не должны быть слова, используемые в речи, так как такие пароли подбираются с помощью словаря;
  • приложения устанавливайте только из проверенных источников. Перед установкой почитайте отзывы о софте. Внимательно изучите и проанализируйте список привилегий, которых просит приложение;
  • установите дополнительно антивирус, антивор и т.п.;
  • не подключайтесь к сомнительным  Wi-Fi сетям, так как они могут быть использованы злоумышленниками для перехвата ваших данных;
  • вовремя обновляйте версию операционной системы – в апдейтах устраняются уязвимости и вводятся новые функции безопасности;
  • не пренебрегайте шифрованием данных;
  • удаляйте ненужные приложения, не захламляйте смартфон.
  • отключите режиме отладки в настройках
  • не устанавливайте неофициальные прошивки
  • не передавайте свой смартфон мало знакомым людям, не оставляйте их в серсвисах, если в памяти телефона содержится конфиденциальная информация
Всем спасибо!
Берегите себя, своих близких и свои гаджеты!
android Android Open Source Project encrypt Java knox malware mobile security smartphone андроид безопасность телефон
Alt text

Цифровые следы - ваша слабость, и хакеры это знают.

Подпишитесь и узнайте, как их замести!

Иван Пискунов

Персональный блог Ивана Пискунова о безопасности, реверс инжениринге и ИТ-менеджменте. Аналитика, новости, обзоры, события