Функциональные возможности Fiddler как инструмента для анализа и подмены HTTPS-трафика
Привет, Хабр! Сегодня расскажу о применение мощного и удобного инструмента для анализа и мониторинга HTTP(S) трафика Fiddler. По сути, Fiddler – это прокси для отладки приложений и сайтов. Разработчик и тестировщик могут использовать Fiddler для отладки веб-трафика и тестирования производительности приложения или сайта. Специалистам по информационной безопасности Fiddler будет полезен для проверки сайта или приложения на наличие уязвимостей.
В статье будут рассмотрены следующие функциональные возможности Fiddler Classic:
Расшифровка HTTPS-трафика.
Настройка фильтрации трафика.
Анализ запросов и ответов.
Составление и модификация HTTP(S) запросов.
Использование FiddlerScript для расширения функциональных возможностей Fiddler.
Расшифровка HTTPS-трафика
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 соответственно.
Составление HTTP(S) запросов
Вкладка «Composer» позволяет создать HTTP(S) запросы с нуля, указав метод HTTP, URL-адрес, версию HTTP, заголовки и тело самого запроса (Request Body). Также есть возможность автоматического заполнения всех полей, вручную «перетащив» запрос в окно «composer». Перед отправкой запроса его можно редактировать.
Ранее выполненные запросы можно посмотреть в поле «History». Для выполнения запроса необходимо нажать Execute в правом верхнем углу.
Использование FiddlerScript
FiddlerScript – встроенный язык программирования, позволяющий значительно расширить функциональные возможности Fiddler, модифицировать пользовательский интерфейс, а также анализировать входящий и исходящий трафик. Язык основан на JScript.NET.
Сохранять код необходимо в файл CustomRules.js, который открывается в меню Rules > Customize Rules. Сам файл находится в папке \Documents\Fiddler2\Scripts.
Всякий раз, когда вы сохраняете файл, Fiddler заметит новую версию файла и попытается загрузить ее автоматически. Если необходимо пересоздать файл с изначальным кодом, просто удалите его, и Fiddler пересоздаст его из резервной копии.
Комментарии к коду содержатся в файле CustomRules.js. Более подробно о FiddlerScript можно знакомиться здесь. Для редактирования кода рекомендуется использовать FiddlerScript Editor.
Использование возможностей Fiddler на примере подмены логотипа сайта
Рассмотрим использование 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 будет полезен для выявления этих уязвимых мест для предотвращения кибератак.