Как пользоваться wireshark для анализа трафика

Введение

Из всех методов изучения компьютерных сетей анализ трафика, пожалуй, самый кропотливый и трудоемкий. Интенсивные потоки современных сетей порождают очень много «сырого» материала, отыскать в котором крупицы полезной информации далеко не просто. За время своего существования стек TCP/IP оброс многочисленными приложениями и дополнениями, счет которым идет на сотни и тысячи. Это прикладные и служебные протоколы, протоколы аутентификации, туннелирования, доступа к сети и так далее. Кроме знания азов сетевых взаимодействий, исследователю трафика (то есть тебе) нужно свободно ориентироваться во всем этом протокольном многообразии и уметь работать со специфичными программными инструментами — снифферами, или, по-научному, анализаторами трафика (протоколов).

Функциональность сниффера — это не только возможность использования «неразборчивого» (promiscuos) режима работы сетевой карты для перехвата. Подобный софт должен уметь эффективно фильтровать трафик как на этапе сбора, так и во время изучения отдельных единиц передачи (фреймов, пакетов, сегментов, датаграмм, сообщений). Причем чем больше протоколов сниффер «знает», тем лучше.

Современные анализаторы протоколов много чего умеют: считать статистику трафика, рисовать графики хода сетевых взаимодействий, извлекать данные прикладных протоколов, экспортировать результаты работы в различные форматы… Поэтому подбор инструментария для анализа сетевого трафика — это тема для отдельного разговора. Если ты не знаешь, что выбрать, или же не хочешь тратить деньги на платное ПО, то воспользуйся простым советом: установи Wireshark.

Фильтры для Wi-Fi фреймов

Показать элементы четырёхэтапных рукопожатий (то есть фреймы протокола EAPOL):

eapol

Показать фреймы Beacon (маяки):

wlan.fc.type_subtype == 0x08

Показать фреймы Probe Response:

wlan.fc.type_subtype == 0x05

Показать всё сразу: EAPOL, маяки, Probe Response:

wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol

Показать беспроводные фреймы для определённого устройства с MAC-адресом BSSID:

wlan.addr==BSSID

Показать EAPOL, маяки, Probe Response для определённого устройства с MAC-адресом 28:28:5D:6C:16:24:

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol) && wlan.addr==28:28:5D:6C:16:24

Показ всех PMKID:

eapol && wlan.rsn.ie.pmkid

Либо просто:

wlan.rsn.ie.pmkid

Показать PMKID с определённым значением:

wlan.rsn.ie.pmkid == 21:89:fa:52:75:df:e9:f5:56:f3:2e:e5:4b:86:b7:8f

Показать PMKID, маяки, Probe Response:

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || (eapol && wlan.rsn.ie.pmkid))

Показать PMKID, маяки, Probe Response для точки доступа с MAC-адресом 40:3D:EC:C2:72:B8:

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || (eapol && wlan.rsn.ie.pmkid)) && wlan.addr==40:3D:EC:C2:72:B8

Показать только первое сообщение рукопожатия:

wlan_rsna_eapol.keydes.msgnr == 1

Показать только второе сообщение рукопожатия (можно использовать для сообщения рукопожатия с любым номером):

wlan_rsna_eapol.keydes.msgnr == 2

Показать фреймы для точек доступа со скоростью (Data Rate) 1 Мb/s:

wlan_radio.data_rate == 1

Показать фреймы для точек доступа со скоростью более 10 Мb/s:

wlan_radio.data_rate > 10

Показывать точки доступа на определённой частоте:

radiotap.channel.freq == 2412

Показывать точки доступа с определённым уровнем сигнала:

wlan_radio.signal_dbm > -50

Фильтры, связанные с наличием у устройства антены:

radiotap.present.antenna == 1

и

radiotap.antenna == 1

Трафик протоколов межсетевого уровня

Фильтрация IPv4 протокола

Показать IP трафик (сюда относятся TCP, UDP, а также протоколы уровня приложений DNS, HTTP — то есть практически всё, кроме протоколов канального уровня, которые не используют IP адреса для передачи данных (в локальных сетях Ethernet в качестве адресов доставки они используют MAC-адреса)):

ip

Если быть более точным, имеется ввиду трафик протокола IPv4, который обычно называют просто IP (Internet Protocol).

Показать трафик, связанный с определённым IP адресом (впишите его вместо x.x.x.x). Будут показаны пакеты, в которых этот IP адрес является источником данных ИЛИ получателем:

ip.addr == x.x.x.x

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

ip.addr == x.x.x.x && ip.addr == y.y.y.y

Показать трафик, источником которого является хост с IP адресом 138.201.81.199:

ip.src == 138.201.81.199

Показать трафик, адресатом которого является хост с IP адресом 138.201.81.199:

ip.dst == 138.201.81.199

Обратите внимание, IP протокол оперирует IP адресами, но не оперирует портами. Порты являются частью протоколов TCP и UDP

IP протокол отвечает только за маршрутизацию трафика между хостами.

Фильтрация подсетей и диапазонов IP в Wireshark

Вы можете вместо одного IP адреса указать подсеть:

ip.addr == 192.168.1.0/24

Фильтрация трафика, отправленного с определённого диапазона IP. Если нужно отфильтровать трафик, источником которого является подсеть, то используйте фильтр вида:

ip.src == 192.168.1.0/24

Фильтрация трафика, предназначенного для отправки на определённый диапазон IP. Если нужно отфильтровать трафик, пунктом назначения которого является подсеть, то используйте фильтр вида:

ip.dst == 192.168.1.0/24

Фильтрация IPv6 протокола

Показать трафик IPv6 (Internet Protocol шестой версии):

ipv6

Фильтрация по IPv6 адресу. Для фильтрации по IPv6 адресу используйте фильтр:

ipv6.addr == 2604:a880:800:c1::2ae:d001

Фильтрация подсетей и диапазонов IPv6 в Wireshark

Вы можете вместо одного IPv6 адреса указать подсеть для фильтрации:

ipv6.addr == 2604:a880:800:c1::2ae:d000/64

Если нужно отфильтровать трафик, источником которого является определённый IPv6 адрес:

ipv6.src == 2604:a880:800:c1::2ae:d001

Если нужно отфильтровать трафик, отправленный на определённый IPv6 адрес:

ipv6.dst == 2604:a880:800:c1::2ae:d001

Фильтрация трафика, отправленного с определённого диапазона IPv6. Если нужно отфильтровать трафик, источником которого является подсеть, то используйте фильтр вида:

ipv6.src == 2604:a880:800:c1::2ae:d000/64

Фильтрация трафика, предназначенного для отправки на определённый диапазон IPv6. Если нужно отфильтровать трафик, пунктом назначения которого является подсеть, то используйте фильтр вида:

ipv6.dst == 2604:a880:800:c1::2ae:d000/64

Фильтрация ICMPv6 (Internet Control Message Protocol — протокол межсетевых управляющих сообщений шестой версии) в Wireshark делается фильтром:

icmpv6

Как отфильтровать пакеты ARP протокола для IPv6 в Wireshark? Для IPv6 протокол ARP не требуется, поскольку его роль выполняет протокол обнаружения соседей (Neighbor Discovery Protocol, NDP) средствами ICPM6 — подробности объяснены в статье «IPv6 аналог для «arp -an» в IPv4».

Для того, чтобы увидеть пакеты, которые выполняют роль ARP для IPv6, используйте фильтр:

icmpv6.type == 133 or icmpv6.type == 134 or icmpv6.type == 135 or icmpv6.type == 136 or icmpv6.type == 137

Другие фильтры с IP адресом аналогичны для IPv6 и IPv4.

Дополнение

Разрешил свою проблему с тем, что в Windows Wi-Fi адаптеры не переводятся в режим монитора. Помог от посетителя на англоязычной версии этой статьи:

Проблема была решена удалением лишних файлов wpcap.dll и Packet.dll в C:\WINDOWS\System32 и в C:\WINDOWS\SysWOW64, эти файлы оставил только в папках C:\Windows\SysWOW64\Npcap\ и C:\Windows\System32\Npcap\.

Один Wi-Fi адаптер теперь нормально переводится в режим монитора и захватывает любые фреймы. Правда, у меня не получается переключить канал — он работает только на 1м канале. При переключении пишет «Успех», но при проверке канала вновь оказывается, что работает на 1м канале.

Второй Wi-Fi адаптер после перевода в режим монитора вызывает синий экран смерти — проблема именно в драйвере адаптера (имя файла вызвавшего ошибку выводится на синем экране).

Можно копать дальше и разбираться с проблемами — как будет время, продолжу возиться. Но всё-таки в Linux всё намного проще и стабильнее.

Wireshark Review

Features

