Wireshark: класика аналізу мережних пакетів Wireshark: Аналіз трафіку в Linux та Windows

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

Загальна інформація

Перед тим, як користуватись WireShark, потрібно ознайомитися з областю її застосування, функціоналом та можливостями. Коротко: програма дозволяє перехоплювати пакети в режимі реального часу в дротових та бездротових. мережевих підключеннях. Застосовується в протоколах Ethernet, IEEE 802.11, PPP та аналогічних. Можна використовувати і перехоплення трафіку VoIP дзвінків.

Програма поширюється під ліцензією GNU GPL, що означає – безкоштовно та з відкритим вихідним кодом. Можна запустити її на багатьох дистрибутивах Linux, MacOS, і є версія для операційної системи Windows.

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

По-перше, спочатку варто встановити їх у систему. Так як одним з найчастіше використовуваних Linux дистрибутивівє Ubuntu, і всі приклади будуть показані саме в ньому.

Для встановлення достатньо набрати в консолі команду:

sudo apt-get install wireshark

Після цього програма з'явиться у головному меню. Можна запустити її звідти. Але краще робити це з терміналу, тому що їй потрібні права суперкористувача. Це можна зробити так:

Зовнішній вигляд

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

Блок Capture містить список доступних для захоплення інтерфейсів. При виборі, наприклад, eth0 та натисканні кнопки Start запуститься процес перехоплення.

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

Нижче в списку розташовано вікно з вмістом технічних даних вибраного пакета. А ще нижче є відображення у шістнадцятковому вигляді.

Кожне уявлення можна розгорнути у великому вікні для зручнішого читання даних.

Застосування фільтрів

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

Для них є спеціальне поле у ​​вікні програми Filter. Щоб налаштувати фільтр більш точно, є кнопка Expression.

Але для більшості випадків вистачить стандартного набору фільтрів:

  • ip.dst - ip адреса призначення пакета;
  • ip.src - адреса відправника;
  • ip.addr - просто будь-який ip;
  • ip.proto - протокол.

Використання фільтрів у WireShark — інструкція

Щоб спробувати, як працює програма з фільтрами, потрібно ввести певну команду. Наприклад, такий набір - ip.dst == 172.217.23.131 - покаже всі пакети, що летять, на сайт "Гугл". Щоб переглянути весь трафік - і вхідний, і вихідний - можна об'єднати дві формули - ip.dst == 172.217.23.131 || ip.src == 172.217.23.131. Таким чином, вдалося використати в одному рядку відразу дві умови.

Можна використовувати інші умови, наприклад ip.ttl< 10. Ця командавиведе всі пакети з тривалістю життя менше 10. Щоб вибрати дані за їх розміром, можна застосувати такий підхід - http.content_length > 5000.

Додаткові можливості

Для зручності WireShark є спосіб швидко вибрати в якості аналізованого поля параметри пакета. Наприклад, у полі з технічними даними можна клацнути правою кнопкою на потрібному об'єкті та вибрати Apply as Column. Що означає його переведення в область поля як колонку.

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

Окремий сеанс

WireShark можна використовувати як монітор між двома вузлами мережі, наприклад, користувачем і сервером. Для цього потрібно вибрати пакет, що цікавить, викликати контекстне менюта натиснути Follow TCP Stream. У новому вікні відобразиться весь лог обміну між двома вузлами.

Діагностика

WireShark має окремий інструмент для аналізу проблем мережі. Він називається Expert Tools. Знайти його можна в нижньому лівому кутку, у вигляді круглої іконки. Після натискання на ній відкриється нове вікно з кількома вкладками - Errors, Warnings та інші. З їхньою допомогою можна проаналізувати, в яких вузлах відбуваються збої, не доходять пакети, і виявити інші проблеми з мережею.

Голосовий трафік

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

Пункт VoIP Calls у меню Telephony дозволить переглянути здійснені дзвінки та прослухати їх.

Експорт об'єктів

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

На закінчення

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

Також справи і з докладною інструкцієюпо WireShark російською. Офіційна від розробника представлена ​​англійською. У мережі є багато невеликих та коротких посібниківпо WireShark для початківців.

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

