Elettracompany.com

Компьютерный справочник
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ошибка сертификата android

Как исправить ошибку подключения ssl на андроид

Ошибка сертификата при открытии сайта с уcтройства Android

Андройд ругается на ssl сертификат.

С этого поста я начинаю свой блог. Писать я особо не умею, но решил написать данный пост т.к. решил актуальную проблему, а в инете решения четкого нет. Искал решение как побороть ошибку подключения ssl на андроид, часа три и все же с миру по нитке насобирал какие-то ответы на свои вопросы, а главное решил задачу.

Итак, у меня была ситуация, когда заказчику надоел свой хостер timeweb (главная причина медленная и тупая тех поддержка) и поставил он на меня задачу найти подходящий сервер для своего интернет магазина на битрикс, главные критерии — быстрота работы и адекватная поддержка . И конечно же все остальное:

  • Размер жесткого диска 30Г+
  • Тестовый период
  • Web сервер apache + nginx – это лучшая связка под битрикс
  • Php как модуль apache – лучшая производительность
  • Доступ по SSH
  • Адекватная техническая поддержка
  • Возможность увеличивать CPU, RAM и HDD, без смены тарифа

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

Попросил для теста Виртуальный выделенный сервер VDS. Как оказалось, после теста — хороший хостинг, подходит по всем параметрам. Настроил сервер под проект, перенес сайт.

Задача осталась за малым — перенести ssl сертификат с таймвеба. Скопировал с сервера все нужные файлы, а именно

  • сертификат в формате xxx_a9e57_2bd75_1491868799_c5. 10.crt
  • и ключ к нему в формате a9e57_2bd75_2b. 2e.key

В isp manager создал новый существующий сертификат.

В нужные поля вставил сертификат и ключ. Но вот было еще поле цепочка сертификатов, которое я не заполнил.

И при нажатии на кнопку сохранить, вуаля, все применилось. Далее осталось только привязать данный сертификат по ссылке «WWW-домены» к самому домену.

И еще, как в последствии оказалось, в файле конфигурации (у меня Centos7 поэтому /etc/httpd/conf/vhosts/www-root/site.ru) прописать, чтобы обращение к сайту было по 443 порту. Просто добавить запись ServerName site.ru:443 И все заработало. Спустя как время, после проверки на усройстве с Андройд, во всех браузерах начала появляться ошибка подлинности сертификата и другие ошибки:

  • Идентификационные данные этого сайта не проверены
  • Сертификат сервера не является доверенным
  • Соединение с сервером зашифровано с помощью устаревших наборов шрифтов
  • Ваше соединение не защищено
  • Владелец неправильно настроил свой веб-сайт
  • Злоумышленники могут пытаться похитить ваши данные с сайта
  • NET::ERR_CERT_COMMON_NAME_INVALID
  • err ssl protocol error на телефоне андроид

И так далее и тому подобное.

Самое интересное, что десктопные компьютеры открывают сайт как положено, а браузеры на Android, в частности Сhrom, Yandex и Opera, выдают ошибку на ssl сертификат.

Долгое время искал ответ на вопрос.

После выполнения следующей команды в консоли сервера под Centos 7, выяснилось что проблема на стороне сервера, а не в андройде или браузее как могло показаться.

Данные ошибки свидетельствуют о том, нет сертификата удостоверяющего центра.

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

Как я решил проблему.

Открыл сайт на десктопе в на иконке замка рядом с доменом, после надписи Защищенное соединение нажал ссылку подробнее. (или F12) В открывшемся внизу консоли во вкладке Security нажал view certificate и во вкладке Путь сертификации моему взору открылись все промежуточные центры сертификации до корневого. Осталось составить цепочку из этих центров сертификации.

Значит выделяем предыдущий центр, который следует до вашего сертификата, нажимаем «Просмотр сертификата» и во вкладке «Состав» находим открытый ключ и копируем его в файл при помощи одноименной кнопки. У меня не сразу получилось это сделать, но если потыкать и подключить сообразительность минут 10 и у вас все получится.

И так мы сохраняем все сертификаты у каждого промежуточного центра вплоть до корневого.

Далее составляем цепочку сертификатов.

В поле «Цепочка сертификатов», при создании сертификата в isp manager (или ispmgr), сначала необходимо вставить сертификаты всех промежуточных центров и в конце главного корневого центра. Обратите особое внимание на то, что один идет сразу после другого с новой строки в порядке того, кем выдавался сертификат и без пробелов. Конечно не забудьте, заполнить поля «Сертификат» и «Приватный ключ»

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

Работаю © 2012 — 2020 год
Все права защищены

Навыки и умения Знание PHP5, MySQL, JS, HTML5, CSS3. Работа с технологиями XML, AJAX, GIT, SOAP Большой опыт взаимодействия с сервером. Работа с 1C-BITRIX FRIMEWORK, BITRIX24

Исправляем ошибки подключения SSL на телефонах Android

Работая в интернете, можно столкнуться с массой проблем: фейковые новости, вирусы и постоянный поток спама. Однако бывает такое, что нужный сайт, который только вчера великолепно просматривался с вашего браузера, сегодня отказывается открываться, ссылаясь на проблему с SSL-сертификатом.

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

Отладка интернет-соединения

Прежде всего стоит использовать альтернативную точку доступа: подключиться к Wi-Fi, если у вас мобильный интернет, или наоборот – отключиться от стационарной точки доступа и использовать сотового оператора.

Попробуйте загрузить другой веб-сайт. Возможно, проблема не в вашем подключении, а в неполадках на стороне провайдера или самого сайта. Если это так, проблему скорее всего уже решают, так как ошибки при соединении в этом случае будут не у вас одного.

Иногда после очередного обновления в работе приложения могут наблюдаться сбои. В этом случае стоит попробовать полностью сбросить сетевые настройки.

  • Перейдите в настройки смартфона.
  • Найдите меню «сброс и восстановление» (в разных смартфонах оно может находиться либо в самом низу списка настроек, либо в одном из подпунктов).
  • В меню «сброс и восстановление» выберите «сброс сетевых настроек».

Дата и время как виновники всех проблем

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

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

Всегда обновляйте устаревшие приложения

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

Чтобы обновить текущий софт на смартфоне, необходимо:

  • зайти в меню Play Market;
  • выбрать пункт «мои приложения и игры»;
  • нажать кнопку «обновить все».
Читать еще:  Гугл плей выдает ошибку что делать

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

Проводите регулярную очистку кэша в браузере

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

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

Для чистки кеша необходимо:

  • зайти в настройки телефона;
  • выбрать меню «приложения»;
  • найти веб-обозреватель и тапнуть по нему.

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

Антивирус мешает корректной работе в сети

Хоть антивирус и предназначен для поиска уязвимостей в системе и предотвращения несанкционированного доступа в систему, он может блокировать и текущее подключение к сети, выдавая SSL-ошибку. Есть вероятность, что в эту самую минуту он отражает атаку, поэтому ошибке стоит уделить особое внимание и отключиться от текущей сети, особенно если вы используете публичную точку доступа.

Полное восстановление устройства из бэкапа

Знайте, что иногда восстановить смартфон в первоначальное состояние куда проще, чем искать виновника проблем. Если ничего не помогло и вы решились на кардинальные меры, необходимо:

  • перейти в настройки смартфона;
  • отыскать пункт «сброс и восстановление»;
  • в подпункте выбрать «полный сброс до заводских настроек».

Нетрудно догадаться, что все ваши личные данные будут утеряны безвозвратно. Поэтому рекомендуется использовать резервную копию данных контактов и заметок. Если при первой настройке вы соглашались резервировать свои данные в Google-облако, то после сброса до заводского состояния используйте свой аккаунт для восстановления данных.

