В общем, имеется ссылка на какую-то страницу какого-то сайта. Чтоб получить нормальный ответ, нужно открыть ссылку с их же приложения-клиента (на андроиде), иначе можно получить только предупреждение о том, что ссылка только для мобилок. Задача: посмотреть, как формируется запрос и подделать его. С самого приложения пакеты отправляются на 443 порт, только вот это TCP. На счет андроида я не заморачивался и сэмулировал его с помощью BlueStacks. Пакеты ловил с Wireshark. Приложение вроде как получает нормальный ответ, но в пакетах он нечитаем. То есть, всё, что я вижу, выглядит примерно так: ...G.9...p.a.C.U7448...Ky+..y:~._...,sW.......S.....b...9.Z...w4...\.E.?...\.a)... ...............................h2.http/1.1....... Понимаю, что шифрование, но делать с этим что-то надо. Есть какие-нибудь варианты?
Я подобное перехватывал с помощь бурпа, на телефоне/эмуляторе устанавливаем прокси на комп где запущен бурп, далее импортируем сертификат бурпа, и начинаем юзать приложуху
Тоже мысль промелькала, но ведь он tcp не перехватывает, только http. Возможно, я чего-то не понимаю)
Там получается так: если приходит http, серв отправляет предупреждение, а нормальный ответ даёт только на сформированный клиентом tcp запрос, который я не то что подделать - прочитать не могу.
И всё-таки, Burp Suite прокси работает по протоколу http. Да и я уже пробовал его юзать, только немного по-другому. Я весь трафик с компа отправлял на 127.0.0.1:8080 (прокси бурпа) и потом уже просматривал содержимое ссылки с приложения. Ответ получал, а в бурпе ничего не было.
Неверно, к сожалению. HTTP/HTTPS - протколы прикладного уровня, а TCP - транспортного, представьте матрешку, в итоге мы имеем следующее - прикладной уровень разделили на порции и отправили внутри транспортного, см. модель OSI. В этом и суть зашифрованного трафика, что расшифровать его может только владелец приватного ключа (сервер), в клиентском приложении его нет. Решение выглядит вот так: распаковать приложение, заменить его родной сертификат сертификатом, выпущенным при помощи burp suit/Fidler настроить прокси и наблюдать за идущим расшифрованным
Приватный ключ с приложения вытаскивай и им расшифровывай ответы с сервера. Чтоб посмотреть что на сервер уходит - подмени сервер на свой, узнаешь первый запрос, отправишь его на настоящий, посмотришь ответ и так далее Для твоей задачи не так много запросов будет, быстрее все в ручном режиме сделать
Вот кстати тоже недавно открыл для себя метод для андроида: Устанавливаем приложение PCAP Remote из PlayStore / APK Запускаем PCAP и выбираем, что хотим снифить: если весь трафик, то выбираем кнопку плэй, если только одно приложение, то выбираем кнопку плэй с единичкой и потом выбираем в списке приложение, которое желаем снифить. Дальше в приложение будет указаны параметры соединения, допустим 192.168.1.111 и порт 12345) Запускаем на компе Wireshark и выбираем в списке интерфейсов "SSH remote capture: sshdump" и задаём параметры, которые указаны в приложение (192.168.1.111 и порт 12345). И важно указать какое-либо имя пользователя и пароль, иначе выкинет ошибку... Собственно всё... ну почти... приложение само подменяет сертификат (rootCA можно експортировать в настройках, там-же можно поменять порт и сетевой интерфейс), но начиная с 7-го андроида, по дефолту приложение не принимает левые серты и нужно пересобирать приложение (https://egorovandreyrm.com/pcap-remote-tutorial/#decrypting_https_tls_traffic) К тому же если в приложение будет стоять пининг сертификата, то нужно будет и его выпилить. Инструкция самого автора: https://egorovandreyrm.com/pcap-remote-tutorial/ и исходники: https://github.com/egorovandreyrm/pcap-remote