Варто зазначити, що в деяких країнах використання сніфера, яким і є WireShark, може бути протизаконним.

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

Програма однаково коректно працює серед багатьох операційних систем, включаючи Windows, UNIX, Linux, Mac OS, Free BSD, Solaris, Open BSD, Net BSD і т.д. Самі собою програми такого типу іноді називають сніфферами.

Ця програмадозволяє досить легко відстежити трафік з використанням безлічі мережевих протоколів типу DNS, FDDI, FTP, HTTP, ICQ, IPV6, IPX, IRC, MAPI, MOUNT, NETBIOS, NFS, NNTP, POP, PPP, TCP, TELNET, X25 тощо .

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

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

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

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

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

Після цього можна запускати основну програму.

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

Сам процес роботи з програмою досить простий

Для запуску перехоплення мережевих пакетівпотрібно просто зайти до головного меню, а саме Menu/Capture Options, а потім у полі Interface вибрати необхідний інтерфейс і натиснути кнопку Start.

Ось, власне, і все.

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

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

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

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

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

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

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

Wireshark - це досить відомий інструмент для захоплення і фактично стандарт як для освіти, так і для траблшутинга. Wireshark працює з переважною більшістю відомих протоколів, має зрозумілий і логічний графічний інтерфейс на основі GTK+та найпотужнішу систему фільтрів. Кросплатформовий, працює в таких ОС як Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Mac OS X,і, звичайно, Windows. Поширюється під ліцензією GNU GPL v2.Доступний безкоштовно на сайті wireshark.org.

Встановлення в системі Windowsтривіальна – next, next, next. Найсвіжіша на момент написання статті версія – 1.10.3, вона і братиме участь у огляді.

Навіщо взагалі потрібні аналізатори пакетів?

Щоб проводити дослідження мережевих додатків і протоколів, і навіть, щоб знаходити проблеми у роботі мережі, і, що важливо, з'ясовувати причини цих проблем.

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

Починаємо плавання

Для початку захоплення достатньо вибрати свій інтерфейс і натиснути Start.

Після чого і почнеться процес захоплення, причому пакети, що прилетіли, будуть з'являтися в реальному часі. У процесі розгляду та вивчення пакетів бувають ситуації, коли потрібно повернутися до попереднього пакету. Для цього є дві кнопки (див. скріншот).

А наступна кнопка дозволяє зробити швидкий перехід до пакета, вказавши його номер.

Якщо колонки перекриваються і наповзають один на одного, можна клікнути по такій колонці правою кнопкою миші і вибрати "Resize Column". Відбудеться автоматичне припасування розмірів під поточну ситуацію. І крім того, є кнопка "Resize all Columns", яка упорядкує всі колонки.

Використовуючи меню View – Time Display Format, можна, наприклад, налаштувати, щоб відлік часу йшов не з початку захоплення, а з отримання попереднього пакета ( Since Previous Captured Packet ). Найважливіше у кожній програмі ( Help – About Wireshark ) покаже не тільки версію та список авторів, але й містить закладку Folders яка покаже шляхи розміщення каталогів з конфігураціями.

Вивчаючи інтерфейс, можна вибрати, наприклад, пакет http, і побачити, що HTTPінкапсулюється в TCP (транспортний рівень), TCP інкапсулюється в IP (мережевий рівень), А IP у свою чергу інкапсулюється в Ethernet (перед цим навіть мелькає 802.1Q).

І на самому верху йде щось на зразок невеликого оглядузібраної інформації про кадр.

Про фільтри ми поговоримо далі, а на цьому етапі, якщо потрібно швидко відфільтрувати зайві пакети, достатньо зробити правий клік на пакеті, вибрати меню Apply as Filter – Немає selected і зміни відразу набудуть чинності. Якщо потрібно ще щось прибрати, то наступного разу вибирати "and not Selected" , і нове правило просто додасться до фільтра.

Забираємо задирки

Досить часто під час роботи з Wireshark виникає помилка IP checksum offload- Помилка контрольної суми заголовка IP пакета.

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

