Блог программиста
не только о программировании

Дружественные ресурсы:

IntSystem.org | Веб-разработка, все о ней

DevOps-заметки |

21.07.2018

Установка mitmproxy на Android и снифинг собственного трафика

Присутствовал недавно при обсуждении на тему того, как организовать MITM на собственном устройстве для просмотра собственного трафика. В качестве одного из вариантов был озвучен mitmproxy, но т.к. до этого я его не устанавливал на мобильное устройство (chroot готовой системы не в счет), то возникло желание попробовать. Результат (спойлер: успешный) под катом.

Немного матчасти вместо введения

Для установки и эффективного использования mitmproxy на Android необходимо чтобы устройство было рутовано и на него был установлен tmux и любой другой терминал (системный с окружением android). Весь процесс сводится к уcтановке mitmproxy вместе с необходимыми зависимостями и установке его сертификата в качестве корневого (именно системного, а не пользовательского).

Установка mitmproxy

Необходимо в сессии tmux выполнить команды ниже.

pkg install openssl-dev python-dev openssl-tool tsu
pip install mitmproxy

После установки необходимо запустить mitmproxy с указанием ip адреса, на котором будет поднят прокси сервер. Узнать ip адрес можно через терминал командой ip addr или в настройках сетевого соединения

Запускаем в режиме обычного прокси сервера

mitmproxy -mode regular --listen-host ip

Далее необходимо изменить настройки сетевого соединения, указав прокси (удерживаем палец на активном соединении, в контекстном меню выбираем "modify network".

В настройках proxy выбираем "manual" и прописываем ip адрес который получили по DHCP. Порт указываем по умолчанию 8080.

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

Установка сертификата

Так вот, после запуска и настройки соединения в браузере на устройстве открываем страницу http://mitm.it (это локальная страница для скачивания сертификата). Скачиваем сертификат, считаем его хеш (необходимо для именования установленных в систему сертификатов)

tsudo openssl x509 -inform PEM -subject_hash_old -in /sdcard/Download/pem.crt | head -1

После выполнения этой команды необходимо скопировать хеш в следующую команду

tsudo cat /sdcard/Download/pem.crt >/sdcard/Download/5ed36f99.0

.o - расширение файла

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

Далее монтируем системный раздел в режим чтение/запись и копируем сертификат всистему

su 
mount -o remount,rw /system
cp /sdcard/Download/5ed36f99.0 /system/etc/security/cacerts/
cd /system/etc/security/cacerts/
chmod 644 5ed36f99.0

После перезагрузки устройства сертификат будет загружен и можно запускать mitmproxy и использовать по назначению.

Примечание: для использования в связке с другими устройствами не забудьте установить сертификат в систему.