Курс по сетевым технологиям
A A A

 

Пожалуй начну серию статей по Wireshark с настройки фильтров. Их у Wireshark целых 2 типа: capture и display - для захвата уже конкретных сетевых пакетов и для отображения определенных пакетов из захваченной разнородной массы пакетов соответственно.

Позвольте немного прояснить. Если вы заранее знаете какие пакеты вам нужны, то можете настроить фильтр захвата, сразу указав программе, что сохранять, а что отбрасывать, то есть это своего рода входной фильтр в программу. 

Плюсы: Экономия места на диске, если приходится сохранять большой сетевой дамп.

Минусы: Нагружает процессор. Используется только для живого сниффинга трафика.

 

Фильтр отображения используется, когда у вас уже имеются пакеты различных протоколов и хостов, полученные в процессе живого сниффинга либо сохраненные на компьютере. Данный тип фильтра представляет собой своего рода выходной фильтр, то в программу уже попали различные пакеты и из этой массы нужно выделить что-то конкретное. 

Плюсы: Можно фильтровать онлайн трафик и оффлайн файлы.

Минусы: При онлайн захвате на компьютере сохраняется большое количество ненужных пакетов. 

Итак приступим к настройке фильтров захвата.



Фильтры захвата 

Для начала добавим требуемый фильтр в программу, а затем применим его.

Открываем фильтр

Открытие менеджера фильтров захвата

 

Перед нами откроется окно с уже установленными фильтрами

Менеджер фильтров захвата


Добавим новый фильтр. В качестве фильтрующего выражения используется фильтры Беркли. Когда вы вводите выражение фильтра следите за тем, чтобы строка стала зеленой. Это говорит о том, что выражение правильное. Например, мы хотим фильтровать пакеты с адресом 2.252.255.95, отправленные на порт 53. Фильтр будет выглядеть так : host 2.252.255.95 and dst port 53. Ниже я приведу краткое объяснение выражениям Беркли и опишу как их использовать

Добавление нового фильтра захвата


Итак, фильтр мы создали. Теперь применим его.

Выбираем Capture → Options

Открытие опции Options

либо

Открытие опции Options

Откроется окно, где нужно выбрать интерфейс и сам фильтр. Кликнете на зеленый маркер для выбора конкретного фильтра

Выбор и запуск фильтра захвата

Если фильтр написан правильно, то строка фильтра “позеленеет”. 

В любом случае рекомендуется проверить правильность фильтра кнопкой Compile BPFs. Если все правильно то появится примерно такое окно

Проверка правильности написания фильтра захвата

Если есть ошибка, то программа сообщит об этом. 

Нажимаем на кнопку Start и “ловим” трафик. Если все сделано правильно, то в левом верхнем углу появится выбранный фильтр

Отображение фильтра на панели программы


Теперь попробуем разобраться, что из себя представляют фильтры Беркли и как их использовать. Для конструирования выражений используют следующие ключевые слова:

host - IP адрес получателя или отправителя

src - отправитель

dst - получатель

net - подсеть

port - порт

portrange - диапазон портов

 

Операторы объединения: 

and  или && - конъюнкция (должны соблюдаться все условия)

or  или || - дизъюнкция (должно выполняться хотя бы условие)

not  или ! - негация


Попробуем составить выражения, используя данные атрибуты.

 

host 192.168.1.1 - здесь фильтруются пакеты с адресом получателя или отправителя 192.168.1.1. 

src mail.ru - здесь указывается, что мы хотим видеть пакеты, отправителем которых является mail.ru. 

port 53 - TCP/UDP пакеты с портом 53. 

src port 53 - TCP/UDP пакеты, отправитель которых использует порт 53. 

src mail.ru and dst 192.168.1.1 - фильтруются пакеты, отправленные mail.ru на хост с адресом 192.168.1.1. Это более сложная конструкция, состоящая из 2-х простых выражений и объединенная инструкцией and (&&). Она означает, что должны соблюдаться оба условия. 

tcp and port 80 - фильтруется только TCP трафик, отправленный или направленный на порт 80. proto (protocol) означает протокол. 

(tcp or udp) and dst port 53 - TCP или UDP пакеты, отправленные на порт 53. Здесь использовалась конструкция or (||), которая означает, что должно соблюдаться хотя бы одно условие. Выражение tcp or udp я специально заключил в скобки, чтобы условие dst port 53 относилось к пакетам UDP и TCP. 

tcp or udp dst port 53 - в данном выражении мы фильтруем любые TCP пакеты отправленные или полученные на любом порту либо UDP пакеты, отправленные только на порт 53.



Фильтры отображения 

