Как атакуют мобильные приложения

Николай Анисеня, руководитель группы исследований безопасности мобильных приложений Positive Technologies. Ольга Зиненко, аналитик информационной безопасности Positive Technologies.
Николай Анисеня, руководитель группы исследований безопасности мобильных приложений Positive Technologies. Ольга Зиненко, аналитик информационной безопасности Positive Technologies.

Современные мобильные устройства чрезвычайно сложны и многофункциональны, что позволяет нам держать на кончиках пальцев практически все наши дела. Многие уже не представляют себе, как можно провести день без смартфона: «В нем вся моя жизнь!..»

Однако такая сложность создает среди прочего обширную поверхность атаки. Для взлома вашего смартфона может быть использовано буквально все — от Wi-Fi и Bluetooth до динамика и микрофона.

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

Как работают мобильные устройства

Работа мобильных устройств — смартфонов или планшетов — во многом схожа с работой настольных компьютеров и ноутбуков. Почти всем на устройстве управляет операционная система. Имеет смысл рассмотреть только самые популярные — Android и iOS. Операционной системе, помимо памяти и процессора, доступны периферийные устройства: камера, микрофон, модуль Wi-Fi и прочее. Также на некоторых современных устройствах присутствуют изолированные от основной ОС компоненты, используемые для биометрической аутентификации, хранения криптографических ключей и выполнения криптографических операций, такие как secure enclave, secure element, trusted execution environment. Наконец, ОС обеспечивает среду функционирования клиентских приложений, которые устанавливает пользователь.

Как работают мобильные приложения

В отличие от десктопных систем, в Android и iOS каждое приложение изолировано. В Android каждое приложение представлено отдельным пользователем, а в iOS приложения помещены в контейнеры. Доступ к памяти между разными приложениями запрещен на уровне ОС. Как в Android, так и в iOS разные приложения в стандартных условиях не могут иметь доступа к хранимым данным друг друга. Разработчики должны явно реализовывать механизмы для доступа других приложений к собственным данным, например для передачи PDF-документа в мессенджер или для передачи изображения в фоторедактор. В Android есть особый каталог с общим доступом — /sdcard. Любое приложение может записывать, читать и изменять любые файлы в этом каталоге.

Сценарии атак с физическим доступом

Физический доступ к мобильному устройству злоумышленники могут получить, просто отняв или подобрав устройство. Также под подозрение могут попасть «левые» сервисы починки смартфонов.

Что может злоумышленник при физическом доступе к устройству

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

Злоумышленник может пойти дальше и попытаться повысить свои привилегии на устройстве — получить права root на Android или выполнить jailbreak в iOS. Некоторые эксплойты позволяют злоумышленнику, не зная ПИН-кода устройства, получить такие привилегии, а значит — получить неограниченный доступ ко всему смартфону, ко всей хранимой информации. В некоторых случаях root или jailbreak позволят злоумышленнику войти в ваш банковский аккаунт, даже если вход был защищен ПИН-кодом или биометрией.

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

  • наличие прав root (для Android-смартфонов) или jailbreak (для iOS-смартфонов);
  • отсутствие ПИН-кода;
  • включенная отладка по USB (для Android-смартфонов);
  • включенный голосовой помощник;
  • включенные уведомления на заблокированном экране.

Как защититься

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

Сценарии атак с использованием вредоносного приложения

Как вредоносы попадают на устройство

Есть несколько источников троянских приложений:

  • Официальные магазины — Google Play и App Store. Редко, но даже в официальных маркетах можно найти вредоносное приложение, которое может нанести ущерб вам и вашим данным. Часто такие приложения стараются привлекать внимание с помощью громких названий типа Super Battery, Turbo Browser или Virus Cleaner 2020.
  • Неофициальные сайты и магазины приложений (third-party app store). Для Android-устройств достаточно разрешить установку из недоверенных источников, а затем скачать APK-файл приложения с сайта. Для iOS-устройств достаточно перейти по ссылке в браузере Safari, подтвердить установку сертификата на устройство, после чего любое приложение в неофициальном магазине станет доступно для установки прямо из браузера. Этим способом может воспользоваться вредоносный Wi-Fi-роутер, чтобы вынудить пользователя установить приложение, прежде чем ему будет предоставлен доступ в сеть.
  • Пользователь может установить скачанное из интернета приложение с помощью USB-подключения. Для этого он может использовать команду adb install для Android-смартфона или утилиту Cydia Impactor совместно со своей учетной записью iCloud — для iOS-устройства. Нередко таким образом на устройства попадают трояны, обещающие получение прав root или jailbreak.
  • Для Android-устройств доступна возможность загрузки части приложения при переходе по ссылке (технология Google Play Instant). В этом случае вредоносное приложение, если оно осталось незамеченным в Google Play, сможет попасть на устройство в один клик, хотя и будет иметь чуть меньшие привилегии по сравнению с полноценными приложениями.

Возможности вредоносов на устройстве

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

Также вредоносные приложения получают возможность взаимодействовать с другими установленными приложениями через механизмы межпроцессного взаимодействия (IPC/XPC). Если установленные приложения содержат уязвимости, которые можно эксплуатировать через такое взаимодействие, вредоносное приложение сможет этим воспользоваться. Это особенно актуально для Android-устройств.

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

