Самостоятельная работа: Анализаторы пакетов tcpdump
и tshark
в контексте информационной безопасности GNU/Linux
Блок теории: Анализ сетевого трафика как основа кибербезопасности
1. Зачем нужны анализаторы пакетов?
Сетевой трафик — это "кровеносная система" любой ИТ-инфраструктуры. Анализ пакетов позволяет:
- Обнаруживать атаки (сканирование портов, DDoS, MITM).
- Диагностировать утечки данных (необычный исходящий трафик).
- Проверять корректность работы брандмауэров.
- Анализировать уязвимости приложений (незашифрованные пароли, устаревшие протоколы).
- Расследовать инциденты (forensic analysis).
⚠️ Важно! Захват трафика без разрешения является нарушением закона в большинстве стран. Используйте эти инструменты только в рамках этического хакинга или на своих системах.
2. tcpdump
— консольный анализатор трафика
Ключевые особенности
- Легковесный: Минимальные требования к ресурсам.
- Фильтрация на лету: Поддержка BPF (Berkeley Packet Filter).
- Сохранение в файл: Для последующего анализа.
- Интеграция с другими инструментами: Suricata, Zeek, Wireshark.
Основные опции
Опция | Назначение | Пример |
---|---|---|
-i | Интерфейс | tcpdump -i eth0 |
-w | Сохранить в файл | tcpdump -w capture.pcap |
-r | Прочитать из файла | tcpdump -r capture.pcap |
-nn | Не разрешать имена | tcpdump -nn port 53 |
-c | Лимит пакетов | tcpdump -c 10 host 192.168.1.1 |
-s | Размер пакета | tcpdump -s 0 (полный дамп) |
Примеры фильтров BPF
# Трафик к конкретному IP
tcpdump host 192.168.1.100
# DNS-запросы
tcpdump port 53
# HTTP-трафик (незашифрованный)
tcpdump port 80
# SYN-флуд (атака)
tcpdump 'tcp[13] & 2 != 0' and src 10.0.0.5
# Трафик к определенному порту
tcpdump dst port 22
Применение в ИБ
Обнаружение сканирования портов:
bashtcpdump 'tcp[13] == 2' | awk '{print $3}' | sort | uniq -c
Если один IP генерирует много SYN-пакетов — вероятен port scan.
Поиск утечек данных:
bashtcpdump -A -i eth0 'tcp port 80 and (http contains "password" or http contains "token")'
3. tshark
— мощный анализатор от Wireshark
Ключевые преимущества перед tcpdump
- Глубокий анализ протоколов: Расшифровка TLS, HTTP/2, DNSSEC.
- Дисплей-фильтры: Как в графическом Wireshark (
http.request.method == "POST"
). - Экспорт данных: В JSON, CSV, XML.
- Lua-скрипты: Автоматизация анализа.
Основные опции
Опция | Назначение | Пример |
---|---|---|
-i | Интерфейс | tshark -i wlan0 |
-Y | Дисплей-фильтр | tshark -Y "http" |
-T | Формат вывода | tshark -T json |
-e | Конкретное поле | tshark -e ip.src -e http.host |
-qz | Статистика | tshark -qz io,phs |
Примеры использования
# Анализ HTTP-запросов
tshark -i eth0 -Y "http" -T fields -e http.host -e http.request.uri
# Поиск попыток SQL-инъекций
tshark -Y 'http contains "SELECT * FROM"' -T json
# Статистика по протоколам
tshark -qz io,phs
# Анализ TLS-рукопожатий (устаревшие версии)
tshark -Y 'tls.handshake' -T fields -e tls.handshake.version
Применение в ИБ
Обнаружение уязвимых SSL/TLS-конфигураций:
bashtshark -Y 'tls.handshake.ciphersuite == 0x0035' # Поиск SSLv3 (уязвим к POODLE)
Анализ DNS-туннелирования:
bashtshark -Y 'dns.qry.name contains "malicious"' -T fields -e dns.qry.name
Поиск C2-трафика (Command & Control):
bashtshark -Y 'http and http.host contains "pastebin.com"' -T json
4. Сравнение tcpdump vs tshark
Критерий | tcpdump | tshark |
---|---|---|
Скорость | Выше (меньше оверхеда) | Ниже (глубокий анализ) |
Фильтрация | BPF (низкоуровневая) | Дисплей-фильтры (протокольные) |
Шифрованный трафик | Только заголовки | Расшифровка при наличии ключей |
Экспорт данных | Ограниченный | JSON, CSV, XML, Lua |
Обучение | Проще | Требует знания Wireshark |
Использование в скриптах | Идеален | Сложнее из-за форматов |
💡 Совет: Используйте
tcpdump
для быстрого захвата, аtshark
— для детального анализа.
Практическая часть: задания по анализу трафика
Задание 1: Базовый захват трафика
Цель: Научиться сохранять и просматривать трафик.
Установите инструменты:
bashsudo apt install tcpdump tshark
Захватите трафик на интерфейсе
eth0
(замените на ваш):bashsudo tcpdump -i eth0 -w initial_capture.pcap
- Выполните 2-3 действия:
ping 8.8.8.8
,curl http://example.com
. - Остановите захват (
Ctrl+C
).
- Выполните 2-3 действия:
Проанализируйте файл:
bashtcpdump -r initial_capture.pcap -nn tshark -r initial_capture.pcap -Y "http or dns"
Вопросы для отчёта:
- Какие протоколы вы обнаружили?
- Сколько DNS-запросов было сделано при открытии example.com?
Задание 2: Обнаружение аномалий
Цель: Найти признаки атаки в трафике.
Скачайте образец вредоносного трафика (выберите PCAP-файл).
Проанализируйте его:
bashtshark -r malware.pcap -Y "http" -T fields -e http.host -e http.request.uri
Найдите подозрительные домены:
bashtshark -r malware.pcap -Y "dns" | grep -i "malicious"
Вопросы для отчёта:
- Какие домены используются для C2?
- Какой HTTP-метод чаще всего используется вредоносом?
Задание 3: Анализ шифрованного трафика
Цель: Научиться работать с TLS-трафиком.
Сгенерируйте трафик с HTTPS:
bashcurl https://google.com > /dev/null
Захватите трафик:
bashsudo tcpdump -i eth0 -w tls_capture.pcap port 443
Проанализируйте через
tshark
:bashtshark -r tls_capture.pcap -Y "tls.handshake" -T fields -e tls.handshake.ciphersuite
Вопросы для отчёта:
- Какая версия TLS используется?
- Какой шифрнабор (ciphersuite) выбран? Найдите его описание в RFC 8446.
Задание 4: Автоматизация анализа (продвинутое)
Цель: Создать скрипт для обнаружения SYN-флуда.
Напишите скрипт
syn_flood_detector.sh
:bash#!/bin/bash THRESHOLD=100 # Порог SYN-пакетов за 10 секунд INTERFACE="eth0" echo "Monitoring SYN flood on $INTERFACE..." while true; do COUNT=$(sudo tcpdump -i $INTERFACE -c $THRESHOLD 'tcp[13] & 2 != 0' 2>/dev/null | wc -l) if [ $COUNT -ge $THRESHOLD ]; then echo "[ALERT] Possible SYN flood! $(date)" | tee -a syn_flood.log sudo tcpdump -i $INTERFACE -w "syn_flood_$(date +%s).pcap" -c 100 'tcp[13] & 2 != 0' fi sleep 10 done
Запустите скрипт в фоне:
bashchmod +x syn_flood_detector.sh ./syn_flood_detector.sh &
Имитируйте атаку (в другой сессии):
bashfor i in {1..150}; do nc -z -w 1 127.0.0.1 80; done
Вопросы для отчёта:
- Как работает механизм обнаружения?
- Как улучшить скрипт (например, добавить учёт источника атаки)?
Контрольные вопросы
Чем BPF-фильтры в
tcpdump
отличаются от дисплей-фильтров вtshark
?- BPF: фильтрация на уровне ядра (до обработки), работает с заголовками.
- Дисплей-фильтры: обрабатывают уже расшифрованные пакеты, работают с логикой протоколов.
Как обнаружить DNS-туннелирование с помощью
tshark
?- Искать аномально длинные DNS-запросы:
tshark -Y "dns.qry.name.len > 50"
.
- Искать аномально длинные DNS-запросы:
Почему
tcpdump
не может анализировать содержимое HTTPS-трафика?- TLS шифрует payload. Для анализа нужен ключ сессии или MITM (только в тестовых средах).
Как сохранить только HTTP-заголовки в файл?
bashtshark -i eth0 -Y "http" -T fields -e http.request.method -e http.host -e http.user_agent > http_headers.txt
Дополнительные материалы для углублённого изучения
Книги:
- Packet Analysis with Wireshark — Laura Chappell
- Network Security Assessment — Chris McNab (глава 3: Network Enumeration)
Онлайн-ресурсы:
- Wireshark Display Filter Reference
- tcpdump man page
- Malware Traffic Analysis — реальные PCAP-файлы
Инструменты:
zeek
(ранее Bro) — система сетевой безопасности.suricata
— IDS с поддержкой Lua-скриптов.ngrep
— grep для сетевого трафика.
Заключение
Анализ сетевого трафика — это ключевой навык специалиста по ИБ. Инструменты вроде tcpdump
и tshark
позволяют:
- Видеть невидимое: То, что скрыто от стандартных логов.
- Реагировать мгновенно: На этапе атаки, а не после её завершения.
- Говорить на языке данных: Заменять догадки — фактами.
💡 Практический совет:
"Если вы не анализируете трафик своей сети — вы не знаете, что в ней происходит.
Начните с простого: ежедневный анализ 1% трафика."
Критерии оценки самостоятельной работы:
- Выполнение всех заданий (60 баллов).
- Ответы на контрольные вопросы (20 баллов).
- Креативное решение продвинутого задания (10 баллов).
- Ссылки на дополнительные материалы в отчёте (10 баллов).
Срок сдачи: 7 дней.
Формат отчёта: PDF с командами, выводами и скриншотами.