Wireshark: Аналіз трафіку в Linux та Windows. Wireshark знайомство, що десь у цій програмі лежить! Аналіз пакетів за допомогою wireshark

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

Вступ

З усіх методів вивчення комп'ютерних мереж аналіз трафіку, мабуть, найбільш кропіткий та трудомісткий. Інтенсивні потоки сучасних мереж породжують дуже багато «сирого» матеріалу, знайти в якому крихти корисної інформації далеко не просто. За час свого існування стек TCP/IP обріс численними додатками та доповненнями, рахунок яких йде на сотні та тисячі. Це прикладні та службові протоколи, протоколи аутентифікації, тунелювання, доступу до мережі тощо. Крім знання азів мережевих взаємодій, досліднику трафіку (тобто тобі) потрібно вільно орієнтуватися у всьому цьому протокольному різноманітті та вміти працювати зі специфічними програмними інструментами – сніфферами, або, по-науковому, аналізаторами трафіку (протоколів).

Функціональність сніфера - це не тільки можливість використання "нерозбірливого" (promiscuos) режиму роботи мережевої карти для перехоплення. Такий софт повинен вміти ефективно фільтрувати трафік як на етапі збору, так і під час вивчення окремих одиниць передачі (фреймів, пакетів, сегментів, датаграм, повідомлень). І чим більше протоколів сніффер «знає», тим краще.

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

Знайомимося з фільтрами

Wireshark підтримує два види фільтрів:

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

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

Мал. 1. Профіль фільтрів перехоплення

Мова фільтрів перехоплення стандартна для світу Open Source і використовується багатьма Pcap-заснованими продуктами (наприклад, утилітою tcpdump або системою виявлення/запобігання вторгненням Snort). Тому описувати синтаксис тут немає особливого сенсу, оскільки він тобі, швидше за все, знайомий. А деталі можна переглянути в документації, наприклад у Linux на сторінці довідкового посібника pcap-filter(7).

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

