По сути, Fiddler – это прокси для отладки приложений и сайтов. Разработчик и тестировщик могут использовать Fiddler для отладки веб-трафика и тестирования производительности приложения или сайта. Специалистам по информационной безопасности Fiddler будет полезен для проверки сайта или приложения на наличие уязвимостей.
В статье будут рассмотрены следующие функциональные возможности Fiddler Classic:
Расшифровка HTTPS-трафика.
Настройка фильтрации трафика.
Анализ запросов и ответов.
Составление и модификация HTTP(S) запросов.
Использование FiddlerScript для расширения функциональных возможностей Fiddler.
HTTPS (Hypertext Transfer Protocol Secure) является широко используемым протоколом для безопасного обмена данными через Интернет. По сути, HTTPS – это расширенная версия протокола HTTP с использованием шифрования, обеспечивающая конфиденциальность и целостность данных во время передачи.
В протоколе HTTPS сообщения, отправляемые по сети, шифруются с использованием TLS – протокола защиты транспортного уровня (transport layer security). Для своей работы TLS использует набор доверенных сертификатов, установленных на компьютере для установления подлинности сервера, с которым он взаимодействует.
Fiddler позволяет расшифровывать HTTPS-трафик, установив корневой сертификат и включив расшифровку HTTPS. Для этого необходимо:
Включить расшифровку HTTPS.
Запустите Fiddler на устройстве, которое будет перехватывать трафик. Затем перейдите «Tools» > «Options» > «HTTPS» и установите флажок «Decrypt HTTPS Traffic»:
Установка сертификата Fiddler
Для установки сертификата Fiddler на компьютер под управлением ОС Windows выполните следующие действия:
• Перейдите в «Tools» > «Options» > «HTTPS».
• Нажмите «Actions», затем «Trust Root Certificate».
• Следуйте инструкциям во всплывающем окне, чтобы добавить сертификат Fiddler в список доверенных сертификатов.
Чтобы узнать, как установить сертификат Fiddler на компьютерах под управлением ОС Linux и Mac OS, см. страницы документации по Fiddler здесь и здесь.
Включение TLS 1.2
По умолчанию в Fiddler отключены версии протоколов TLS 1.1 и TLS 1.2 из-за проблем с совместимостью.
Для включения TLS 1.2 необходимо:
• Перейдите в Tools > Options > HTTPS.
• Нажмите «Protocols».
• В поле добавьте «TLS1.2».
После настройки Fiddler для работы с HTTPS мы можем приступить к анализу трафика. Вкладка «Filters» в Fiddler позволяет фильтровать и помечать трафик, отображаемый в пользовательском интерфейсе, а также вносить некоторые изменения в запросы.
Zone Filter позволяет отображать трафик только для внутренней сети или Интернета. Данный фильтр будет полезен, когда вы занимаетесь отладкой конкретного сайта или приложения (локально) и одновременно работаете с документацией из другой зоны (например, из Интернета).
Host Filter позволяет фильтровать трафик только для определенных доменных имен. Например, если вы выберете «Show only the following hosts» в раскрывающемся меню, вы можете указать имена хостов, с которыми хотите работать. Таким образом Fiddler будет отображать только тот трафик, который связан с выбранным именем хоста. Также доступна фильтрация по определенному процессу ОС (Client Process), на основе заголовков запросов и ответов (Request Headers/Response Headers), кода cсостояния HTTP (Response Status Code), на основе типа/размера контента (Response Type and Size) и пр.
После завершения настройки фильтров, нажмите «Actions» > «Run Filterset now» для применения фильтра.
Вкладка «Inspectors» позволяет более тщательно анализировать запросы и ответы. Чтобы загрузить запрос, просто перетащите его в окно.
Функционал Fiddler позволяет просматривать HTTPS-сообщение различными вариантами отображения. Например, во вкладке «Headers» отображаются заголовки запроса:
Вкладка «Raw» позволяет отобразить запрос в виде обычного текста:
Есть и другие варианты отображения – например, вкладка «WebForms» отображает строки запроса и формы HTTP(S), а вкладки «JSON» и «XML» запросы JSON и XML соответственно.
Вкладка «Composer» позволяет создать HTTP(S) запросы с нуля, указав метод HTTP, URL-адрес, версию HTTP, заголовки и тело самого запроса (Request Body). Также есть возможность автоматического заполнения всех полей, вручную «перетащив» запрос в окно «composer». Перед отправкой запроса его можно редактировать.
Ранее выполненные запросы можно посмотреть в поле «History». Для выполнения запроса необходимо нажать Execute в правом верхнем углу.
FiddlerScript – встроенный язык программирования, позволяющий значительно расширить функциональные возможности Fiddler, модифицировать пользовательский интерфейс, а также анализировать входящий и исходящий трафик. Язык основан на JScript.NET.
Сохранять код необходимо в файл CustomRules.js, который открывается в меню Rules > Customize Rules. Сам файл находится в папке \Documents\Fiddler2\Scripts.
Всякий раз, когда вы сохраняете файл, Fiddler заметит новую версию файла и попытается загрузить ее автоматически. Если необходимо пересоздать файл с изначальным кодом, просто удалите его, и Fiddler пересоздаст его из резервной копии.
Комментарии к коду содержатся в файле CustomRules.js. Более подробно о FiddlerScript можно знакомиться здесь. Для редактирования кода рекомендуется использовать FiddlerScript Editor.
Рассмотрим использование Fiddler для подмены логотипа сайта google.ru на логотип от Яндекса. По сути, подмена логотипа на сайте – это подмена одного URL на другой. Перейдем на сайт google.ru, скопируем ссылку логотипа:
https://www.google.ru/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
Далее найдем логотип от Яндекса и также скопируем ссылку:
Перейдем во вкладку «AutoResponder», создадим правило: в «If request matches…» заносим URL логотипа Google, в «Then respond with…» заносим логотип Яндекса. Активируем «Enable rules» и «Unmatched requests passthrough»:
В результате при переходе на сайт google.ru вместе логотипа Google будет отображаться логотип Яндекса:
Аналогичный результат можно получить, используя FiddlerScript. Для этого в обработчик OnBeforeRequest необходимо добавить следующий код:
static function OnBeforeRequest(oSession: Session) {
...
if (oSession.url=="www.google.ru/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png") {
oSession.url = "upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Yandex_logo_2021_Russian.svg/640px-Yandex_logo_2021_Russian.svg.png";
}
}
Таким образом, рассмотренный функционал Fiddler позволяет расшифровать защищенный HTTPS трафик, произвести его фильтрацию и проанализировать поступающие запросы и ответы. На примере подмены логотипа сайта мы показали, что Fiddler обладает возможностью подмены HTTPS-трафика, что может быть использовано для выявления уязвимых мест в работе приложения или сайта. Специалистам по информационной безопасности Fiddler будет полезен для выявления этих уязвимых мест для предотвращения кибератак.
на главную сниппетов