Однако это не распространяется на фото, видео и музыкальные файлы, поэтому перед форматированием скопируйте мультимедиа с памяти устройства на свой компьютер.

Вот как я исправлена ​​ошибка ненадежный сертификат в Android

В течение последних нескольких дней у меня была удивительная проблема с моим Android телефон т.е. ошибка ненадежный сертификат! Я видел ненадежный ошибку сертификата на моем Android телефона во время просмотра веб-страниц. Я попытался просмотра различных веб-сайтах даже Facebook и Twitter, но до сих пор я видел ту же ошибку, которая была, говоря «Сертификат безопасности сайта не является доверенным!». Обычно эта ошибка возникает, когда сертификат безопасности веб-сайта является истекшим сроком действия, но это не представляется возможным с большинством доверенных сайтов, таких как Facebook и Twitter. Так, я думал, что это действительно что-то происходит только со мной и начал

В течение последних нескольких дней у меня была удивительная проблема с моим Android телефон т.е. ошибка ненадежный сертификат! Я видел ненадежный ошибку сертификата на моем Android телефона во время просмотра веб-страниц. Я попытался просмотра различных веб — сайтах даже Facebook и Twitter , но до сих пор я видел ту же ошибку , которая была с надписью «Сертификат безопасности сайта не является доверенным!».

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

Это не единственная проблема. На самом деле, в то время я не смог войти Play Маркет , чтобы устанавливать приложения в моем устройстве, не может отправить электронную почту, и даже не в состоянии просматривать сервисы социальных сетей , как Facebook и Twitter. Таким образом, это было действительно стоит подумать вопрос для меня.

Много раз я думал, что это вирусная атака на мой телефон или его хакерских атак. Я думал , что кто — то пытается удаленно контролировать мой телефон и блокирует меня делать вещи на моем телефоне, и т.д. и т.п.

Но, когда я искал в Google об этой проблеме я обнаружил , что это не моя собственная проблема на самом деле многие люди также имеющие один и тот же вопрос и в разных операционных системах , таких как прошивкой , Android и т.д. И есть различные решения , доступные в Интернете , но ничего не работает для меня.

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

Как я исправлена ​​ошибка SSL или недействительных Security проблемы с сертификатами

Прежде чем рассказать вам, как я исправила эту проблему, позвольте мне сказать вам, как и при вводе этого Ошибка SSL мой Android телефон или в чем причина этой странной проблемы!

Причина Получение SSL ошибки на моем Android

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

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

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

Вот простое решение Invalid проблемы с сертификатами

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

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

ДАЛЬНЕЙШЕЕ ЧТЕНИЕ:

Это все! Этот метод помог мне и решена проблема ненадежного ошибки сертификата в моем Android телефона. Я надеюсь , что это будет работать для вас тоже. Дайте мне знать , работает ли это для нет.

Protect: защита от недоверенных сертификатов

В рамках комплексной защиты Protect мобильный Яндекс.Браузер проверяет сертификаты сайтов. Если из-за проблем с сертификатом сайт не может обеспечить безопасное шифрование ваших данных, браузер предупреждает об этом.

Зачем нужен сертификат сайта

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

Читать еще:  Флешка ошибка диск защищен от записи

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

Чем опасен недоверенный сертификат

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

Блокировка сайтов с недоверенными сертификатами

Если из-за проблем с сертификатом сайт не может обеспечить безопасное шифрование, появляется значок (в Умной строке) или (в панели Protect, открывающейся по → О сайте ), а вместо страницы сайта — предупреждение о невозможности установить безопасное соединение. В этом случае вы можете либо отказаться от посещения сайта, либо внести сертификат в список надежных.

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

Причины блокировки

Яндекс.Браузер блокирует сайты, у которых есть следующие проблемы с сертификатами:

