Як перехопити трафік? Найкращі інструменти пен-тестера: сніфери та робота з пакетами

В даний час також дуже популярними стали публічні мережі Wi-Fi. Вони є в ресторанах, спортивних залах, торгових центрах, метро, ​​готелях, приватних лікарнях і поліклініках, апартаментах і кондомініумах — їх можна знайти практично скрізь, де збирається чимало людей.

Ці мережі мають особливість — часто це відкриті мережі Wi-Fi для підключення до яких не потрібен пароль. Чи є якісь додаткові правила безпеки для роботи з такими мережами?

Так, при використанні відкритої Wi-Fi мережею потрібно добре розуміти, що:

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

З першим пунктом, думаю, все зрозуміло: якщо хтось з комп'ютером та Wi-Fi картою знаходиться досить близькою, то він може захоплювати і зберігати весь трафік, що передається між бездротовою Точкою Доступу та всіма її клієнтами.

Що стосується другого пункту, то потрібно пояснити з приводу шифрування даних, що передаються. Наприклад, якщо ви відкриваєте будь-який сайт, який використовує протокол HTTPS (тобто безпечний протокол), наприклад сайт , то дані, що передаються на цей сайт і з цього сайту до вас зашифровані. Якщо ви відкриваєте сайт, що працює за протоколом HTTP, то всі дані, що передаються: які сторінки ви відвідали, які коментарі залишили, які кукіз отримав ваш веб-браузер — ці дані передаються в незашифрованому вигляді. Так ось, якщо ви підключені до Wi-Fi точки Доступу яка вимагає введення пароля, то трафік, що передається, шифрується ще раз. Тобто навіть якщо ви відкриваєте сайт на протоколі HTTPS, то трафік, що передається, шифрується два рази (перший раз при передачі від веб-браузера до веб-сервера і в зворотному напрямку, другий раз при передачі від вашого пристрою і до точки доступу, а також в зворотному напрямку). А якщо ви відкриваєте сайт на протоколі HTTP, то трафік, що передається, шифрується тільки один раз (тільки при передачі від вашого пристрою до Точки Доступу і назад).

Але відкриті точки доступу не шифрують трафік. З цього випливає: якщо ви використовуєте відкриту точку доступу і відкриваєте сайт, що працює на протоколі HTTP, значить ваші дані передаються у відкритому вигляді і будь хто поруч з вами може їх захопити і зберегти. Якщо ви відкриваєте сайт на протоколі HTTPS, то ці дані зашифровані, однак все одно видно, які саме сайти ви відкривали (хоча не видно, які саме сторінки і що ви вводили, наприклад, які залишили коментарі).

Отже: потрібно пам'ятати, що відкриті бездротові мережі схильні до перехоплення інформації.

Перехоплення трафіку у відкритих Wi-Fi мережах

Для успішної атаки потрібен комп'ютер на Linux (наприклад, з Kali Linux або BlackArch), а також Wi-Fi карта з .

Почнемо з того, що подивимося імена бездротових інтерфейсів:

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

Переводимо бездротовий інтерфейс у режим монітора:

Sudo ip link set ІНТЕРФЕЙС down sudo iw ІНТЕРФЕЙС set monitor control sudo ip link set ІНТЕРФЕЙС up

У попередніх командах замість ІНТЕРФЕЙСпотрібно вписати ім'я, яке бездротовий інтерфейс має у вашій системі. Наприклад, для wlp0s20f0u2 команди виглядають так:

Sudo ip link set wlp0s20f0u2 down sudo iw wlp0s20f0u2 set monitor control sudo ip link set wlp0s20f0u2 up

Відкрийте файл із захопленими даними у Wireshark.

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

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

Наприклад:

Tcp.analysis.duplicate_ack_num == 1

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

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

Tcp.analysis.ack_lost_segment

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

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

Tcp.analysis.retransmission

Велика кількість таких кадрів може говорити про те, що між Клієнтом і ТД поганий зв'язок і їм часто доводиться надсилати повторно одні й ті самі дані.

За допомогою фільтра

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

За допомогою фільтра

можна побачити всі надіслані DNS запити.

Завдяки цим запитам можна дізнатися, які сайти відвідували користувачі (навіть якщо ці сайти використовують HTTPS!), а також до яких онлайн сервісів було зроблено запити.

Наприклад, на скріншоті можна побачити адреси онлайн кінотеатру Netflix, Facebook, різних сервісів Google.

Для фільтрації HTTP трафіку фільтр:

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

Можна побачити відвідані URL адреси з усіма параметрами, що передаються:

Видно завантажені та відкриті в Інтернеті файли:

Ви можете зберегти будь-який переданий файл. Для цього виділіть мишкою пакет, який його містить (1), потім у середній панелі, яка містить докладну інформацію, прогорніть у самий низ, щоб знайти поле з даними та клацніть на нього правою кнопкою миші, щоб викликати контекстне меню (2), в контекстному меню виберіть Export Selected Packet Bytes(3) — Експортувати байти вибраного пакета:

Введіть ім'я файлу, виберіть розташування та збережіть його.

Хтось оновлює Windows:

Також видно встановлені користувачеві кукіз або передані ним кукіз:

За допомогою фільтра

Http.cookie

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

А за допомогою фільтра

Http.set_cookie

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

Сусіди завантажують дивні торенти:

Надіслані методом POST дані також видно:

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

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"

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

Http.request.method == "POST"

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

Http.request.method == "GET"

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

Http.host == " "

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

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

Висновок

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

Навіть сайти, які використовують HTTPS, можуть мимоволі видавати дані. Наприклад:

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