Хардвані функції найчастіше краще за софтварні, в основному через швидкість обробки (у залозі зазвичай вище) тому краще змінити налаштування самого сніффера. Для цього потрібно зайти в налаштування ( Edit - Preferences ), потім Protocols – IPv4- І зняти прапор з "Validate IPv4 checksum if possible".

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

  • Локально своєму хості;
  • Організувати зеркалювання трафіку на комутаторі;
  • Підключатися безпосередньо в місця, що цікавлять;
  • або отруєння протоколу ARP (ще незаконніше, ніж пасивне прослуховування трафіку)

Фільтруємо потік

Wireshark містить два види фільтрів – захоплення (Capture Filters) та відображення (Display Filters).
Спочатку розглянемо Capture Filters.
Як можна здогадатися за назвою, вони служать для фільтрації ще етапі захоплення трафіку. Але в такому разі, безперечно, можна безповоротно втратити частину потрібного трафіку.

Фільтр є виразом, що складається з вбудованих значень, які при необхідності можуть об'єднуватися логічними функціями (and, or, not). Для того щоб його задіяти, потрібно зайти в меню Сapture, потім Options , і в полі Capture Filter набрати, наприклад, host 8.8.8.8 (або, наприклад, net 192.168.0.0./24 )

Також, звичайно, можна вибрати і заздалегідь створений фільтр (за це відповідає кнопка Capture Filter). У будь-якому з варіантів фільтр з'явиться біля інтерфейсу, можна натиснути Start. Тепер перейдемо до Display Filters. Вони фільтрують тільки вже захоплений трафік.

Що можна фільтрувати?

Майже всі - протоколи, адреси, специфічні поля в протоколах.
Операції, які можна використовувати при побудові фільтрів:

Як ви, напевно, помітили, в таблиці як приклади були різноманітні висловлювання, досить зрозумілі і часто самі за себе. Наприклад, ip.dst- Це поле протоколу IP.

Щоб побачити це поле, можна просто подивитися на пакет і в нижній частині вікна можна побачити його значення, яке потім можна застосовувати в будь-якому фільтрі. Наприклад, нас цікавить, як створити фільтр, де перевірятиметься значення TTL.
Для цього розкриваємо L3частину та стаємо на відповідне поле:

І бачимо, що для побудови фільтра потрібно використовувати вираз ip.ttl.Якщо почати набирати фільтр, то після точки автоматично з'явиться список можливих значень:

Щоб застосувати фільтр, достатньо натиснути клавішу enter або кнопку Apply. Саме поле для введення фільтра може змінювати колір залежно від того, що було набрано.

Зелений колір означає, що все гаразд. Червоний – припущена помилка, жовтий – отримано несподіваний результат, тому що існують інші варіанти написання фільтра (наприклад, можна написати ip.dst! = 8.8.8.8 або ж !ip.dst == 8.8.8.8 , саме другий варіант кращий). Фільтри можна зберігати для подальшого використання, натиснувши кнопку Save,потім ввести довільну назву

і після натискання кнопки ОК фільтр з'явиться як кнопка на панелі.

А якщо натиснути на розташовану неподалік кнопку «Expression…», то відкриється досить потужний конструктор виразів, за яким можна мало не вивчати мережеві протоколи. Кількість протоколів, що підтримуються, постійно збільшується.

Як згадувалося раніше, можна виділити будь-який пакет і в контекстному меню вибрати Apply as Filter і в підменю вибрати режим - selected або not selected і відповідно відразу з'явиться фільтр, який показуватиме лише обране або навпаки прибере обране з екрана. Таким чином можна гнучко вибирати, що бачити на екрані, а що – ні. Це може бути певний ip-адреса, ttl,порт, dnsвідповідь та багато іншого. Крім того, є два варіанти для таких швидких фільтрів. Prepare as Filterі Apply as Filter.

Як можна здогадатися за назвою – різниця полягає в тому, що в першому випадку тільки з'явиться у полі для введення Display Filter,але не застосовується (зручно, якщо, наприклад, додавати в такий спосіб кілька фільтрів, а потім відразу застосувати готовий результат), а в другому - відразу ж і застосовується.

