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