Програма iPhone постійно завантажує якісь (аудіо?) файли не використовуючи безпечне з'єднання:

Популярна (у деяких регіонах) qq.com або не використовує шифрування, або використовує свій власний алгоритм:

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

Методи перехоплення мережевого трафіку

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

Для захисту від прослуховування мережі застосовуються спеціальні програми, наприклад AntiSniff, які здатні виявляти в мережі комп'ютери, зайняті прослуховуванням мережного трафіку.

Програми-антисніфери для вирішення своїх завдань використовують особливу ознаку наявності в мережі пристроїв, що прослуховують – мережна плата комп'ютера-сніфера повинна знаходитися в спеціальному режимі прослуховування. Перебуваючи в режимі прослуховування, мережеві комп'ютери особливо реагують на ІР-дейтаграми, що посилаються на адресу тестованого хоста. Наприклад, хости, що прослуховують, як правило, обробляють весь трафік, що надходить, не обмежуючись тільки посланими на адресу хоста дейтаграмами. Є й інші ознаки, що вказують на підозрілу поведінку хоста, здатну розпізнати програма AntiSniff.

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

Щоб перехопити і замкнути на себе процес мережевої взаємодії між двома хостами А та В зловмисник може підмінити IP-адреси взаємодіючих хостів своєю IP-адресою, надіславши хостам А та В фальсифіковані повідомлення ARP (Address Resolution Protocol – Протокол дозволу адрес).

Рис. 1 Неправдиві запити ARP

Подивимося, як хакер може скористатися протоколом ARP до виконання перехоплення мережевої взаємодії між хостами А і У.

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

  • Зловмисник визначає МАС-адреси хостів А та В, наприклад, за допомогою команди nbtstat з пакета W2RK.
  • Зловмисник відправляє на виявлені МАС-адреси хостів А та В повідомлення, що є фальсифікованими ARP-відповідями на запити дозволу IP-адрес хостів у МАС-адреси комп'ютерів. Хосту А повідомляється, що ІР-адресу хоста відповідає МАС-адресу комп'ютера зловмисника; хосту В повідомляється, що IP-адреса хоста А також відповідає МАС-адреса комп'ютера зловмисника.
  • Хости А і В заносять отримані МАС-адреси у свої кеші ARP і далі використовують їх для надсилання повідомлень один одному. Оскільки IP-адреси А і В відповідає МАС-адреса комп'ютера зловмисника, хости А і В, нічого не підозрюючи, спілкуються через посередника, здатного робити з їхніми посланнями що завгодно.

Для захисту від таких атак мережеві адміністратори повинні підтримувати базу даних з таблицею відповідності МАС-адрес та IP-адрес своїх мережевих комп'ютерів.

У мережах UNIX такого роду атаку помилковими запитами ARP можна реалізувати за допомогою системних утиліт відстеження та управління мережним трафіком, наприклад, arpredirect. На жаль, у мережах Windows такі надійні утиліти, мабуть, не реалізовані. Наприклад, на сайті NTsecurity можна завантажити утиліту GrabitAII, представлену як засіб для перенаправлення трафіку між мережевими хостами. Однак елементарна перевірка працездатності утиліти GrabitAII показує, що до повного успіху у реалізації її функцій ще далеко.

Щоб перехопити мережний трафік, зловмисник може підмінити реальну IP-адресу мережевого маршрутизатора своєю IP-адресою, виконавши це, наприклад, за допомогою фальсифікованих ICMP-повідомлень Redirect. Отримане повідомлення Redirect хост А повинен, згідно з документом RFC-1122, сприйняти як відповідь на дейтаграму, надіслану іншому хосту, наприклад, В. Свої дії на повідомлення Redirect хост А визначає, виходячи з вмісту отриманого повідомлення Redirect, і якщо Redirect задати перенаправлення дейтаграм з А в В за новим маршрутом, саме це хост А і зробить.

Рис. 2 Хибна маршрутизація

Для виконання помилкової маршрутизації зловмисник повинен знати деякі подробиці про організацію локальної мережі, в якій знаходиться хост А, зокрема, IP-адреса маршрутизатора, через яку відправляється трафік з хоста А в В. Знаючи це, зловмисник сформує IP-дейтаграму, в якій IP -адреса відправника визначена як IP-адреса маршрутизатора, а одержувачем вказано хост А. Також до дейтаграми включається повідомлення ICMP Redirect з полем адреси нового маршрутизатора, встановленим як IP-адресу комп'ютера зловмисника. Отримавши таке повідомлення, хост А надсилатиме всі повідомлення за IP-адресою комп'ютера зловмисника.

Для захисту від такої атаки слід відключити (наприклад, за допомогою брандмауера) на хості А обробку повідомлень ICMP Redirect, а виявити IP-адресу комп'ютера зловмисника може команда tracert (у Unix це tracerout). Ці утиліти здатні знайти маршрут, що з'явився в локальній мережі додатковий, непередбачений при інсталяції, якщо адміністратор мережі проявить пильність.

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

Практичну реалізацію всіх криптографічних методів захисту інформації надають мережі VPN (Virtual Private Network – Віртуальні приватні мережі).

Перехоплення TCP-з'єднання

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

Для виконання атак перехоплення TCP-з'єднання створено кілька ефективних утиліт, проте всі вони реалізовані для платформи Unix, і на веб-сайтах Web ці утиліти представлені тільки у вигляді вихідних кодів. Таким чином, від атак методом перехоплення TCP-з'єднання користі не багато.

