Юрий Леонычев «Безопасность мобильных приложений для...
description
Transcript of Юрий Леонычев «Безопасность мобильных приложений для...
Юрий ЛеонычевАдминистратор информационной безопасности
Безопасность приложений для Android
Безопасность мобильных устройств
4
5
Характерные черты
• Миниатюрность
• Массовость
• Универсальность
• Содержат массу важных для вас данных
• Постоянно в сети GPRS/3G/EDGE/LTE/WiFi
6
Новые риски. Миниатюрность
Легко потерять
7
Новые риски. Массовость
{Много устройств} x {Беспечность пользователей} x
{Быстрая монетизация} =
PROFIT!!!
8
Новые риски. Универсальность
Телефон
Навигатор
ИгрыФото
ВидеоДиктофон
Почта
9
Новые риски. Личные данные
• Телефонная книга
• Сообщения и письма
• Фотографии и видео
• Логины, пароли, токены
• OTP-генераторы
10
Новые риски. Всегда в сети
Выход в интернет и сотовые сети в режиме
~24x7
11
Гонки на выживание
• Взрывное развитие рынка
• Несколько доминирующих платформ
• Десятки производителей
• Миллионы приложений
• Миллиарды устройств
Безопасность внутри Andorid
13
Ограничение доступа. Блокировка экрана
• PIN
• Пароль
• Биометрия
• Росчерк
14
Модель безопасности для приложений
• Уникальный UID (почти всегда)
• Отдельный процесс (почти всегда)
• Изолированная виртуальная машина
• Нединамические привилегии
15
Защита файловой системы
• Использование системных разделов в режим read-only
• Расстановка привилегий и прав в файловых системах
• Шифрование разделов (Android 3.x)
16
Init.rc для Android 4.x:
...# create data/gps for GPS demon mkdir /data/gps 771 gps system chown gps system /data/gps chown gps root /sys/class/sec/gps/GPS_PWR_EN/value chmod 660 /sys/class/sec/gps/GPS_PWR_EN/value
# for sensor control chown system input /sys/class/input/input0/enable chown system input /sys/class/input/input0/delay chown system input /sys/class/input/input0/wake chown system input /sys/class/input/input0/data...
Пример init-скрипта
17
Часть дампа /system/etc/security/cacerts.bks для Android 4.x:
...
Alias name: 123Creation date: 30.08.2011Entry type: trustedCertEntry
Owner: C=JP,O=Japanese Government,OU=ApplicationCAIssuer: C=JP,O=Japanese Government,OU=ApplicationCASerial number: 31Valid from: Wed Dec 12 18:00:00 MSK 2007 until: Tue Dec 12 19:00:00 MSK 2017
...
Хранилище сертификатов
18
Привилегии — это удобно
Важные вызовы API требуют специальных разрешений:
• Доступ к камере
• Геолокация
• Доступ к Bluetooth
• Функции для работы с сообщениями
• Функции для работы с телефонией
• Функции для работы с сетями
19
Привилегии — это сложно
• Только некоторые из разрешений полностью документированы
• Четкого сопоставления API вызовов и разрешений не существует
• http://www.android-permissions.org
Пользователи и Andorid
21
Dumb way to break safety
• Jailbreaking
• Простые пароли
• Странные приложения
• Включенный режим отладки
22
Dumb way to break safety
• Приложения, скачанные из недоверенных источников
• Взломанные веб-серверы
Разработчики и Andorid
24
Как видят свое приложение разработчики?
Пользователь
Сферическое приложение в вакууме
25
А как на самом деле?
Пользователь
Сервер
Операционная система
Среда исполнения и библиотеки
Framework
Приложение1
ПриложениеN
?Злоумышленник
26
Проблемы на низком уровне
• Уязвимости ядра операционной системы
• Уязвимости драйверов и библиотек
• Уязвимости в ПО вендоров.
Пример: Samsung Galaxy S2, Galaxy S3, Galaxy Note 2, и т. д.
/dev/exynos-mem = /dev/mem
http://clck.ru/8atEO
27
Проблемы приложения
• Используются нешифрованные и общедоступные хранилища ( MODE_WORLD_*, /mnt/sdcard)
• Передача данных по открытым каналам (HTTP, AllowAllHostnameVerifier)
• Отсутствие санитизации пользовательского ввода
• Использование WebView (OWASP T10)
• Передача чувствительных данных в лог-файлы
28
Application
Проблемы приложения. Точки входа
BroadcastReceiver Service
ContentProvider
Activity
Intent
ContentResolver
Анализ контент-провайдеров
30
Сделай сам
• Попробуем проанализировать защищенность контент-провайдеров
• MWR Mercury http://labs.mwrinfosecurity.com/tools/2012/03/16/mercury/
• CPA https://github.com/tracer0tong/cpa
31
CPA
CPA
PackageManager
ProvidersPrivileges
ContentProvider Data
32 Выберем контент-провайдер
33 SQL injection
34 Содержимое таблицы
35 Другие неожиданности