что такое сниффер и как им пользоваться
Как администраторы и хакеры могут использовать приложения для отслеживания трафика
Наблюдение за сетью – это использование программного инструмента, называемого анализатором сети или сетевой сниффер, который отслеживает данные, передаваемые по сетевым соединениям в режиме реального времени. Этот программный инструмент является либо автономной программой, либо аппаратным устройством с соответствующим программным обеспечением.
Что такое сетевой сниффер
Сетевые анализаторы делают моментальные копии данных, передаваемых по сети, без перенаправления или изменения. Некоторые анализаторы работают только с пакетами TCP/IP, но более сложные инструменты работают со многими другими сетевыми протоколами и на более низких уровнях, включая Ethernet.
Несколько лет назад анализаторы были инструментами, которые использовались исключительно профессиональными сетевыми инженерами. В настоящее время такое программное обеспечение доступно бесплатно в сети, они также популярны среди интернет-хакеров и людей, которые интересуются сетевыми технологиями.
Сетевые анализаторы иногда называют сетевыми датчиками, беспроводными анализаторами, анализаторами Ethernet, анализаторами пакетов, анализаторами пакетов или просто инструментами отслеживания.
Как используются анализаторы пакетов
Существует широкий спектр приложений для анализа пакетов данных. Большинство перехватчиков пакетов могут использоваться ненадлежащим образом одним человеком и по законным причинам – другим.
Например, программа, которая захватывает пароли, может использоваться хакером, но тот же инструмент может использоваться сетевым администратором для сбора сетевой статистики, например, доступной полосы пропускания.
Наблюдение за сетью также используется для тестирования брандмауэра или веб-фильтров, а также для устранения неполадок в связке клиент/сервер.
Как работает сетевой сниффинг
Анализатор пакетов, подключенный к любой сети, перехватывает все данные, передаваемые по этой сети.
В локальной сети (LAN) компьютеры обычно обмениваются данными напрямую с другими компьютерами или устройствами в сети. Всё, что связано с этой сетью, подвергается воздействию всего этого трафика. Компьютеры запрограммированы на игнорирование всего сетевого трафика, не предназначенного для этого.
Программное обеспечение для прослушивания сети открывает доступ ко всему трафику, открывая сетевую карту компьютера (NIC) для прослушивания этого трафика. Программное обеспечение считывает эти данные и выполняет их анализ или извлечение данных.
После получения сетевых данных программное обеспечение выполняет следующие действия:
Как предотвратить атаки сетевых перехватчиков
Если вы обеспокоены тем, что программное обеспечение для слежения за сетью отслеживает сетевой трафик, исходящий от вашего компьютера, есть способы защитить себя.
Существуют этические причины, по которым кому-то может понадобиться использовать сетевой сниффер, например, когда сетевой администратор отслеживает поток сетевого трафика.
Когда сетевые администраторы обеспокоены злонамеренным использованием этих инструментов в своей сети, они используют анти-снифф-сканирование для защиты от атак сниффера. Это означает, что корпоративные сети обычно безопасны.
Тем не менее, легко получить и использовать сетевой сниффер со злыми намерениями, что делает его незаконное использование в вашем домашнем интернете поводом для беспокойства. Для кого-то может быть легко подключить такое программное обеспечение даже к корпоративной компьютерной сети.
Если вы хотите защитить себя от того, кто шпионит за вашим интернет-трафиком, используйте VPN, который шифрует ваш интернет-трафик.
Инструменты сетевого анализа трафика
Wireshark (ранее известный как Ethereal) широко известен как самый популярный в мире анализатор сети. Это бесплатное приложение с открытым исходным кодом, которое отображает данные трафика с цветовой кодировкой, чтобы указать, какой протокол использовался для его передачи.
В сетях Ethernet его пользовательский интерфейс отображает отдельные кадры в нумерованном списке и выделяется отдельными цветами независимо от того, отправляются ли они по TCP, UDP или другим протоколам.
Wireshark также группирует потоки сообщений, отправляемые туда и обратно между источником и пунктом назначения (которые со временем перемешиваются с трафиком из других соединений).
Wireshark поддерживает перехват трафика через кнопочный интерфейс запуска/остановки. Инструмент также содержит параметры фильтрации, которые ограничивают данные, отображаемые и включаемые в записи. Это критическая функция, поскольку большая часть сетевого трафика содержит обычные управляющие сообщения, которые не представляют интереса.
За эти годы было разработано много различных приложений для зондирования. Вот несколько примеров:
Некоторые из этих инструментов сетевого анализа являются бесплатными, в то время как другие чего-то стоят или имеют бесплатную пробную версию. Кроме того, некоторые из этих программ больше не поддерживаются и не обновляются, но всё ещё доступны для скачивания.
Проблемы с сетевыми снифферами
Инструменты сетевого сниффинга предлагают отличный способ узнать, как работают сетевые протоколы. Тем не менее, они также обеспечивают легкий доступ к некоторой частной информации, такой как сетевые пароли. Свяжитесь с владельцами, чтобы получить разрешение, прежде чем использовать анализатор в их сети.
Сетевые зонды только перехватывают данные из сетей, к которым подключен их хост-компьютер. На некоторых соединениях снифферы захватывают только трафик, адресованный этому конкретному сетевому интерфейсу. В любом случае, самое важное, что нужно помнить, это то, что любому, кто хочет использовать сетевой анализатор для слежения за трафиком, будет трудно сделать это, если этот трафик зашифрован.
Битва снифферов: Charles vs Proxyman
Привет, меня зовут Даша, я работаю тестировщицей клиентского мобильного приложения в Ozon.
Сегодня поговорим о снифферах в тестировании мобильных приложений –– программах для перехвата, анализа и модификации трафика. Пожалуй, самый популярный сниффер, о котором я слышала, — Charles. Про него уже не раз писали на Хабре, есть довольно детальные разборы. Но не Charles-ом единым!
Например, у нас в Ozon команда разработчиков в основном пользуется Proxyman, а тестировщики (в том числе и я) — Charles.
Не так давно у нас в команде разработки мобильного приложения случился холивар на тему “Charles vs Proxyman”. Я попыталась выяснить, почему некоторые люди пользуются Proxyman, а другие — Charles. Из разговоров с коллегами мне было не до конца понятно, какой из снифферов лучше (и чем именно). Поэтому я решила попользоваться Proxyman и разобраться самостоятельно. Давайте вместе посмотрим, какой из инструментов — Charles или Proxyman — выйдет победителем в битве снифферов.
Готовим поле для битвы снифферов: ключевое о тулинге
Снифферы позволяют видеть, что приходит с бэка, изменять или перезаписывать этот ответ; то же самое можно сделать с запросами на бэк. Это даёт нам отличные возможности для тестирования клиент-сервисного взаимодействия (особенно если основная логика зашита на сервере).
Например, сегодня с бэка приходит заголовок страницы, состоящий из одного слова, и всё выглядит красиво и соответствует макетам. Но завтра бэк решает написать в заголовке пару предложений вместо одного (условно) — и то, как это будет выглядеть, как раз и помогает узнать сниффер.
В своей работе я чаще всего использую следующие функции: Rewrite, Map Local, Breakpoints и Throttling.
Rewrite:
для замены URL — чтобы перенаправить трафик с тестовой среды на продакшен или наоборот (например, если фича готова только для тестовой среды);
для подмены статус-кода, который приходит с бэка, — чтобы посмотреть, корректно ли будет вести себя приложение при ошибке сервера;
для добавления или изменения заголовка в запросе — если фичу необходимо протестировать с определёнными хедерами.
Map Local — для полной замены ответа страницы с бэка на локальный файл.
Этой фичей удобно пользоваться для тестирования различных состояний элементов: открываешь файл, на который был заменён ответ страницы, меняешь в нём значение, сохраняешь и обновляешь страницу на устройстве. Как шутят наши разработчики, если у тебя достаточно сохранённых ответов с разных страниц, то из них можно построить приложение.
Breakpoints — с помощью этой функции можно поставить точку останова на любой URL; когда устройство будет его запрашивать, запрос к серверу откроется в формате редактирования.
Запрос можно будет изменить или прервать; то же самое произойдёт с ответом от сервера. По сути, Breakpoints может заменить Rewrite и Map Local, но всё же эта фича больше подходит для единоразового использования. Постоянно выискивать ту самую строчку, которую необходимо изменить, довольно затратно по времени, да и запрос за это время может отвалиться по тайм-ауту.
Throttling — отличная фича для подмены скорости интернета. Можно увидеть, как поведёт себя приложение на медленной скорости, как при этом будут загружаться картинки, видео или карта.
Давайте сравнивать Charles и Proxyman на примере этих функций.
Начинаем битву снифферов: установка и настройка
Для начала давайте разберёмся, как установить наши снифферы.
Charles: можно бесплатно скачать с официального сайта.
Proxyman: скачиваем бесплатно с официального сайта.
Install and trust. Сниффер готов к работе.
Сравнение основных фич Charles и Proxyman
Установка сертификата и подключение мобильного устройства к снифферу
Charles:
Убедиться, что телефон и ноутбук подключены к одной сети.
Открыть браузер и перейти по ссылке chls.pro/ssl.
Для Android: после загрузки сертификата необходимо его открыть и задать имя; после этого устройство будет готово к работе со сниффером.
Всё, вы великолепны! Можете запускать приложение и работать с трафиком.
Proxyman: процесс подключения реального устройства такой же, как в случае с Charles. Отличаются только место, где можно узнать IP, и адрес для скачивания сертификата.
В этом раунде победителем для меня стал Proxyman. В нём есть подробное описание процесса установки сертификата на мобильное устройство. В случае с iOS многие забывают о том, что необходимо включить опцию «Доверие сертификатам», а подробная инструкция Proxyman позволяет избежать этой ошибки.
Подключение симулятора к снифферу
Подключение симулятора происходит немного по-другому по сравнению с подключением реального устройства. Я пишу тут именно про симулятор, потому что подключение эмулятора ничем не отличается от подключения реального устройства.
Charles:
Proxyman:
2. Поставить последовательно галочки в каждом пункте.
Готово, вы великолепны!
В этом раунде тоже выигрывает Proxyman — это видно даже по количеству пунктов в списке. Несколько кликов — и всё готово, в отличие от замороченной настройки Charles.
Функции снифферов: Rewrite
Charles:
Нажать на Add для создания правила для Rewrite.
В окне Location с помощью кнопки Add можно добавить один или несколько URL, для которых будет работать это правило.
В окне под Location с помощью кнопки Add можно задать правило, по которому будет работать Rewrite.
Есть большой выбор типов Rewrite, которые можно задать в выпадающем меню Type. Например, можно добавить, изменить или удалить Header в Request, изменить Response Code или подменить URL запросов.
Например, вот так будет выглядеть правило для добавления Header в Request:
Proxyman:
Нажать + в левом нижнем углу и задать правила, по которым будет работать скриптинг.
В поле Name внести название шаблона.
Указать URL, для которого будут работать эти правила.
Всё, после этого можно выбирать и заменять значения Request и Response.
Вот так будет выглядеть скрипт для добавления параметров Header и Query в Request:
В этом раунде для меня однозначно выигрывает Charles. Возможно, потому что я не фанат замороченных настроек и писать срипт для подмены хедера для меня слишком сложно по сравнению с нажатием нескольких кнопок.
Функции снифферов: Map Local
Следующая по порядку, но не менее важная функция — Map Local. С её помощью можно полностью подменить ResponseBody.
Charles:
Запустить приложение, чтобы трафик пошёл через Charles.
Щёлкнуть правой кнопкой по URL, ответ от которого необходимо изменить, и выбрать Map Local.
В окне Edit Mapping нажать на кнопку Choose и выбрать файл, содержимое которого должно отображаться в ответе.
Proxyman:
Нажать + в левом нижнем углу и заполнить поля Name (название правила) и URL (адрес, для которого будет выполняться правило).
Нажать Select Local File и выбрать JSON-файл, которым будет подменяться ответ (запрос).
В этом раунде для меня нет победителя, но фича, с помощью которой в Proxyman можно открывать файл сразу в текстовом редакторе, мне очень понравилась.
Функции снифферов: Breakpoints
Функция Breakpoints предназначена для изменения и прерывания запросов и ответов непосредственно в сниффере.
Charles:
Нажать на кнопку Enable Breakpoints на верхней панели.
Щёлкнуть правой кнопкой по URL, для которого необходимо использовать Breakpoints, и нажать на Breakpoints.
После перехода по указанному URL сработает Breakpoints — и запрос с ответом станут редактируемыми; по нажатию на кнопку Abort их можно будет прервать.
Proxyman:
Щёлкнуть правой кнопкой по URL, для которого необходимо использовать Breakpoints, и нажать на Breakpoints.
В открывшемся окне можно задать правила, по которым будет работать Breakpoints.
При желании можно изменить URL, а также использовать Breakpoints для чего-то одного: только для запроса или только для ответа.
В этом раунде силы снифферов равны.
Функции снифферов: Throttling
Последняя функция из основного незаменимого арсенала снифферов — Throttling.
Charles:
Выбрать опцию Enable Throttling. Если поставить чекбокс Only for selected hosts, кнопка Add станет активной и по нажатию на неё можно будет добавить те URL, для которых сработает изменение скорости интернета.
Скорость интернета, которую будет симулировать Charles, можно выбрать из выпадающего списка или задать в соответствующих полях:
Proxyman:
Выбрать опцию Enable Network Conditions.
По нажатию на + откроется окно, в котором можно настроить правила симуляции скорости интернета.
В этом раунде соперники равны.
Charles vs Proxyman: выбираем победителя
Мы рассмотрели только четыре функции снифферов — из списка незаменимых. Понятно, что в целом функций гораздо больше (надеюсь когда-нибудь собраться с силами и написать более подробный гайд по Proxyman).
Как видно из итогов раундов, у каждого сниффера есть свои плюсы и минусы. Мне нравится Charles за удобный интерфейс и более понятную настройку правил (нажал две кнопочки — и готово!), а Proxyman — за более гибкую настройку правил и подключения симуляторов (наверное, именно этим объясняется любовь разработчиков).
В этот раз явного победителя в битве снифферов нет; какой использовать, каждому предстоит решать самостоятельно. Рассказывайте в комментариях, что выбираете вы!
Fiddler = удобный сниффер + прокси сервер
Привет. В данной статье расскажу как и зачем можно изменять HTTP пакеты при отправке на сервер и при получении ответов от сервера.
В статье много практических примеров.
Пример 1. Анализ трафика.
Пользователи вашей сети пользуются вашим прокси-сервером. Вы можете увидеть на какие сайты заходят пользователи, запрещать дальнейшие переходы на эти сайты.
Пример 2. Сбор данных.
Ваши пользователи пользуются через вас некоторыми веб-ресурсами. Например, они вводят vin-номер своего автомобиля на сайте дилера авто и получают в ответ данные этого автомобиля. Вы можете сохранять эти данные в свою базу данных.
Пример 3. Подмена HTTP-пакетов.
Вам нужно изменить для ваших пользователей внешний вид сайта. Вы можете изменить стили сайта, скрывать любые элементы, добавить свои элементы, вырезать определенные слова или заменить их на другие слова, изменить картинку сайта на любую свою.
Пример 4. Подмена POST-данных.
Вам нужно подправить данные передаваемые на веб-сервер через POST-запрос. Существует множество информации передаваемой в POST-запросах. Пример: отправка логина/пароля на сервер в процессе авторизации. Или онлайн тест отправляет на сервер результаты вашего теста.
Установка Fiddler
Установка простая и быстрая.
Настройка Fiddler
В меню File есть опция «Capture Traffic«. По умолчанию опция включена. Это означает что Fiddler прописывает в реестре Windows себя в качестве прокси-сервера. Браузеры Internet Explorer, Edge, Chrome используют данную настройку, а значит HTTP-пакеты от этих браузеров пойдут через Fiddler.
Опция «Keep: All sessions«.
В данном режиме Fiddler не очищает журнал собранных HTTP-пакетов. Если требуется продолжительная работа Fiddler, то при большой нагрузке этих пакетов будет очень много и Fiddler скушает всю доступную оперативную память компьютера. Чтобы этого не случилось переключите в режим «Keep: 100 sessions».
Опция «Decode«.
По умолчанию выключена. В процессе анализа собранных пакетов рекомендуется включить чтобы пакеты автоматически декодировались. Либо можно выделить собранные пакеты через Ctrl+A, вызвать меню нажатием правой кнопки мыши по выделенным пакетам и нажать «Decode Selected Sessions».
Основные настройки
Вкладка «HTTPS».
После установки Fiddler не собирает HTTPS-трафик, это необходимо включить. Ставим галочку в опции «Decrypt HTTPS traffic«. После этого Fiddler сгенерирует самоподписанный сертификат и спросит хотите ли установить данный сертификат. Отвечаем да.
Вкладка «Connections».
Здесь устанавливаем на каком порту Fiddler работает как прокси-сервер. Порт по умолчанию «8888».
После изменения данных настроек необходимо перезапустить программу чтобы настройки вступили в силу.
Вкладка «Gateway».
Здесь устанавливаем куда Fiddler отправляет входящие пакеты, какой прокси использует.
После изменения данных настроек необходимо перезапустить программу чтобы настройки вступили в силу.
Установка сертификатов на Windows устройствах
После того как сгенерированный сертификат скопирован на рабочий стол этот сертификат необходимо установить на каждое устройство которое будет использовать данный Fiddler в качестве прокси-сервера.
Для установки сертификата используем консоль управления MMC: в коммандной строке вводим команду «mmc».
В меню файл выбираем «Добавить или удалить оснастку«. Из доступных оснасток выбираем «Сертификаты» и с помощью кнопки «Добавить» выбираем данную оснастку. Нажимаем «Ок» и выбираем «учетной записи компьютера«. Это нужно чтобы открыть сертификаты которые установлены для всего компьютера, а затем установить сертификат Fiddler именно в это хранилище. Если открыть сертификаты «моей учетной записи пользователя«, то после установки сертификата Fiddler в это хранилище другие пользователи данного компьютера не смогут подключиться к Fiddler.
Установку сертификата производим в «Доверенные корневые центры сертификации».
Если ваши компьютеры находятся в домене, то используйте инструменты домена для установки сертификата каждому пользователю или на каждый компьютер сети.
Анализ трафика
В процессе работы Fiddler сниффит все HTTP-запросы и их обычно много. Для поиска необходимых запросов можно использовать фильтры. Правой кнопкой мыши выбираем лишний запрос, выбираем «Filter Now» и «Hide ‘. ‘» чтобы скрыть запросы к данному домену. Можно удалять вручную выделенные запросы используя кнопку «Delete«.
Кроме использования фильтров можно искать отдельный текст в теле запросов/ответов: «Ctrl+F» для открытия меню поиска. Найденные запросы подсвечиваются по умолчанию желтым цветом.
Изменение данных запросов
В редакторе скриптов есть два основных метода: «OnBeforeRequest» и «OnBeforeResponse«:
Ниже приведены примеры скриптов с указанием в каком методе их расположить.
Задача 1: Запрет сайта
Запрещаем переход на адрес сайта содержащий строку.
Задача 2: Запрет загрузки ресурса
Запрещаем загрузку «.svg» файлов для заданного адреса сайта.
Задача 3: Переадресация запроса
Переадресация запроса на адрес сайта содержащий строку.
Задача 4: Сбор данных
Пользователи подключаются через данный прокси-сервер и делают в браузерах некоторые запросы вида «https://myhost.ru?key=abcd&vin=VF38BLFXE81078232&lang=ru«. Задача записать в базу данных событие поиска и передать значение vin-номера. Данный скрипт создает файлы с названием включающем vin-номер. Кроме скрипта необходимо создать утилиту/службу, которая раз в заданный интервал читает каталог «C:\vinsearch\» и записывает данные в базу данных.
Задача 5: Изменить текст в ответе
В данном примере меняем текст «Иванов» на «Петров«.
Задача 6: Заменить ресурс веб-портала на локальный ресурс
Заменим картинку веб-портала на картинку расположенною на локальном диске.
Задача 7: Изменение свойств HTML-объектов
Например, есть картинка с заданными размерами в HTML и нужно эти размеры изменить.
Задача 8: Скрыть элементы по className меняя css-файлы
В данном примере скрываем элементы зная их className в css-файле добавляя свойство «visibility: hidden;«
Задача 9: Заставить страницу открываться в текущем окне
Пример: существует JavaScript, который открывает ссылку в новом окне. Нужно сделать чтобы ссылка открывалась в текущем окне.
Задача 10: Выполнение скриптов для определенных IP
В данном примере меняем текст «Иванов» на «Петров» только для IP = «192.168.0.100«
Задача 11: Меняем css-стили портала
Css-файлы веб-портала можно сохранить на локальном диске, отредактировать и настроить скрипт отдавать стили с локального диска, а не с портала.
Задача 12: Запрет PUT-команды и аналогичных
Запрет команды по ее типу: «PUT«, «DELETE«, etc.
Задача 13: Изменение тела POST-запроса
Изменить тело POST-запроса для заданного портала. При авторизации на данном портале вне зависимости от введенных пользователем данных на веб-портал отправятся данные из скрипта.
Задача 14: Меняем заголовки HTTP-пакета
Заголовки пакетов можно легко редактировать: удалять, добавлять, изменять.
Задача 15: Меняем Cookie
Работа с Cookie: добавление, удаление, редактирование