Протокол TCP (Transmission Control Protocol – Протокол управління передачею) одна із базових протоколів транспортного рівня OSI, що дозволяє встановлювати логічні з'єднання по віртуальному каналу зв'язку. Цим каналом передаються і приймаються пакети з реєстрацією їх послідовності, здійснюється управління потоком пакетів, організовується повторна передача спотворених пакетів, а кінці сеансу канал зв'язку розривається. Протокол TCP є єдиним базовим протоколом сімейства TCP/IP, що має просунуту систему ідентифікації повідомлень і з'єднання.

Огляд програмних пакетних сніферів

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

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

Практично всі пакетні сніфери дозволяють проводити аналіз декодованих пакетів (саме тому пакетні сніфери також називають пакетними аналізаторами, або протокольними аналізаторами). Сніффер розподіляє перехоплені пакети за рівнями та протоколами. Деякі аналізатори пакетів здатні розпізнавати протокол та відображати перехоплену інформацію. Цей тип інформації зазвичай відображається у другій області вікна сніфера. Наприклад, кожен сніффер здатний розпізнавати протокол TCP, а просунуті сніфери можуть визначити, яким додатком породжений цей трафік. Більшість аналізаторів протоколів розпізнають понад 500 різних протоколів та вміють описувати та декодувати їх за іменами. Чим більше інформації може декодувати і представити на екрані сніффер, тим менше доведеться декодувати вручну.

Одна з проблем, з якою можуть стикатися аналізатори пакетів, - неможливість коректної ідентифікації протоколу, який використовує порт, відмінний від стандартного порту. Наприклад, з метою підвищення безпеки деякі відомі програми можуть налаштовуватися застосування портів, відмінних від портів за замовчуванням. Так замість традиційного порту 80, зарезервованого для web-сервера, даний сервер можна примусово переналаштувати на порт 8088 або на будь-який інший. Деякі аналізатори пакетів у подібній ситуації не здатні коректно визначити протокол і відображають лише інформацію про протокол нижнього рівня (TCP або UDP).

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

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

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

Найкраще місце для перехоплення паролів – ядро ​​мережі, де ходить трафік всіх користувачів до закритих ресурсів (наприклад, пошта) або перед маршрутизатором для виходу в Інтернет, під час реєстрації на зовнішніх ресурсах. Налаштовуємо дзеркало, і ми готові відчути себе хакером.

Крок 1. Встановлюємо та запускаємо Wireshark для захоплення трафіку

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

Захоплення трафіку розпочалося.

Крок 2. Фільтрування захопленого POST трафіку

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

Вводимо у вікні спеціальний фільтр для відображення захоплених пакетів: http.request.method == “POST”

І бачимо замість тисячі пакетів, всього один із даними, які ми шукаємо.

Крок 3. Знаходимо логін та пароль користувача

Швидкий клік правої кнопки миші та вибираємо з меню пункт Follow TCP Steam


Після цього у новому вікні з'явиться текст, який у коді відновлює вміст сторінки. Знайдемо поля «password» та «user», які відповідають паролю та імені користувача. У деяких випадках обидва поля легко читаються і навіть не зашифровані, але якщо ми намагаємося захопити трафік при зверненні до дуже відомих ресурсів типу: Mail.ru, Facebook, Вконтакте і т.д., то пароль буде закодований:

HTTP/1.1 302 Found

Server: Apache/2.2.15 (CentOS)

X-Powered-By: PHP/5.3.3

P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRO STP IND DEM"

Set-Cookie: password= ; expires=Thu, 07-Nov-2024 23:52:21 GMT; path=/

Місцезнаходження: loggedin.php

Content-Length: 0

Connection: close

Content-Type: text/html; charset=UTF-8

Таким чином, у нашому випадку:

Ім'я користувача: networkguru

Пароль:

Крок 4. Визначення типу кодування для розшифрування пароля

Заходимо, наприклад, на сайт http://www.onlinehashcrack.com/hash-identification.php#res та вводимо наш пароль у вікно для ідентифікації. Мені видано список протоколів кодування в порядку пріоритету:

Крок 5. Розшифровка пароля користувача

На даному етапі можемо скористатися утилітою hashcat:

~# hashcat -m 0 -a 0 /root/wireshark-hash.lf /root/rockyou.txt

На виході ми отримали розшифрований пароль: simplepassword

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

  • Протокол POP та фільтр виглядає так: pop.request.command == "USER" || pop.request.command == "PASS"
  • Протокол IMAP та фільтр буде: imap.request contains "login"
  • Протокол SMTP і знадобиться введення наступного фільтра: smtp.req.command == "AUTH"

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

Крок 6. Що робити, якщо трафік зашифровано та використовується HTTPS?

Для відповіді це питання є кілька варіантів.

Варіант 1. Підключитися в розрив з'єднання між користувачем та сервером та захопити трафік у момент встановлення з'єднання (SSL Handshake). Під час встановлення з'єднання можна перехопити сеансовий ключ.

Варіант 2. Ви можете розшифрувати трафік HTTPS, використовуючи файл журналу сеансових ключів Firefox або Chrome. Для цього браузер повинен бути налаштований для запису цих ключів шифрування у файл журналу (приклад на базі FireFox), і ви повинні отримати цей файл журналу. По суті, необхідно викрасти файл із ключем сесії з жорсткого диска іншого користувача (що є незаконним). Ну а далі захопити трафік і застосувати отриманий ключ для розшифровки.

Уточнення.Ми говоримо про веб-браузер людини, у якої намагаються вкрасти пароль. Якщо ми маємо на увазі розшифровку нашого власного HTTPS трафіку і хочемо потренуватися, то ця стратегія буде працювати. Якщо ви намагаєтеся розшифрувати HTTPS трафік інших користувачів без доступу до їх комп'ютерів, це не спрацює – на те воно і шифрування, і особистий простір.

