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








Книги по Linux (с отзывами читателей)

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

Анализ сети с помощью Wireshark

Оригинал: Weekend Project: Analyze Your Network with Wireshark
Автор: Nathan Willis
Дата публикации: 29 октября 2010 г.
Перевод: В. Семененко
Дата перевода: июль 2011 г.

Введение

Wireshark является программой-анализатором сетевых пакетов с исходным кодом. Без какого-либо специального оборудования или перенастройки эта программа может перехватывать входящие и исходящие данные на любом сетевом интерфейсе компьютера: Ethernet, WiFi, PPP, loopback и даже USB. Обычно Wireshark применяется для выявления проблем в сети, таких, как перегруженность, слишком долгое время ожидания или ошибки протоколов. Но для того, чтобы изучить Wireshark, совсем не нужно ждать, когда произойдет какая-либо поломка. Давайте приступим к обзору этой программы.

Wireshark написан на библиотеках GTK+ и имеет графический интерфейс (GUI). Но помимо GUI, есть консольная реализация программы по имени TShark, обладающая тем же функционалом, что и ее графический вариант. Так как программа очень популярна в качестве административного инструмента для анализа сетей, она имеется в репозиториях практически любого дистрибутива Linux. Есть версии программы под Windows и Mac OS X. Если по каким-либо причинам вы не смогли найти ее в своих репозиториях Linux, всегда можно скачать готовые сборки под различные дистрибутивы с официального сайта. Или же скачать, собрать и установить программу из исходников.

Сразу стоит обратить внимание, что запуск Wireshark необходимо производить с правами root, так как для перехвата трафика программе нужны привилегии суперпользователя для перехода в так называемый неразборчивый режим ("promiscuous mode"). Ядром Wireshark является библиотека libpcap, с помощью которой и производится перехват данных. Программа имеет встроенную поддержку очень большого количества сетевых устройств. Проверить, будет ли ваша сетевая карта работать под этой программой, можно на странице wiki проекта Wireshark. Но практически все современные Ethernet и Wifi карты не имеют каких-либо проблем с совместимостью в этой программе.

Перехват трафика

Запуск новой сессии перехвата производится в окне программы из меню "Capture". Чтобы увидеть весь список сетевых интерфейсов, которые смогла обнаружить Wireshark, перейдите по пути в меню "Capture > Interfaces". Появится диалоговое окно, в котором, помимо физических устройств, будет присутствовать псевдо-устройство "any", которое перехватывает данные со всех других устройств этого списка.
Перед началом можно задать некоторые опции, с которыми будет запускаться перехват. Перейдя по "Capture > Options", достаточно выбрать:

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

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

Продолжительность перехвата зависит от того, какую информацию вы бы хотели получить в результате. Например, для анализа и решения трудноопределимых проблем, связанных с работой Интернет-сервисов, потребуется несколько часов. Зато для ознакомления с основными возможностями программы будет достаточно всего нескольких минут.

Для анализа любого полученного пакета достаточного выбрать его в окне логов. Однако, делать это целесообразно после остановки перехвата данных. Подробная деталировка интересующего пакета будет представлена в отдельном древовидном окне, в котором все его составляющие будут рассортированы по сетевым уровням. К примеру, если у вас есть проблемы с Ethernet, вам нужно анализировать Ethernet-фреймы; если же это протокол HTTP, то вам нужно "погружаться" в уровень протокола http.

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

Анализ данных

Система фильтров является основным способом преобразования полученных данных в нужный вам формат. Для того, чтобы выбрать нужный фильтр, щелкните на кнопке "Filter" в окне программы. Появится окно с опциями на выбор: только TCP; только UDP; все IP-адреса, кроме локальных; все, кроме DNS и ARP; и многие другие. При выборе любого фильтра из списка в окне синтаксиса Wireshark будет отображена полная команда, представляющая собой фильтр в его "развернутом" виде. Это полезно для изучения синтаксиса Wireshark при написании собственных фильтров.

