View on GitHub

PCAPdroid

User Guide

Оглавление > Расшифровка TLS

3.1 Расшифровка HTTPS/TLS

PCAPdroid предоставляет возможность отправлять весь TCP траффик через SOCKS5 прокси. Подключая mitmproxy в режиме SOCKS5 позволяет расшифровывать траффик. Расшифровка TLS может быть использована например для изучения чистых (не зашифрованных) данных в HTTPS запросах. Заметка: расшифровка TLS недоступна когда включен режим захвата трафика с root-правами.

mitmproxy может быть установлен на ПК по официальной инструкции, в таком случае оба устройства (и Android и ПК) должны быть подключены к одной и той же сети.

Однако можно обойтись без ПК и установить mitmproxy прямо на Android-устройстве с помощью терминала Termux. После установки termux откройте его и выполните следующие команды:

pkg update
pkg install python
python3 -m pip install --upgrade pip
CRYPTOGRAPHY_DONT_BUILD_RUST=1 pip install mitmproxy

Примечание: при использовании mitmproxy на Android-устройстве (посредством Termux) необходимо выбирать конкретное целевое приложение, иначе траффик исходящий из Termux с mitmproxy зациклится, что приведет к проблемам с соединением.

Для включения расшифровки TLS в PCAPdroid:

  1. Запустите mitmproxy без опции генерации пользовательского сертификата и установите стандартный сертификат (обычно расположен по пути ~/.mitmproxy/mitmproxy-ca-cert.cer на устройстве где установлен сам mitmproxy) на вашем Android-устройстве. Возможно потребуется сменить расширение файла на .crt.
  2. Откройте настройки PCAPdroid
  3. Включите пункт “Enable SOCKS5 Proxy”
  4. Настройте IP адрес и порт экземпляра mitmproxy (в данном примере порт 8050, IP либо от ПК в сети к которой подключены оба устройства, либо 127.0.0.1 если mitmproxy запущен прямо на Android-устройстве).
  5. Запустите mitmproxy в режиме SOCKS5 командой mitmproxy --mode socks5 --listen-port 8050

Теперь PCAPdroid будет перенаправлять весь TCP траффик через сервер mitmproxy, который выступит в роли прокси и будет расшифровывать TLS траффик. PCAP-файл сгенерированный PCAPdroid все еще будет содержать зашифрованный траффик с оригинальными IP и портом назначения пакетов. Тем не менее, включение расшифровки TLS траффика несет с собой высокую вероятность нарушения сетевого соединения приложений, в связи с чем рекомендуется использовать фильтр приложений, чтобы захватывать траффик только конкретно указанного приложения.

3.2 Расшифровка с Android 7

С момента выхода Android 7 (Nougat), Android-приложения не доверяют пользовательским сертификатам установленным в системе. Это означает что они не будут принимать сертификат от mitmproxy и их соединение с сетью будет потеряно. На устройствах с Root-доступом это можно легко решить установкой сертификата в качестве системного, а не пользовательского (см. https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android). На устройствах без Root-доступа наиболее надежный способ решить проблему - изменить конфигурацию приложения чтобы оно доверяло пользовательским сертификатам как указано в инструкциях для разработчиков Android приложений. Если у Вас нет доступа к исходному коду целевого приложения, можно попробовать модифицировать приложение например через apktool.

Так же, есть более простой, но менее надежный способ, который не требует вмешательства в конфигурацию приложения. Используя VirtualXposed в совокупности PCAPdroid позволяет обмануть приложение и заставить его работать по старым политикам безопасности (действующие до выхода Android 7) при которых целевое приложение будет доверять сертификату от mitmproxy. VirtualXposed является приложением для виртуализации с открытым исходным кодом и доступно на F-Droid. Чтобы начать пользоваться VirtualXposed в совокупности с PCAPdroid:

  1. Настройте расшифровку TLS траффика в PCAPdroid как было описано выше
  2. Настройте фильтр приложений PCAPdroid чтобы захватывать траффик только от VirtualXposed
  3. Откройте VirtualXposed, выберите “Добавить приложение” и выберите целевое приложение (в появившемся диалоге выберите “virtualxposed”).
  4. Запустите целевое приложение из VirtualXposed.

В чем фокус? VirtualXposed использует целевую версию SDK установленную в значение 23. Это означает, что любое приложение с целевой версией SDK меньше 24 так же как и раньше доверяет пользовательским сертификатам, и это работает даже в Android 7! Любое приложение для виртуализации с подходящей целевой версией SDK так же подходит и может провернуть этот трюк. Однако стоит помнить, что приложение виртуализации предоставляет альтернативную среду для приложений, в связи с чем приложения могут работать некорректно и даже вылетать. Модифицирование конфигурации APK остается более предпочтительным способом.

3.3 Сообщения об ошибках

Следующие советы могут помочь в сообщениях об ошибках с рашифровкой TLS: