Як за допомогою wireshark перевірити порт. Фільтри Wireshark: відокремлюємо зерна від полови.

Жарознижувальні засоби для дітей призначаються педіатром. Але бувають ситуації невідкладної допомоги за лихоманки, коли дитині потрібно дати ліки негайно. Тоді батьки беруть на себе відповідальність і застосовують жарознижувальні препарати. Що можна давати дітям грудного віку? Чим можна збити температуру у старших дітей? Які ліки найбезпечніші?

Найбільше питань під час роботи з програмою WireShark у користувачів викликають фільтри для захоплення трафіку. Сьогодні ми розглянь їх основні приклади і покажемо, як їх правильно налаштовувати!

В процесі аналізу проблем з продуктивністю мережі або додатків, якщо у вашій компанії не встановлено централізованої системи моніторингу продуктивності додатків, то для аналізу проблем з 4 по 7 рівень мережевої моделі OSI необхідно буде скористатися аналізатором протоколів (він сніффер).

Якщо у вас немає комерційного рішення із вбудованими засобами автоматичного аналізу чи експертної системи, то, мабуть, найправильніший шлях буде таким:

    скачати та встановити на ноутбук один з найкращих безкоштовних аналізаторів протоколів WireShark (http://www.wireshark.org/download.html);

    освоїтися з його інтерфейсом;

    вивчити стек протоколів та їх структуру;

    навчитися працювати з фільтрами для захоплення трафіку;

    навчиться працювати з фільтрами для аналізу трафіку.

У рамках цієї статті ми зупинимося на передостанньому пункті - як налаштувати фільтри для захоплення трафіку WireShark.

Приклади налаштування фільтрів WireShark для захоплення трафіку

Після вибору інтерфейсу ми можемо приступити або до захоплення трафіку в режимі — все підряд, але робити це не рекомендується, тому що, наприклад, при 50% завантаженні гігабітного інтерфейсу для передачі 100 000 пакетів потрібно лише кілька мілісекунд. Тому важливо розуміти, яку проблему вирішуємо. Тоді у нас як мінімум буде вже або адреса (IP або MAC) користувача або програма, на яку він скаржиться або сервер, до якого він звертається.

Таким чином, найпростіший фільтр Wireshark - це IP адреса пристрою (хоста, host) і виглядає цей фільтр наступним чином:

Якщо проблема глобальніша і нам необхідно захопити трафік з окремої підмережі незалежно від напрямку його передачі, то застосовуємо фільтр:

    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), тоді захоплюємо трафік з використанням фільтра «порт»:

Якщо ми вирішили захопити весь трафік для конкретного сервера без урахування HTTP та FTP, то фільтр налаштовується за будь-яким із цих двох прикладів:

    host 192.168.0.1 і немає (port 21 or port 80)

    host 192.168.0.1 і немає порту 21 і немає порту 80

Якщо ми хочемо бачити весь трафік на порту, крім трафіку DNS, FTP, ARP, то логіка буде аналогічною:

    port not dns and not 21 and not arp

