Skip to content

skvav/docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

Прослушка трафика мобильного приложения

Для написания плагина для банка, у которого отсутствует общедоступное открытое API, можно попытаться использовать API мобильного приложения банка. Есть два способа как можно узнать его устройство:

  • Прослушать трафик мобильного приложения
  • Дизассемлировать мобильное приложение

Наиболее простой способ - первый. Для его применения нам обязательно потребуется проксирующее приложение: mitmproxy или Fiddler. Далее все описание действий идет для mitmproxy и Windows. Но примерно все то же самое нужно сделать и для любой другой связки.

Установка проксирующего приложения

Скачайте последнюю версию windows-installer.exe для mitmproxy. Запустите и установите приложение. По окончанию установки должен открыться браузер со страницей mitmproxy. mitmproxy по умолчанию слушает порт 8080.

Для того, чтобы пропустить трафик через прокси, нужно чтобы ваш Android-телефон был подключен к той же самой сети Wi-Fi что и компьютер с включенным mitmproxy. В настройках Wi-Fi на телефоне нужно включить прокси и задать IP адрес компьютера и порт, который слушает проксирующее приложение. В нашем случае 8080.

Далее нужно установить на устройство сертификат из проксирующего приложения. Для mitmproxy открываем в системном браузере страницу http://mitm.it и выбираем там установку Android-сертификата. Все подтверждаем. Сертификат должен быть установлен.

После этого запускаем исследуемое приложение. Если оно работает как ни в чем не бывало, и трафик его виден в mitmproxy, то все отлично. Дальнейшие шаги из этого руководства не нужны. Приступайте к созданию плагина :) Если же приложение не работает или трафик не виден, то все сложнее. Видимо в нем используется SSL pinning. Для того, чтобы прослушать трафик нужно сначала выключить его. Нам потребуется артиллерия.

Установка Frida

Для отключения SSL pinning и многих других рантайм манипуляций с приложениями будем использовать Frida. Чтобы установить ее на Windows, сначала придется установить Python версии >= 2.7.8 либо >= 3.3. Скачайте его с официального сайта Python. Установите. Далее открываем консоль cmd.exe и в ней в случае стандартной установки Python 2.7 пишем:

C:\Python27\Scripts\pip.exe install frida

Со страницы https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/ сохраняем на компьютере содержимое JS файла в frida-android-repinning.js в какую-нибудь папку. Этот JS файл понадобится нам при запуске.

Все, Frida установлена.

Установка Android Studio

Качаем и устанавливаем с https://developer.android.com/studio/index.html Запускаем, соглашаемся на все пункты и дополнительные загрузки. Студия запустится. Создаем новый проект, нажимая "Start a new Android Studio project". Вбиваем любое имя, нажимаем Next / Next и т.д, соглашаемся на все и дожидаемся, пока все загрузится.

Если вы хотите перехватывать трафик приложения с телефона, то на телефоне нужно активировать root доступ. Для связи телефона с Android Studio нужно поставить adb driver для вашей модели телефона. Ищите его на сайте производителя либо попробуйте установить универсальный драйвер http://adbdriver.com/

Если же устройства под рукой нет, либо не хочется получать на нем root доступ, то можно воспользоваться эмулятором Андроид.

Установка эмулятора Android

Когда студия откроется, в меню выбираем Tools / AVD Manager Далее в AVD Manager нажимаем Create Virtual Device / Nexus S / Next. Далее выбираем Download рядом с Marshmallow API level 23. Соглашаемся на все и ждем, пока загрузится эмулятор. После этого справа видим "HAXM is not installed". Если у вас процессор Intel, то смело нажимаем "Install HAXM". Если нет, то тоже можно попробовать, но в случае неудачи просто пропускаем установку HAXM и едем дальше. После этого Next. AVD name задаем "Android6". Далее Finish. Эмулятор создаcтся и отобразится в списке эмуляторов AVD Manager. После этого нажимаем на значок плэй в колонке Actions напротив свежесозданного эмулятора. Как только эмулятор запустится, можно закрыть Android Studio и AVD Manager. В меню эмулятора рядом с его экраном телефона нажимаем на 3 точки и попадаем в настройки эмулятора. Выбираем Settings / Proxy. Убираем галку "Use Android Studio HTTP proxy settings". Включаем "Manual proxy configuration". Host name ставим "127.0.0.1". Port number "8080". Нажимаем Apply. После этого открываем в эмуляторе системный браузер и повторяем действия по установке сертификата из пункта "Установка проксирующего приложения".

Нужно не забыть поставить на эмулятор наше исследуемое приложение. Для этого скачайте apk с этим приложением на компьютер. Телефон, если он есть, отключите от компьютера. Затем откройте cmd.exe и выполните там:

cd "C:\Users\<your user>\AppData\Local\Android\Sdk\platform-tools"
adb root
adb install "<path to apk file>"

Приложение должно появиться в эмуляторе.

Установка frida-server-*-android

Чтобы Frida могла работать с вашим устройством (эмулятором либо телефоном), нужно ее установить на него. Заходим на компьютере на https://github.com/frida/frida/releases и качаем frida-server-*-android для соответствущей устройству архитектуры Android. Для эмулятора это x86. Для телефона скорее всего arm. Для распаковки скачанного .xz возможно потребуется использовать https://tukaani.org/xz/xz-5.2.3-windows.zip Примерно так: xz -d <path to frida-server-android xz file>

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

Открываем cmd.exe и там выполняем:

cd "C:\Users\<your user>\AppData\Local\Android\Sdk\platform-tools"
adb root
adb push "C:\Users\<your user>\.mitmproxy\mitmproxy-ca-cert.cer" /data/local/tmp/cert-der.crt
adb push "<path to uncompressed frida-server-android file>" /data/local/tmp/frida-server
adb shell "chmod 755 /data/local/tmp/frida-server" 

Все, установили Frida на устройство.

Запуск

Проверяем, что все готово для запуска. Исследуемое приложение есть, устройство подключено к компьютеру, Frida установлена на компьютер и на устройство, JS файл frida-android-repinning.js под рукой. Единственное, что нам нужно - это package name исследуемого приложения. Открываем cmd.exe и выполняем:

cd "C:\Users\<your user>\AppData\Local\Android\Sdk\platform-tools"
adb root
adb shell "ls /data/data"

В полученном списке ищем наше приложение. Допустим это "it.app.mobile". Далее, чтобы подключить к нему Frida выполняем:

adb shell "/data/local/tmp/frida-server &"
C:\Python27\Scripts\frida -U -f it.app.mobile -l "<path to frida-android-repinning.js>" --no-pause

Если все сделали верно, то Frida должна запуститься и трафик должен появиться в mitmproxy. Ура :) Если же трафика до сих пор нет, то печаль-тоска :(

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published