Після отримання ключів за варіантом 1 або 2 необхідно прописати їх у WireShark:

  1. Ідемо в меню Edit – Preferences – Protocols – SSL.
  2. Ставимо прапор "Reassemble SSL records spanning multiple TCP segments".
  3. "RSA keys list" і натискаємо Edit.
  4. Вводимо дані у всі поля та прописуємо шлях у файлі з ключем

WireShark може розшифровувати пакети, зашифровані з використанням алгоритму RSA. Якщо використовуються алгоритми DHE/ECDHE, FS, ECC, сниффер нам не помічник.

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

БОНУС

ВІДЕО: Wireshark Packet Sniffing Usernames, Passwords, and Web Pages


У цьому уроці описані технології мережевого хакінгу, що базуються на перехопленні мережевих пакетів. Хакери використовують такі технології для прослуховування мережевого трафіку з метою розкрадання цінної інформації, для організації перехоплення даних з метою атаки «людина посередині», для перехоплення TCP-з'єднань, що дозволяють, скажімо, замінювати дані, та виконання інших, не менш цікавих дій. На жаль, більшість цих атак на практиці реалізована тільки для мереж Unix, для яких хакери можуть використовувати як спеціальні утиліти, так і системні засоби Unix. Мережі Windows, мабуть, обійдені увагою хакерів, і ми змушені обмежитися при описі інструментів перехоплення даних програмами-сніферами, призначеними для тривіального прослуховування мережних пакетів. Тим не менш, не слід нехтувати хоча б теоретичним описом таких атак, особливо антихакерам, оскільки знання застосовуваних технологій хакінгу допоможе запобігти багато неприємностей.

Мережевий сніфінг

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

Для демонстрації технології сніфінгу ми застосуємо дуже популярну програму-сніфер SpyNet, яку можна знайти на багатьох веб-сайтах. Офіційний сайт програми SpyNetзнаходиться за адресою http://members.xoom.com/layrentiu2/, де можна завантажити демо-версію програми.

Програма SpyNetскладається з двох компонентів - CaptureNetі PipeNet. Програма CaptureNetдозволяє перехоплювати пакети, що передаються мережею Ethernet на мережному рівні, тобто. як кадрів Ethernet. Програма PipeNetдозволяє збирати кадри Ethernet у пакети рівня програм, відновлюючи, наприклад, повідомлення електронної пошти, повідомлення протоколу HTTP (обмін інформацією з Web-сервером) та виконувати інші функції.

На жаль, у демо-версії SpyNetможливості PipeNetобмежені демонстраційним прикладом складання пакету HTTP, тому ми не зможемо продемонструвати роботу SpyNetв повному обсязі. Однак ми продемонструємо можливості мережевого сніфінгу SpyNetна прикладі нашої експериментальної мережі, передавши текстовий файл із хоста Sword-2000на хост Alex-Зза допомогою звичайного провідника Windows. Одночасно на комп'ютері А1ех-1ми запустимо програму CaptureNet, яка перехопить передані пакети та дозволить прочитати вміст переданого файлу у кадрах Ethernet. Рис. 1 представлений текст секретного повідомлення у файлі secret.txt; ми намагатимемось знайти цей текст у перехоплених кадрах Ethernet.

Рис. 1. Текст секретного повідомлення у вікні Notepad

Щоб перехопити кадри Ethernet, виконайте такі дії.

На комп'ютері Alex-Ззапустіть програму CaptureNet. У вікні програми, що з'явиться, виберіть команду меню Capture *Start(Захоплення * Запуск) та запустіть процес перехоплення мережевих кадрів.

Засобами провідника Windows скопіюйте файл security.txt з комп'ютера Sword-2000на А1ех-3.

Після передачі файлу secret.txt виберіть команду меню Capture * Stop(Захоплення * Стоп) та зупиніть процес перехоплення.

Перехоплені кадри Ethernet відобразяться у правій частині робочого вікна програми CaptureNet(Мал. 2), кожен рядок у верхньому списку представляє кадр Ethernet, а під списком відображається вміст вибраного кадру.

Рис. 2. Кадр Ethernet містить текст секретного повідомлення

Переглянувши список перехоплених кадрів, ми легко знайдемо той із них, який містить переданий нами текст This is a very big secret (Це дуже великий секрет).

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

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

Методи перехоплення мережевого трафіку