Сертификат может быть установлен либо злоумышленником, либо специальной программой. Антивирусы, блокировщики рекламы и аналогичные приложения могут заменять сертификаты сайта своими собственными. Если сертификат установлен приложением, вам надо выявить его и отключить в нем проверку HTTPS.

Вы также можете решить доверить свои данные такому сертификату, но следует иметь в виду две потенциальные опасности:

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

Ключ корневого сертификата не совпадает с ключом, закрепленным на сайте. Возможно, злоумышленники пытаются подменить корневой сертификат. В этом случае они могут перехватить ваши данные. Подробнее о закреплении (привязывании) ключа см. статью HTTP Public Key Pinning.

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

Protect: защита от недоверенных сертификатов

В рамках комплексной защиты Protect мобильный Яндекс.Браузер проверяет сертификаты сайтов. Если из-за проблем с сертификатом сайт не может обеспечить безопасное шифрование ваших данных, браузер предупреждает об этом.

Зачем нужен сертификат сайта

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

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

Чем опасен недоверенный сертификат

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

Блокировка сайтов с недоверенными сертификатами

Если из-за проблем с сертификатом сайт не может обеспечить безопасное шифрование, появляется значок (в Умной строке) или (в панели Protect, открывающейся по → О сайте ), а вместо страницы сайта — предупреждение о невозможности установить безопасное соединение. В этом случае вы можете либо отказаться от посещения сайта, либо внести сертификат в список надежных.

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

Причины блокировки

Яндекс.Браузер блокирует сайты, у которых есть следующие проблемы с сертификатами:

Сертификат может быть установлен либо злоумышленником, либо специальной программой. Антивирусы, блокировщики рекламы и аналогичные приложения могут заменять сертификаты сайта своими собственными. Если сертификат установлен приложением, вам надо выявить его и отключить в нем проверку HTTPS.

Вы также можете решить доверить свои данные такому сертификату, но следует иметь в виду две потенциальные опасности:

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

Ключ корневого сертификата не совпадает с ключом, закрепленным на сайте. Возможно, злоумышленники пытаются подменить корневой сертификат. В этом случае они могут перехватить ваши данные. Подробнее о закреплении (привязывании) ключа см. статью HTTP Public Key Pinning.

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

4 метода обхода верификации SSL-сертификатов в Android

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

Автор: Cody Wass

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

  • Добавление сертификатов в хранилище достоверных сертификатов.
  • Перезапись упакованных сертификатов.
  • Использование скрипта Frida для обхода проверок SSL-сертификатов.
  • Изменение кода проверки сертификата.

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

Зачем нужна MITM-атака на SSL

Чтобы просматривать и изменять вызовы веб-службы, используемой мобильным приложением, нам понадобится промежуточный прокси сервер для перехвата, созданный при помощи утилит навроде BurpSuite или ZAP. При перехвате SSL-трафика SSL-соединение прерывается на стороне прокси-сервера. Сертификат, отсылаемый прокси-сервером, анализируется мобильным приложением, как если бы прокси был оконечной точкой веб-службы. По умолчанию самоподписанный сертификат, генерируемые утилитами наподобие Burp, не будет принадлежать проверенной достоверной цепочке. Если сертификат нельзя проверить на достоверность, большинство мобильных будут обрывать соединение вместо того, чтобы подключаться и работать в потенциально незащищенном канале. Техники, представленные ниже, предназначены для одной цели – убедить мобильное приложение, что сертификат, отправляемый прокси-сервером, является достоверным.

Техника 1 – Добавление сертификата в хранилище пользовательских сертификатов

Самый простой способ избежать SSL-ошибок – обзавестись валидным и надежным сертификатом. Эта задача решается относительно просто, если вы сможете установить достоверный сертификат на устройство. Если операционная система доверяет вашему центру сертификации, то будет доверять и сертификату, подписанному центром сертификации.

В Android есть два встроенных хранилища сертификатов, которые отслеживают, каким центрам сертификации доверяет операционная система: системное хранилище (хранит предустановленные сертификаты) и пользовательское хранилище (хранит сертификаты, добавленные пользователями).

