Презентация

Download Report

Transcript Презентация

Пиратство и другие угрозы для
Android-приложений. Как
защищаться?
Противостояние добрых и злых сил. Как спасти Android-приложения
от различных угроз?
Иван Кинаш, Licel, 2014, Москва
О нас
• Иван Кинаш – генеральный директор и со-основатель компании
Licel
• Licel создает решения для защиты интеллектуальной
собственности от кражи и нелегального использования для
платформ Android и Java
• Наш проект jCardSim завоевал награду Duke’s Choice Award
2013, Java One, San Francisco
Отчет
• Mobile Techworld Report: “Looking at a total of 230 apps – the top
100 paid apps and top 15 free apps for Android and iOS – Arxan
found that 100 percent of the top paid apps on Android and 56
percent on iOS were being impersonated in a compromised form on
grey markets.”
• http://goo.gl/mW1WxZ
Краткие факты о модели безопасности
Android
• Нет стандартного EULA (Google Play)
• APK хранятся на устройстве и доступны даже без root’а
• APK подписываются сертификатом разработчика или
публикующей компании
• Есть система привилегий. Конечные пользователи не
воспринимают всерьез требования приложений, а порой,
просто не имеют выбора
Краткие факты о модели безопасности
Android
• Подпись должна гарантировать целостность приложений
(пассивная защита). На деле – не работает
• Нужно 2 минуты, чтобы переподписать приложение своим
сертификатом
• После этого, можно выкладывать чужое приложение на серые
маркеты, p2p, варезные сайты и т.п. Или даже на тот же
маркет, где есть (или было)
Структура APK
AndroidManifest.xml
(name, version, access rights,
referenced libs)
META-INF/
(signatures)
assets/
(assets)
resources.arsc
(compiled
resources)
lib/
(native libs)
classes.dex
(dalvik
bytecode)
res/
(resources)
Dalvik Bytecode
• Защищен ли он?
• Как сложно reverse-engineer’ить?
Нет, не сложно, совсем.
Пример
• Представим, что у нас есть приложение с рекламой
• Что злоумышленник должен сделать, чтобы крутить свою
рекламу в вашем приложении?
• Apktool disassemble -> изменить ad id -> Apktool assemble ->
подпись -> zipalign -> распространение (p2p, grey markets, official
markets, warez sites) = 10 минут
• Если используются обфускаторы с, так называемой, name
obfuscation функциональностью, нужна будет еще одна минута
Демо
Угрозы
•
•
•
•
Клонирование приложений
Кража чувствительной информации
Взлом систем лицензирования
Реверс-инжиниринг
Клонирование приложений
• Нелегальная публикация в серых магазинах
 Снижение дохода от продаж приложения
• Перенаправление доходов от рекламы и/или In-App покупок
 Потеря дохода от вышеупомянутых источников
• Внедрение вредоносного кода
 Утрата репутации и вред пользователю
Кража чувствительной информации
• Данные пользователя
–
–
–
Логины, пароли, ключи, данные
банковских карт…
Приватная информация из социальных
сетей, мессенджеров, почтовых
клиентов и т.п.
Местоположение
• Данные приложений
–
–
–
•
Уникальные ресурсы (видео, звук,
графика, …)
Информация из встроенных БД
Алгоритмы, бизнес логика
Корпоративные данные
–
БД, Конфиденциальные документы
Взлом систем лицензирования. Google Play
LVL
• Основной сервис лицензирования в Google Play
• Основан на ассиметричной криптографии
–
Секретные ключи на сервере лицензирования, публичные – в коде
приложения
Автоматическая утилита для снятия лицензирования: AntiLVL
(+ Amazon DRM, Verizon DRM, Debbugable и Debbuger connected
хуки, свои правила и многое другое)
Реверс-инжиниринг
• Порой безобидно
• Анализ «слабых» и критичных мест, чтобы найти уязвимости
• Анализ внутренней логики приложений
– Банковский OTP-токен, http://goo.gl/0Dauve
Средства для реверса: ApkTool, Androguard, Dex2jar
Реверс-инжинирим токен моего банка
• Оригинальное приложение для Android, генерирующее OTP
• После декомпиляции
– Определен алгоритм генерации паролей – TOTP
TOTP = HOTP(SecretKey, TimeCounter)
– Извлечен секретный ключ
– Сделан клон на Arduino 
Реверс-инжинирим токен моего банка
Стандартные техники защиты и
лицензирования
• Name Obfuscation (в частности ProGuard)
• Системы лицензирования, предоставляемые магазинами
приложений
–
–
Google Play Licensing
Amazon DRM
• Пользовательские native-библиотеки для проверки лицензий,
шифрование строк и классов
• Server-side computation
• Математические пазлы (Mathematical Jigsaw Puzzle Obfuscation,
держите ProGuard с включенной оптимизацией подальше)
Полезно, но не работает
Все это не работает без…
Активной и надежной системы контроля
целостности приложения
Популярные и общедоступные средства для
взлома
• Автоматические
– AntiLVL
• Анализ и модификация
– ApkTool
– Androlib
– Dex2Jar
– JD-GUI/JEB/…
• Текстовый редактор и grep 
Продвинутые методы защиты
•
•
•
•
•
Шифрование строк (WhiteBoxCrypto)
Сокрытие вызовов API
Шифрование классов
Шифрование ресурсов
Активная система контроля целостности приложения
Цель
• Реверс-инжиниринг байткода (даже если удалось сделать его
дамп) должен быть на сколько тяжелым, на сколько это
возможно: строки зашифрованы, ценные алгоритмы и вызовы
API скрыты
• Хорошая система контроля целостности приложения, чтобы
предотвратить злонамеренную модификацию и последующую
перепаковку приложения
• Уникальные ресурсы зашифрованы
Схема Защиты
APK
Bytecode
• String Encryption
• Class Encryption
• Hide API calls
Resources
• Resource
encryption
Signature
• Active Integrity Protection (Repackaging
protection)
Если в приложении
есть сетевая
функциональность,
можно менять
параметры
протокола
взаимодействия от
версии к версии
Несколько важных советов
• Если вы разрабатываете
банковское/финансовое/корпоративное/безопасное приложение:
• Device fingerprint
• Device-related OTP через второй коммуникационный канал (SMS)
• Защищенные протоколы и сильная криптография
• Чувствительная информация должна быть зашифрована, если это БД –
SQLCipher, ключи должны быть зашифрованы
• Баланс между защищенностью и производительностью
• Думайте о защите и защищайтесь заранее, ДО ДНЯ РЕЛИЗА
Когда все хорошо
После того, как приложение надежно защищено, можно подумать над
следующими проверками:
•Проверка сертификата приложения
•Проверка на debug-mode
•Проверка на root’а
•Проверка на запуск в эмуляторе
Вывод
• К сожалению, никто не сможет гарантировать вам 100% вероятности,
что приложение не будет взломано
• Актуальность проблемы растет с каждым днем, вместе с ростом рынка
Android-приложений
• Стандартные методы уже никак не противостоят текущим техникам и
инструментам злоумышленников, например, даже script-kiddies смогут
поменять учетные данные рекламной площадки
• Должны быть применены несколько технологий защиты
• Контроль целостности – одна из самых важных вещей
Вывод №2
• Если вы применили технологии защиты с умом – 90% потенциальных
хакеров либо не смогут справиться с защитой, либо им будет
неинетерсно
• Не у каждого пользователя rooted-устройство
• Google? Jelly Bean Encrypted Containers? Secured boot-loader?
Контакты
E-mail: [email protected]
Twitter: @dexprotector
Web: http://dexprotector.com, http://licel.ru