Прослуховувач мережі за допомогою програм мережевих аналізаторів, подібних до наведеної вище CaptureNetє першим, найпростішим способом перехоплення даних. Крім SpyNetдля сніфінгу мереж використовується безліч інструментів, що спочатку розробляються для цілей аналізу мережної активності, діагностування мереж, відбору трафіку за вказаними критеріями та інших завдань мережного адміністрування. Як приклад такої програми можна назвати tcpdump (http://www.tcpdump.org), яка дозволяє записувати мережевий трафік у спеціальний журнал для подальшого аналізу.

Для захисту від прослуховування мережі використовуються спеціальні програми, наприклад, AntiSniff (http://www.securitysoftwaretech.com/antisniff), які можуть виявляти у мережі комп'ютери, зайняті прослуховуванням мережного трафіку. Програми-антисніфери для вирішення своїх завдань використовують особливу ознаку наявності в мережі пристроїв, що прослуховують - мережна плата комп'ютера-сніфера повинна знаходитися в спеціальному режимі прослуховування. Перебуваючи в режимі прослуховування, мережеві комп'ютери особливо реагують на ІР-дейтаграми, що посилаються на адресу тестованого хоста. Наприклад, хости, що прослуховують, як правило, обробляють весь трафік, що надходить, не обмежуючись тільки посланими на адресу хоста дейтаграмами. Є й інші ознаки, що вказують на підозрілу поведінку хоста, які здатна розпізнати програму AntiSniff.

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

Неправдиві запити ARP

Щоб перехопити і замкнути на себе процес мережевої взаємодії між двома хостами А та В зловмисник може підмінити IР-адреси взаємодіючих хостів своєю IP-адресою, надіславши хостам А та В фальсифіковані повідомлення ARP (Address Resolution Protocol - Протокол дозволу адрес). З протоколом ARP можна познайомитись у Додатку D, де описана процедура дозволу (перетворення) IP-адреси хоста на адресу машини (МАС-адреса), зашиту в мережеву плату хоста. Подивимося, як хакер може скористатися протоколом ARP до виконання перехоплення мережевої взаємодії між хостами А і У.

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

Зловмисник визначає МАС-адреси хостів А та В, наприклад, за допомогою команди nbtstatз пакета W2RK.

Зловмисник відправляє на виявлені МАС-адреси хостів А та В повідомлення, що є фальсифікованими ARP-відповідями на запити дозволу IP-адрес хостів у МАС-адреси комп'ютерів. Хосту А повідомляється, що ІР-адресу хоста відповідає МАС-адресу комп'ютера зловмисника; хосту В повідомляється, що IP-адреса хоста А також відповідає МАС-адреса комп'ютера зловмисника.

Хости А та В заносять отримані МАС-адреси у свої кеші ARP і далі використовують їх для надсилання повідомлень один одному. Оскільки IP-адреси А і В відповідає МАС-адреса комп'ютера зловмисника, хости А і В, нічого не підозрюючи, спілкуються через посередника, здатного робити з їхніми посланнями що завгодно.

Для захисту від таких атак мережеві адміністратори повинні підтримувати базу даних з таблицею відповідності МАС-адрес та IP-адрес своїх мережевих комп'ютерів. Далі, за допомогою спеціального програмного забезпечення, наприклад, утиліти arpwatch (ftp://ftp.ee.lbl.gov/arpwatch-2.lab.tar.gz) можна періодично обстежувати мережу та виявляти невідповідності.

У мережах UNIX такого роду атаку помилковими запитами ARP можна реалізувати за допомогою системних утиліт відстеження та управління мережним трафіком, наприклад, arpredirect. На жаль, у мережах Windows 2000/XP такі надійні утиліти, мабуть, не реалізовані. Наприклад, на сайті NTsecurity ( http://www.ntsecurity.nu) можна завантажити утиліту GrabitAII, представлену як засіб для перенаправлення трафіку між мережевими хостами Проте елементарна перевірка працездатності утиліти GrabitAIIпоказує, що до успіху у реалізації її функцій ще далеко.

Хибна маршрутизація

Щоб перехопити мережний трафік, зловмисник може підмінити реальну IP-адресу мережевого маршрутизатора своєю IP-адресою, виконавши це, наприклад, за допомогою фальсифікованих ICMP-повідомлень Redirect. Отримане повідомлення Redirect хост А повинен, згідно з документом RFC-1122, сприйняти як відповідь на дейтаграму, надіслану іншому хосту, наприклад, В. Свої дії на повідомлення Redirect хост А визначає, виходячи з вмісту отриманого повідомлення Redirect, і якщо Redirect задати перенаправлення дейтаграм з А в В за новим маршрутом, саме це хост А і зробить.

Для виконання помилкової маршрутизації зловмисник повинен знати деякі подробиці про організацію локальної мережі, в якій знаходиться хост А, зокрема, IP-адреса маршрутизатора, через яку відправляється трафік з хоста А в В. Знаючи це, зловмисник сформує IP-дейтаграму, в якій IP -адреса відправника визначена як IP-адреса маршрутизатора, а одержувачем вказано хост А. Також до дейтаграми включається повідомлення ICMP Redirect з полем адреси нового маршрутизатора, встановленим як IP-адресу комп'ютера зловмисника. Отримавши таке повідомлення, хост А надсилатиме всі повідомлення за IP-адресою комп'ютера зловмисника.

Для захисту від такої атаки слід відключити (наприклад, за допомогою брандмауера) на хості А обробку повідомлень ICMP Redirect, а виявити IP-адресу комп'ютера зловмисника може команда tracert(В Unix це команда tracerout). Ці утиліти здатні знайти маршрут, що з'явився в локальній мережі додатковий, непередбачений при інсталяції, якщо адміністратор мережі проявить пильність.

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

Практичну реалізацію всіх описаних у Розділі 4 криптографічних методів захисту обміну інформацією надають мережі VPN (Virtual Private Network – Віртуальні приватні мережі). Короткий огляд принципів і методів криптографічного захисту можна знайти в Додатку Е, а наведено докладний опис засобів криптографічного захисту, що надаються додатком PGP Desktop Security (http://www.pgp.com).

Перехоплення TCP-з'єднання

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

Для виконання атак перехоплення TCP-з'єднання створено кілька ефективних утиліт, проте всі вони реалізовані для платформи Unix, і на веб-сайтах Web ці утиліти представлені тільки у вигляді вихідних кодів. Таким чином, нам, як переконаним практикам у благородній справі хакінгу, від атак методом перехоплення TCP-з'єднання користі не багато. (Любителі розбиратися в чужому програмному коді можуть звернутися до сайту http://www.cri.cz/~kra/index.htmlде можна завантажити вихідний код відомої утиліти перехоплення TCP-з'єднання Huntвід Павла Крауза (Pavel Krauz).

Незважаючи на відсутність практичних інструментів, ми не можемо уникнути такої цікавої теми, як перехоплення TCP-з'єднань, і зупинимося на деяких аспектах таких атак. Деякі відомості про структуру TCP-пакета та порядок встановлення TCP-з'єднань наведено в Додатку D цієї книги, тут же основну увагу ми приділимо такому питанню - що саме дозволяє хакерам виконувати атаки перехоплення TCP-з'єднань? Розглянемо цю тему докладніше, спираючись, в основному, на обговорення та .

Протокол TCP (Transmission Control Protocol - Протокол управління передачею) одна із базових протоколів транспортного рівня OSI, що дозволяє встановлювати логічні з'єднання по віртуальному каналу зв'язку. Цим каналом передаються і приймаються пакети з реєстрацією їх послідовності, здійснюється управління потоком пакетів, організовується повторна передача спотворених пакетів, а кінці сеансу канал зв'язку розривається. Протокол TCP є єдиним базовим протоколом сімейства TCP/IP, що має просунуту систему ідентифікації повідомлень і з'єднання.

Для ідентифікації TCP-пакета в TCP-заголовку існують два 32-розрядні ідентифікатори, які також відіграють роль лічильника пакетів, званих порядковим номером і номером підтвердження. Також нас цікавитиме ще одне поле TCP-пакету, зване керуючими бітами. Це поле розміром 6 біт включає наступні біти, що управляють (у порядку зліва направо):

URG – прапор терміновості;

АСК – прапор підтвердження;

PSH – прапор переносу;

RST – прапор переустановки з'єднання;

SYN – прапор синхронізації;

FIN – прапор завершення з'єднання.

Розглянемо порядок створення TCP з'єднання.

1. Якщо хосту А необхідно створити TCP-з'єднання з хостом, то хост А посилає хосту В наступне повідомлення:

А -> В: SYN, ISSa

Це означає, що в повідомленні хостом А встановлено прапорець SYN (Synchronize sequence number - Номер послідовності синхронізації), а в полі порядкового номера встановлено початкове 32-бітове значення ISSa (Initial Sequence Number - Початковий номер послідовності).

2. У відповідь на отриманий від хоста А запит хост відповідає повідомленням, в якому встановлено біт SYN і встановлений біт АСК. У полі порядкового номера хост Встановлює своє початкове значення лічильника - ISSb; поле номера підтвердження буде містити значення ISSa, отримане в першому пакеті від хоста А, збільшене на одиницю. Таким чином, хост відповідає таким повідомленням:

-> A: SYN, АСК, ISSb, ACK(ISSa+1)

3. Нарешті, хост А посилає повідомлення хосту, в якому: встановлений біт АСК; поле порядкового номера містить значення ISSa + 1; поле номера підтвердження містить значення ISSb + 1. Після цього TCP-з'єднання між хостами Аі Ввважається встановленим:

А -> В: АСК, ISSa+1, ACK(ISSb+1)

4. Тепер хост Аможе надсилати пакети з даними на хост Впо створеному віртуальному TCP-каналу:

А -> В: АСК, ISSa+1, ACK(ISSb+1); DATA

Тут DATAпозначає дані.

З розглянутого вище алгоритму створення TCP-з'єднання видно, що єдиними ідентифікаторами TCP-абонентів та TCP-з'єднання є два 32-бітні параметри порядкового номера та номери підтвердження - ISSaі ISSb. Отже, якщо хакеру вдасться дізнатися про поточні значення полів ISSaі ISSb, то ніщо не завадить сформувати фальсифікований TCP-пакет. Це означає, що хакеру достатньо підібрати поточні значення параметрів ISSaі ISSbпакету TCP для даного TCP-з'єднання, надіслати пакет з будь-якого хоста Інтернету від імені клієнта даного TCP-підключення, і цей пакет буде сприйнятий як вірний!

Небезпека такої заміни TCP-пакетів важлива і тому, що високорівневі протоколи FTP та TELNET реалізовані на базі протоколу TCP, і ідентифікація клієнтів FTP та TELNET-пакетів повністю базується на протоколі TCP.

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

Таким чином, для здійснення описаної вище атаки необхідною та достатньою умовою є знання двох поточних 32-бітних параметрів ISSaі ISSb, що ідентифікують TCP-з'єднання. Розглянемо можливі способи отримання. У випадку, коли хакерський хост підключений до мережевого сегменту, що атакується, завдання отримання значень ISSaі ISSbє тривіальною та вирішується шляхом аналізу мережевого трафіку. Отже, треба чітко розуміти, що протокол TCP дозволяє в принципі захистити з'єднання тільки у разі неможливості перехоплення атакуючим повідомлень, що передаються по даному з'єднанню, тобто у разі, коли хакерський хост підключений до мережного сегменту, відмінному від сегмента абонента TCP-з'єднання.

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

Математичне передбачення початкового значення параметрів TCP-з'єднання екстраполяцією попередніх значень ISSaі ISSb.

Використання вразливостей для ідентифікації абонентів TCP-з'єднання на rsh-серверах Unix.

Перше завдання вирішується шляхом поглиблених досліджень реалізації протоколу TCP у різних операційних системах і нині має суто теоретичне значення. Друга проблема вирішується з використанням уразливостей системи Unix щодо ідентифікації довірених хостів. (Довіреним стосовно даного хосту Аназивається мережевий хост В, користувач якого може підключитися до хосту Абез аутентифікації за допомогою r-служби хоста А). Маніпулюючи параметрами TCP-пакетів, хакер може спробувати видати себе за довірений хост і перехопити TCP-з'єднання з хостом, що атакується.

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

Висновок

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

Антихакер повинен знати, що єдиним порятунком від перехоплення є їх шифрування, тобто. криптографічні засоби захисту. Посилаючи по мережі повідомлення, слід заздалегідь припускати, що кабельна система мережі абсолютно вразлива, і будь-який хакер, що підключився до мережі, зможе виловити з неї всі передані секретні повідомлення. Є дві технології вирішення цього завдання – створення мережі VPN та шифрування самих повідомлень. Всі ці завдання дуже просто вирішити за допомогою пакета програм PGP Desktop Security(її опис можна знайти, наприклад, в).

Оригінал: Network sniffing
Автор: Paul Cobbaut
Дата публікації: 12 березня 2015 р.
Переклад: A. Панін
Дата перекладу: 1 квітня 2015 р.

Розділ 23. Перехоплення мережевого трафіку

Адміністратор мережі повинен уміти працювати зі сніффером, таким як wireshark або tcpdump , для діагностування проблем мережі.

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

23.1. Додаток wireshark

23.1.1. Установка wireshark

У цьому прикладі наведено команду для встановлення програми wireshark у дистрибутивах, що використовують пакети програмного забезпечення з розширенням.deb (включаючи Debian, Mint, Xubuntu та інші дистрибутиви).

[email protected]:~# Читання списків пакетів Готово Побудова дерева залежностей Читання інформації про стан Готово... (висновок скорочений)

У дистрибутивах, що використовують пакети програмного забезпечення з розширенням.rpm, таких, як CentOS, RHEL і Fedora, для встановлення програми wireshark може використовуватися утиліта yum.

# yum install wireshark Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile ... (висновок скорочений)

23.1.2. Вибір мережного інтерфейсу

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

Імовірна ситуація, за якої доступних мережевих інтерфейсів просто не виявиться, адже в деяких дистрибутивах перехоплення мережевого трафіку може здійснюватися виключно користувачем root. У цьому випадку вам доведеться запустити програму wireshark від імені користувача root за допомогою команди sudo wireshark.

Або ж ви можете наслідувати загальні рекомендації та використовувати утиліту tcpdump або будь-який інший інструмент для перехоплення трафіку та запису даних у файл. Будь - які перехоплені дані можуть бути проаналізовані пізніше за допомогою програми wireshark .

23.1.3. Мінімізація трафіку

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

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

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

23.1.4. Перехоплення трафіку, що генерується утилітою ping

Я запустив сніффер і захопив усі пакети, передані по мережі в результаті виконання трьох команд ping (не має сенсу виконувати ці команди від імені користувача root):

[email protected]:~# ping -c2 ns1.paul.local PING ns1.paul.local (10.104.33.30) 56(84) bytes of data. 64 bytes від 10.104.33.30: icmp_req=1 ttl=64 time=0.010 ms 64 bytes від 10.104.33.30: icmp_req=2 ttl=64 time=0.023 ms --- ns1 pack , 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.010/0.016/0.023/0.007 ms [email protected]:~# ping-c3 linux-training.be PING linux-training.be (188.93.155.87) 56(84) bytes of data. 64 bytes від antares.ginsys.net (188.93.155.87): icmp_req=1 ttl=56 time=15.6 ms 64 bytes від antares.ginsys.net (188.93.155.87): icmp_req=2 t6=6 from antares.ginsys.net (188.93.155.87): icmp_req=3 ttl=56 time=14.7 ms --- linux-training.be ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 200 min/avg/max/mdev = 14.756/16.110/17.881/1.309 ms [email protected]:~# ping -c1 centos7.paul.local PING centos7.paul.local (10.104.33.31) 56(84) bytes of data. 64 bytes from 10.104.33.31: icmp_req=1 ttl=64 time=0.590 ms --- centos7.paul.local ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/av /mdev = 0.590/0.590/0.590/0.000 ms

Загалом із мережі було захоплено понад 200 пакетів. Все стане набагато очевиднішим у тому випадку, якщо введете рядок icmp у поле фільтра та натисніть кнопку "Застосувати" ("Apply").

23.1.5. Перехоплення трафіку, що генерується утилітою ping та клієнтом dns

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

Для захоплення даних, що відносяться до двох протоколів, що розглядаються, в поле фільтра повинен бути введений рядок "dns or icmp" . У разі введення рядка "dns and icmp" не буде виведено інформації про будь-які пакети, оскільки не існує пакетів, що належать до обох згаданих протоколів.

При розгляді наведеної вище ілюстрації можна помітити, що пакети 25 та 26 мають вихідні та цільові IP-адреси 10.104.33.30. Це пояснюється тим, що клієнт DNS працює на тому ж комп'ютері, що сервер DNS.

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

23.1.6. Певна IP-адреса

У цьому випадку здійснюється фільтрація пакетів, що належать до протоколу DNS і містять певну IP-адресу. Як фільтр використовується рядок "ip.addr==10.104.33.30 and dns" . Директива and повідомляє програму про те, що слід виводити інформацію про кожен пакет, що відповідає двом умовам.

Пакет 93 містить запит DNS , спрямований отримання запису типу A домену linux-training.be. Пакет 98 містить відповідь від сервера DNS. Як ви вважаєте, що відбувалося після відправлення пакета 93 і до прийому пакета 98? Спробуйте відповісти на це питання перед читанням наступного розділу (при роботі з різними системами завжди корисно намагатися передбачати події, що наступають, і перевіряти коректність своїх передбачень).

23.1.7. Фільтрування на основі кадрів

Коректним терміном, що використовується для позначення перехопленого пакета, є термін фрейм (через те, що ми перехоплюємо пакети на рівні 2 мережевої моделі OSI). Таким чином, для виведення інформації про пакети з певними номерами слід використовувати директиву frame.number у полі фільтра.

23.1.8. Дослідження вмісту пакетів

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

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

Зверніть увагу, що описана вище техніка добре працює при перехопленні трафіку, що передається через один мережевий інтерфейс. Якщо ви перехоплюєте трафік, наприклад, за допомогою команди tcpdump -i any , ви зіткнетеся з методом перехоплення пакетів "Linux cooked capture".

23.1.9. Інші приклади фільтрів

Ви можете комбінувати два описи протоколів за допомогою директиви логічної операції or ("АБО"), розташованої між ними. На ілюстрації нижче показано спосіб захоплення виключно пакетів, що належать до протоколів ARP та BOOTP (або DHCP).

А на наступній ілюстрації показаний спосіб перехоплення пакетів, що належать до протоколу DNS і містять певну IP-адресу.

23.2. Утиліта tcpdump

У разі роботи з інтерфейсом командного рядка системи перехоплення пакетів може здійснюватися за допомогою утиліти tcpdump. Нижче наведено деякі приклади її використання.

При використанні команди tcpdump host $ip буде виводитись інформація про весь трафік, що відноситься до певного вузла (в даному випадку з IP-адресою 192.168.1.38).

[email protected]:~# tcpdump host 192.168.1.38 tcpdump: verbose output suppressed, use -v or -vv для повного протоколу decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

Перехоплення трафіку, що стосується виключно протоколу ssh (протокол TCP, порт 22), може здійснюватися за допомогою команди tcpdump tcp port $порт. Довжина рядків виведення урізана до 76 символів для зручнішого читання.

[email protected]:~# tcpdump tcp port 22 tcpdump: verbose output suppressed, use -v or -vv для повного protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes 14:22:20.713 > rhel53.local.ssh: P 666050963:66605 14:22:20.719936 IP rhel53.local.ssh > deb503.local.37973: P 1:49(48) ack 48 14:22:2.2 deb503.local.37973: P 49:113(64) ack 14:22:20.721321 IP rhel53.local.ssh > deb503.local.37973: P 113:161(48) ack 14:22:2.3. 37973 > rhel53.local.ssh: . ack 161 win 200 14:22:20.722492 IP rhel53.local.ssh > deb503.local.37973: P 161:225(64) ack 14:22:20.760602 IP deb503.local 3 ack 225 win 200 14:22:23.108106 IP deb503.local.54424 > ubuntu910.local.ssh: P 467252637:46 14:22:23.116804 IP ubuntu91.4:45:4 ) ack 14:22:23.116844 IP deb503.local.54424 > ubuntu910.local.ssh: . ack 81 win 2 ^C 10 packets captured 10 packets received by filter 0 packets dropped by kernel

Та ж операція, але із записом захоплених даних у файл, може здійснюватися за допомогою команди tcpdump -w $ім'я_файлу.

[email protected]:~# tcpdump -w sshdump.tcpdump tcp port 22 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes ^C 17 packets captured 17 packets received by filter 0

За допомогою команди tcpdump -r $ім'я_файлу може бути виведений вміст файлу, створеного у попередньому прикладі.

[email protected]:~# tcpdump -r sshdump.tcpdump

Багато інших прикладів використання утиліти може бути знайдено на сторінці керівництва man tcpdump .

23.3. Практичне завдання: перехоплення мережевого трафіку

23.4. Коректна процедура виконання практичного завдання: перехоплення мережевого трафіку

1. Встановіть програму wireshark у вашу систему (що працює не у віртуальній машині).

У дистрибутивах Debain/Ubuntu: aptitude install wireshark

У дистрибутивах Red Hat/Mandriva/Fedora: yum install wireshark

2. Використовуйте утиліту ping генерації трафіку між вашим та будь-яким іншим комп'ютером.

Ping $ip_адреса

3. Почніть перехоплення мережевого трафіку.

(sudo) wireshark

Виберіть інтерфейс мережі (ймовірно, eth0)

4. За допомогою фільтра здійсніть виведення інформації виключно про пакети, які містять відповіді на запити від утиліти ping.

Введіть "icmp" (без лапок) у полі фільтра та натисніть кнопку "Застосувати" ("Apply").

5. Тепер передайте утиліть ping ім'я домену (таке, як www.linux-training.be) і спробуйте перехопити пакети із запитом та відповіддю DNS. Який сервер DNS був використаний? Чи був використаний протокол TCP або UDP для передачі запиту та відповіді?

Насамперед запустіть сніффер.

Введіть "dns" у полі фільтра та натисніть кнопку "Застосувати" ("Apply").

[email protected]:~# ping www.linux-training.be PING www.linux-training.be (88.151.243.8) 56(84) bytes of data. 64 bytes from fosfor.openminds.be (88.151.243.8): icmp_seq=1 ttl=58 time=14.9 ms 64 bytes from fosfor.openminds.be (88.151.243.8): icmp_seq=2 ttl=. --- www.linux-training.be ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 14.984/15.539/16.095/0.569 ms

Вікно програми wireshark має виглядати аналогічним чином.

На основі інформації з вікна wireshark можна зробити висновок про те, що запит DNS передавався за допомогою пакета UDP, після чого нескладно дати відповіді на поставлені запитання.

6. Знайдіть закритий веб-сайт, який має форму запиту пароля. Спробуйте увійти на нього, використовуючи ім'я користувача "paul" та пароль "hunter2" у процесі роботи сніффера. Тепер спробуйте знайти введені ім'я користувача та пароль у захоплених за допомогою сніфера даних.

Поділитися