Вписати фільтр відображення можна прямо у відповідне поле (увага, працює список-підказка, що випадає) головного вікна програми після кнопки «Filter» (до речі, під цією кнопкою ховається профіль для часто використовуваних виразів). А якщо клацнути розташовану неподалік кнопку «Expression…», то відкриється багатофункціональний конструктор виразів (рис. 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 або 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

Власне, теорії спершу достатньо. Далі використовуй здоровий глузд і дужки за потребою і без неї. Також не забувай, що фільтр по суті – логічний вираз: якщо він істинний, то пакет відобразиться на екрані, якщо хибно – ні.

Pcap-фільтр для виявлення сканування Netbios-портів

dst port 135 або dst port 445 або dst port 1433 and tcp & (tcp-syn) != 0 and tcp & (tcp-ack) = 0 and src net 192.168.56.0/24

Шукаємо викрадача IP-адреси

У сегменті локальної мережі трапляються (з тих чи інших причин) збіги IP-адрес у двох і більше вузлів. Методика «вилову» (визначення MAC-адрес) конфліктуючих систем загальновідома: запускаємо на третьому комп'ютері сніффер, чистимо ARP-кеш та стимулюємо запит на дозвіл MAC'а шуканого IP, наприклад пропінговавши його:

# arp -d 192.168.56.5 # ping -n -c 1 192.168.56.5

А потім шукаємо у перехопленому трафіку, з яких MAC'ів прийшли відповіді. Якщо Wireshark наловив багато пакетів, створюємо фільтр відображення за допомогою конструктора. У першій частині виразу вибираємо ARP-відповіді, у другій - ті повідомлення, в яких вихідна IP-адреса дорівнює шуканому. Примітиви об'єднуємо оператором &&, тому що потрібно, щоб обидві умови виконувались одночасно:

(arp.opcode == reply) && (arp.src.proto_ipv4 == 192.168.56.5)

До речі, при виконанні цього сценарію жодна комп'ютерна мережа не постраждала, тому що було використано дві віртуальні машини Oracle VirtualBox та мережеве підключення типу «Віртуальний адаптер хоста».

Інспектуємо мережевий та транспортний рівні

До цього часу досить ефективним засобом діагностики мережевого стека залишається протокол ICMP. З повідомлень цього протоколу можна отримати цінну інформацію про проблеми мережі.

Як ти вже здогадався, відфільтрувати ICMP у Wireshark дуже просто. Достатньо у рядку фільтрації у головному вікні програми написати: icmp. Крім icmp, працюють і багато інших ключових слів, що є іменами протоколів, наприклад arp, ip, tcp, udp, snmp, smb, http, ftp, ssh та інші.

Якщо ICMP-трафіку багато, відображення можна деталізувати, виключивши, наприклад, луна-запити (тип 0) і луна-відповіді (тип 8):

Icmp and ((icmp.type ne 0) and (icmp.type ne 8))

На рис. 4 показаний приклад невеликої вибірки ICMP-повідомлень, створених тестовим Linux-маршрутизатором. Повідомлення "Port Unreachable" зазвичай використовується за замовчуванням. Воно ж генерується мережевим стеком при отриманні UDP-датаграми на порт, що не використовується. Щоб віртуальний роутер на основі Debian почав віддавати повідомлення Host unreachable і Communication administratively filtered, довелося з ним повозитися. Cisco ж інформує про адміністративну фільтрацію зазвичай за умовчанням. Повідомлення "Time-to-live exceeded" говорить про наявність петлі на якійсь ділянці мережі (ну і при трасуванні маршруту такі пакети також можуть з'являтися).

До речі, про міжмережні екрани. Створювати правила для популярних фаєрів можна прямо у Wireshark, використовуючи пункт Firewall ACL Rules меню Tools. Попередньо потрібно вибрати пакет, інформація якого буде використана. Доступні стандартні та розширені ACL Cisco, правила UNIX-like продуктів IP Filter, IPFirewall (ipfw), Netfilter (iptables), Packet Filter (pf), а також Windows Firewall (netsh).

І тепер коротко про ази фільтрації на мережному рівні, основу якої становлять поля заголовка IP-пакета - адреса відправника (ip.src) та адреса одержувача (ip.dst):

(ip.src == 192.168.56.6) | (ip.dst == 192.168.56.6)

Так ми побачимо всі пакети, які отримав або надіслав цю IP-адресу. Фільтрувати цілі підмережі можна, використовуючи CIDR-нотацію запису маски. Наприклад виявимо інфікований хост, який здійснює спам-розсилку (тут 192.168.56.251 - це IP-адреса нашого SMTP-сервера):

Ip.src == 192.168.56.0/24 and tcp.dstport == 25 and !(ip.dst == 192.168.56.251)

До речі, для вибірки за MAC-адресами слід використовувати примітиви eth.src, eth.dst та eth.addr. Іноді проблеми мережного рівня куди вже пов'язані з Ethernet-уровнем, ніж розповідає теорія. Зокрема, при налаштуванні маршрутизації дуже корисно подивитися, на MAC-адресу якого роутера впертий вузол відправляє пакети. Втім, для такого простого завдання за очі вистачить утиліти tcpdump, практично штатної для UNIX-подібних систем.

З фільтрацією портів Wireshark теж ніяких питань немає. Для TCP до твоїх послуг ключові слова tcp.srcport, tcp.dstport та tcp.port, для UDP – udp.srcport, udp.dstport та udp.port. Правда, у вбудованої мови фільтрів Wireshark не знайшлося аналога примітиву port в Pcap, що позначає порт UDP, так і TCP. Але це легко виправити за допомогою логічного виразу, наприклад:

Tcp.port == 53 || udp.port == 53

Імпровізуємо з HTTP-трафіком

Прикладні протоколи, зокрема HTTP, - це «вічна» тема у розрізі сніфінгу. Заради справедливості треба сказати, що для дослідження веб-трафіку створено чимало спеціалізованих програмних засобів. Але і такий універсальний інструмент, як Wireshark, з його гнучкою системою фільтрації на цій ниві виявляється зовсім не зайвим.

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

Tcp contains "сайт"

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


Віконце «Filter Expressions», звичайно, хороший помічник, але часом перегортати довгий список у пошуках потрібного поля дуже втомливо. Є більш простий спосіб створення/модифікації фільтрів: за допомогою контекстного меню при перегляді пакетів. Для цього потрібно просто клікнути правою клавішею миші по полю, що цікавить, і вибрати один з підпунктів пункту «Apply As Filter» або пункту «Prepare a Filter». У першому випадку зміни відразу набудуть чинності, а в другому - можна буде підкоригувати вираз. "Selected" означає, що значення поля стане новим фільтром, "Not Selected" - те саме, тільки з запереченням. Пункти, що починаються з «...», додають значення поля до існуючого виразу з урахуванням логічних операторів.

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

Наприклад, щоб подивитися, які зображення браузер запитував у веб-сервера при формуванні сторінки, пригодиться фільтр, що аналізує вміст сервера URI, що передається:

(http.host eq "www..request.uri contains ".jpg#26759185") or (http.request.uri contains ".png#26759185"))

Те ж саме, але з використанням matches:

(http.host eq "www..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 "http://www..dst eq 178.248.232.27))

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

Http.request.method == GET

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

Port 80 and tcp[((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")

Перехоплення 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

INFO

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

Прикладами пакетних фільтрів для UNIX-like ОС є BPF (Berkeley Packet Filter) та LSF (Linux Socket Filter). В BPF фільтрація реалізована на основі регістро-орієнтованої примітивної машинної мови, інтерпретатором якої є BPF.


Аналізуємо трафік з віддалених хостів

Користувачі Windows можуть працювати не тільки з інтерфейсами комп'ютера, на якому запущений Wireshark, але і знімати трафік з віддалених машин. Для цього існує спеціальна служба (Remote Packet Capture Protocol) у постачанні бібліотеки WinPcap. Її потрібно попередньо включити в оснастці управління службами (services.msc). Тепер, запустивши Wireshark на віддаленому комп'ютері, можна підключитися до того вузла, на якому працює сервіс віддаленого перехоплення трафіку (за замовчуванням використовує порт 2002), і дані протоколу RPCAP потечуть річкою.

Також наведу варіанти підключення до домашнього *nix-роутера «ззовні» для віддаленого аналізу трафіку:

$ssh [email protected]"tshark -f" port !22" -i any -w -" | wireshark -k -i - $ssh [email protected] tcpdump -U -s0 -w - "not port 22" | wireshark -k -i -

Інструмент із розряду must have

Wireshark - широко відомий інструмент перехоплення та інтерактивного аналізу мережевого трафіку, фактично стандарт для промисловості та освіти. Розповсюджується під ліцензією GNU GPLv2. Wireshark працює з більшістю відомих протоколів, має графічний інтерфейс користувача на основі GTK+, потужну систему фільтрів трафіку та вбудований інтерпретатор мови програмування Lua для створення декодерів та обробників подій.

Витягти корисний вантаж

У певних колах широко відомі спеціалізовані інструменти, що дозволяють «витягувати» з трафіку кінцеві інформаційні об'єкти: файли, зображення, відео- та аудіоконтент та інше. Завдяки потужній аналітичній підсистемі Wireshark цю функціональність з лишком покриває, тому шукай у відповідних вікнах аналізу кнопку «Save Payload…».

Висновок

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

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

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

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

Увімкніть уяву!

Даю приклад:

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

Applications >>Internet >>Wireshark

Як ви бачите у нього приємне меню і начебто все зрозуміло. Але насправді це дуже складний атрибут. Для початку пройдемося за базовими функціями.

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

Для того, щоб зупинити захоплення трафіку, натискаємо на кнопку « Stop the running live capture

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

Ми можемо вписати потрібний нам трафік для фільтрування у розділі « Filter:» і Wireshark сам буде давати нам підказки або можемо вибрати натиснувши на « Expression «

Ми також можемо створити свій власний фільтр, натиснувши на Analyze >>Display filters

Якщо ви побачили потрібний пакет, ви можете переглянути його вміст.




Також можна переглянути весь вміст пакета, а також всі дані про нього.

Як ви вже зрозуміли, це дуже сильна штука для перегляду трафіку. Його дуже широко використовують багато професіоналів для вирішення проблем у мережі та розробки мереж.

Це лише початок, стежте за оновленнями статей так як ми повністю пояснимо і розберемо по шматках цей атрибут.

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

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

Увімкніть уяву!

Даю приклад:

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

Applications >>Internet >>Wireshark

Як ви бачите у нього приємне меню і начебто все зрозуміло. Але насправді це дуже складний атрибут. Для початку пройдемося за базовими функціями.

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

Для того, щоб зупинити захоплення трафіку, натискаємо на кнопку « Stop the running live capture

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

Ми можемо вписати потрібний нам трафік для фільтрування у розділі « Filter:» і Wireshark сам буде давати нам підказки або можемо вибрати натиснувши на « Expression «

Ми також можемо створити свій власний фільтр, натиснувши на Analyze >>Display filters

Якщо ви побачили потрібний пакет, ви можете переглянути його вміст.




Також можна переглянути весь вміст пакета, а також всі дані про нього.

Як ви вже зрозуміли, це дуже сильна штука для перегляду трафіку. Його дуже широко використовують багато професіоналів для вирішення проблем у мережі та розробки мереж.

Це лише початок, стежте за оновленнями статей так як ми повністю пояснимо і розберемо по шматках цей атрибут.

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

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

Основні можливості Wireshark

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

  • Захоплення пакетів у реальному часі з дротового чи іншого типу мережевих інтерфейсів, і навіть читання з файла;
  • Підтримуються такі інтерфейси захоплення: Ethernet, IEEE 802.11, PPP та локальні віртуальні інтерфейси;
  • Пакети можна відсівати за безліччю параметрів за допомогою фільтрів;
  • Усі відомі протоколи підсвічуються у списку різними кольорами, наприклад TCP, HTTP, FTP, DNS, ICMP тощо;
  • Підтримка захоплення трафіку VoIP дзвінків;
  • Підтримується розшифровка трафіку HTTPS за наявності сертифіката;
  • Розшифровка WEP, WPA трафіку бездротових мереж за наявності ключа та handshake;
  • відображення статистики навантаження на мережу;
  • Перегляд вмісту пакетів для всіх рівнів мережі;
  • Відображення часу надсилання та отримання пакетів.

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

Як користуватися Wireshark

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

$ sudo apt install wireshark

Після встановлення ви зможете знайти програму у головному меню дистрибутива. Запускати Wireshark потрібно з правами суперкористувача, тому що інакше програма не зможе аналізувати мережні пакети. Це можна зробити з головного меню або через термінал, за допомогою команди, для KDE:

$ kdesu wireshark

А для Gnome/Unity:

$ gksu wireshark

Головне вікно програми розділено на три частини, перша колонка містить список доступних для аналізу мережевих інтерфейсів, друга опції для відкриття файлів, а третя - допомога.

Аналіз мережевого трафіку

Щоб розпочати аналіз, виберіть мережний інтерфейс, наприклад, eth0 і натисніть кнопку Start.

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

  • Верхня частина- це меню та панелі з різними кнопками;
  • Список пакетів- далі відображається потік мережевих пакетів, які ви аналізуватимете;
  • Вміст пакету- трохи нижче розташований вміст вибраного пакета, він розбитий за категоріями залежно від транспортного рівня;
  • Реальна вистава- у самому низу відображається вміст пакета у реальному вигляді, а також у вигляді HEX.

Ви можете натиснути на будь-який пакет, щоб проаналізувати його вміст:

Тут ми бачимо пакет запиту до DNS щоб отримати IP адресу сайту, в самому запиті відправляється домен, а в пакеті відповіді ми отримуємо наше запитання, а також відповідь.

Для більш зручного перегляду можна відкрити пакет у новому вікні, виконавши подвійний клік по запису:

Фільтри Wireshark

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

  • ip.dst- Цільова IP адреса;
  • ip.src- IP адреса відправника;
  • ip.addr- ip відправника чи одержувача;
  • ip.proto- Протокол;
  • tcp.dstport- порт призначення;
  • tcp.srcport- порт відправника;
  • ip.ttl- фільтр по ttl, визначає мережну відстань;
  • http.request_uri- Запитувана адреса сайту.

Для вказівки відносин між полем і значенням у фільтрі можна використовувати такі оператори:

  • == - одно;
  • != - не дорівнює;
  • < - менше;
  • > - Більше;
  • <= - менше або дорівнює;
  • >= - більше чи рівно;
  • matches- регулярне вираження;
  • contains- Містить.

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

  • && - обидва вирази мають бути вірними для пакета;
  • || - може бути вірним один із виразів.

Тепер розглянемо на прикладах кілька фільтрів і спробуємо розглянути всі знаки відносин.

Спочатку відфільтруємо всі пакети, надіслані на 194.67.215.125 (losst.ru). Наберіть рядок у полі фільтра та натисніть Apply. Для зручності фільтри wireshark можна зберігати за допомогою кнопки Save:

ip.dst == 194.67.215.125

А щоб отримати не лише надіслані пакети, а й отримані у відповідь від цього вузла можна об'єднати дві умови:

ip.dst == 194.67.215.125 || ip.src == 194.67.215.125

Також ми можемо відібрати надіслані великі файли:

http.content_length > 5000

Відфільтрувавши Content-Type, ми можемо вибрати всі картинки, які були завантажені, виконаємо аналіз трафіку wireshark, пакети якого містять слово image:

http.content_type contains image

Щоб очистити фільтр, ви можете натиснути кнопку Clear. Буває не завжди ви знаєте всю необхідну фільтрацію інформацію, а просто хочете вивчити мережу. Ви можете додати будь-яке поле пакета як колонку і переглянути його вміст у загальному вікні для кожного пакета.

Наприклад, я хочу вивести у вигляді стовпчика ttl (час життя) пакета. Для цього відкрийте інформацію про пакет, знайдіть це поле у ​​розділі IP. Потім викличте контекстне меню та виберіть опцію Apply As Column:

Також можна створити фільтр на основі будь-якого потрібного поля. Виберіть поле і натисніть контекстне меню, потім натисніть Apply as filterабо Prepare as filter, потім вибрати Selectedщоб вивести лише вибрані значення або Not selected, щоб їх прибрати:

Вказане поле та його значення буде застосовано або у другому випадку підставлено у полі фільтра:

У такий спосіб ви можете додати у фільтр поле будь-якого пакета чи колонку. Там також є ця опція в контекстному меню. Для фільтрації протоколів можна використовувати і простіші умови. Наприклад, виконаємо аналіз трафіку Wireshark для протоколів HTTP та DNS:

Ще одна цікава можливість програми – використання Wireshark для відстеження певного сеансу між комп'ютером користувача та сервером. Для цього відкрийте контекстне меню для пакета та виберіть Follow TCP stream.

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

Діагностика проблем Wireshark

Можливо, вам цікаво, як користуватися Wireshark 2 для виявлення проблем у мережі. Для цього в лівому нижньому кутку вікна є кругла кнопка, при натисканні на неї відкривається вікно Expet Tools. У ньому Wireshark збирає всі повідомлення про помилки та неполадки в мережі:

Вікно поділено на такі вкладки, як Errors, Warnings, Notices, Chats. Програма вміє фільтрувати та знаходити безліч проблем із мережею і тут ви можете їх дуже швидко побачити. Тут також підтримуються фільтри wireshark.

Аналіз трафіку Wireshark

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

Для цього спочатку потрібно зупинити захоплення трафіку за допомогою червоного квадрата на панелі. Потім відкрийте меню File -> Export Objects -> HTTP:

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

Поділитися