Фільтри можна об'єднувати, використовуючи знайомі з булевої алгебри логічні операції: (dns) && (http)логічне та (dns) | (http)це логічне або.

Таким чином можна будувати великі та складні фільтри на кшталт: (tcp.flags.syn==1) && (ip.src == 172.16.10.2) && (ip.dst == 172.16.10.1)Тут бачимо, що вибираються лише TCP SYNсегменти, тільки з певною адресою відправника та одержувача. При складанні великих фільтрів слід пам'ятати, що фільтр по суті - логічний вираз, і якщо він істинний, то пакет відобразиться на екрані, якщо хибно - ні.

Пірнаємо глибше

Досить часта ситуація, коли виникають скарги на повільну роботу мережі, причин цього може бути безліч. Спробуємо розібратися, у чому може бути причина, і розглянемо два способи. Перший полягає у додаванні колонки TCP delta.

Відкриваємо пакет, знаходимо поле Time since previous frame in this TCP frame, правий клік і вибираємо Apply as Column. З'явиться нова колонка. На ній можна клацнути правою кнопкою миші та вибрати режим сортування, наприклад, Sort Descending.

І одразу ж розглянемо другий спосіб.

Нещодавно (у версії 1.10.0) з'явився фільтр tcp.time_delta,який, власне, враховує час із моменту останнього запиту.

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

Ще глибше

Якщо подивитися в TCP пакет (або сегмент, якщо бути точним), то можна побачити там Stream index , Який починається зазвичай з нуля. Саме поле називатиметься tcp.stream.

По ньому можна зробити правий клік та створити фільтр.

Таким чином, можна фільтрувати потрібні з'єднання.

Ще один спосіб - зробити правий клік на самому пакеті, вибрати Conversation Filterта створити фільтр для l2 l3 l4 рівня відповідно.

У результаті ми знову побачимо взаємодію двох хостів.

І третій варіант - це одна з найцікавіших фіч - Follow TCP Stream. Для того щоб його задіяти, потрібно знову клікнути правою кнопкою миші на пакеті і вибрати "Follow TCP Stream". З'явиться вікно, де буде продемонстровано весь обмін між двома вузлами.

Якщо ж зайти до меню Statistics – Conversations, то, вибираючи закладки, можна побачити статистику з таких “розмов” і різні сесії, у своїй можна відсортувати їх у різних колонках, наприклад, за кількістю переданих даних.

І прямо в цьому вікні можна правою кнопкою викликати контекстне меню і знову ж таки застосувати як фільтр.

Згодом приходить досвід

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

Натискання цієї кнопки призведе до відкриття вікна Expert Infos . Того ж результату можна досягти, пройшовши в меню A nalyze – Експерт Info .

У цьому вікні буде інформація про знайдені пакети, розбита на групи Errors, Warnings, Notes і Chats. Кольорове забарвлення цих груп виглядає так:
Помилки- червоний колір
Попередження - жовтий
Примітки- синьо-зелений (Cyan)
Чат- сірий

Wireshark містить потужний аналізатор і вміє автоматично виявляти велику кількість проблем, що виникають в мережі. Як ви вже могли помітити, буквально скрізь можна використовувати фільтри та Expert Infoне є винятком. Для того, щоб створити такий фільтр, потрібно використовувати конструкцію expert.severity. Наприклад, expert.severity==error.

Грабуємо трафік!

Чи можна за допомогою Wireshark дізнатися, щобуло завантажено?

Так можна. І зараз це побачимо. Спочатку візьмемо HTTP трафік. Зробимо правий клік по HTTP пакету - Protocol Preferences- І бачимо тут безліч опцій, які безпосередньо впливають на вилучення файлів з Інтернет трафіку. Щоб побачити, що можна витягти з поточного дампа потрібно перейти в меню File – Export Objects – HTTP.

З'явиться вікно, яке покаже всі захоплені http об'єкти - текстові файли, картинки і т.д. Для того, щоб витягнути будь-який файл із цього списку, достатньо просто виділити його і натиснути Save As.

Як можна помітити, малюнок було витягнуто без будь-яких проблем.

