[Android] Перехват трафика с помощью прокси-сервера

Представим, что перед нами стоит задача проанализировать трафик, который генерирует тестируемое приложение в Android. Большинство современных приложений, ориентированных на клиент-серверное взаимодействие, использует  протокол HTTPS, поэтому без расшифровки такого траффика ничего понятно не будет. Однако есть и такие приложения, которые используют HTTP, и вот здесь уже можно будет многое чего интересного узнать.

Для перехвата трафика можно использовать прокси-сервер (Charles, Fiddler, Burp Suite и др.). В данной заметке я приведу пример по использованию Burp.

Переходим на вкладку "Proxy" -> "Options", в разделе "Proxy Listeners" жмем кнопку "Edit", и в опции "Bind to address" выбираем "All interfaces". Все, Burp настроен и теперь лишь осталось запустить Android-эмулятор с использованием прокси-сервера:

emulator -avd <avd_name> -http-proxy http://YOUR_COMPUTER_IP:8080

Теперь, после запуска тестируемого приложения, в Burp на вкладке "History" будут отображаться все сетевые активности.

К сожалению, указать прокси-сервер на реальном устройстве под управлением Android без использования root-доступа весьма затруднительно, хотя в некоторых вендорских моделях устройств эта возможность присутствует изначально. В таком случае можно попросить разработчика собрать приложение с явным указанием прокси:

HttpHost httpproxy = new HttpHost("YOUR_COMPUTER_IP", 8080, "http");
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,httpproxy);