Skip to content

Самостоятельная работа: Анализаторы пакетов 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

bash
# Трафик к конкретному 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

Применение в ИБ

  • Обнаружение сканирования портов:

    bash
    tcpdump 'tcp[13] == 2' | awk '{print $3}' | sort | uniq -c

    Если один IP генерирует много SYN-пакетов — вероятен port scan.

  • Поиск утечек данных:

    bash
    tcpdump -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

Примеры использования

bash
# Анализ 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-конфигураций:

    bash
    tshark -Y 'tls.handshake.ciphersuite == 0x0035'  # Поиск SSLv3 (уязвим к POODLE)
  • Анализ DNS-туннелирования:

    bash
    tshark -Y 'dns.qry.name contains "malicious"' -T fields -e dns.qry.name
  • Поиск C2-трафика (Command & Control):

    bash
    tshark -Y 'http and http.host contains "pastebin.com"' -T json

4. Сравнение tcpdump vs tshark

Критерийtcpdumptshark
СкоростьВыше (меньше оверхеда)Ниже (глубокий анализ)
ФильтрацияBPF (низкоуровневая)Дисплей-фильтры (протокольные)
Шифрованный трафикТолько заголовкиРасшифровка при наличии ключей
Экспорт данныхОграниченныйJSON, CSV, XML, Lua
ОбучениеПрощеТребует знания Wireshark
Использование в скриптахИдеаленСложнее из-за форматов

💡 Совет: Используйте tcpdump для быстрого захвата, а tshark — для детального анализа.


Практическая часть: задания по анализу трафика

Задание 1: Базовый захват трафика

Цель: Научиться сохранять и просматривать трафик.

  1. Установите инструменты:

    bash
    sudo apt install tcpdump tshark
  2. Захватите трафик на интерфейсе eth0 (замените на ваш):

    bash
    sudo tcpdump -i eth0 -w initial_capture.pcap
    • Выполните 2-3 действия: ping 8.8.8.8, curl http://example.com.
    • Остановите захват (Ctrl+C).
  3. Проанализируйте файл:

    bash
    tcpdump -r initial_capture.pcap -nn
    tshark -r initial_capture.pcap -Y "http or dns"

Вопросы для отчёта:

  • Какие протоколы вы обнаружили?
  • Сколько DNS-запросов было сделано при открытии example.com?

Задание 2: Обнаружение аномалий

Цель: Найти признаки атаки в трафике.

  1. Скачайте образец вредоносного трафика (выберите PCAP-файл).

  2. Проанализируйте его:

    bash
    tshark -r malware.pcap -Y "http" -T fields -e http.host -e http.request.uri
  3. Найдите подозрительные домены:

    bash
    tshark -r malware.pcap -Y "dns" | grep -i "malicious"

Вопросы для отчёта:

  • Какие домены используются для C2?
  • Какой HTTP-метод чаще всего используется вредоносом?

Задание 3: Анализ шифрованного трафика

Цель: Научиться работать с TLS-трафиком.

  1. Сгенерируйте трафик с HTTPS:

    bash
    curl https://google.com > /dev/null
  2. Захватите трафик:

    bash
    sudo tcpdump -i eth0 -w tls_capture.pcap port 443
  3. Проанализируйте через tshark:

    bash
    tshark -r tls_capture.pcap -Y "tls.handshake" -T fields -e tls.handshake.ciphersuite

Вопросы для отчёта:

  • Какая версия TLS используется?
  • Какой шифрнабор (ciphersuite) выбран? Найдите его описание в RFC 8446.

Задание 4: Автоматизация анализа (продвинутое)

Цель: Создать скрипт для обнаружения SYN-флуда.

  1. Напишите скрипт 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
  2. Запустите скрипт в фоне:

    bash
    chmod +x syn_flood_detector.sh
    ./syn_flood_detector.sh &
  3. Имитируйте атаку (в другой сессии):

    bash
    for i in {1..150}; do nc -z -w 1 127.0.0.1 80; done

Вопросы для отчёта:

  • Как работает механизм обнаружения?
  • Как улучшить скрипт (например, добавить учёт источника атаки)?

Контрольные вопросы

  1. Чем BPF-фильтры в tcpdump отличаются от дисплей-фильтров в tshark?

    • BPF: фильтрация на уровне ядра (до обработки), работает с заголовками.
    • Дисплей-фильтры: обрабатывают уже расшифрованные пакеты, работают с логикой протоколов.
  2. Как обнаружить DNS-туннелирование с помощью tshark?

    • Искать аномально длинные DNS-запросы: tshark -Y "dns.qry.name.len > 50".
  3. Почему tcpdump не может анализировать содержимое HTTPS-трафика?

    • TLS шифрует payload. Для анализа нужен ключ сессии или MITM (только в тестовых средах).
  4. Как сохранить только HTTP-заголовки в файл?

    bash
    tshark -i eth0 -Y "http" -T fields -e http.request.method -e http.host -e http.user_agent > http_headers.txt

Дополнительные материалы для углублённого изучения

  1. Книги:

    • Packet Analysis with Wireshark — Laura Chappell
    • Network Security Assessment — Chris McNab (глава 3: Network Enumeration)
  2. Онлайн-ресурсы:

  3. Инструменты:

    • zeek (ранее Bro) — система сетевой безопасности.
    • suricata — IDS с поддержкой Lua-скриптов.
    • ngrep — grep для сетевого трафика.

Заключение

Анализ сетевого трафика — это ключевой навык специалиста по ИБ. Инструменты вроде tcpdump и tshark позволяют:

  • Видеть невидимое: То, что скрыто от стандартных логов.
  • Реагировать мгновенно: На этапе атаки, а не после её завершения.
  • Говорить на языке данных: Заменять догадки — фактами.

💡 Практический совет:

"Если вы не анализируете трафик своей сети — вы не знаете, что в ней происходит.
Начните с простого: ежедневный анализ 1% трафика."


Критерии оценки самостоятельной работы:

  • Выполнение всех заданий (60 баллов).
  • Ответы на контрольные вопросы (20 баллов).
  • Креативное решение продвинутого задания (10 баллов).
  • Ссылки на дополнительные материалы в отчёте (10 баллов).

Срок сдачи: 7 дней.
Формат отчёта: PDF с командами, выводами и скриншотами.

Контакты: bystrovno@basealt.ru