Читать еще:  Критическая ошибка directx

Выдержка с сайта developer.android.com:

По умолчанию безопасные соединения (использующие протоколы TLS, HTTPS и им подобные) во всех приложениях доверяют предустановленным системным сертификатам. В Android 6.0 (API level 23) и более ранних версиях по умолчанию также считаются достоверными сертификаты, добавленные пользователями. Приложение может настраивать свои собственные соединения на уровне приложения (base-config) и на уровне домена (domain-config).

Сей факт означает, что, если мы имеем дело с приложением, которое работает в Android 6.0 и более ранних версиях, то можно просто добавить сертификат в пользовательское хранилище. Когда приложение пытается проверить достоверность цепочки для нашего сертификата, то обнаружит, что наш центр сертификации связан с достоверным хранилищем и, следовательно, будет доверять нашему сертификату. В более новых версиях приложение не будет доверять хранилищу пользовательских сертификатов. Чтобы решить эту проблему, нужно прописать такой уровень API и версию Android, чтобы приложение стало доверять пользовательским центрам сертификации. Мы будем редактировать атрибут «platformBuildVersionCode» элемента «manifest» в файле AndroidManifest.xml.

В коде выше в строке «platformBuildVersionCode=25» нужно поменять значение 25 на 23, а в строке platformBuildVersionName=»7.1.1″ значение 7.1.1 на 6.0.

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