Wireshark’s information logs will highlight behavioral aberrations on networks of all sizes. This data can be viewed in real-time or through stored files. Live data can even be collected from several different network interfaces at the same time. Viewable data includes a myriad of statistics, protocol hierarchy, end point and conversion. Wireshark can even perform VoIP analysis. The program’s reports can be exported to PostScript, CSV, and XML. Its filtering system is robust. Support is available for decryption as well as coloring rules.

File Formats

Wireshark allows for the reading/writing of numerous file formats: Catapult DCT2000, Tcpdump, NAI Sniffer, Sniffer Pro, Novell LANalyzer, NetXray, Shomiti, AiroPeek, Cisco Secure IDS iplog, Microsoft Network Monitor, Network Instruments Observer, RADCOM WAN, Finisar Surveyor and a handful of others.

Supported Operating Systems

Wireshark functions on the following operating systems: Solaris, UNIX, Linux, HP-UX, OS X, Windows, FreeBSD, OpenBSD, and NetBSD.

Why is Worth a Download

The latest version of Wireshark has none of the bugs that afflicted previous versions. It is loaded with useful tools that help with network traffic monitoring. This highly sophisticated software also provides extensive filter options. Some even use Wireshark for educational purposes as it allows users to see what the different types of network traffic look like. Others use the software as they are suspicious that there is a trojan virus on their computer. Wireshark empowers them to view traffic oddities that might provide some insight into whether a backdoor Trojan has compromised the system’s integrity. The program can even capture data from applications. Perhaps the best aspect of this software is that it costs nothing. If you are willing to take the time to download it, you can use it without shelling out a single penny. The download and installation process is fast and easy. All in all, anyone who desires an accurate capture of data for analysis purposes will obtain some utility out of Wireshark.

How to Determine if this app is Ideal for You

Any person or organization in need of a network monitoring tool for security or performance purposes will find value in Wireshark meaning the software is ideal for anyone from solo home users to those on the enterprise level. The software’s ability to capture data from the applications listed above makes it that much more of a useful tool for an in-depth analysis of networks large and small.

Conclusion

Wireshark is programmed to study network traffic to a depth that is found in expensive tools. If you work in an IT department that needs a no-cost means of network analysis, this program will get the job done.

Перехват SSL-контента

Настоящий бич исследователя сетевого трафика — шифрование. Но если у тебя есть заветный файл с сертификатом (кстати, беречь его нужно как зеницу ока), то ты легко сможешь узнать, что прячут пользователи данного ресурса в SSL-сессиях. Для этого нужно указать параметры сервера и файл сертификата в настройках протокола SSL (пункт «Preferences» меню «Edit», слева в списке протоколов выбрать SSL). Поддерживаются форматы PKCS12 и PEM. В последнем случае нужно убрать пароль с файла командами:

openssl pkcs12 -export -in server.pem -out aa.pfx openssl pkcs12 -in aa.pfx -out serverNoPass.pem –nodes

Захват пакетов

После загрузки и установки Wireshark вы можете запустить эту программу. В разделе «Захват» вы увидите названия всех доступных сетей (сетевых интерфейсов), рядом с которыми будет график сетевой активности.

Дважды щёлкните имя сетевого интерфейса, чтобы начать захват пакетов на этом интерфейсе. Например, если вы хотите захватить трафик в беспроводной сети, щёлкните свой беспроводной интерфейс. Вы можете настроить расширенные функции, нажав «Захват» → «Опции», но пока в этом нет необходимости.

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

Если у вас включён неразборчивый режим (он включён по умолчанию), вы также увидите все другие пакеты в сети, а не только пакеты, адресованные вашему сетевому адаптеру. Чтобы проверить, включён ли неразборчивый режим, нажмите «Захват» → «Опции» и убедитесь, что в нижней части этого окна активирован флажок «Включить смешанный режим на всех интерфейсах».

Вы увидите, что даже если вы не выполняете никаких действий, то в сети всё равно непрерывно происходит некая активность.

Нажмите красную кнопку «Остановить захват пакетов» в верхнем левом углу окна, если хотите прекратить захват трафика.

Как просматривать и анализировать содержимое пакета

Интерфейс захваченных данных состоит из трех основных разделов:

  • Панель списка пакетов (верхний раздел)
  • Панель сведений о пакете (средний раздел)
  • Панель байтов пакета (нижняя часть)

Список пакетов

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