Например, фильтр "Не получать данные по протоколу HTTP и SMTP с адреса 192.168.0.1" будет выглядеть следующим образом:
not (tcp.port == 80) and not (tcp.port == 25) and ip.addr == 192.168.0.1
Щелкните кнопку "Применить" ("Apply") и Wireshark отфильтрует в главном окне перехваченные им данные. Конечно, вы можете написать и затем сохранить свой собственный фильтр, нажав кнопку "Расширения" ("Expression"); Wireshark позволяет вручную выбрать логические операторы и известные поля, которые вы можете использовать при составлении своих собственных фильтров.

Меню "Анализ" ("Analyze") содержит набор более сложных заранее предустановленных опций фильтрации.


1."Enable Protocols" предоставляет вам возможность включить или отключить протоколы;
2."Specified Decodes" позволяет декодировать определенные протоколы, что может быть полезным при диагностике конкретно выбранного приложения;
3."Follow TCP Stream" поможет выбрать отдельное соединение по TCP-протоколу и проследить его состояние от начала и до конца; подобные опции имеются для UDP и SSL-соединений;
4."Expert Infos" извлекает сообщения об ошибках и флаги предупреждения (такие, как потерянный или не в очереди сегмент) для быстрого обнаружения проблемы.

Меню "Статистика" ("Statistics") предоставляет более общий обзор всего набора перехваченных данных. Это меню содержит предустановленные функции для анализа общих параметров сети и предоставляет их в удобном табличном виде. Если вы исследуете сетевой трафик вашей сети в первый раз, этот инструмент поможет вам понять основные принципы ее функционирования. Здесь вы можете проанализировать такие данные, как время ответа; размеры фрагментов, на которые разбиты пакеты; трафик на уровне ссылок и приложений.

Wireshark также может выводит полученную информацию в графическом режиме, что облегчает ее восприятие. Перейдя в "Graphs tool" в меню "Статистика" ("Statistics"), вы можете выбрать пять фильтров для сравнения файлов позаголовочно с помощью выделения различными цветами.

Начало анализа

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

Конечно, если в вашей сети имеется зомби-машина, зараженная трояном, вы легко можете обнаружить его, например, как спам-бот, если видите тысячи SMTP-соединений, запущенных в течение одного часа. Обнаружение вирусов и вредоносных программ является важной задачей анализа. Но определение причины, почему один из ваших файловых серверов работает чуть медленнее, чем остальные, может потребовать от вас более глубоких исследований.

Обучающие материалы по этой программе на сайте проекта Wireshark являются незаменимым подспорьем. Wiki имеет несколько страниц, посвященных основным проблемам сети, а также ссылки на другие источники с подобной информацией. Представлена информация по другим программам сетевого анализа и анализа безопасности, таким как Nagios, EtherApe, NMap и tcpdump. Большинство исследований проблем в сети требуют понимания сути стеков протокола TCP/IP, поэтому одна или две хорошие книги по этой тематике потребуются наверняка.

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

Экстра возможности: визуализация, альтернативные перехваты

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

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

Wireshark может экспортировать захваченные данные в файл формата CSV, который в дальнейшем вы можете открыть в любом другом приложении, например, в обыкновенной электронной таблице, наподобие Gnumeric или OpenOffice, или в таком статистическом пакете, как R или gnuplot. Хорошие приложения для анализа вы можете найти на forensicswiki.org. Список этих приложений постоянно меняется. К примеру, популярный движок анализа Freebase Gridworks был преобразован в проект Google Refine, который может визуализировать сетевой трафик значительно более удобным способом.

И последнее, но не менее важное. Хотя Wireshark почти всегда позиционируется как сетевой инструмент для анализа, правда заключается в том, что он может анализировать и другие устройства, такие как USB-трафик и даже Unix-сокеты между приложениями.

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