Избегайте отключения закрепления сертификата Android

Я разрабатываю приложение для Android, которое использует закрепление сертификата (аналогично, например, this< /а>).

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

Я понимаю, что безопасность должна быть реализована на стороне сервера, но я хотел бы держать любопытные взгляды за пределами моего API. Более того, я также понимаю, что исполняемые файлы Java легко дизассемблировать и анализировать.

Как я могу усложнить этот процесс для злоумышленника, то есть сделать основные команды, такие как objection

android sslpinning disable

потерпеть неудачу и укрепить мое приложение? Я видел, что в зависимости от имен активов этот процесс также падает.

Любые идеи?


person adrpino    schedule 06.02.2019    source источник


Ответы (2)


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

Однако обычно это не вопрос «использовать фреймворк защиты или нет», а «сколько денег вы готовы заплатить, чтобы получить эту маленькую дополнительную защиту?

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

Примечание: Proguard и R8 не являются фреймворками защиты! Они только немного запутывают код, но особенно когда дело доходит до закрепления сертификата и его отключения через Frida, они не предлагают никакой защиты!

person Robert    schedule 09.02.2019
comment
Знаете ли вы какие-нибудь платные фреймворки для повышения жесткости? просто чтобы узнать немного о том, как они работают? - person adrpino; 19.02.2019
comment
Существует проект, направленный на выявление упаковщиков и обфускаторов Android: github.com/rednaga/APKiD. Глядя на используемые правила Yara, вы найдете множество названий и ссылок на такие инструменты. - person Robert; 19.02.2019

Возможное решение

Как я могу усложнить этот процесс для злоумышленника

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

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

Теперь приложение должно отправлять с каждым вызовом API токен JWT в заголовках запроса. Это позволит серверу API обслуживать запросы только тогда, когда он может проверить подпись и время истечения срока действия в токене JWT, и отклонить их, если проверка не пройдена.

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

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

Любые идеи?

Вы можете попробовать внедрить собственное решение или поискать существующее решение SAAS для аттестации мобильных приложений, например Approov(я здесь работаю), которая предоставляет SDK для нескольких платформ, включая iOS, Android, React Native и другие. Для интеграции также потребуется небольшая проверка в коде сервера API для проверки токена JWT, выданного облачной службой. Эта проверка необходима для того, чтобы сервер API мог решить, какие запросы обслуживать, а какие отклонять.

Резюме

В конце концов, решение для защиты вашего API-сервера и мобильного приложения должно быть выбрано в соответствии с ценностью того, что вы пытаетесь защитить, и юридическими требованиями для этого типа данных, такими как правила GDPR в Европе.

Пройдя лишнюю милю

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

Проект OWASP Mobile Security — 10 основных рисков

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

person Exadra37    schedule 10.05.2019