Чтобы изменить формат времени на более удобный (например, фактическое время дня), выберите Просмотр > Формат отображения времени.

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

Сведения о пакете

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

Пакетные байты

Внизу находится панель байтов пакета, которая отображает необработанные данные выбранного пакета в шестнадцатеричном виде. Этот шестнадцатеричный дамп содержит 16 шестнадцатеричных байтов и 16 байтов ASCII вместе со смещением данных.

При выборе определенной части этих данных автоматически выделяется соответствующий раздел на панели сведений о пакете и наоборот. Любые байты, которые нельзя распечатать, обозначаются точкой.

Чтобы отобразить эти данные в битовом формате, а не в шестнадцатеричном, щелкните правой кнопкой мыши в любом месте панели и выберите как биты.

Настройка Wireshark

Общие параметры самого приложения WIreshark находятся во вкладке Edit->Preferences. Их можно настроить в зависимости от своих потребностей или предпочтений, но я бы, на стадии знакомства с программой, не рекомендовал туда лезть. С опытом использования программы и работы с трафиком понимание что тебе нужно подкрутить для удобства придет само, а потому просто кратко перечислим какие здесь есть разделы:

  • Appearance (Внешний вид). Грубо говоря здесь определяется внешний вид программы: положение окон, расположение основных панелей, расположение полосы прокрутки и столбцов в панели Packet List, шрифты, а также цвета фона и шрифтов.
  • Capture (Перехват). В этом разделе можно настроить порядок перехвата пакетов, в том числе стандартный интерфейс для перехвата, параметры обновления панели Packet List в реальном времени.
  • Filter Expressions (Фильтрующие выражения). Здесь можно создавать фильтры сетевого трафика и управлять ими. Этот момент мы обсудим отдельно.
  • Name Resolution (Преобразование имен). В этом разделе активируются средства Wireshark, позволяющие преобразовывать адреса в имена, более удобные для понимания, в том числе адреса канального, сетевого и транспортного уровня, а также можно указывать максимальное количество параллельных запросов на преобразование имен.
  • Protocols (Протоколы). В этом разделе находятся параметры, влияющие на перехват и отображение различных пакетов, которые Wireshark может декодировать. Правда настраивать параметры можно далеко не для всех протоколов, да и в большинстве случаев, без острой на то необходимости менять здесь ничего не надо.
  • Statistics (Статистика). Название раздела говорит само за себя, здесь находятся параметры отображения и ведения статистики.
  • Advanced (Продвинутый). Параметры которые не вошли не в одну из перечисленных категорий, либо предназначены для более тонкой настройки функционала. Вот сюда точно лезть не нужно.

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

Перейдем в Edit->Preferences и во вкладке Appearance выберем раздел Columns, здесь жмем на плюсик и добавляем такие колонки, с такими параметрами:

  • Title: Channel, Type: Custom, Fields: wlan_radio.channel – будет показывать нам канал в котором перехвачен пакет;
  • Title: Signal Strenght, Type: Custom, Fields: wlan_radio.signal_dbm – покажет мощность сигнала в канале в момент перехвата пакета.

capinfos

В комплекте с Wireshark поставляется удобный инструмент командной строки . Эта утилита генерирует статистику пакетного дампа, с временем начала/окончания записи и другими подробностями. С опцией  она выдаёт текст с табуляцией — он подходит для импорта в электронные таблицы или анализа в консоли.

test@ubuntu:~$ capinfos test.pcap
File name:           test.pcap
File type:           Wireshark/tcpdump/... - pcap
File encapsulation:  Ethernet
File timestamp precision:  microseconds (6)
Packet size limit:   file hdr: 262144 bytes
Number of packets:   341 k
File size:           449 MB
Data size:           444 MB
Capture duration:    3673.413779 seconds
First packet time:   2018-12-01 11:26:53.521929
Last packet time:    2018-12-01 12:28:06.935708
Data byte rate:      120 kBps
Data bit rate:       967 kbps
Average packet size: 1300.72 bytes
Average packet rate: 93 packets/s
SHA256:              989388128d676c329ccdbdec4ed221ab8ecffad81910a16f473ec2c2f54c5d6e
RIPEMD160:           0742b6bbc79735e57904008d6064cce7eb95abc9
SHA1:                d725b389bea044d6520470c8dab0de1598b01d89
Strict time order:   True
Number of interfaces in file: 1

Знакомимся с фильтрами