У такий же спосіб можна витягувати і потокове відео/аудіо.

Але на цьому можливості Wireshark не закінчуються!

Він вміє витягувати файли з протоколу FTP. Для цього можна використовувати вже знайомий Follow TCP Stream. У результаті відобразиться лише обмін протоколом FTP, у якому потрібно буде знайти рядок RETR, що і означатиме передачу файла.

VoIP

Wireshark має кілька вбудованих функцій для роботи із цією технологією. Він підтримує масу голосових протоколів – SIP, SDP, RTSP, H.323, RTCP, SRTP та інші. І, звичайно, вміє перехоплювати і зберігати голосовий трафік для подальшого прослуховування.

Цей функціонал якнайкраще підійде для траблшутинга в мережах Voice over IP. Меню Statistics - Flow Graph покаже наочну картину, як відбувався обмін пакетами.

А взагалі ціле меню Telephonyвідведено до роботи з голосовим трафіком. Наприклад, Telephony – RTP – Show All Streams покаже докладно, що відбувалося з RTP, зокрема jitter (параметр, який, ймовірно, найважливіший у голосі), що іноді одразу скаже про наявність проблем.

Натиснувши кнопку "Analyze", можна відкрити вікно RTP stream Analysis - І, обравши там потік, можна його навіть програти за допомогою кнопки player. Спочатку відриється вікно програвача, в якому спочатку потрібно встановити потрібне значення jitter і використовувати кнопку decode.

З'явиться щось схоже на аналізатор спектру, в якому можна відзначити необхідну розмову, і кнопка Play стане активною.

Також існує ще один спосіб прослуховування голосових дзвінків - можна зайти в меню Telephony – VoIP Calls.

Відкриється вікно зі списком дзвінків, де знову ж таки можна натиснути кнопку player, скасувати потрібні розмови прапорцями і натиснути play. Для того, щоб досягти прийнятної якості звучання, потрібно програтися зі значенням поля jitter buffer, змінюючи його значення.

Невеликий відступ

Якийсь час тому з'явився сайт CloudShark.org.

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

Фінальна битва

Насамкінець розглянемо як виглядає сканування портів. Дивимося на дамп і бачимо, що спочатку відбувається запит ARP і потім безпосередньо починається сканування. Адреса нашого маршрутизатора 192.168.10.11, сканування йде за адресою 192.168.10.101

Це так зване SYN сканування, коли йдуть SYN-пакети на вказаний діапазон портів. Оскільки більшість портів закрито, маршрутизатор відповідає пакетами RST, ACK. Прогорнувши трохи нижче бачимо, що відкритий telnet (tcp 23).

На це вказує на те, що маршрутизатор відповів пакетом SYN, ACK. До речі, для фільтрації портів у сніфері можна використовувати конструкції виду: tcp.srcport, tcp.dstport та tcp.port. Для протоколу UDP все аналогічно – udp.srcport, udp.dstport, udp.port.

Підсумки

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

У процесі написання використовувалися матеріали сайтуwiki.wireshark.org/ Дампи з трафіком бралися з різних джерел, найбільше з сайту

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

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

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

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

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

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

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

sudo apt install wireshark

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

А для Gnome/Unity:

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

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

Для початку аналізу виберіть мережний інтерфейс, наприклад 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. Наберіть рядок у полі фільтра та натисніть 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.0 для виявлення проблем у мережі. Для цього в лівому нижньому кутку вікна є кругла кнопка, при натисканні на неї відкривається вікно Expet Tools. У ньому Wireshark збирає всі повідомлення про помилки та неполадки в мережі:

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

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

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

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

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


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

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

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

Даю приклад:

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

Applications >>Internet >>Wireshark

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

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

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

Пропонуємо до вашої уваги новий курс від команди The Codeby- "Тестування Веб-Додатків на проникнення з нуля". Загальна теорія, підготовка робочого оточення, пасивний фазинг та фінгерпринт, Активний фазинг, Вразливості, Пост-експлуатація, Інструментальні засоби, Social Engeneering та багато іншого.


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

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

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

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




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

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

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