Если требуется запуск на конкретной версии платформы, мы можем определить тэг trust-anchors в файле «/res/xml/network_security_config.xml». Например, следующий файл (https://developer.android.com/training/articles/security-config.html) определяет новый достоверный сертификат, который должен храниться по адресу /res/raw/my_ca.

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

Техника 2 – Перезапись упакованного сертификата

Если после установки сертификата в пользовательское хранилище, изменении в настройках версии Android и успешном прохождении проверок при просмотре других ресурсов, защищенных протоколом SSL, все равно возникают ошибки, значит, разработчики внедрили дополнительные условия, которым должны удовлетворять достоверные центры сертификации. Если не забыли, в предыдущей технике внутри тэга trust-anchors добавлялся новый путь к сертификату. Подобный трюк может использоваться разработчиками для защиты приложений от перехвата SSL.

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


Рисунок 1: Перечень сертификатов, используемых приложением

Если открыть пакет приложения при помощи, например, APK Studio, то можно сразу увидеть перечень привязанных сертификатов. На картинке выше сертификаты находятся в папке «assets». Замена явно бросающегося в глаза сертификата UniversalRootCA позволит нам подсунуть приложению наш сертификат.

Техника 3 – Подключение к функциям через фреймворк Frida

Если установки собственного сертификата недостаточно для успешного перехвата SSL-трафика, скорее всего, в приложении используются техники навроде SSL pinning или дополнительная SSL-валидация. В этом случае нужно блокировать проверки через непосредственное подключение к соответствующим функциям. Ранее эта техника была доступна для реализации только на устройствах с правами суперпользователя. Однако на данный момент при помощи библиотеки Frida Gadget можно работать с приложением и получить доступ к полному функционалу фреймворка Frida без прав суперпользователя.

Если вы уже выполняли пентесты мобильных приложений, то, вероятно, знакомы с этим фреймворком. Описание всей функциональности Frida выходит за рамки этой статьи, но если говорить в общем, то этот фреймворк позволяет изменять логику работы приложения во время выполнения. Обычно Frida работает как отдельное приложение и требует прав суперпользователя на устройстве. Если у нас нет прав суперпользователя, мы можем инжектировать в пакет приложения динамическую библиотеку Frida Gadget, содержащую большую часть функционала фреймворка Frida. Эта библиотека загружается во время выполнения приложения и позволяет вносить изменения в код.
Чтобы загрузить Frida Gadget, нужно распаковать APK, вставить динамическую библиотеку, отредактировать smali-код так, чтобы динамическая библиотека вызывалась самой первой, а затем переупаковать и установить пакет. Весь этот процесс хорошо задокументирован Джоном Козиракисом (John Kozyrakis). Вначале лучше пройти все этапы вручную, чтобы лучше понять, как работает эта технология. Чтобы сэкономить время, существует утилита — Objection, которая автоматизирует весь вышеупомянутый процесс. Требуется лишь указание целевого пакета, над которым нужно выполнить манипуляции.

После завершения в нашей рабочей директории должен появиться файл «test_app.objection.apk». По умолчанию утилита objection добавляет постфикс «.objection» к имени пакета. Далее мы можем установить этот пакет так же, как и любой другой APK, при помощи команды adb install test_app.objection.apk. После того как измененный пакет установлен на целевом устройстве, во время запуска приложение должно встать на паузу на начальном экране. В этот момент мы можем подключиться к серверу Frida, который отслеживает наше устройство:

C:>frida-ps -U
PID Name
—- ——
6383 Gadget

C:>frida -U gadget
____
/ _ | Frida 10.3.14 — A world-class dynamic instrumentation framework
| (_| |
> _ | Commands:
/_/ |_| help -> Displays the help system
. . . . object? -> Display information about ‘object’
. . . . exit/quit -> Exit
. . . .
. . . . More info at http://www.frida.re/docs/home/

[Motorola Moto G (5) Plus::gadget]-> Java.available
true

Alternatively, Objection supports interaction with the listening Frida server by using the ‘explore’ command:

C:>objection explore
___| |_ |_|___ ___| |_|_|___ ___
| . | . | | | -_| _| _| | . | |
|___|___|_| |___|___|_| |_|___|_|_|
|___|(object)inject(ion) v1.2.2

Runtime Mobile Exploration
by: @leonjza from @sensepost

[tab] for command suggestions
com.test.app on (motorola: 7.0) [usb] # android hooking search classes TrustManager
android.security.net.config.RootTrustManager
android.app.trust.ITrustManager$Stub$Proxy
android.app.trust.ITrustManager
android.security.net.config.NetworkSecurityTrustManager
android.security.net.config.RootTrustManagerFactorySpi
android.app.trust.TrustManager
android.app.trust.ITrustManager$Stub
com.android.org.conscrypt.TrustManagerImpl
com.android.org.conscrypt.TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker
com.android.org.conscrypt.TrustManagerImpl$TrustAnchorComparator
com.android.org.conscrypt.TrustManagerFactoryImpl
javax.net.ssl.TrustManagerFactory$1
javax.net.ssl.TrustManager
javax.net.ssl.TrustManagerFactory
javax.net.ssl.X509TrustManager
javax.net.ssl.TrustManagerFactorySpi
javax.net.ssl.X509ExtendedTrustManager
[Ljavax.net.ssl.TrustManager;

Теперь вы можете воспользоваться функцией для обхода технологии SSL pinning:

com.test.app on (motorola: 7.0) [usb] # android sslpinning disable
Job: 2f633f86-f252-4a57-958e-6b46ac8d69d1 — Starting
[6b46ac8d69d1] [android-ssl-pinning-bypass] Custom, Empty TrustManager ready
Job: 2f633f86-f252-4a57-958e-6b46ac8d69d1 – Started

Техника 4 – Реверс-инжиниринг кода верификации сертификата

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

Если использовать «dex2jar», синтаксис будет следующим:

C:>d2j-dex2jar.bat «C:test_app.apk»
dex2jar C:test_app.apk -> .test_app-dex2jar.jar

Полученный файл .jar должен быть пригоден для открытия в вашей любимой утилите для исследования Java-приложений (например, JD-GUI).

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

Заключение

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

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

Подписывайтесь на каналы «SecurityLab» в Telegram и Яндекс.Дзен, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.

Ссылка на основную публикацию
Adblock
detector