Wireshark поддерживает два вида фильтров:

  • перехвата трафика (capture filters);
  • отображения (display filters).

Первая подсистема досталась Wireshark в наследство от библиотеки Pcap, обеспечивающей низкоуровневый API для работы с сетевыми интерфейсами. Выборка трафика на лету во время перехвата позволяет экономить оперативную память и место на жестком диске. Фильтр представляет собой выражение, состоящее из группы примитивов, при необходимости объединенных логическими функциями (and, or, not). Записывается это выражение в поле «Capture Filter» диалогового окна «Capture options». Наиболее употребляемые фильтры можно сохранять в профиле для повторного использования (рис. 1).


Рис. 1. Профиль фильтров перехвата

Другие статьи в выпуске:

Хакер #170. Малварь для OS X

  • Содержание выпуска
  • Подписка на «Хакер»

Язык фильтров перехвата стандартный для мира Open Source и используется многими Pcap-основанными продуктами (например, утилитой tcpdump или системой обнаружения/предотвращения вторжений Snort). Поэтому описывать синтаксис здесь нет особого смысла, так как он тебе, скорее всего, знаком. А детали можно посмотреть в документации, например в Linux на странице справочного руководства pcap-filter(7).

Фильтры отображения работают с уже перехваченным трафиком и являются «родными» для Wireshark. Отличия от Pcap — в формате записи (в частности, в качестве разделителя полей используется точка); также добавлены английская нотация в операциях сравнения и поддержка подстрок.

Вписать фильтр отображения можно прямо в соответствующее поле (внимание, работает выпадающий список-подсказка) главного окна программы после кнопки «Filter» (кстати, под этой кнопкой скрывается профиль для часто используемых выражений). А если кликнуть расположенную неподалеку кнопку «Expression…», то откроется многофункциональный конструктор выражений (рис

2).


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

Слева (Field Name) представлено упорядоченное по алфавиту дерево полей сообщений протоколов, которые известны Wireshark. Для данного поля можно указать логический оператор (Relation), вписать значение (Value), указать диапазон (Range) или выбрать значение из списка (Predefined Value). В общем, полная сетевая энциклопедия в одном окошке.

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

  • and (&&) — «И»;
  • or (||) — «ИЛИ»;
  • xor (^^) — исключающее «ИЛИ»;
  • not (!) — отрицание;
  • — выборка подстроки. # Фильтруя по MAC-адресу своего сетевого адаптера, исключаем весь локальный трафик not (eth.addr eq aa:bb:cc:22:33:44) # О, чтобы сконцентрироваться на интересующем нас трафике !(arp or icmp or dns)

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

eth.src == 00:19:5b

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

К слову, выборку подстроки удобно использовать для выявления малвари в случае, если известна последовательность байт, идущая после заголовка (например, «0x90, 0x90, 0x90, 0x04» в UDP-пакете):

udp == 90:90:90:04

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

  • eq (==) — равно;
  • ne (!=) — не равно;
  • gt (>) — больше;
  • lt (<) — меньше;
  • ge (>=) — больше или равно;
  • le (<=) — меньше или равно.tcp.dstport ne 8080 && tcp.len gt 0 && data eq A0

Собственно, теории для начала достаточно. Дальше используй здравый смысл и скобки по необходимости и без нее. Также не забывай, что фильтр по сути — логическое выражение: если оно истинно, то пакет отобразится на экране, если ложно — нет.

Справка по Wireshark

Использование: 