Данный тип фильтров предоставляет более тонкую фильтрацию. Многие задаются вопросом как правильно написать тот или иной сложный фильтр. Ниже я вам покажу, что ничего сложного нет и совсем не обязательно запоминать все фильтры.

1-й способ 

Теперь представим, что мы хотим фильтровать трафик по следующим параметрам: 

адрес отправителя - 165.72.12.88

адрес получателя - 2.252.255.95

протокол  - DNS

 

Для этого кликаем на кнопку Expression и перед нами откроется окно с фильтрами. Справа от фильтра даются очень краткие описания

Открытие конструктора фильтров отображения

Конструктор фильтров отображения

Список довольно большой и пригодятся хотя бы базовые знания английского. Для начала ищем IPv4 и в раскрывающемся списке выбираем нужный фильтр. Затем выбираем соответствующую инструкцию и вводим значение

Составление фильтра по адресу отправителя

Нажимаем на OK и выражение добавляется в строку фильтра


Отображение фильтра в строке фильтра

Так как у нас сложный фильтр, состоящий из нескольких выражений, то добавим соответствующую инструкцию (and, or). В нашем случае and и снова возвращаемся к нашему окну фильтров, где выбираем адрес получателя. 

Теперь нам нужно, чтобы в выражении присутствовал сам протокол DNS без каких-либо параметров. Для этого просто выбираем протокол в списке и в качестве инструкции используем “is present”. Нажимаем на OK. 

Наш фильтр готов. Осталось нажать Enter или кнопку Apply в строке фильтра. 

Пример довольно прост, но сам принцип составления комплексных выражений думаю вам понятен. Иногда могут возникнуть затруднения в поиске нужного фильтра. Для этого просматривайте описание справа от выражения.



2-й способ 

Вышеуказанный способ некоторым может показаться довольно медленным, так как приходится прокручивать огромный список выражений. Поэтому рассмотрим 2-й способ и попробуем составить требуемый фильтр. 

Выбираем любой пакет протокола DNS и раскрываем параметры протоколов. Для начала раскроем уровень IP и выделим адрес отправителя

Выбор адреса отправителя

Внизу сразу отобразится подсказка, то есть к какому выражению относится данный параметр. 

При желании можно ввести вручную данное выражение либо открыть контекстное меню и выбрать Apply as filter → Selected

Применение выбранного параметра в качестве фильтра

Выражение сразу отобразится в строке фильтра. Значение можно поменять при необходимости.

То же самое проделываем и для адреса получателя, однако для объединения с первым выражением выбираем Apply as Filter → ...and Selected. Программа автоматически добавит конъюнкцию.

DNS можно добавить вручную либо воспользоваться вышеприведенным методом. Для этого достаточно выбрать только сам протокол (то есть не надо его раскрывать). В итоге получим вот такое выражение

Составленный фильтр

Хочу отметить, что опция Apply as Filter сразу применяет выбранный фильтр, то есть не нужно потом нажимать на Enter. Если вы хотите сначала построить фильтр, возможно отредактировать, то используйте опцию Prepare as Filter. После нее необходимо нажать на Enter.



Сохранение фильтров 

Сразу же возникает вопрос можно ли сохранить фильтр и использовать его в дальнейшем. 

Конечно же, можно. Существуют 2 способа.

 

1-й способ 

У нас уже составлен фильтр, сохраним его. Для этого нажимаем на голубой маркер в строке фильтра и выбираем Save filter

Сохранение фильтра

Перед нами открывается уже знакомое окно. Меняем название и сохраняем

Редактирование фильтра отображения в менеджере фильтров

Теперь для вызова фильтра снова кликаем на голубой маркер и из списка выбираем нужный нам фильтр

Поиск и выбор сохраненного фильтра
Чтобы снова открыть менеджер фильтров отображения достаточно кликнуть на известный нам маркер и выбрать Manage Display Filter либо в верхнем меню программы выбрать опцию Analyze → Display filters.



2-й способ  

Снова кликаем на маркер и выбираем опцию Manage filter expressions. Откроется такое окно

Менеджер фильтров отображения

Его можно открыть и другим способом

Второй способ открытия менеджера фильтров отображения

Затем добавляем новое выражение, указываем название или просто букву (лучше использовать очень короткие названия) и записываем выражение фильтра

Редактирование и сохранение фильтра отображения вторым способом

Сохраняем и справа от строки фильтра появляется наше буквенное обозначение фильтра

Кнопка запуска фильтра

Если нажать на него, то программа сразу применит выбранный фильтр.

 

Я описал несколько способов работы с фильтрами. Надеюсь данная информация будет для вас полезной и работа с Wireshark станет более приятной.

 

Комментарии для сайта Cackle