Прокси Charles для мобильных приложений, использующих закрепление SSL - PullRequest
0 голосов
/ 17 октября 2018

Сайт Charles Proxy комментирует, что:

Обратите внимание, что в некоторых приложениях реализовано закрепление SSL-сертификата, что означает, что они специально проверяют корневой сертификат.Поскольку приложение само проверяет корневой сертификат, оно не примет сертификат Чарльза и не сможет установить соединение.Если вы успешно установили корневой SSL-сертификат Charles и можете просматривать SSL-сайты с помощью SSL-прокси в Safari, но приложение не работает, вероятно, проблема связана с закреплением SSL.

Просто чтобы быть уверенным, возможно ли использоватьмонитор HTTP, такой как Charles Proxy (или другой монитор), даже если мобильное приложение использует закрепление SSL-сертификата?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Как сказал Стеффен, вам может потребоваться исправить приложение, чтобы отключить закрепление сертификата.Большинство мобильных приложений не используют его :). Таким образом, вам просто нужно включить SSL-соединения с самозаверяющим сертификатом.Чтобы разрешить это с помощью приложения Android, выполните следующие действия:

  • Загрузите apktool из https://ibotpeaches.github.io/Apktool/
  • Распакуйте файл apk: java -jar apktool.jar app.apk
  • Измените AndroidManifest.xml, добавив android:networkSecurityConfig="@xml/network_security_config" атрибут элемента application.
  • Создать файл /res/xml/network_security_config.xml со следующим содержимым: <?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config> <trust-anchors> <certificates src="system" /> <certificates src="user" /> </trust-anchors> </base-config> </network-security-config>
  • Построить пропатченный apk: java -jar apktool.jar b app -o app_patched.apk
  • Генерация ключей для подписи apk: keytool -genkey -alias keys -keystore keys
  • Подпись apk-файла: jarsigner -verbose -keystore keys app_patched.apk keys
  • При необходимости конвертируйте apk в jar для дальнейшего анализа: d2j-dex2jar.sh app.apk

Больше информации: https://developer.android.com/training/articles/security-config

0 голосов
/ 17 октября 2018

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

Конечно, ваше приложение мониторинга HTTP должно поддерживать указание фиксированного сертификата.Мне кажется, что Чарльз Прокси не поддерживает это.Но mitmproxy поддерживает предоставление фиксированного сертификата для определенных доменов.

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

...