Как защититься

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

Атаки в канале связи

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

Уязвимости приложений

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

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

Даже если проверка сертификатов происходит корректно, остается другая лазейка: под каким-нибудь предлогом вынудить жертву установить на свое устройство сертификат злоумышленника как доверенный. После этого клиентское приложение может не заметить подмены сертификата при установке защищенного соединения. Для того чтобы замечать такую подмену, в приложение зашивается сертификат сервера, это называется certificate pinning. Однако данная технология может использоваться не во всех компонентах, требующих защищенного соединения с сервером. В результате злоумышленник может получить возможность контролировать весь трафик либо его часть между клиентским приложением и сервером. Кстати, в 29% мобильных приложений в 2019 году была некорректно реализована либо отсутствовала технология certificate pinning.

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

Возможности атакующего

Контролируя трафик между клиентским приложением и сервером, атакующий имеет следующие возможности:

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

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

Как защититься

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

Удаленные атаки

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

Во многих приложениях реализована функция обработки специальных ссылок, например myapp://. Такие ссылки называются deep links, и работают они как на устройствах с Android, так и на iOS-устройствах. Переход по такой ссылке в браузере, почтовом приложении или мессенджере может спровоцировать открытие того приложения, которое умеет такие ссылки обрабатывать. Вся ссылка целиком, включая параметры, будет передана приложению-обработчику. Если обработчик ссылки имеет уязвимости, то для их эксплуатации этого будет достаточно. По нашим данным, треть мобильных приложений некорректно обрабатывают ссылки. Результат эксплуатации сильно зависит от логики приложения: это может быть как относительно безобидное действие от имени пользователя, так и получение полного доступа к его аккаунту.

Аналогичным образом в мобильных устройствах могут обрабатываться более привычные ссылки http:// и https://. Они могут быть переданы приложению, не являющемуся браузером, причем в некоторых случаях это может происходить без подтверждения со стороны пользователя.

Для Android-устройств переход по ссылке может спровоцировать загрузку instant app, что делает возможной удаленную эксплуатацию уязвимостей, связанных с установкой вредоносного приложения.

Однако в мобильных приложениях встречаются не только уязвимости, связанные с обработкой ссылок. Конечно же, все сильно зависит от логики, которую реализует мобильное приложение. В некоторых случаях от пользователя не требуется никаких действий — так работают zero-click-эксплойты. Примером уязвимости, для которой был разработан подобный эксплойт, может служить уязвимость WhatsApp, в которой функциональность звонков использовалась для загрузки и установки вредоносов на устройство жертвы.

Как защититься

Своевременная установка обновлений приложений и ОС — единственный в данном случае способ защититься.

Атаки на серверную часть

Злоумышленники могут атаковать и серверную часть мобильного приложения. В этом случае им совершенно не нужен доступ к устройствам пользователей. Зачастую серверная часть мобильного приложения ничем не отличается от веб-приложения. Обычно серверы мобильных приложений устроены даже проще и представляют собой JSON API или XML API, редко работают с HTML-разметкой и JavaScript. Для атаки на такой сервер злоумышленнику, как правило, достаточно изучить, как происходит взаимодействие клиентского приложения с сервером, и уже исходя из собранной информации о точках входа попытаться видоизменять запросы с целью обнаружить и эксплуатировать уязвимости.

Если сравнивать уязвимости веб-приложений и серверных частей мобильных приложений, то мы видим, что в мобильных приложениях преобладают недостаточная защита от подбора учетных данных (24% веб-приложений и 58% серверов мобильных приложений содержат такие уязвимости) и ошибки бизнес-логики (2% веб-приложений и 33% серверов мобильных приложений).

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

Как защититься

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

Выводы и рекомендации

Как мы видим, злоумышленники могут атаковать мобильные приложения и устройства по многим направлениям. При разработке приложения необходимо проверять возможность осуществления каждого из описанных сценариев атак. Угрозы и уязвимости необходимо учитывать во время разработки, а некоторые необходимые меры защиты — принимать еще на стадии проектирования. В особенности это касается финансовых приложений, личных кабинетов, мессенджеров, а также прочих приложений, работающих с персональными данными, банковскими картами, личной или рабочей перепиской и другой подобной информацией. Хорошей рекомендацией для разработчиков будет внедрение практики безопасной разработки (secure software development lifecycle, SSDL) и регулярного анализа защищенности приложения. Такие меры не только помогут своевременно выявить потенциальные угрозы, но и повысят уровень знаний разработчиков в вопросах безопасности и, как следствие, уровень защищенности разрабатываемых приложений.

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

· не устанавливать сомнительные приложения и приложения из недоверенных источников;

· своевременно обновлять приложения и ОС устройства;

· не устанавливать недоверенные сертификаты;

· не подключаться к подозрительным точкам Wi-Fi, а также к прокси, VPN или к сомнительным устройствам по USB;

· не переходить по подозрительным ссылкам в браузере, мессенджерах и соцсетях;

· не получать права root и не выполнять jailbreak устройств;

· не отключать блокировку с помощью ПИН-кода;

· в приложениях по возможности использовать аутентификацию по логину и паролю вместо упрощенной (по ПИН-коду или с использованием биометрии);

· использовать сложные пароли.

1
Начать дискуссию