При захопленні трафіку додатків, які використовують динамічні порти з певного діапазону, фільтр буде складно виглядати у випадку, якщо версія Libcap нижче ніж 0.9.1:

    (tcp > 1500 and tcp< 1550) or (tcp >1500 and tcp< 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

IP, Internet Protocol

ARP, Address Resolution Protocol.

Frame Relay ARP

Raw Frame Relay

DRARP, Dynamic RARP. RARP, Reverse Address Resolution Protocol.

Novell Netware IPX

EtherTalk (AppleTalk over Ethernet)

IBM SNA Services over Ethernet

AARP, AppleTalk Address Resolution Protocol.

EAPS, Ethernet Automatic Protection Switching.

IPX, Internet Packet Exchange.

SNMP, Simple Network Management Protocol.

IPv6, Internet Protocol version 6.

PPP, Point-to-Point Protocol.

GSMP, General Switch Management Protocol.

MPLS, Multi-Protocol Label Switching (Unicast).

MPLS, Multi-Protocol Label Switching (multicast).

PPPoE, PPP over Ethernet (Discovery Stage).

PPPoE, PPP over Ethernet (PPP Session Stage).

LWAPP, Light Weight Access Point Protocol.

LLDP, Link Layer Discovery Protocol.

EAPOL, EAP over LAN.

Loopback (Configuration Test Protocol)

VLAN Tag Protocol Identifier

VLAN Tag Protocol Identifier

Якщо необхідно захопити трафік певного IP протоколу, можна використовувати фільтр:

    ip proto tcp - захоплення TCP трафіку

    ip proto udp - захоплення UDP трафіку

Для захоплення 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 пакеті та захоплюємо трафік зі значенням TTL =1

Захоплюємо всі пакети TCP з порту відправника 80. Це еквівалент фільтру src port 80.

Для довідки наведемо байт усунення до найцікавіших полів у пакеті:

Поле у ​​пакеті

Довжина в байтах

Фільтр

IP Header Length

IP Packet Length

IP Address Source

IP Address Destination

IP Fragmentation

flag = 3 and Offset = 13

ip & 0x2000 = 0x2000 або ip & 0x1fff !=0x0000

TCP Destination Port

TCP Header Length

Для закріплення отриманої інформації збудуємо фільтр для захоплення трафіку із запитом HTTP GET. Протокол HTTP використовує порт 80, транспортний протокол TCP. Значення у шістнадцятковій системі обчислення слова GET виглядатиме 0x47455420. Приклад фільтра, який вийде у нас:

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

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

- Наявність вбудованої експертної системи, яка дозволить швидко розібрати буфер за сервісами або типами помилок. Що дозволить суттєво прискорити час локалізації проблеми та працювати з уже відсортованою та попередньо оціненою для вас інформацією. Тут можна звернути увагу на рішення від VIAVI Solutions під назвою Observer або ClearSight Analyzer від компанії Netscout.

Якщо не виділяють бюджет, а проблеми є, то залишається запастися терпінням і кавою. У мережах передачі даний на швидкостях 1 Гбіт/сек і вище буфер захоплення трафіку заповнюється миттєво і виходить досить великий масив даних. Цей масив даних, розуміючи взаємодію між різними пристроямиу мережі можна відфільтрувати за різними параметрами. Для цього Wireshark має кілька можливостей:

    Колірне кодування помилкових пакетів можна налаштувати під себе. Пакети, які несуть помилку, будуть виділені в буфері спеціальним кольором.

    Фільтр через рядок фільтрації. Ви маєте великий досвід у роботі з Wireshark та протоколами та можете ввести фільтр самостійно. Великий вибір фільтрів можна знайти.

    Виділення будь-якої області в пакеті, правий клік миші та «Застосувати як фільтр». Метод для початківців дуже зручно, тому що не треба ламати голову.

Які основні фільтри є для відображення трафіку?

Wireshark фільтр за протоколом

Достатньо у рядку фільтра ввести назву протоколу та натиснути введення. На екрані залишаться пакети, які стосуються шуканого протоколу. Таким чином, фільтр виглядає:

Якщо буфер захоплення необхідно відфільтрувати за кількома протоколами, необхідно перерахувати всі бажані протоколи і розділити їх знаком ||. Наприклад:

arp || http || icmp

Wireshark фільтр за адресою IP і фільтр за MAC

Залежно від напрямку трафіку фільтр трохи відрізнятиметься. Наприклад, ми хочемо відфільтрувати за адресою IP відправника 50.116.24.50:

ip.src==10.0.10.163

За одержувачем фільтр буде виглядати ip.dst == x.x.x.x, а якщо хочемо побачити пакети незалежно від напрямку трафіку, то достатньо ввести:

ip.addr==50.116.24.50

Якщо нам потрібно виключити якусь адресу з поля відбору, то потрібно додати!= . Приклад:

ip.src! = 80.68.246.17

Якщо ми аналізуємо трафік усередині локальної мережіі знаємо MAC адресу користувача, то можна вказати як фільтр Wireshark його MAC адресу, наприклад:

eth.addr == AA:BB:CC:DD:EE:FF

Wireshark фільтр за номером порту

При аналізі трафіку ми можемо налаштувати фільтр за номером порту, яким здійснює передачу трафіку той чи інший протокол. Номери всіх зареєстрованих портів можна дізнатись Приклад:

Так само як і з адресами IP і MAС ми можемо окремо фільтрувати портами отримання або відправлення tcp. srcportі tcp. dstport. Крім вказівки номерів портів Wireshark дає відмінну можливість відфільтрувати буфер по прапорах у протоколі TCP. Наприклад, якщо ми хочемо побачити TCP пакети з прапором SYN (встановлення з'єднання між пристроями), то вводимо у рядку пошуку:

Популярні фільтри

У таблиці нижче наведено найбільш популярні фільтри для відображення вмісту буфера захоплення:

Фільтр для відображення

Опис

Приклад написання

MAC адресу відправника або одержувача

eth.addr == 00:1a:6b:ce:fc:bb

MAC-адреса оправителя

eth.src == 00:1a:6b:ce:fc:bb

MAC-адреса одержувача

eth.dst == 00:1a:6b:ce:fc:bb

Протокол ARP - MAC адреса одержувача

arp.dst.hw_mac == 00:1a:6b:ce:fc:bb

arp.dst.proto_ipv4

Протокол ARP - IP адреса версії 4 одержувача

arp.dst.proto_ipv4 == 10.10.10.10

Протокол ARP - MAC адреса відправника

arp.src.hw_mac == 00:1a:6b:ce:fc:bb

arp.src.proto_ipv4

Протокол ARP - IP адреса версії 4 відправника

arp.src.proto_ipv4 == 10.10.10.10

Ідентифікатор VLAN

IP адреса версії 4 одержувача або відправника

ip.addr == 10.10.10.10

IP адреса версії 4 одержувача

ip.addr == 10.10.10.10

IP адреса версії 4 відправника

ip.src == 10.10.10.10

IP protocol (decimal)

IP адреса версії 6 одержувача або відправника

ipv6.addr == 2001::5

IP адреса версії 6 відправника

ipv6.addr == 2001::5

IP адреса версії 6 одержувача

ipv6.dst == 2001::5

TCP порт одержувача чи відправника

TCP порт одержувача

tcp.dstport == 80

TCP порт відправника

tcp.srcport == 60234

UDP порт одержувача або відправника

UDP порт отримувача

udp.dstport == 513

UDP порт відправника

udp.srcport == 40000

vtp.vlan_info.vlan_name

vtp.vlan_info.vlan_name == TEST

bgp.originator_id

Ідентифікатор BGP (Адреса IPv4)

bgp.originator_id == 192.168.10.15

Наступний хоп BGP (Адреса IPv4)

bgp.next_hop == 192.168.10.15

RIP IPv4 address

rip.ip == 200.0.2.0

Ідентифікатор маршрутизатора за протоколом OSPF

ospf.advrouter == 192.168.170.8

Номер автономної системи EIGRP

Віртуальна IP адреса за протоколом HSRP

hsrp.virt_ip == 192.168.23.250

Віртуальна IP адреса за протоколом VRRP

vrrp.ip_addr == 192.168.23.250

MAC адреса відправника або одержувача Wi-Fi

wlan.addr == 00:1a:6b:ce:fc:bb

MAC-адреса оправника Wi-Fi

wlan.sa == 00:1a:6b:ce:fc:bb

MAC-адреса одержувача Wi-Fi

wlan.da == 00:1a:6b:ce:fc:bb

А які фільтри найчастіше використовуєте у своїй роботі?

Wireshark: як користуватись?

Привіт, друзі! У цій статті я спробую пояснити і розповісти про необхідне, що потрібно знати при використанні Wireshark на Linuxі покажу аналіз трьох типів мережевого трафіку. Цей мануал можна застосувати і для роботи Wireshark під Windows.

Якщо ви новачок в інформаційної безпеки, і зовсім добре розумієте що таке сніффер (аналізатор трафіку), раджу почитати статтю, і тільки потім читати цю статтю про те, як користуватися Wireshark.

Дуже популярний та надзвичайно вмілий аналізатор мережевого протоколу , який розробив Джеральд Комбс, Wireshark з'явився в червні 2006 р., коли Комбс перейменував мережевий інструмент Ethereal, також створений ним, оскільки змінив роботу і не міг більше використати стару назву. Сьогодні більшість використовують Wireshark, а Ethereal став історією.

Wireshark: найкращий сніффер

Ви, можливо, запитаєте, чим Wireshark відрізняється від інших мережевих аналізаторів - крім того, що він вільний - і чому нам просто не почати пропагувати застосування tcpdump для захоплення пакетів?

Основна перевага Wireshark в тому, що це графічна програма. Збір даних і перевірка мережного трафіку в інтерфейсі користувача - дуже зручна штука, так як дозволяє розібратися зі складними мережевими даними.

Як користуватись Wireshark?

Щоб новачок зміг розібратися з Wireshark, йому потрібно зрозуміти мережевий трафік. У такому разі мета цієї статті полягає в роз'ясненні вам основ TCP/IP, щоб ви змогли зробити потрібні висновки щодо мережевого трафіку, який аналізуєте.


Формат пакета TCP та пакета IP.

Якщо ви запускаєте Wireshark від імені звичайного користувача, ви не зможете використовувати мережеві інтерфейси для збору даних через наявні в мережевих інтерфейсахдозволів файлу Unix за промовчанням. Зручніше запускати Wireshark від імені root (sudo wireshark) при зборі даних та від імені звичайного користувача для аналізу даних.

Як альтернативу можете зібрати мережеві дані за допомогою утиліти командного рядка tcpdump від імені root і потім проаналізувати їх за допомогою Wireshark. Будь ласка, не забувайте, що збір даних за допомогою Wireshark у завантаженій мережі може уповільнити роботу комп'ютера, або, що ще гірше, не дозволити зібрати потрібні дані, тому що Wireshark вимагає більше системних ресурсів, ніж програма командного рядка. У подібних випадках найрозумнішим рішенням для збору даних мережного трафіку буде використання tcpdump.

Захоплення мережевих даних за допомогою Wireshark

Найпростіший спосіб розпочати захоплення даних мережевих пакетів - вибрати після запуску Wireshark потрібний вам інтерфейс і натиснути на Start. Wireshark покаже дані про мережу на екрані залежно від трафіку вашої мережі. Зверніть увагу: можна вибрати більше одного інтерфейсу. Якщо ви нічого не знаєте про TCP, IP або інші протоколи, результат може здатися вам складним для читання та розуміння.

Щоб припинити процес захоплення даних, виберіть Capture > Stop . В якості альтернативи, можете натиснути на четвертий значок зліва, з червоним квадратиком (це скорочення від "Припинити захоплення даних live") в панелі інструментів Main (врахуйте, його точне розташування залежить від версії Wireshark, що є у вас). На цю кнопку можна натискати лише у процесі збирання мережевих даних.

При використанні описаного методу захоплення даних ви не можете змінити налаштовані Wireshark за замовчуванням Capture Options [Опції захоплення]. Ви можете побачити та змінити Capture Options, вибравши меню Capture > Options . Тут можна вибрати інтерфейс(и) мережі, переглянути свою IP-адресу, застосувати фільтри збору даних, перевести свою мережеву картку в режим прийому всіх мережних пакетів і зберегти зібрані дані в один або кілька файлів. Ви навіть можете наказати припиняти захоплення пакетів після досягнення певної кількості мережевих пакетів, або певного часу, або певного обсягу даних (у байтах).

За замовчуванням Wireshark не зберігає зібрані дані, але ви можете зберегти їх пізніше. Вважається, що найкраще спочатку зберегти, а потім вивчати мережеві пакетиякщо тільки у вас немає якихось особливих причин зробити інакше.

Wireshark дозволяє читати та аналізувати вже зібрані мережеві дані з великої кількості файлових форматів, В тому числі tcpdump, libpcap, snoop від Sun, nettl від HP, текстових файлів К12, і т.д. Коротше за допомогою Wireshark можна читати практично будь-який формат зібраних мережевих даних. Подібним чином Wireshark дозволяє зберігати зібрані дані в різних форматах. Можна навіть використовувати Wireshark для конверсії файлу з одного формату до іншого.

Ви також можете експортувати існуючий файл у вигляді простого текстового файлуз меню File. Ця опція в основному призначена для обробки мережевих даних вручну або введення їх в іншу програму.

Передбачена опція друку ваших пакетів. У реальному житті я ніколи нею не користувався, проте в освітніх цілях буває дуже корисно роздрукувати пакети та їхній повний вміст.

Фільтри відображення Wireshark

Якщо під час захоплення мережевих даних застосовуються фільтри захоплення, Wireshark не враховує мережевий трафік, що не відповідає фільтру; тоді як фільтри відображення застосовуються після захоплення даних і ховають мережевий трафік, не видаляючи його. Ви завжди можете вимкнути Display filter та повернути свої приховані дані.

В принципі, фільтри відображення вважаються кориснішими та різнобічнішими, ніж фільтри збору даних, тому що ви навряд чи знаєте заздалегідь, яку інформацію ви зберете або вирішите вивчити. Однак використання фільтрів при захопленні даних економить ваш час і місце на диску, що є головною причиною їх застосування.

Wireshark виділяє синтаксично правильний фільтр світло-зеленим тлом. Якщо синтаксис містить помилки, фон рожевий.

Фільтри відображення підтримують оператори порівняння та логічні оператори. Фільтр відображення http.response.code


Три пакети (SYN, SYN+ACK і АСК) тристапного встановлення з'єднання TCP

404 && ip.addr == 192.168.1.1 показує трафік, який або йде з IP-адреси 192.168.1.1, або йде на IP-адресу 192.168.1.1, яка також має код відгуку 404 (Not Found) HTTP. Фільтр!Ьоо1р &&!ip &&!агр виключає з результату трафік BOOTP, IP та ARP. Фільтр eth.addr == 01:23:45:67:89:ab && tcp.port == 25 відображає трафік, що йде від або до мережного пристрою з MAC-адресою 01:23:45:67:89:аЬ, який використовує у вхідних та вихідних з'єднаннях порт TCP за номером 25.

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

Продовження статті на наступній сторінці. Для переходу на наступну сторінку натисніть кнопку 2, яка знаходиться під кнопками соціальних мереж.

- Наявність вбудованої експертної системи, яка дозволить швидко розібрати буфер за сервісами або типами помилок. Що дозволить суттєво прискорити час локалізації проблеми та працювати з уже відсортованою та попередньо оціненою для вас інформацією. Тут можна звернути увагу на рішення від VIAVI Solutions під назвою Observer або ClearSight Analyzer від компанії Netscout.

Якщо не виділяють бюджет, а проблеми є, то залишається запастися терпінням і кавою. У мережах передачі даний на швидкостях 1 Гбіт/сек і вище буфер захоплення трафіку заповнюється миттєво і виходить досить великий масив даних. Цей масив даних, розуміючи взаємодію між різними пристроями в мережі, можна відфільтрувати за різними параметрами. Для цього Wireshark має кілька можливостей:

    Колірне кодування помилкових пакетів можна налаштувати під себе. Пакети, які несуть помилку, будуть виділені в буфері спеціальним кольором.

    Фільтр через рядок фільтрації. Ви маєте великий досвід у роботі з Wireshark та протоколами та можете ввести фільтр самостійно. Великий вибір фільтрів можна знайти.

    Виділення будь-якої області в пакеті, правий клік миші та «Застосувати як фільтр». Метод для початківців дуже зручно, тому що не треба ламати голову.

Які основні фільтри є для відображення трафіку?

Wireshark фільтр за протоколом

Достатньо у рядку фільтра ввести назву протоколу та натиснути введення. На екрані залишаться пакети, які стосуються шуканого протоколу. Таким чином, фільтр виглядає:

Якщо буфер захоплення необхідно відфільтрувати за кількома протоколами, необхідно перерахувати всі бажані протоколи і розділити їх знаком ||. Наприклад:

arp || http || icmp

Wireshark фільтр за адресою IP і фільтр за MAC

Залежно від напрямку трафіку фільтр трохи відрізнятиметься. Наприклад, ми хочемо відфільтрувати за адресою IP відправника 50.116.24.50:

ip.src==10.0.10.163

За одержувачем фільтр буде виглядати ip.dst == x.x.x.x, а якщо хочемо побачити пакети незалежно від напрямку трафіку, то достатньо ввести:

ip.addr==50.116.24.50

Якщо нам потрібно виключити якусь адресу з поля відбору, то потрібно додати!= . Приклад:

ip.src! = 80.68.246.17

Якщо ми аналізуємо трафік всередині локальної мережі та знаємо MAC адресу користувача, то можна вказати як фільтр Wireshark його MAC адресу, наприклад:

eth.addr == AA:BB:CC:DD:EE:FF

Wireshark фільтр за номером порту

При аналізі трафіку ми можемо налаштувати фільтр за номером порту, яким здійснює передачу трафіку той чи інший протокол. Номери всіх зареєстрованих портів можна дізнатись Приклад:

Так само як і з адресами IP і MAС ми можемо окремо фільтрувати портами отримання або відправлення tcp. srcportі tcp. dstport. Крім вказівки номерів портів Wireshark дає відмінну можливість відфільтрувати буфер по прапорах у протоколі TCP. Наприклад, якщо ми хочемо побачити TCP пакети з прапором SYN (встановлення з'єднання між пристроями), то вводимо у рядку пошуку:

Популярні фільтри

У таблиці нижче наведено найбільш популярні фільтри для відображення вмісту буфера захоплення:

Фільтр для відображення

Опис

Приклад написання

MAC адресу відправника або одержувача

eth.addr == 00:1a:6b:ce:fc:bb

MAC-адреса оправителя

eth.src == 00:1a:6b:ce:fc:bb

MAC-адреса одержувача

eth.dst == 00:1a:6b:ce:fc:bb

Протокол ARP - MAC адреса одержувача

arp.dst.hw_mac == 00:1a:6b:ce:fc:bb

arp.dst.proto_ipv4

Протокол ARP - IP адреса версії 4 одержувача

arp.dst.proto_ipv4 == 10.10.10.10

Протокол ARP - MAC адреса відправника

arp.src.hw_mac == 00:1a:6b:ce:fc:bb

arp.src.proto_ipv4

Протокол ARP - IP адреса версії 4 відправника

arp.src.proto_ipv4 == 10.10.10.10

Ідентифікатор VLAN

IP адреса версії 4 одержувача або відправника

ip.addr == 10.10.10.10

IP адреса версії 4 одержувача

ip.addr == 10.10.10.10

IP адреса версії 4 відправника

ip.src == 10.10.10.10

IP protocol (decimal)

IP адреса версії 6 одержувача або відправника

ipv6.addr == 2001::5

IP адреса версії 6 відправника

ipv6.addr == 2001::5

IP адреса версії 6 одержувача

ipv6.dst == 2001::5

TCP порт одержувача чи відправника

TCP порт одержувача

tcp.dstport == 80

TCP порт відправника

tcp.srcport == 60234

UDP порт одержувача або відправника

UDP порт отримувача

udp.dstport == 513

UDP порт відправника

udp.srcport == 40000

vtp.vlan_info.vlan_name

vtp.vlan_info.vlan_name == TEST

bgp.originator_id

Ідентифікатор BGP (Адреса IPv4)

bgp.originator_id == 192.168.10.15

Наступний хоп BGP (Адреса IPv4)

bgp.next_hop == 192.168.10.15

RIP IPv4 address

rip.ip == 200.0.2.0

Ідентифікатор маршрутизатора за протоколом OSPF

ospf.advrouter == 192.168.170.8

Номер автономної системи EIGRP

Віртуальна IP адреса за протоколом HSRP

hsrp.virt_ip == 192.168.23.250

Віртуальна IP адреса за протоколом VRRP

vrrp.ip_addr == 192.168.23.250

MAC адреса відправника або одержувача Wi-Fi

wlan.addr == 00:1a:6b:ce:fc:bb

MAC-адреса оправника Wi-Fi

wlan.sa == 00:1a:6b:ce:fc:bb

MAC-адреса одержувача Wi-Fi

wlan.da == 00:1a:6b:ce:fc:bb

А які фільтри найчастіше використовуєте у своїй роботі?

Просто безліч різноманітних фільтрів. І щодо цих фільтрів є величезна документація, в якій не так просто розібратися. Я зібрав найцікавіші для мене і найчастіше використовувані фільтри Wireshark. Для користувачів-початківців це може стати чимось на кшталт довідника з фільтрів Wireshark, відправною точкою для вивчення. Також тут у коментарях пропоную вам ділитися ходовими фільтрами, які ви часто використовуєте, а також цікавими знахідками – я додам їх до цього списку.

Пам'ятайте, що Wireshark є фільтри відображення і фільтри захоплення. Тут я розглядаю фільтри відображення, які вводяться у головному вікні програми у верхньому полі одразу під меню та іконками основних функцій.

Щоб повною мірою розуміти значення фільтрів і що він показує, необхідно розуміння роботи мережі. Для знайомства з принципами роботи мережі та протоколів рекомендується вивчити цикл роботи комп'ютерних мереж, Перша стаття циклу «» (Інші частини в процесі підготовки)

Деякі фільтри тут написані у загальній формі, а деякі виконані як конкретні приклади. Пам'ятайте, що ви в будь-якому випадку можете підставити свої дані, наприклад, змінити номер порту на будь-який, хто вас цікавить, а також зробити те ж саме з IP адресою, MAC-адресою, значенням часу та ін.

Оператори фільтрів Wireshark

Фільтри можуть мати різні значення, наприклад це може бути рядок, шістнадцятковий формат або число.

Якщо шукається неточне входження (краще підходить для нечислових значень), то використовується contains. Наприклад, щоб показати TCP пакети, що містять рядок hackware, потрібен наступний фільтр:

Tcp contains hackware

Для пошуку точних значеньвикористовуються оператори. Розглянемо їх:

Як можна бачити, є по два варіанти написання, наприклад, якщо ми хочемо вказати, що значення фільтра дорівнює чомусь, то ми можемо використовувати == або eq.

З фільтрів із застосуванням логічних операнда можна будувати досить складні конструкції, але, мабуть, якщо один і той же фільтр використовувати двічі з операторами порівняння, наприклад, як тут у спробі зробити фільтрацію не по одному порту, а по діапазону портів:

Tcp.port>=8000 && tcp.port<=8180

то значення фільтра (в даному випадку tcp.port) перезаписується останнім значенням, тому в результаті замість очікуваної поведінки ми отримуємо результат роботи тільки останньої частини, в даному випадку це

Tcp.port<=8180

Пам'ятайте про цей баг!

При використанні з == (Рівно) цей баг відсутній.

Логічні оператори фільтрів Wireshark

Логічні оператори дозволяють створювати детальні фільтри з використанням кількох умов. Рекомендується додатково використовувати дужки, оскільки в іншому випадку ви можете отримати не те значення, яке очікуєте.

Оператор Опис
and/&& Логічне І, дані виводяться якщо вони відповідають обом частинам фільтра. Наприклад, фільтр ip.src==192.168.1.1 and tcpпокаже тільки пакети, що походять від 192.168.1.1 і які асоційовані з протоколом TCP. Буде показано лише дані, що збігаються з обома умовами.
or/|| Логічне АБО, достатньо щоб тільки одна умова була істинною; якщо обидва є істинними, це теж підходить. Наприклад фільтр tcp.port==80 або tcp.port==8080покаже TCP пакети, які пов'язані (є джерелом або пунктом призначення) з портом 80 або 8080.
not/! Логічне НЕ використовується, коли хочемо виключити деякі пакети. Тобто будуть показані всі пакети, крім задовольняють умові, що настає після НЕ. Наприклад фільтр !dnsпокаже всі пакети, окрім DNS.

Приклади комбінування:

Показати HTTP або DNS трафік:

Http or dns

Показати будь-який трафік, крім ARP, ICMP та DNS:

!(arp або icmp або dns)

Фільтр інтерфейсів

Показати пакети тільки надіслані або отримані на інтерфейсі wlan0:

Frame.interface_name == "wlan0"

Трафік протоколів канального рівня

Для показу ARP трафіку:

Показати кадри ARP протоколу, відправлені з пристрою, що має MAC-адресу 00:c0:ca:96:cf:cb:

Arp.src.hw_mac == 00:c0:ca:96:cf:cb

Показати кадри ARP протоколу, відправлені з пристрою, що має IP адресу 192.168.50.90:

Arp.src.proto_ipv4 == 192.168.50.90

Показати кадри ARP протоколу, відправлені на пристрій, що має MAC-адресу 00:00:00:00:00:00 (ця адреса використовується коли протокол намагається дізнатися цільовий MAC-адреса. Ще одна популярна адреса, яка може вас збентежити, це ff: ff:ff:ff:ff:ff, ця адреса є широкомовною, тобто повідомлення з цією адресою призначені для всіх пристроїв локальної мережі):

Arp.dst.hw_mac == 00:00:00:00:00:00

Показати кадри ARP протоколу, відправлені на пристрій, що має IP адресу 192.168.50.1:

Arp.dst.proto_ipv4 == 192.168.50.1

Показати Ethernet трафік:

Показати кадри (взагалі всі кадри, а не тільки ARP, як це було в попередніх прикладах), надіслані з пристрою, що має MAC-адресу 00:c0:ca:96:cf:cb:

Eth.src == 00:c0:ca:96:cf:cb

Показати кадри, надіслані на пристрій, що має MAC-адресу 78:cd:8e:a6:73:be:

Eth.dst == 78:cd:8e:a6:73:be

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

Фільтрування IPv4 протоколу

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

Якщо бути точнішим, мається на увазі трафік протоколу 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.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 робиться фільтром:

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

Icmpv6.type == 133 або icmpv6.type == 134 або icmpv6.type == 135 або icmpv6.type == 136 або icmpv6.type == 137

Інші фільтри з IP-адресою аналогічні для IPv6 та IPv4.

Трафік протоколів транспортного рівня

Щоб побачити лише трафік TCP:

Показати трафік, джерелом чи портом призначення якого є певний порт, наприклад 8080:

Tcp.port==8080

Показати трафік, джерелом якого є порт 80:

Tcp.srcport == 80

Показати трафік, який відправляється службі, яка прослуховує порт 80:

Tcp.dstport == 80

Показати TCP пакети з увімкненим прапором SYN:

Tcp.flags.syn==1

Показати TCP пакети з увімкненим прапором SYN і вимкненим прапором ACK:

Tcp.flags.syn==1 && tcp.flags.ack==0

Аналогічно для інших прапорів:

tcp.flags.syn==1 tcp.flags.ack==1 tcp.flags.reset==1 tcp.flags.fin==1 tcp.flags.cwr tcp.flags.ecn tcp.flags.urg==1 tcp.flags.push==1

Також можна використовувати синтаксис виду tcp.flags == 0x0XX, наприклад:

  • FIN це tcp.flags == 0x001
  • SYN це tcp.flags == 0x002
  • RST це tcp.flags == 0x004
  • ACK це tcp.flags == 0x010
  • Встановлені одночасно ACK та FIN це tcp.flags == 0x011
  • Встановлені одночасно ACK та SYN це tcp.flags == 0x012
  • Встановлені одночасно ACK та RST це tcp.flags == 0x014

Щоб показати пакети, які містять будь-який рядок, наприклад, рядок hackware:

Tcp contains hackware

Слідувати потоку TCP з номером X:

Tcp.stream eq X

Фільтрувати за номером потоку:

Tcp.seq == x

Показати повторні надсилання пакетів. Допомагає простежувати уповільнення продуктивності додатків та втрати пакетів:

Цей фільтр виведено проблемні пакети (втрачені сегменти, повторне відправлення та інші. Цей фільтр проходять пакети TCP Keep-Alive, але вони є показником проблем.

Tcp.analysis.flags

Фільтри для оцінки якості підключення до мережі.

Наступні характеристики відносяться до TCP кадрів. Причому вони не ґрунтуються на заголовках фрейму — характеристики, що розглядаються (пропуск даних, дублі) присвоєні програмою Wireshark виходячи з аналізу.

Фільтр виводить інформацію про кадри з прапором ACK, які є дублями. Велика кількість таких кадрів може говорити про проблеми зв'язку:

Tcp.analysis.duplicate_ack_num == 1

Фільтр показу кадрів для яких не захоплений попередній сегмент:

Tcp.analysis.ack_lost_segment

Це нормально на початку захоплення даних, оскільки інформація перехоплюється не з самого початку сесії.

Для показу кадрів, які є ретрансмісією (відправляються повторно):

Tcp.analysis.retransmission

Виведення кадрів, які отримані не в правильному порядку:

Tcp.analysis.out_of_order

Щоб побачити лише трафік UDP:

Для UDP не використовуються прапори. Для цього протоколу можна лише вказати порт.

Показати трафік, джерелом якого є порт 53:

Udp.srcport == 53

Показати трафік, який відправляється службі, яка прослуховує порт 53:

Udp.dstport == 53

UDP пакет, у якому зустрічається певний рядок, наприклад, рядок hackware:

Udp contains hackware

Щоб побачити лише трафік ICMP:

Щоб побачити лише трафік ICMP v6 (шостої версії)

Показати всі відповіді на пінг:

Icmp.type==0

Показати всі пінг запити:

Icmp.type==8

Показати всі помилки недоступності/заборони хостів та портів

Icmp.type==3

Показати всі спроби перенаправити маршрутизацію за допомогою ICMP:

Icmp.type==8

Приклад використання CODE, наступний фільтр покаже повідомлення про недоступність порту:

Icmp.type==3 && icmp.code==3

Трафік протоколів прикладного рівня

Для протоколів рівня HTTP, DNS, SSH, FTP, SMTP, RDP, SNMP, RTSP, GQUIC, CDP, LLMNR, SSDP є фільтри, які називаються як і самі протоколи, але пишуться маленькими літерами.

Наприклад, щоб побачити HTTP трафік:

Щоб побачити трафік нового протоколу HTTP/2:

Пам'ятайте, що при прийнятті рішення, до якого протоколу відносяться дані, що передаються, програма виходить з номера використовуваного порту. Якщо використовується нестандартний порт, програма не зможе знайти потрібні дані. Наприклад, якщо було виконано підключення до SSH портом 1234, то фільтр sshне знайде SSH трафік.

Фільтр, який показує лише дані, передані методом POST:

Http.request.method == "POST"

Фільтр, який показує лише дані, передані методом GET:

Http.request.method == "GET"

Пошук запитів до певного сайту (хосту):

Http.host == " "

Пошук запитів до певного сайту в частині імені:

Http.host contains "тут.часткове.ім'я"

Фільтр для виводу HTTP запитів, у яких передавалися кукіз:

Http.cookie

Запити, в яких сервер встановив кукіз у браузер користувача.

Http.set_cookie

Для пошуку будь-яких переданих зображень:

Http.content_type contains "image"

Для пошуку певних видів зображень:

Http.content_type contains "gif" http.content_type contains "jpeg" http.content_type contains "png"

Для пошуку файлів певного типу:

Http.content_type contains "text" http.content_type contains "xml" http.content_type contains "html" http.content_type contains "json" http.content_type contains "javascript" http.content_type contains "x-www-form-urlencode" http. content_type contains "compressed" http.content_type contains "application"

Пошук у Wireshark запитів на отримання файлів певного типу. Наприклад, для пошуку переданих ZIP архівів:

Http.request.uri contains "zip"

Замість http.request.uri для більшої точності можна використовувати фільтри http.request.uri.pathабо http.request.uri.query, наприклад, для пошуку запитів на завантаження файлів JPG (посилання на картинки):

Http.request.uri.path contains "jpg"

Також можна відфільтрувати запити, що містять певне значення HTTP заголовка REFERER (реферер). Наприклад, для пошуку запитів, у яких реферером є ru-board.com:

Http.referer contains "ru-board.com"

Http.authorization

Пошук файлів у HTTP потоці:

Http.file_data

Щоб побачити, які HTTP дані отримані із затримкою, використовується така конструкція:

Http.time>1

Вона покаже трафік, отриманий пізніше як за 1 секунду.

Для дослідження проблем можна аналізувати статус HTTP кодів відповіді. Наприклад, наступний фільтр покаже трафік, при якому отримано помилку 404 Not Found (сторінку не знайдено):

Http.response.code==404

Наступний фільтр дуже цікавий. По-перше, він показує, які складні конструкції можна будувати з окремих фільтрів. По-друге, він дозволяє досліджувати HTTP запитиі загалом Інтернет активність, крім зайві дані. За допомогою цього фільтра ви можете переглядати веб-активність високого рівня. Правила всередині дужок виключають зображення, файли Javascript та таблиці стилів - все, що сторінка запитує в собі. Якщо досліджувані сторінки містять інші вбудовані об'єкти, виключіть їх схожим чином:

Http.request && !(http.request.uri contains ".ico" or http.request.uri contains ".css" or http.request.uri contains ".js" or http.request.uri contains ".gif" or http.request.uri contains ".jpg")

Щоб побачити всі DNS запити та відповіді:

Щоб побачити, які DNS запити зайняли багато часу:

Dns.time>1

Буде показано відповіді, що надійдуть більш ніж за секунду після надсилання запиту.

Цей фільтр показує, які запити dns не можуть бути правильно дозволені:

Dns.flags.rcode != 0

Показати тільки DNS запити:

Dns.flags.response == 0

Показати тільки DNS відповіді:

Dns.flags.response == 1

Показати запити та відповіді на них, в якому шукається IP для google.com:

Dns.qry.name == "google.com"

Показати DNS запити та відповіді щодо запису A:

Dns.qry.type == 1

Показати DNS запити та відповіді щодо запису AAAA:

Dns.qry.type == 28

Показати відповіді, в яких для запису A як IP відправлено 216.58.196.3:

Dns.a == 216.58.196.3

Показати відповіді, в яких для запису AAAA як IP відправлено 2a01:4f8:172:1d86::1:

Dns.aaaa == 2a01:4f8:172:1d86::1

Показати записи з CNAME apollo.archlinux.org:

Dns.cname == "apollo.archlinux.org"

Показати відповіді довжиною понад 30:

Dns.resp.len > 30

Показати запити з довжиною понад 25:

Dns.qry.name.len >25

Показати відповіді DNS серверів, на яких доступна рекурсія:

Dns.flags.recavail == 1

Показати відповіді DNS серверів, на яких не доступна рекурсія:

Dns.flags.recavail == 0

Чи бажана рекурсія (якщо запитаний DNS сервер не має інформації про ім'я хоста, чи він повинен опитувати інші DNS серверау пошуках цієї інформації):

Dns.flags.recdesired == 1

Якщо у запиті стоїть 1 , отже рекурсія потрібна, якщо 0 — отже, вона не бажана.

Чи приймати неавтентифіковані дані ( 0 означає не приймати, 1 означає приймати):

Dns.flags.checkdisable == 0

Щоб побачити, як призначаються IP-адреси за протоколом DHCP:

Udp.dstport==67

Bootp.option.dhcp

Щоб показати DHCP запити:

Bootp.option.dhcp == 3

Щоб показати DHCP Discover:

Bootp.option.dhcp == 1

Фільтр SMB. Цей фільтр у колонці Info показує все дерево (кулі) з'єднань, відкритих директорій та відкритих файліву трасуванні.

Smb2.cmd==3 або smb2.cmd==5

Фільтри для Wi-Fi кадрів

Показати елементи чотириетапних рукостискань (тобто кадри протоколу 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

Показати 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 Мб/с:

Wlan_radio.data_rate > 10

Показувати точки доступу на певній частоті:

Radiotap.channel.freq == 2412

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

Wlan_radio.signal_dbm > -50

Фільтри, пов'язані з наявністю пристрою антени:

Radiotap.present.antenna == 1

Radiotap.antenna == 1

Якщо ви знаєте інші цікаві фільтри Wireshark, то поділіться ними в коментарях.

Підтримайте проект - поділіться посиланням, дякую!
Читайте також
Як встановити безкоштовний антивірус аваст Як встановити безкоштовний антивірус аваст Як очистити комп'ютер від вірусів самостійно Як очистити комп'ютер від вірусів самостійно Як повністю очистити комп'ютер від вірусів Як повністю очистити комп'ютер від вірусів