Привет, Хабр! Сегодня расскажу о применение мощного и удобного инструмента для анализа и мониторинга HTTP(S) трафика Fiddler. По сути, 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  Далее найдем логотип от Яндекса и также скопируем ссылку:   https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Yandex_logo_2021_Russian.svg/640px-Yandex_logo_2021_Russian.svg.png Перейдем во вкладку «AutoResponder», создадим правило: в «If request matches…» заносим URL логотипа Google, в «Then respond with…» заносим логотип Яндекса. Активируем «Enable rules» и «Unmatched requests passthrough»: В результате при переходе на сайт google.ru вместе логотипа Google будет отображаться логотип Яндекса: Аналогичный результат можно получить, используя FiddlerScript. Для этого в обработчик OnBeforeRequest необходимо добавить следующий код: Таким образом, рассмотренный функционал Fiddler позволяет расшифровать защищенный HTTPS трафик, произвести его фильтрацию и проанализировать поступающие запросы и ответы. На примере подмены логотипа сайта мы показали, что Fiddler обладает возможностью подмены HTTPS-трафика, что может быть использовано для выявления уязвимых мест в работе приложения или сайта. Специалистам по информационной безопасности Fiddler будет полезен для выявления этих уязвимых мест для предотвращения кибератак.  Профессиональное сообщество