Как сделать фидлер
Согласно статистике - в 2020 году мобильные приложения были загружены пользователями более 240 млн раз, и это число продолжает расти.
Разработчики большое внимание уделяют удобству и внешнему виду, однако вопросам безопасности не всегда уделяется должное внимание. Недостаточная защищенность приложения увеличивает репутационные риски для компании-разработчика, а утечка конфиденциальных пользовательских данных негативно сказывается на его деловой репутации.
Большинство современных мобильных приложений построены на клиент-серверной архитектуре. Как правило, клиент функционирует под управлением одной из популярных мобильных ОС – Android или iOS, и обменивается данными с сервером. Использование открытых незащищенных протоколов передачи данных многократно увеличивают риски компрометации передаваемого трафика. Но даже защищенные соединения не всегда дают 100% гарантию надежности сохранности данных.
В данной статье мы познакомимся с инструментом Fiddler, позволяющим перехватывать и анализировать весь трафик между клиентом и сервером. Данный инструмент может помочь выявить уязвимости в процессе клиент-серверного взаимодействия мобильного приложения.
(Если вы уже работали с этим инструментом, делитесь опытом в комментариях)
Подготовительные шаги
Для начала установите Fiddler на ПК или ноутбук. Убедитесь, что ПК/ноутбук и смартфон находятся в одной сети (например, подключив устройства к одному wifi-роутеру). Это условие является обязательным, т.к. устройства не увидят друг друга. Проверить связь между устройствами можно через команду ping.
Настройка Fiddler
Далее, убедитесь, что Fiddler может принимать входящие соединения:
Настройка устройства на базе Android
Убедитесь, что Fiddler запущен и брандмауэр Windows отключен, далее на Android-устройстве выполните шаги:
Настройка устройств на базе iOS
Убедитесь, что Fiddler запущен и брандмауэр Windows отключен, далее на iOS-устройстве выполните шаги:
Для Android: скачайте FiddlerRoot certificate, откройте его, установите и задайте имя.
Как использовать Fiddler для захвата веб-трафика?
Как использовать Fiddler?
Эта статья была написана на английском и переведена средствами машинного перевода. Точность, правильность и надежность машинного перевода с английского на любой другой язык не гарантируется никоим образом ни явно, ни опосредованно. Cisco не несет ответственности за неточную информацию, ошибки или ущерб, полученные вследствие ненадлежащего перевода контента или использования информации.
Чтобы удалить сертификат Fiddler, выполните следующее.
- Перейдите в меню Пуск >Все программы >Fiddler 4 (или текущая версия Fiddler).
- Перейдите в меню Сервис >Параметры. .
Ниже описано, как его настроить и использовать на примере следующего окружения:
А в завершении статьи описано, что делать, если после настройки остались ошибки подключения. Описано как удалить из кеша браузера информацию об оригинальном сертификате.
Дистрибутив Fiddler 4 можно скачать по ссылке:
Описание доступно на сайте проекта:
Инструкция по настройке Fiddler + Firefox (простая, понятная):
После установки можно сделать следующие настройки:
Сделать прокси-сервис несистемным
Также кликнуть по ссылке Protocols и вписать в список протоколов все популярные протоколы:
как показано выше
Отдельный профиль для работы через Fiddler
Для перехвата трафика и экспериментов желательно иметь браузер, в котором не жалко очистить кеш и изменить настройки. Удобно создать новый отдельный профиль Mozilla Firefox.
Для этого нужно выполнить три шага:
- Закрыть открытый браузер Mozilla (это важно)
- Создать пустой каталог для нового профиля: C:\temp\profile
- Создать ярлык или bat-файл c командой запуска Mozilla:
Можно запускать браузер с чистым профилем.
В linux командный файл для работы с временным профилем может выглядеть так:
Настройка эталонного профиля
Работа с временным профилем — копией эталонного:
Поэтому важно настроить новый чистый профиль. Плюс в нём будет чистый кеш. Значит все запросы будут отправлены браузером. Что важно при эмуляции нагрузки.
Загрузка сертификата Fiddler в Mozilla Firefox
Запустить Fiddler и выгрузить сертификат в файл на рабочий стол.
Запустить Mozilla Firefox открыть настройки, расширенные, сертификаты и импортировать сертификат Fiddler 4 в список доверенных. Выбрав сертификат с рабочего стола.
В качестве разрешения — разрешить идентификацию веб-сайтов.
Настройка работы Mozilla Firefox через прокси сервер
Запустить Fiddler, посмотреть на каком порту он слушает соединения.
Установить в Mozilla Firefox работу через прокси-сервер на этом же порту, в большинстве случаев это будет localhost и порт 8888.
Для удобства работы можно включить правила (Главное меню / Rules):
Remove All Encodings полезно если сервер отдаёт ответы в сжатом виде (gzip encoding). А это почти всегда так для современного веба. И чтобы поиск по ответам сервера работал корректно нужно сразу распаковывать ответы сервера.
А поиск по ответам очень важен — для корреляции параметров в запросах и ответах. Именно ради поиска мы и выбрали Fiddler 4. Просто просматривать запросы и ответы можно бы было в консоли браузера. А полнотекстовый поиск есть только в Fiddler, других инструментов с подобной функциональностью ещё не встречал.
Неподдерживаемые протоколы
Отключение — перейти в about:config
Ввести в строку фильтра
Далее отключить настройки
Ввести строку фильтра
security.tls.version.max по умолчанию значение 4, если в Fiddler была предварительно включена поддержка tls1.1 и tls1.2 (смотри выше как), то версию надо понизить до 3.
Выполняете действие, но не видно никаких логов в Fiddler
Возможно в Mozilla Firefox не настроен прокси-сервер.
Возможно в Fiddler включена фильтрация по процессам — при настройке по умолчанию в нижней панели Fiddler должно быть написано:
Если тут написано Internet Explorer или что-то, что не соответствует вашему процессу, то рекомендую покликать на эту надпись и добиться того, чтобы фильтр был в состоянии: All processes
Возможно на вкладке Filters (справа одна из вкладок) была настроена фильтрация запросов. В таком случае название вкладки будет с включенной галочкой:
Перейдите на вкладку фильтров и отключите фильтры.
Если браузере видна ошибка, что соединение не защищено
И при этом есть возможность добавить исключение для сайта
Значит был пропущен или не полностью выполнен шаг добавления сертификата Fiddler в доверенные сертификаты браузера.
- настройки Mozilla Firefox были выполнены для отдельного профиля (как рекомендуется в статье), а сейчас запущен профиль по умолчанию, или наоборот
- сертификат Fiddler был добавлен в доверенные сертификаты Mozilla, но при этом не была проставлена галочка со степенью доверия: Этот сертификат может служить для идентификации веб-сайтов
- вы настроили работу Mozilla Firefox через Fiddler, и сертификат указали, но потом в Fiddler сгенерировали новый сертификат
Нет возможности добавить исключение для сайта
- прежний сертификат Fiddler;
- сертификат настоящего удостоверяющего центра (ещё до настройки работы браузера через Fiddler).
Это браузер видит неожданную смену сертификата издателя, чует атаку, и блокирует подключение без возможности добавить исключение. Защищает.
В этом случае можно выбрать три варианта:
Вариант 1. Профиль
Перейти на новый профиль браузера. Настроить его по новой.
Вариант 2. Забыть сайт (в текущем профиле)
Потеряется вся история работы с сайтом. Куки, сессии.
Вариант 3. Забыть вообще всё (очистить профиль)
Или очистить текущий профиль от всего (если не жалко) — Ctrl + Alt + Del в адресной строке.
Если остались вопросы, оставляйте комментарии. Или задавайте вопросы почтой, адрес в разделе Контакты.
У меня есть Fiddler 2 (прокси-сервер для веб-отладки), и я считаю, что есть способ изменить ответы с помощью этого приложения, но я изо всех сил пытаюсь выяснить, как это сделать. Это было бы самым удобным способом, так как это позволило бы мне оставить код клиента и сервера немодифицированным.
Любые советы будут высоко оценены.
Хорошо, поэтому я предполагаю, что вы уже можете отслеживать трафик клиент/сервер. То, что вы хотите сделать, это установить точку останова на ответ, а затем поиграть с ней, прежде чем отправлять ее клиенту.
Вот несколько способов сделать это:
Как только вы получите ответ, остановленный в точке останова, просто дважды щелкните его, чтобы открыть его в инспекторах. Теперь у вас есть пара вариантов:
Другой альтернативой является использование вкладки Fiddler AutoResponder (на правой панели). Это позволяет вам поймать запрос на любой URI, который соответствует строке, и подавать "консервированный" ответ из файла. Файл может содержать как заголовки, так и полезную нагрузку. Преимущество такого подхода заключается в том, что вам не нужно писать FiddlerScript, и вам не нужно обрабатывать каждый запрос вручную с помощью точки останова.
В этом примере любой запрос, URI которого включает в себя "fooBar", получит законченный ответ. Формат файла зависит от ваших API (вы можете использовать свой браузер для перехвата "реального" ответа и основывать его на этом), но мой выглядел следующим образом:
Я обнаружил, что ему нужен возврат каретки в конце последней строки (т.е. после json) и что заголовок Content-Length должен соответствовать количеству символов в json, иначе webapp будет зависать. Ваш пробег может отличаться.
Читайте также: