Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Использование фильтров в Wireshark

Оригинал: How to Use Filters with Wireshark
Автор: Riccardo Capecchi
Дата публикации: 19 марта 2012 г.
Перевод: А.Панин
Дата публикации перевода: 28 ноября 2012 г.

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

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

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

Когда я говорю "фильтры", я имею в виду Фильтры Пакетов Беркли (Berkeley Packet Filters (BPF)). На самом деле BPF является микроязыком программирования (содержащим мнемоники на ассемблере!), выражения которого компилируются и выполняются в отношении пакетов, обрабатываемых такими программами, как tcpdump и Wireshark. Фильтры просто необходимы в том случае, когда вам хочется отделить небольшую часть пакетов из сотен тысяч пакетов, передающихся по сети с предельной скоростью 100 Мбит/с. Выражения фильтров компилируются, поэтому обработка пакетов происходит с максимально возможной скоростью, что очень важно при осуществлении захвата в реальном времени.

Фильтры в Wireshark достаточно просто использовать. Вам необходимо знать только названия полей для каждого протокола, такие, как http, icmp и ftp. Например, если вы хотите, чтобы были показаны только пакеты ICMP, вы можете просто написать icmp в строке фильтра в главном окне Wireshark. Если вы хотите выделить все пакеты, идущие в обоих направлениях относительно узла с адресом, к примеру, 10.100.1.1, выражение фильтра будет записано в форме ip.dst == 10.100.1.1 || ip.src == 10.100.1.1, что расшифровывается как указание показывать только те пакеты, поле адреса назначения (ip.dst) или (||) поле адреса источника (ip.src) IP-протокола для которых соответствует (==) 10.100.1.1.

Фильтры в Wireshark

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

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

Давайте начнем с установки Wireshark. Приложение доступно в виде бинарных пакетов для всех основных дистрибутивов, поэтому вы можете использовать ваш любимый менеджер пакетов: sudo apt-get install wireshark в Debian или Ubuntu, emerge wireshark в Gentoo или yum install wireshark в Red Hat или CentOS.

Давайте начнем с классического примера, демонстрирующего то, почему использование протокола FTP может считаться плохой идеей. Запустите Wireshark при помощи команды в терминале:
sudo wireshark

Вы можете начать захват трафика, перейдя на левую панель окна Wireshark и нажав кнопку "Capture/Interfaces". Выберите интерфейс, который "направлен в сеть" (например, eth1) и нажмите кнопку "Start", при этом Wireshark начнет исследование всех пакетов, передающихся в сети.

Начало захват трафика

Теперь перейдите во второе окно терминала и установите обычную сессию FTP. Введите имя пользователя и пароль, выполните несколько команд FTP, после чего закройте сессию. Вернитесь к окну Wireshark, в котором вы должны увидеть множество пакетов, переданных по сети с момента начала захвата. Нажмите на кнопку "Stop Capture" (или используйте сочетание клавиш Ctrl+E); после этого вы можете исследовать полученный трафик.

Понять "что есть что" в большом объеме захваченного трафика не так просто до того момента, как вы используете фильтр BPF. Хотелось бы сделать так, чтобы были показаны только пакеты, участвующие в работе FTP-соединения, поэтому в поле фильтра следует просто написать "ftp". Незамедлительно после этого будет выделен трафик, относящийся к вашей сессии FTP и в качестве потрясающей демонстрации проблем с безопасностью, вы сможете увидеть ваше имя пользователя и пароль. Вывод будет похож на следующий:
356     101.676753      10.100.1.1      192.168.0.4     FTP     86      Response: 220 (vsFTPd 1.1.3)
360     104.546659      192.168.0.4     10.100.1.1      FTP     77      Request: USER wazi
362     104.594520      10.100.1.1      192.168.0.4     FTP     100     Response: 331 Please specify the password.
366     106.530150      192.168.0.4     10.100.1.1      FTP     77      Request: PASS mytest
371     108.922240      10.100.1.1      192.168.0.4     FTP     88      Response: 530 Login incorrect.

Если результат этого исследования не склонил ваших коллег к отказу от использования FTP и переходу на OpenSSH, они безнадежны.

На этом заканчивается первая часть этой статьи, но если поднятая тема вас заинтересовала, не пропустите вторую часть "Подробнее о фильтрах в Wireshark".