wireshark  ... [ 
Интерфейс захвата:
  -i <интерфейс>           имя или idx интерфейса (по умолчанию: первый не петлевой)
  -f <фильтр_захвата>      фильтр пакета в синтаксисе фильтров libpcap 
  -s <snaplen>             длина снимка пакета (по умолчанию: 65535)
  -p                       не захватывать в неразборчивом режиме
  -k                       начать захват немедленно (по умолчанию: ничего не делать)
  -S                       обновить отображение пакета при захвате новых пакетов
  -l                       включить автоматическую прокрутку при использовании -S
  -I                       захватывать в режиме монитора, если доступен
  -B <размер буфера>       размер буфера ядра (по умолчанию: 2MB)
  -y <канальный уровень>   тип канального уровня (по умолчанию: первый подходящий)
  -D                       напечатать список интерфейсов и выйти
  -L                       напечатать список типов канального уровня интерфейсов и выйти

Условия остановки захвата:
  -c <счётчик пакетов>     остановить после n пакетов (по умолчанию: бесконечность)
  -a <условие автостопа.> ...  duration:ЧИСЛО — остановиться после ЧИСЛА секунд
                           filesize:ЧИСЛО — остановить этот файл после ЧИСЛА KB
                              files:ЧИСЛО — остановить после ЧИСЛА файлов
Текущий захват:
  -b <ringbuffer opt.> ... duration:ЧИСЛО — переключиться на следующий файл после ЧИСЛА секунду
                           filesize:ЧИСЛО — переключиться на следующий файл после ЧИСЛА KB
                              files:ЧИСЛО — кольцевой буфер: заменить после ЧИСЛА файлов
Файл ввода:
  -r <infile>              установить файл из которого читать (без труб (|) или стандартного вывода (stdin)!)

Обработка:
  -R <фильтр_чтения>       пакетный фильтр в формате синтаксиса фильтров отображения Wireshark
  -n                       отключить все преобразования (по умолчанию: всё включено)
  -N <name resolve flags>  включить указанное преобразование(я) по имени: "mnNtCd"
  --disable-protocol <имя_протокола>
                           отключить рассечение имя_протокола
  --enable-heuristic <короткое_имя>
                           включить рассечение эвристического протокола
  --disable-heuristic <короткое_имя>
                           отключить рассечение эвристического протокола

Пользовательский интерфейс:
  -C <профиль конфигурации> запустить с особым профилем конфигурации
  -Y <фильтр отображения> запустить с заданным фильтром отображения
  -g <номер пакета>       перейти к указанному номеру пакета после "-r"
  -J <фильтр для прыжка>         перейти к первому пакету, соответствующему
                           фильтру (отображения)
  -j                       поиск в обратном направлении для совпадающего пакета после "-J"
  -m <шрифт>               установить имя шрифта для использования в большинстве текста
  -t a|ad|d|dd|e|r|u|ud    формат вывода времени во временной метки (по умолчанию: r: rel. к первому)
  -u s|hms                 формат вывода секунд (по умолчанию: s: секунды)
  -X <ключ>:<значение>     опции расширения, смотрите руководство для подробностей
  -z <статистика>          показать различную статистику, смотрите руководство для подробностей

Вывод:
  -w <outfile|->           установить файл вывода (или '-' для stdout (стандартного вывода))

Прочее:
  -h                       показать справку и выйти
  -v                       показать информацию о версии и выйти
  -P <ключ>:<путь>         persconf:путь — персональный конфигурационные файлы
                           persdata:путь — персональный файлы с данными
  -o <имя>:<величина> ...  переписать настройки или текущие установки
  -K <keytab>              файл keytab для использования в расшифровывании kerberos
  --display=DISPLAY        дисплей X для использования

Импровизируем с HTTP-трафиком

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

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

tcp contains «xakep.ru»

Оператор contains проверяет наличие подстроки в данном поле. Есть еще оператор matches, в нем можно использовать Perl-совместимые регулярные выражения.


Рис. 6. Модификация фильтра отображения на лету

Окошко «Filter Expressions», конечно, хороший помощник, но порой перелистывать длинный список в поисках нужного поля весьма утомительно. Есть более простой способ создания/модификации фильтров отображения: с помощью контекстного меню при просмотре пакетов. Для этого нужно просто кликнуть правой клавишей мыши по интересующему полю и выбрать один из подпунктов пункта «Apply As Filter» или пункта «Prepare a Filter». В первом случае изменения тут же вступят в силу, а во втором — можно будет подкорректировать выражение. «Selected» означает, что значение поля станет новым фильтром, «Not Selected» — то же самое, только с отрицанием. Пункты, начинающиеся с «…», добавляют значение поля к существующему выражению с учетом логических операторов.

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

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

(http.host eq «www.xakep.ru») and ((http.request.uri contains «.jpg#26759185») or (http.request.uri contains «.png#26759185»))

То же самое, но с использованием matches:

(http.host eq «www.xakep.ru») and (http.request.uri matches «.jpg|.png#26759185»)

Разумеется, поля сообщений протоколов разных уровней можно смело смешивать в одном выражении. Например, чтобы узнать, какие картинки данный сервер передал клиенту, используем исходный адрес из IP-пакета и поле «Content-Type» HTTP-ответа:

(ip.src eq 178.248.232.27) and (http.content_type contains «image»)

А с помощью поля HTTP-запроса «Referer» ты сможешь узнать, с каких еще серверов браузер берет контент при формировании страницы любимого сайта:

(http.referer eq «https://www.xakep.ru/») and (not (ip.dst eq 178.248.232.27))

Рассмотрим еще несколько фильтров-полезняшек. Для выборки из трафика HTTP-запросов, сделанных методом GET, можно использовать следующее выражение:

http.request.method == GET

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

port 80 and tcp & 0xf0) >> 2):4] = 0x47455420

Чтобы выяснить, какие www-подключения совершал пользователь хоста 192.168.56.8 в определенный интервал времени (скажем, в обеденный перерыв), задействуем примитив frame.time:

tcp.dstport == 80 && frame.time >= «Yan 9, 2013 13:00:00» && frame.time < «Yan 9, 2013 14:00:00» && ip.src == 192.168.56.8

Ну и отображение URI запросов, содержащих слова «login» и «user», плюс «напоминалка» паролей:

http.request.uri matches «login.*=user» (http contains «password») || (pop contains «PASS»)


Рис. 7. Настройка SSL-сертификата

How to Report a Bug

  1. The complete build information from the «About Wireshark»
    item in the Help menu or the output of for
    Wireshark bugs and the output of for TShark bugs;

  2. If the bug happened on Linux, the Linux distribution you were
    using, and the version of that distribution;

  3. The command you used to invoke Wireshark, if you ran
    Wireshark from the command line, or TShark, if you ran
    TShark, and the sequence of operations you performed that
    caused the bug to appear.

If the bug is produced by a particular trace file, please be sure to
attach to the bug a trace file along with your bug description. If the
trace file contains sensitive information (e.g., passwords), then please
do not send it.

If Wireshark died on you with a ‘segmentation violation’, ‘bus error’,
‘abort’, or other error that produces a UNIX core dump file, you can
help the developers a lot if you have a debugger installed. A stack
trace can be obtained by using your debugger (‘gdb’ in this example),
the wireshark binary, and the resulting core file. Here’s an example of
how to use the gdb command ‘backtrace’ to do so.

The core dump file may be named «wireshark.core» rather than «core» on
some platforms (e.g., BSD systems). If you got a core dump with
TShark rather than Wireshark, use «tshark» as the first argument to
the debugger; the core dump may be named «tshark.core».

Со временем приходит опыт

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

Нажатие на эту кнопку приведет к открытию окна Expert Infos

. Того же результата можно добиться, пройдя в менюAnalyze – Expert Info .

В этом окне будет содержаться информация по найденным пакетам, разбитая на группы Errors, Warnings, Notes и Chats. Цветовая раскраска для этих групп выглядит следующим образом: Ошибки — красный цвет Предупреждения — желтый Примечания — сине-зелёный (cyan) Чат — серый

Wireshark содержит в себе мощный анализатор и умеет автоматически обнаруживать большое количество проблем, возникающих в сети. Как вы уже могли заметить, буквально везде можно использовать фильтры и Expert Info не является исключением. Для того чтобы создать такой фильтр, нужно использовать конструкцию expert.severity

. Например,expert.severity==error .

General Information

Wireshark is a network traffic analyzer, or «sniffer», for Linux, macOS,
*BSD and other Unix and Unix-like operating systems and for Windows.
It uses Qt, a graphical user interface library, and libpcap and npcap as
packet capture and filtering libraries.

The Wireshark distribution also comes with TShark, which is a
line-oriented sniffer (similar to Sun’s snoop or tcpdump) that uses the
same dissection, capture-file reading and writing, and packet filtering
code as Wireshark, and with editcap, which is a program to read capture
files and write the packets from that capture file, possibly in a
different capture file format, and with some packets possibly removed
from the capture.

Как пользоваться Wireshark

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

Очень многие системные администраторы рекомендуют использовать именно командную строку, но только с изменением команды запуска путем добавления команды gksu перед самой командой wireshark. 

После этого можно запускать основное приложение.

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

Usage

In order to capture packets from the network, you need to make the
dumpcap program set-UID to root or you need to have access to the
appropriate entry under if your system is so inclined (BSD-derived
systems, and systems such as Solaris and HP-UX that support DLPI,
typically fall into this category). Although it might be tempting to
make the Wireshark and TShark executables setuid root, or to run them as
root please don’t. The capture process has been isolated in dumpcap;
this simple program is less likely to contain security holes and is thus
safer to run as root.

Please consult the man page for a description of each command-line
option and interface feature.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector