TCPdump - посібник з аналізу мережевого трафіку
TCPdump - це потужна утиліта командного рядка для захоплення та аналізу мережевих пакетів. Вона дозволяє відслідковувати, налагоджувати та аналізувати мережевий трафік у реальному часі
📋 Зміст
- Встановлення
- Основні поняття
- Швидкий старт
- Параметри захоплення
- Опції виводу
- Фільтрація трафіку
- Практичні сценарії
- Логічні оператори
- Лайфхаки
Встановлення
За операційною системою
🔵 Ubuntu
🟠 Centos/Alma
Перевірка встановлення
Основні поняття
Що таке пакет?
Пакет - це одиниця даних, яка передається через мережу. Він складається з: - Заголовку - містить інформацію про джерело, призначення, протокол - Корисного навантаження (payload) - власне дані - Трейлеру (checksum) - для перевірки цілісності
Навіщо потрібен TCPDump?
- 🔍 Налагодження мережі - виявлення проблем з підключенням
- 📊 Моніторинг трафіку - аналіз типів пакетів
- 🛡️ Безпека - виявлення підозрілої активності
- 📈 Оптимізація - аналіз продуктивності мережі
Протоколи, які підтримує TCPDump
- IP: IPv4, IPv6
- Транспортні: TCP, UDP
- ICMP: ping, traceroute
- Інші: DHCP, DNS, HTTP, FTP та багато інших
Швидкий старт
Найпростіша команда
Результат:
Зупинення захоплення
Натисніть Ctrl+C щоб завершити
Параметри захоплення
1. Вибір інтерфейсу
Захопити з усіх інтерфейсів
💡 Корисно, коли не знаєте на якому інтерфейсі потрібна активність
Захопити з конкретного інтерфейсу
Показати доступні інтерфейси
Результат:
2. Контроль кількості пакетів
Захопити тільки перші 10 пакетів
Команда завершиться автоматично після 10 пакетів
Захопити 100 пакетів
3. Збереження в файл
Зберегти захоплення
📝 Формат PCAP - стандартний для аналізу пакетів
Зберегти перші 50 пакетів
Читання збереженого файлу
Опції виводу
Форматування виводу
1. ASCII формат
Показує дані пакета у вигляді текста (якщо можливо)Приклад:
2. HEX формат
Показує дані у шістнадцятковому форматіПриклад:
3. HEX + ASCII
Комбінація обох форматів4. HEX з заголовками
Включає також Link-layer заголовкиКонтроль деталізації
Мінімальна інформація
Показує тільки найважливішеБазова деталізація
Розширена інформація
Дуже розширена інформація
Максимальна деталізація
Інші опції
| Опція | Опис | Приклад |
|---|---|---|
-n |
Не резолвити хостнейми | tcpdump -n -i eth0 |
-nn |
Не вказувати назви сервісів замість портів | tcpdump -nn -i eth0 |
-t |
Не показувати час пакета | tcpdump -t -i eth0 |
-e |
Показати заголовки Ethernet | tcpdump -e -i eth0 |
-S |
Показати порядкові номери в точному форматі | tcpdump -S -i eth0 |
-p |
Не використовувати promiscuous режим | tcpdump -p -i eth0 |
Фільтрація трафіку
🎯 Фільтрація дозволяє зосередитися на потрібному трафіку та ігнорувати інше
Фільтрація за протоколами
Захопити тільки TCP пакети
Захопити тільки UDP пакети
Захопити тільки ICMP пакети (ping)
Захопити тільки IPv6
Фільтрація за портами
Трафік на конкретному порту
Захопиться весь трафік на порту 80 (HTTP), незалежно від напрямку
Трафік на кількох портах
Трафік в діапазоні портів
Вхідний трафік на порт
Только пакети до SSH сервера
Вихідний трафік з порту
Тільки пакети з MySQL сервера
Фільтрація за IP адресами
Весь трафік з конкретного хоста
Трафік від конкретного хоста
Трафік до конкретного хоста
Трафік між двома хостами
Фільтрація за підмережами
Весь трафік з підмережі
Трафік з конкретної підмережі
Трафік до конкретної підмережі
Фільтрація за типами трафіку
Broadcast пакети (для Ethernet)
Broadcast пакети (для IP)
Multicast пакети
Фільтрація за розміром пакета
Пакети менші за 32 байти
Пакети більші за 1000 байтів
Пакети розміром рівно 64 байти
Практичні сценарії
Сценарій 1: Налагодження веб-сервера
Завдання: Знайти всі HTTP запити до вашого вебсервера на порту 8080
Що буде видно:
- Всі TCP пакети на порту 8080
- -n — без розв'язування DNS (швидше)
- -A — у текстовому форматі щоб бачити HTTP запити
Приклад виводу:
Сценарій 2: Моніторинг SSH підключень
Завдання: Перевірити хто намагається підключитися по SSH
Що буде видно:
- Весь трафік до SSH сервера (порт 22)
- -nn — показує реальні IP адреси і портів без розв'язування
Як читати:
- 203.0.113.50 — клієнт підключається - 192.168.1.1.22 — ваш SSH серверСценарій 3: Аналіз DNS запитів
Завдання: Побачити які домени запитуються у вашій мережі
Що буде видно: - Всі DNS запити (на порту 53) - Назви доменів що запитуються
Приклад:
Сценарій 4: Захоплення трафіку конкретного IP
Завдання: Аналізувати весь трафік од конкретного комп'ютера
Що буде видно:
- Все що робить цей комп'ютер в мережі
- Результат збережеться в файл traffic.pcap
Потім аналізувати:
Сценарій 5: Перевірка подвійного шифрування
Завдання: Переконатися що HTTPS тільки шифрований трафік
Що чекати: - Трафік має бути нечитаємим (бінарний/криптографічний) - Не мають бути видимі дані HTTP
Якщо видно HTTP текст - це проблема! 🚨
Сценарій 6: Знаходження повільної мережі
Завдання: Знайти великі передачі даних
Що буде видно: - Тільки пакети більші за 1400 байтів - Може вказати на видалення файлів або хідання
Логічні оператори
💡 Комбінюйте умови для більш точної фільтрації
Оператор AND
Синтаксис: and або &&
# UDP пакети на DNS порту з конкретної підмережі
tcpdump -i eth0 src net 192.168.1.0/24 and udp port 53
Оператор OR
Синтаксис: or або ||
Оператор NOT (EXCEPT)
Синтаксис: not або !
Комбіновані вирази
# TCP на портах 80 або 443, але не від конкретного IP
tcpdump -i eth0 (tcp port 80 or tcp port 443) and not src 192.168.1.200
# HTTPS трафік до конкретної підмережі, крім multicast
tcpdump -i eth0 tcp port 443 and dst net 10.0.0.0/8 and not multicast
Lifehacks
💾 Запис та аналіз в реальному часі
# Запис в файл і одночасно показ на екрані
tcpdump -i eth0 -U -w - | tee capture.pcap | tcpdump -r - -v
🔄 Фільтрування після захоплення
Крок 1: Запишіть весь трафік
Крок 2: Потім фільтруйте при читанні
🎯 Екстра деталізація для налагодження
Що означає:
- -vvv — максимум деталізації
- -A — ASCII формат
- -e — Ethernet заголовки
- -s 0 — захопити весь пакет (не обрізувати)
📊 Статистика трафіку
# Збережіть пакети в файл
tcpdump -i eth0 -c 10000 -w stats.pcap
# Потім аналізуйте (потрібна утиліта tshark)
tshark -r stats.pcap -q -z io,phs
🛡️ Виявлення сканування портів
🔍 Перевірка MTU проблем
⏱️ Моніторинг в реальному часі з повільним оновленням
🎓 Навчання та демонстрація
# Простий HTTP запит для роз'яснення
tcpdump -i eth0 -A tcp port 80
# Потім в іншому терміналі:
curl http://example.com
Усунення неполадок
❌ Помилка: "Permission denied"
Причина: Недостатньо прав доступу
Рішення:
# Запустіть з sudo
sudo tcpdump -i eth0
# Або додайте користувача до групи pcap
sudo usermod -a -G pcap $USER
# Потім перезавантажте сеанс
❌ Помилка: "No such device"
Причина: Неправильна назва інтерфейсу
Рішення:
❌ Помилка: "Device not up"
Причина: Мережевий інтерфейс вимкнений
Рішення:
❌ Нема даних/пакетів
Можливі причини:
1. Невірна фільтрація — в даний час немає трафіку на цьому фільтрі
2. Вибрано неправильний інтерфейс — перевірте tcpdump -D
3. Firewall блокує — перевірте правила
Рішення:
# Спробуйте захопити весь трафік
tcpdump -i any -c 100
# Або збільшіть тайм-аут
sudo timeout 30 tcpdump -i eth0
Шпаргалка для швидкого використання
# 1. Базове захоплення
sudo tcpdump -i eth0
# 2. Зберегти в файл
sudo tcpdump -i eth0 -w capture.pcap
# 3. Прочитати файл
tcpdump -r capture.pcap
# 4. HTTP трафік
sudo tcpdump -i eth0 -A tcp port 80
# 5. DNS запити
sudo tcpdump -i eth0 -n udp port 53
# 6. SSH підключення
sudo tcpdump -i eth0 -n dst port 22
# 7. Конкретний IP
sudo tcpdump -i eth0 host 192.168.1.100
# 8. Конкретна підмережа
sudo tcpdump -i eth0 net 192.168.1.0/24
# 9. Без ICMP
sudo tcpdump -i eth0 not icmp
# 10. Максимальна деталізація
sudo tcpdump -i eth0 -vvv -A -e -s 0