Как настроить фильтры для захвата трафика в WireShark? Примеры!
Больше всего вопросов при работе с программой WireShark у пользователей вызывают фильтры для захвата трафика. Сегодня мы рассмотри их основные примеры, и покажем, как их правильно настраивать!
В процессе анализа проблем с производительностью сети или приложений, если в вашей компании не установлено централизованной системы мониторинга производительности приложений, то для анализа проблем с 4 по 7 уровень сетевой модели OSI необходимо будет воспользоваться анализатором протоколов (он же сниффер).
Если у вас нет коммерческого решения с встроенными средствами автоматического анализа или экспертной системы, то, пожалуй, самый правильный путь будет такой:
-
скачать и установить на ноутбук один из лучших бесплатных анализаторов протоколов WireShark (http://www.wireshark.org/download.html);
-
освоиться с его интерфейсом;
-
изучить стек протоколов и их структуру;
-
научиться работать с фильтрами для захвата трафика;
-
научится работать с фильтрами для анализа трафика.
В рамках этой статьи мы остановимся на предпоследнем пункте – как настроить фильтры для захвата трафика в WireShark.
Примеры настройки фильтров WireShark для захвата трафика
После выбора интерфейса мы можем приступить или к захвату трафика в режиме — всё подряд, но делать это не рекомендуется, так как, например, при 50% загрузке гигабитного интерфейса для передачи 100 000 пакетов требуется всего несколько миллисекунд. Поэтому важно понимать, какую проблему мы решаем. Тогда у нас как минимум будет уже или адрес (IP или MAC) пользователя или приложение, на которое он жалуется или сервер, к которому он обращается.
Таким образом, самый простой фильтр в Wireshark – это IP адрес устройства (хоста, host) и выглядит этот фильтр следующим образом:
-
host 10.10.10.1
В случае если проблема глобальнее и нам необходимо захватить трафик с отдельной подсети независимо от направления его передачи, то применяем фильтр:
-
net 192.168.0.0/24 или net 192.168.0.0 mask 255.255.255.0
При захвате трафика от подсети фильтр будет выглядеть вот так:
-
src net 192.168.0.0/24 или src net 192.168.0.0 mask 255.255.255.0
А если надо увидеть для анализа только приходящий трафик в нашу подсеть, то любой из фильтров:
-
dst net 192.168.0.0/24
-
dst net 192.168.0.0 mask 255.255.255.0
Если пользователь жалуется, что у него не открываются странице в браузере, проблема может быть с DNS сервером (порт 53) или с протоколом HTTP (порт 80), тогда захватываем трафик с использованием фильтра «порт»:
-
port 53
Если мы решили захватить весь трафик для конкретного сервера без учета HTTP и FTP, то фильтр настраивается по любому из этих двух примеров:
-
host 192.168.0.1 and not (port 21 or port 80)
-
host 192.168.0.1 and not port 21 and not port 80
Если мы хотим видеть весь трафик на порту, кроме трафика DNS, FTP, ARP, то логика будет аналогичной:
-
port not dns and not 21 and not arp
При захвате трафика приложений, которые используют динамические порты из определенного диапазона, то фильтр будет сложно выглядеть в случае, если версия Libcap ниже чем 0.9.1:
-
(tcp[0:2] > 1500 and tcp[0:2] < 1550) or (tcp[2:2] > 1500 and tcp[2:2] < 1550)
если версии более поздние, то фильтр будет менее угрожающим и понятным:
-
tcp portrange 1501-1549
Для захвата кадров Ethernet типа EAPOL (Протокол передачи EAP-сообщений в стандарте 802.1x называется EAPOL (EAP encapsulation over LAN) ):
-
ether proto 0x888e
Для справки приведу список типов Ethernet кадров специфичных протоколов:
Ethertype (Hexadecimal) |
Протокол |
0x0000 — 0x05DC |
IEEE 802.3 length |
0x0101 — 0x01FF |
Experimental |
0x0600 |
XEROX NS IDP |
0x0660 0x0661 |
DLOG |
0x0800 |
IP, Internet Protocol |
0x0801 |
X.75 Internet |
0x0802 |
NBS Internet |
0x0803 |
ECMA Internet |
0x0804 |
Chaosnet |
0x0805 |
X.25 Level 3 |
0x0806 |
ARP, Address Resolution Protocol. |
0x0808 |
Frame Relay ARP [RFC1701] |
0x6559 |
Raw Frame Relay [RFC1701] |
0x8035 |
DRARP, Dynamic RARP. RARP, Reverse Address Resolution Protocol. |
0x8037 |
Novell Netware IPX |
0x809B |
EtherTalk (AppleTalk over Ethernet) |
0x80D5 |
IBM SNA Services over Ethernet |
0x 80F3 |
AARP, AppleTalk Address Resolution Protocol. |
0x8100 |
EAPS, Ethernet Automatic Protection Switching. |
0x8137 |
IPX, Internet Packet Exchange. |
0x 814C |
SNMP, Simple Network Management Protocol. |
0x86DD |
IPv6, Internet Protocol version 6. |
0x880B |
PPP, Point-to-Point Protocol. |
0x 880C |
GSMP, General Switch Management Protocol. |
0x8847 |
MPLS, Multi-Protocol Label Switching (unicast). |
0x8848 |
MPLS, Multi-Protocol Label Switching (multicast). |
0x8863 |
PPPoE, PPP Over Ethernet (Discovery Stage). |
0x8864 |
PPPoE, PPP Over Ethernet (PPP Session Stage). |
0x88BB |
LWAPP, Light Weight Access Point Protocol. |
0x88CC |
LLDP, Link Layer Discovery Protocol. |
0x8E88 |
EAPOL, EAP over LAN. |
0x9000 |
Loopback (Configuration Test Protocol) |
0x9100 |
VLAN Tag Protocol Identifier |
0x9200 |
VLAN Tag Protocol Identifier |
0xFFFF |
reserved. |
Если необходимо захватить трафик определенного IP протокола, то можно использовать фильтр:
-
ip proto tcp – захват TCP трафика
-
ip proto udp – захват UDP трафика
Для захвата IP трафика применяется самый короткий фильтр:
-
ip
Для захвата только unicast трафика при анализе трафика исходящего и приходящего к сетевому устройству используется фильтр в таком формате:
-
not broadcast and not multicast
Простые фильтры, о которых мы поговорили, можно объединять с помощью не сложных символов:
-
Отрицание: ! Или not
-
Объединение: && или and
-
Чередование: II или or
Пример: для захвата трафика от или к устройству с адресом 10.10.10.10, но не из сети 192.168.0.0 фильтр получится объединением с отрицанием:
-
host 10.10.10.10 && !net 192.168
Фильтры на основе байтов смещения являются самыми мощными и существенно упрощают жизнь, но для их использования надо знать протокол и размещение искомых полей в пакете. Приведенные ниже примеры фильтров позволят захватить пакеты с определенным значением поля в заголовках или полезной нагрузке. Настроить их несложно:
-
ip[8] = 1
Смещаемся на восемь байт в IP пакете и захватываем трафик со значением TTL =1
-
tcp[0:2] = 80
Захватываем все пакеты TCP с адресом порта отправителя 80. Это эквивалент фильтру src port 80.
Для справки приведем байт смещения до наиболее интересных полей в пакете:
Поле в пакете |
Длина в байтах |
Фильтр |
IP Header Length |
4 |
ip[0] & 0x0f |
IP Packet Length |
16 |
ip[2:2] |
IP TTL |
8 |
ip[8] |
IP Protocol |
8 |
ip[9] |
IP Address Source |
32 |
ip[12:4] |
IP Address Destination |
32 |
ip[16:4] |
IP Fragmentation |
flag = 3 and Offset = 13 |
ip[6:2] & 0x2000 = 0x2000 or ip[6:2] & 0x1fff !=0x0000 |
TCP Source Port |
16 |
tcp[0:2] |
TCP Destination Port |
16 |
tcp[2:2] |
TCP Header Length |
4 |
tcp[12] & 0xf0 |
TCP Flags |
8 |
tcp[13] |
TCP Window Size |
16 |
tcp[14:2] |
ICMP Type |
8 |
icmp[0] |
ICMP Code |
8 |
icmp[1] |
Для закрепления полученной информации построим фильтр для захвата трафика с запросом HTTP GET. Протокол HTTP использует порт 80, транспортный протокол TCP. Значения в шестнадцатеричной системе исчисления слова GET будет выглядеть 0x47455420. Пример фильтра, который получится у нас:
-
port 80 and tcp[((tcp[12:1] & 0xf0 >>2):4]=0x47455420
В рамках данного материала мы разобрали, как настроить и использовать наиболее простые базовые фильтры для захвата трафика с помощью анализатора протоколов Wireshark.
Всегда на связи, Игорь Панов.
Делитесь нашими статьями в соцсетях и задавайте вопросы в комментариях!
См. также:
- 5 недостатков Wireshark: в чём бесплатный сниффер проигрывает коммерческим аналогам?
- Диагностика сети и приложений с помощью OptiView XG
- Dumpcap: как правильно настроить
Авторизуйтесь для этого