Уважаемые и многолюбимые читатели, предлагаем вам ознакомиться с крайне интересным материалом нашего аналитика Александра Горячева, написанным специально для Habrahabr. Статья посвящена обзору существующих уязвимостей крайне популярной мобильной платформы Android, а также тому, как можно было бы сделать ее более безопасной. Комментарии и собственные соображения по теме приветствуются.
ОС Android за небольшой промежуток времени стала одной из самых популярных систем для всевозможных мобильных устройств. Ее используют как крупные производители с мировым именем, так и небольшие компании, поэтому ценовой разброс готовой продукции, такой как смартфоны и планшетные компьютеры, позволяет удовлетворить потребности потребителей практически на сто процентов. Именно широкий ассортимент, гибкое ценообразование и поддержка платформы со стороны внушительного числа производителей стали одними из главных факторов успеха и позволили системе занять нынешнее положение на рынке.
Однако такое огромное число пользователей просто не могло остаться без внимания со стороны злоумышленников. Построив на разработке и распространении вредоносных программ целую индустрию со своими законами, они стали крайне неравнодушны к любым источникам легкой наживы.
Как и любая другая система, Android, к сожалению, не может быть полностью безопасной, так как люди, участвующие в разработке, никогда не смогут создать идеальный код. Тем не менее, разработчики прикладывают усилия для того, чтобы в конечном счете потребители получили качественный продукт. На примере Android мы можем наблюдать очередное подтверждение тому, что чем популярнее продукт, тем больше он подвержен атакам злоумышленников. Далее в этом материале мы подробно рассмотрим, каким угрозам подвержена эта операционная система и, как следствие, ее пользователи.
Вирусы для Android? Нет, не слышал!
Когда в августе 2010 года была обнаружена первая вредоносная программа для ОС Android, многие пользователи восприняли эту новость как некую попытку антивирусных компаний запугать их и вытянуть деньги за свои продукты. С течением времени число угроз для Android продолжало расти. С момента появления первого троянца прошло уже более полутора лет, но, несмотря на то, что в конце 2011 года количество вредоносных программ для этой платформы увеличилось как минимум в 20 раз, большое число пользователей до сих пор скептически относится к обсуждаемой проблеме.
Итак, какие вредоносные программы для ОС Android существуют и чем они опасны?
Список уверенно возглавляют СМС-троянцы (семейство Android.SmsSend). Целью таких программ является отправка сообщений с повышенной тарификацией на короткие номера. Часть стоимости этих сообщений поступает в карман злоумышленников, обогащая их. Подобные программы практически ничем не отличаются друг от друга, кроме как незначительными изменениями в интерфейсе и короткими номерами, на которые будет выполняться отправка сообщений. Чаще всего они распространяются под видом популярных приложений и игр, таких как Opera Mini, ICQ, Skype, Angry Birds и т. п., при этом используется соответствующая иконка.
Далее по списку следуют более «тяжеловесные» троянцы. К ним относятся, например, Android.Gongfu, Android.Wukong, Android.DreamExploid, Android.Geinimi, Android.Spy и пр. В зависимости от семейства, эти вредоносные программы обладают таким функционалом, как, например, сбор конфиденциальной информации пользователя, добавление закладок в браузер, выполнение команд, поступающих от злоумышленников (функции бэкдора и бота), отправка СМС-сообщений, установка других приложений и т. п. Чтобы реализовать возможность установки приложений, не вызывая подозрений со стороны пользователя, троянцам необходимы права root (права, с которыми работает ядро системы). Для этого ими используются различные способы, о которых более подробно будет рассказано несколько позднее.
Немаловажно также отметить коммерческие программы-шпионы. Эти приложения используются для слежки за пользователями. В их арсенал, в зависимости от класса, стоимости и производителя, входят такие функции, как перехват входящих и исходящих СМС-сообщений и звонков, аудиозапись окружения, отслеживание координат, сбор статистических данных из браузера (например, закладки, история посещений) и т. п. Несмотря на то, что большинство таких программ требуют первоначальной настройки и ручной установки, они представляют существенную угрозу, так как после внедрения в устройство не создают значок среди прочих установленных программ, и обнаружить их присутствие можно лишь по косвенным признакам, в том числе зайдя в системное меню со списком приложений. Если вы внимательно следите за установленными программами и знаете названия легальных приложений, то вполне успешно сможете распознать незваного гостя, но рядовой пользователь, скорее всего, ничего не заподозрит.
Прочие вредоносные программы могут сочетать в себе различные функции, описанные выше.
Отдельно стоит сказать о рекламных модулях, используемых создателями программ и игр и применяемых для заработка. Когда пользователь нажимает на демонстрируемое рекламное сообщение и переходит к рекламируемому товару или услуге, разработчик приложения получает определенную денежную сумму. В большинстве случаев такие модули не представляют опасности для пользователя, однако среди них встречаются и менее безобидные. Например, рекламные сообщения могут появляться не внутри приложений, а в статусной строке устройства. Такие сообщения легко можно принять за системные, чем и пользуются злоумышленники, применяя для рекламы фразы типа «Требуется срочное обновление системы» (почти наверняка вместо обновления вы получите очередного троянца).
Ряд модулей ведет себя слишком агрессивно, собирая конфиденциальную информацию пользователей (IMEI, номер телефона, название используемого оператора и т. п.), а также добавляя ярлыки на рабочий стол и закладки в браузер. Приложения, использующие подобные модули, детектируются как рекламные программы или Adware (например, Adware.Airpush, Adware.Leadbolt, Adware.Startapp и пр.).
Уязвимости операционной системы Android и ПО, которое в ней используется
Архитектура Android построена таким образом, что все приложения работают с ограниченными правами и не имеют доступа к защищенным данным других приложений.
Как уже отмечалось выше, Android — не идеальная система, поэтому неудивительно, что в ней встречаются уязвимости. Одна из главных проблем, с которыми могут столкнуться пользователи, — уязвимости системы, позволяющие получить права 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-код и получить доступ к защищенным данным браузера.
Если разработчики прикладного ПО не уделяют достаточное внимание безопасности при работе с данными пользователей, эти данные могут быть скомпрометированы. Атаке могут подвергаться хранящиеся в незащищенном виде регистрационные данные, пароли от банковских карт и прочая конфиденциальная информация. В случае если при работе приложения эти же данные передаются по сети напрямую в незашифрованном виде, то они также потенциально подвержены компрометации со стороны злоумышленников. Одним из заметных прецедентов подобной проблемы была ситуация с приложением Skype, когда данные пользователей, включая информацию профиля, контакты и историю переписки, хранились в незашифрованном виде и при желании могли быть легко получены злоумышленниками.
Открытость
Открытость системы Android заключается в нескольких факторах. Во-первых, это доступность кода, который может быть использован, модифицирован и улучшен разработчиками в зависимости от их потребностей и идей. С одной стороны, для производителей устройств и разработчиков это несомненный плюс, с другой стороны, это дает возможность не только исследователям, но и злоумышленникам более продуктивно находить уязвимости и ошибки.
Во-вторых, существует возможность установить приложения как из официального каталога приложений Google Play (ранее назывался Android Market), так и из любого другого доступного источника.
В-третьих, создание приложений является практически общедоступным, так как необходимо заплатить всего $25 в случае, если разработчик желает размещать свои продукты в официальном каталоге, а для распространения программ вне его материальные затраты вообще не нужны.
В-четвертых, размещаемые в Google Play программы до недавнего времени не подвергались предварительной проверке или тестированию со стороны Google. Совсем недавно была анонсирована система Bouncer, которая должна проверять приложения, размещенные в каталоге Play, на наличие вредоносных функций; проверке также будут подвергаться учетные записи разработчиков. Несомненно, это должно в какой-то степени увеличить безопасность, однако все же не решает проблему, так как создатели вредоносных программ могут применять различные ухищрения для успешного обхода системы Bouncer.
Фрагментация платформы
Из-за того, что систему Android использует большое количество производителей мобильных устройств, и при этом не существует определенных рамок по их техническим характеристикам, потребителям доступны устройства с самым различным функционалом. По мере выхода очередного обновления системы в нее добавляются не только новые функции, но и закрываются обнаруженные ранее уязвимости. Производители на свое усмотрение выпускают соответствующие версии обновлений. Иногда случается так, что аппарат, еще недавно бывший флагманом, не получает новую версию ОС или программного обеспечения и, соответственно, остается незащищенным от потенциальных угроз. Причиной этому могут быть как экономические соображения (адаптация обновления потребует слишком больших финансовых вложений, или же производитель просто хочет заработать на продажах новых устройств), так и чисто технические (обновление не сможет корректно функционировать на устаревшем аппаратном обеспечении, либо для установки не хватит физической памяти устройства).
Человеческий фактор
Каким бы ни был уровень защищенности системы, далеко не последнюю роль в обеспечении безопасности играет человеческий фактор. В качестве примера можно привести элементы социальной инженерии, которую используют злоумышленники, например, уже упоминавшийся ранее способ распространения вредоносных программ через рекламу в приложениях с использованием громких фраз («Требуется срочное обновление системы», «Ваша версия браузера устарела», «Немедленно установите обновление Skype» и т. п.). То же самое можно сказать и о случаях распространения вредоносных программ при помощи спам-рассылок по СМС (таким способом, например, распространялся бэкдор Android.Crusewind).
Еще одним элементом социальной инженерии служит игра на стремлении многих людей к чему-то бесплатному («Новая версия Need for Speed», «Обновление Asphalt бесплатно!»), а также использование тематики «для взрослых» («Супердевушки, качай здесь!», «Коллекция фото обнаженной красавицы» и т. п.).
Кроме этого, важна и внимательность со стороны самих пользователей. Очень часто злоумышленники подделывают известные сайты, имитируя их оформление, структуру или же пытаются создать точную копию. На первый взгляд, подобный сайт может выглядеть точь-в-точь как настоящий, однако при более внимательном изучении можно будет заметить подвох. Например, в адресной строке будет указан сайт, полностью отличный от оригинала, либо имеющий небольшие искажения (например, vkontlakte.com, vkontakne.b1.ru, androldmarket.com), либо на нем не будет работать какой-либо привычный элемент, либо вовсе будет отсутствовать что-то знакомое.
Приложения также могут подделываться, и невнимательный пользователь с большой долей вероятности поделится со злоумышленниками своими персональными данными (логин и пароль от социальной сети, данные кредитной карты и т. п.). Вариантов может быть много.
Выводы
Итак, мы рассмотрели наиболее распространенные угрозы, с которыми могут столкнуться пользователи устройств под управлением операционной системы Android. Теперь можно подвести итог и сделать некоторые выводы.
Одной из главных проблем безопасности при работе с ОС Android, прежде всего, является человеческий фактор. Какой бы защищенной ни была операционная система, беспечность, невнимательность, самоуверенность и простая неосведомленность рано или поздно подвергнут опасности обладателя умного устройства. Например, уверенность пользователя в том, что ему ничего не угрожает, заставляет его игнорировать средства безопасности, такие как антивирусные программы. В случае применения злоумышленниками заманчивых предложений, например, загрузки бесплатных версий платных приложений и игр, используется стремление людей получить выгоду без потерь для себя. Когда подделывается известный сайт, игра или приложение, а пользователь при этом неопытен, он может и не осознавать, что подвергается какому-либо риску, устанавливая ту или иную программу или вводя свою конфиденциальную информацию.
Следующая важная проблема косвенно связана с первой и касается программной уязвимости как самой операционной системы, так и прикладного ПО. Android создают люди, которые по своей природе могут совершать ошибки. Эти ошибки могут быть никогда не замечены, а могут проявиться в самый неподходящий момент. Обнаруженная ошибка в коде берется на вооружение злоумышленниками, если это принесет им определенную выгоду. Таким образом, пользователи сталкиваются, например, с вредоносными программами, использующими root-эксплойты для повышения привилегий в системе. Большинство таких эксплойтов изначально задумывались как подспорье более опытным пользователям, однако быстро перекочевали в арсенал киберпреступников.
Несмотря на усилия, прикладываемые разработчиками Android для обеспечения максимальной безопасности системы и пользователей, находятся способы обойти защитные барьеры. Помимо root-эксплойтов, примером может служить подпись вредоносных приложений сертификатом безопасности сторонних прошивок, что позволяет таким программам работать с правами системы на соответствующем образе ОС. Система разрешений также несовершенна. Описанный ранее случай создания приложения, не требующего вообще никаких разрешений для своей работы, также является примером того, что ошибки совершаются, и всякую защиту можно обойти.
Если разработчики прикладного ПО не уделяют должного внимания безопасности, это может сказаться на уровне защиты. Случай со Skype это подтвердил. Подобные бреши могут встречаться и в других приложениях, что никак нельзя назвать радостной новостью для пользователей.
Несмотря на позитивные аспекты принятой Google политики открытости платформы, существуют и отрицательные моменты. Во-первых, увеличивается вероятность обнаружения уязвимостей, которые могут использовать злоумышленники. Во-вторых, весьма либеральное отношение к процессу создания приложений и широким возможностям по их установке конечными пользователями также эксплуатируется предприимчивыми киберпреступниками. Введение компанией Google системы Bouncer является шагом к увеличению безопасности без кардинальных изменений в политике открытости экосистемы Android, однако не может являться решением всех проблем.
Следующим важным недостатком ОС Android является ее фрагментация. Существование большого числа производителей устройств и различных версий системы создает определенные сложности, так как пользователи не всегда могут получить необходимое обновление, что существенно сказывается на безопасности. Стремление некоторых производителей выпускать новые модели как можно чаще может даже заставить некоторых потребителей отказаться от дальнейшего использования устройств с Android. Это может быть связано как с тем, что они не могут получить желаемое обновление системы, так и с тем, что характеристики устройств после выхода новых моделей успевают значительно устареть и уже не отвечают требованиям пользователей.
И, конечно же, опасность представляют вредоносные программы. Используя вышеперечисленные особенности Android, злоумышленники быстро адаптировались к новой структуре рынка мобильных устройств и начали осваивать все возможные и наиболее прибыльные для них схемы. В своих темных делах они используют СМС-троянцев для получения быстрой и легкой прибыли; использование троянцев, ворующих конфиденциальные данные пользователей, также позволяет им получать заработок, например, от перепродажи сведений электронной почты, логинов и паролей от различных социальных сетей и прочих выгодных для них сервисов. Применение социальной инженерии тоже вносит существенный вклад в их процветание.
Не стоит забывать и о производителях коммерческих шпионских программ, которые продают свои решения за приличные суммы. На первый взгляд, цены могут показаться весьма высокими, однако выгода, которую могут получить потенциальные клиенты, может быть в разы выше.
Что в будущем?
С определенной долей уверенности можно сказать, что в ближайшей перспективе владельцам устройств под управлением Android продолжат угрожать вредоносные программы, в особенности СМС-троянцы. Троянцы-шпионы и троянцы-похитители, собирающие конфиденциальную информацию, также не останутся в стороне. В дальнейшем будут появляться и вредоносные программы, сочетающие в себе различные функции, в том числе использующие root-эксплойты. Также возможны случаи использования обнаруженных уязвимостей в популярных приложениях.
Не исключена организация крупных ботнетов, способных выполнять атаки на интернет-ресурсы либо осуществлять массовую рассылку спама. Возможно увеличение случаев заражения вредоносными программами тех пользователей, которые используют сторонние и неофициальные прошивки. Такие атаки могут носить и локальный, таргетированный характер, когда злоумышленниками будут выбираться наиболее интересные для них версии прошивок.
Вероятно появление уже знакомых пользователям Windows троянцев-блокировщиков и вымогателей. Атаки подобных вредоносных программ могут быть распространены, например, среди владельцев устройств с root-правами, однако вполне возможно и то, что эти троянцы будут сами выполнять необходимые действия для повышения привилегий в системе либо побуждать на это пользователя, используя приемы социальной инженерии.
Помимо «классических» троянцев-шпионов, не исключены случаи выявления т. н. аналитических приложений наподобие Carrier IQ. Такие программы могут использоваться производителями устройств и операторами связи для сбора статистической и аналитической информации, однако, как показал случай с Carrier IQ, собираемая информация может быть чрезмерной и напрямую угрожать конфиденциальности пользователей. Производители должны как минимум информировать потребителей о наличии таких приложений и особенностях их работы. Тем не менее, возможны случаи, когда сами производители не до конца будут знать, насколько собираемая информация отвечает требованиям безопасности.
Так или иначе, одним из главных векторов атаки будет оставаться социальная инженерия. Немаловажную роль в обеспечении безопасности при этом должны играть внимательность и осторожность пользователей. Надлежащий уровень обеспечения безопасности должен исходить и от производителей мобильных устройств, а также от поставщиков прикладного ПО. Им необходимо выпускать обновления системы и приложений как можно скорее, по мере обнаружения уязвимостей. Также необходимо обеспечивать должный уровень конфиденциальности пользователей и защиты их персональных сведений.
В направлении по усилению безопасности Android все еще возможны улучшения. Например, функционал применяемой системы разрешений можно расширить, добавив дополнительную степень контроля приложений. Сейчас пользователи могут увидеть, какие функции может задействовать то или иное приложение, лишь во время установки и при открытии соответствующей информации в системном меню устройства. Если же будет внедрена система, отображающая необходимость выполнения программами того или иного действия, а также позволяющая пользователю самому решать, какие возможности предоставить программе, это может повысить уровень безопасности.
Автор: doctorweb