Network Performance Monitoring (NPM) and Diagnostics | Application Performance Monitoring (APM) | Application-Aware Network Performance Monitoring (AA NPM) | Network Fault Management | Information Security | Network Security

Анализ дампов TCP с помощью Wireshark

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

Эта статья является продолжением материала - «Протокол TCP: что нужно знать специалисту по анализу сетевого трафика».

Генерация дампов TCP

Анализ дампов TCP с помощью Wireshark

Утилита tcpdump (http://www.tcpdump.org/manpages/tcpdump.1.html) для Linux, Mac OS и прочих операционных систем семейства UNIX — это простой и доступный программный инструментарий, который можно использовать для захвата дампов TCP. Также стоит отметить, что для захвата сетевого трафика он использует библиотеку libpcap, с которой в том числе работает и сверхпопулярная программа-анализатор трафика Wireshark.

Чтобы, к примеру, установить tcpdump (Ubuntu), используйте команду: «apt-get install tcpdump».

Запуск TCPDUMP

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

  • «tcpdump -D»: показать все доступные интерфейсы;
  • «tcpdump -i eth0»: захватить трафик на интерфейсе «eth0»;
  • «tcpdump -i any»: захватить трафик на любом интерфейсе;
  • «tcpdump -i wlan0 port 80»: захватить трафик на интерфейсе «wlan0», проходящий через порт 80;
  • «tcpdump -i wlan0 -c 5»: захватить 5 пакетов на интерфейсе «wlan0»;
  • «tcpdump -i wlan0 tcp»: захватить только TCP-трафик на интерфейсе «wlan0»;
  • «tcpdump -i wlan0 src 192.168.1.1»: захватить трафик на интерфейсе «wlan0», источником которого является IP-адрес 192.168.1.1;
  • «tcpdump -i wlan0 dst 192.168.1.1»: захватить трафик на интерфейсе «wlan0», отправляемый по IP-адрес 192.168.1.1;
  • «tcpdump “src port 22” and “dst host 1.2.3.4”»: несколько разных команд tcpdump, объединенные с помощью булевых операторов;
  • «tcpdump -i wlan0 -s 65535»: захватить трафик на интерфейсе «wlan0» размером 65535 байт. Значением по умолчанию на данный момент является 262144 байт (более старые версии tcpdump по умолчанию захватывали всего 68 или 96 байт);
  • «tcpdump -i wlan0 -w dump.pcap»: захватить трафик на интерфейсе «wlan0» и записать результат в файл библиотеки libpcap (расширение «.pcap»);
  • «tcpdump -r dump.pcap»: прочитать захваченный файл (более предпочтительно для анализа файлов «.pcap» использовать Wireshark).

Больше информации о том, как работать с утилитой-сниффером сетевых пакетов с интерфейсом командной строки tcpdump, вы можете найти здесь (https://www.tecmint.com/12-tcpdump-commands-a-network-sniffer-tool/)

Примечание. Если вы планируете анализировать пакеты с помощью Wireshark, вам необходимо записывать их в файл «.pcap» с помощью аргумента «-w».

Ниже приведена команда, которую мы можем вам рекомендовать использовать в тех случаях, когда вы не планируете использовать слишком много фильтров и хотите проанализировать захваченные пакеты с помощью Wireshark:

  • «tcpdump -i -s 65535 -w .pcap».

Предварительная обработка и анализ с помощью Wireshark

Предварительная обработка и анализ с помощью Wireshark

После создания файла «.pcap» с помощью утилиты tcpdump вы можете для анализа вашего трафика использовать богатый инструментарий графического пользовательского интерфейса программы-анализатора трафика Wireshark. Более подробно о том, как использовать Wireshark, читайте в этом разделе. Но прежде, чем перейти непосредственно к анализу, необходимо провести предварительную обработку собранных вами результатов. Среди важных вещей, которые требуют вашего внимания, следующие:

  • Формат времени.

Чтобы изменить формат даты и времени в WireShark используйте «View -> Time Display Format» («Вид» -> «Формат отображения времени»).

  • Сдвиг времени.

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

Например, у вас есть сервер ESB WSO2, работающий в часовом поясе UTC-7:00. Ваши лог-файлы ESB-системы будут сгенерированы по времени этого часового пояса, как и дампы TCP, так как будут созданы на этом же сервере. Затем вы пытаетесь проанализировать дампы TCP из часового пояса UTC+2:00.

Теперь предположим, что некий TCP-пакет прошел через ESB-сервер в 8 часов утра 7 января 2019 года. Но когда вы откроете этот дамп TCP в своей часовой зоне для анализа времени этого пакета, оно будет отображаться как 5 часов вечера 7 января 2019 года. Это связано с тем, что Wireshark корректирует время пакета в соответствии с вашим часовым поясом.

Но когда вы захотите сравнить эти данные, например, с лог-файлами ESB-сервера, который находиться не в вашей временной зоне, а в часовом поясе UTC-7:00, вы не сможете сделать это корректно. Поэтому сначала вам нужно сдвинуть время в TCP-пакетах на 9 часов, после чего вы сможете связать его с временными метками лог-файла сервера WSO2 ESB.

Это можно сделать с помощью опции сдвига времени в Wiresharks: «Edit -> Time Shift» («Правки -> Сдвиг времени») либо с помощью программного инструментария editcap, который является частью Wiresharks и предназначен для конвертации захваченных пакетов. Более подробно про программу editcap смотрите здесь (https://www.wireshark.org/docs/man-pages/editcap.html).

Таким образом, при работе с инструментарием editcap для выше озвученного нами примера вам стоит ввести: «editcap -t 32400 mytcpdump.pcap», что будет соответствовать увеличению временных меток в вашем файле «mytcpdump.pcap» на 32400 секунд, то есть на необходимые нам +9 часов.

Более подробно об использовании временных зон в Wiresharks смотрите здесь (https://www.wireshark.org/docs/wsug_html_chunked/ChAdvTimezones.html)

а больше информации о том, как изменить временные зоны при анализе файлов «.pcap» вы найдете здесь (https://ervikrant06.wordpress.com/2015/01/18/how-to-change-timezone-while-analyzing-pcap-file/).

  • Объединение нескольких файлов с дампами TCP.

Когда вам необходимо проверить вместе сразу несколько дампов TCP, вы можете объединить эти несколько файлов с дампами TCP в один файл. Первый способ сделать это — запустить диалоговое окно «Merge» графического интерфейса WireShark: «File -> Merge» («Файл -> Объединить»). Второй способ — использовать специальный программный инструментарий mergecap, входящий в пакет Wiresharks. Он был как раз и создан для объединения нескольких сохраненных файлов захвата в один выходной файл. При использовании программы mergecap введите: «mergecap -w outfile.pcap input-1.pcap input-2.pcap», где как вы уже, наверное, догадались, после аргумента «-w» идет имя выходного файла «outfile.pcap», а «input-1.pcap» и «input-2.pcap» — имена объединяемых файлов. Более подробную информацию об объединении нескольких файлов в один с помощью возможностей WireShark вы можете почерпнуть здесь (https://www.wireshark.org/docs/wsug_html_chunked/ChIOMergeSection.html) и здесь (https://www.wireshark.org/docs/wsug_html_chunked/AppToolsmergecap.html).

  • Фильтры.

Wireshark предоставляет широчайшие возможности по использованию различных фильтров к дампам TCP, в том числе фильтрация по хостам, портам, IP-адресам, протоколам многим другим параметрам. Детальнее читайте здесь (https://wiki.wireshark.org/DisplayFilters).

  • Слежение за потоком.

Кроме того, Wireshark предлагает одну интересную возможность, которая, по своей сути, также является одним из многочисленных доступных фильтров. Но запустить его вы можем почти мгновенно, всего лишь кликнув правой кнопкой мыши на любом из пакетов, входящих в набор пакетов интересующего вас потока, и выбрать пункт меню «Follow TCP Stream» («Отследить TCP-поток»). Результатом этого действия будет то, что Wireshark установит соответствующий фильтр отображения и откроет диалоговое окно с отфильтрованным набором TCP-пакетов в интересующем вас потоке. Эта возможность будет очень полезной, если, к примеру, вы пытаетесь разобраться в потоке данных. Данная функциональность позволит вам увидеть протокол таким, каким его видит прикладной уровень вашего приложения. Более подробно по предоставляемым Wireshark возможностям по слежению за потоками читайте здесь (https://www.wireshark.org/docs/wsug_html_chunked/ChAdvFollowStreamSection.html).

Выводы

Анализ TCP с помощью Wireshark и других программ

Если вы столкнулись с необходимостью устранить общие проблемы с сетью, то лучший способ сделать это — проанализировать поток TCP-пакетов в сети. Инструментарий для такого анализа доступен совершенно бесплатно и не сложен в работе. Для тех, кто хочет узнать больше, в статье вы найдёте ссылки, по которым сможете почерпнуть больше информации по всем вопросам, которые возникнут у вас в процессе работы!

 

Подписывайтесь на рассылку, делитесь статьями в соцсетях и задавайте вопросы в комментариях!

Вечный параноик, Антон Кочуков.

Комментарии
Тут пока ничего нет, но Вы можете быть первым!
Авторизуйтесь для этого

См. также:
Заказать звонок

- Email
- Confirm
Имя *
Телефон *
Комментарий
Согласие на отправку персональных данных *

* - Обязательное для заполнения