Лабораторне заняття 7. Основи Ethernet та IP.
ДОДАТОК 7.3. ВСТАНОВЛЕННЯ І РОБОТА З WIRESHARK
Д.7.3.1. Загальні відомості про сніфери та Wireshark
Sniffer (від англ. to sniff – нюхати) – це мережний аналізатор трафіку, програма або програмно-апаратний пристрій, призначений для перехвату та наступного аналізу, або тільки аналізу мережного трафіку, призначеного для інших вузлів. Перехват трафіку може відбуватися:
- звичайним "прослуховуванням" мережного інтерфейсу; метод ефективний при ивикористанні в сегменті концентраторів (hub) замість комутаторів (switch), в іншому випадку метод малоефективний, оскільки на сніфер попадають лише окремі кадри, які призначені приймаючому вузлу;
- підключенням сніферу в розрив каналу;
- відгалуженням (програмним чи апаратним) трафіку і направленням його копії на сніфер;
- через аналіз побічних електромагнітних випромінювань та відновленням таким чином трафіку, що прослуховується;
- через атаку на канальному рівні (2-му) або мережному рівні (3-му), яка приводить до перенаправлення трафіку жертви або всього трафіку сегменту на сніфер з наступним поверненням трафіку на потрібну адресу .
Сніфери застосовуються як в благих, так і деструктивних цілях. Аналіз трафіку, що проходить через сніфер, дозволяє:
- відслідковувати мережну активність додатків;
- відлагоджувати протоколи мережних додатків;
- локалізувати несправність або помилку конфігурації;
- знаходити паразитний, вірусний та закільцьований трафік, наявність котрого збільшує навантаження мережного обладнання та каналів зв’язку;
- виявити в мережі шкідливе ПО, наприклад, мережні сканери, флудери, троянські програми, клієнти пірингових мереж та інші;
- перехватити любий незашифрований (а інколи і зашифрований) трафік користувача з ціллю дізнавання паролів та іншої інформації
Поступово із інструментів, призначених тільки для діагностики, сніфери перетворилися в засоби для дослідження та навчання. Наприклад, вони постійно використовуються для вивчення динаміки і взаємодії в мережах. Зокрема, вони дозволяють легко та наглядно вивчати тонкощі мережних протоколів. Спостерігаючи за даними, які відправляє протокол, можна глибше зрозуміти його функціонування на практиці, а заодно побачити, коли деяка конкретна реалізація робить не у відповідності зі специфікацією. На сьогоднішній момент існує достатня кількість хороших реалізацій сніферів. Деякі з них:
- Tcpdump (http://www.tcpdump.org/) – консольний варіант сніферу. Працює на найбільш поширених на сьогоднішній день ОС;
- Wireshark (http://www.wireshark.org/) до недавнього часу був відомий під іменем Ethreal;
- WinDump http://www.winpcap.org/windump;
Програма Wireshark являеться однією з самих зручних реалізацій сніферів, яка доступна для багатьох ОС і поширюється безкоштовно. На рис.Д9 зображена структура мережної підсистеми ОС. Уся базова інфраструктура реалізована у вигляді драйверів та працює в режимі ядра. Процеси користувача та реалізації прикладних протоколів, зокрема інтерфейс сніферу працюють в режимі користувача.
Рис.Д9. Принцип захвату мережного трафіку.
Основними компонентами сніферу є: драйвер для захоплення пакетів (libpcap драйвер), інтерфейсна бібліотека (libpcap) та інтерфейс користувача (Wireshark). Бібліотека libpcap (реалізація під ОС Windows носить назву WinPcap - http://www.winpcap.org) – універсальна мережна бібліотека, яка самостійно реалізує велику кількість мережних протоколів та працює безпосередньо з NDIS драйверами (Network Driver Interface Specification) мережних пристроїв. На базі даної бібліотеки реалізована велика кількість мережних програм, в тому числі сніфер Wireshark.
Сніфери використовують бібліотеку в режимі "захоплення" пакетів, тобто може отримувати копію всіх даних що проходить через драйвер мережного інтерфейсу. Зміни в самі дані не вносяться. Якщо локальний трафік не проходить через драйвер мережного пристрою (див. рис.Д9), то він не буде видимий сніфером.
Wireshark дозволяє в режимі реального часу захватувати пакети з мережі, та аналізувати їх структуру. Також можна аналізувати структуру пакетів з файлу, який вміщує трафік, отриманий, наприклад програмою «tcpdump» (unix/linux).