Изображение

Введение


В эпоху глобальной цифровизации сетевой трафик стал одним из самых важных источников цифровых улик в расследованиях. Каждое действие в сети, от посещения веб-сайта до совершения финансовой транзакции, оставляет следы в виде сетевых пакетов. Эти пакеты содержат критически важную информацию для экспертов цифровой криминалистики: IP адреса, содержимое запросов, credentials, токены доступа и многое другое.

TCPdump представляет собой мощный инструмент командной строки для захвата и анализа сетевого трафика. Разработанный более 30 лет назад, TCPdump остается одним из фундаментальных инструментов в арсенале каждого сетевого криминалиста. Его кроссплатформенность, высокая производительность и гибкость делают его незаменимым в расследованиях кибератак, расследовании инцидентов безопасности и анализе сетевой активности.

Однако эффективное использование TCPdump требует глубокого понимания сетевых протоколов, структуры пакетов и техник фильтрации. Неправильно настроенный захват может привести к потере критически важных данных или переполнению дискового пространства в течение нескольких минут. Данное руководство предоставит экспертам полный набор знаний для эффективного использования TCPdump в криминалистическом анализе.

Современные атаки часто используют шифрование, обфускацию и сложные техники для сокрытия своей активности. TCPdump в сочетании с другими инструментами может помочь экспертам обнаружить аномалии, выявить подозрительную активность и восстановить детали атаки. Понимание как работают различные протоколы и как анализировать пакеты является ключевым навыком для успешного расследования сетевых инцидентов.

В этом руководстве мы рассмотрим все аспекты работы с TCPdump: от установки и базовых команд до продвинутых техник анализа, декрипции трафика и работы с большими дампами. Вы научитесь эффективно использовать этот инструмент для решения реальных задач в расследованиях киберпреступлений.

Содержание


1. Что такое TCPdump и его роль в сетевой криминалистике
2. Установка и настройка TCPdump
3. Базовый синтаксис и основные команды
4. Фильтрация пакетов
5. Захват различных протоколов
6. Анализ сетевого трафика
7. Работа с логами и дампами
8. Расширенный анализ и статистика
9. Интеграция с другими инструментами
10. Расследование сетевых атак
11. Практические кейсы расследований
12. Этические и правовые аспекты
13. FAQ
14. Заключение

---

1. Что такое TCPdump и его роль в сетевой криминалистике


История и обзор


TCPdump - это утилита для захвата сетевых пакетов, созданная в конце 1980-х годов группой исследователей из Lawrence Berkeley Laboratory. С тех пор он стал де-факто стандартом для анализа сетевого трафика в Unix-подобных системах.

**Основные особенности:**
- Низкоуровневый захват пакетов с сетевого интерфейса
- Гибкая система фильтрации (BPF - Berkeley Packet Filter)
- Кроссплатформенная работа (Linux, BSD, macOS, Windows через WinPcap)
- Поддержка множества протоколов
- Работа в реальном времени и отложенный анализ

Роль в цифровой криминалистике


TCPdump находит широкое применение в различных аспектах цифровой криминалистики:

**1. Захват доказательств в реальном времени:**
- Мониторинг подозрительной сетевой активности
- Захват трафика во время инцидента
- Документирование сетевых соединений

**2. Расследование атак:**
- Анализ DDoS атак
- Исследование эксплойтов
- Выявление методов проникновения

**3. Восстановление цепочки событий:**
- Определение времени атаки
- Установление источника
- Прослеживание действий злоумышленника

**4. Анализ вредоносного ПО:**
- Command & Control (C2) трафик
- Data exfiltration
- Beaconing patterns

Преимущества для экспертов


**1. Минимальное воздействие на систему:**
- Не требует установки дополнительных пакетов в большинстве систем
- Низкое потребление ресурсов
- Не влияет на производительность сети

**2. Гибкая фильтрация:**
- Сложные BPF фильтры
- Фильтрация по любому полю пакета
- Сохранение только релевантных данных

**3. Интеграция с другими инструментами:**
- Совместимость с Wireshark
- Работа с Bro/Zeek
- Интеграция в SIEM системы

**4. Документация и доказательства:**
- Стандартный формат PCAP
- Admissible в суде
- Воспроизводимость анализа

Принципы работы


TCPdump использует библиотеку libpcap (Linux/BSD) или WinPcap/Npcap (Windows) для низкоуровневого захвата пакетов.

**Архитектура захвата:**

text
Сетевая карта (NIC)
↓ (promiscuous mode)
libpcap/Npcap
↓ (packet filtering)
TCPdump
↓ (output format)
PCAP файл или консоль


**Promiscuous mode:**
Позволяет захватывать весь трафик на сегменте сети, а не только предназначенный для вашего устройства.

---

2. Установка и настройка TCPdump


Установка на Linux


**Ubuntu/Debian:**

bash
<h2 id="obnovlenie-spiska-paketov">Обновление списка пакетов</h2>
sudo apt-get update

<h2 id="ustanovka-tcpdump">Установка TCPdump</h2>
sudo apt-get install tcpdump

<h2 id="proverka-ustanovki">Проверка установки</h2>
tcpdump --version


**RHEL/CentOS/Fedora:**

bash
<h2 id="fedora">Fedora</h2>
sudo dnf install tcpdump

<h2 id="centos-rhel">CentOS/RHEL</h2>
sudo yum install tcpdump


**Arch Linux:**

bash
sudo pacman -S tcpdump


Установка на macOS


bash
<h2 id="ispolzuya-homebrew">Используя Homebrew</h2>
brew install tcpdump

<h2 id="ili-cherez-macports">Или через MacPorts</h2>
sudo port install tcpdump

<h2 id="proverka">Проверка</h2>
tcpdump --version


Установка на BSD


**FreeBSD:**

bash
<h2 id="ustanovka-iz-ports">Установка из ports</h2>
cd /usr/ports/net/tcpdump
make install clean

<h2 id="ili-cherez-pkg">Или через pkg</h2>
sudo pkg install tcpdump


**OpenBSD:**

bash
<h2 id="tcpdump-vklyuchen-v-bazovuyu-sistemu">TCPdump включен в базовую систему</h2>
<h2 id="no-dlya-ustanovki-tcpdump-mozhno-ispolzovat">Но для установки tcpdump можно использовать:</h2>
sudo pkg_add tcpdump


Windows: Альтернативы


**Установка TCPdump через WSL:**

bash
<h2 id="ustanovite-wsl2">Установите WSL2</h2>
wsl --install

<h2 id="v-ubuntu-vnutri-wsl">В Ubuntu внутри WSL:</h2>
sudo apt-get update
sudo apt-get install tcpdump


**WinDump (Windows порт):**

bash
<h2 id="skachayte-windump-i-npcap-s">Скачайте WinDump и Npcap с:</h2>
<h2 id="https-nmap-org-npcap">https://nmap.org/npcap/</h2>
<h2 id="https-www-winpcap-org">https://www.winpcap.org/</h2>

<h2 id="posle-ustanovki">После установки:</h2>
windump.exe -D # Показать интерфейсы
windump.exe -i 1


Настройка прав доступа


**Linux: Требования sudo/root**

TCPdump требует повышенных привилегий для захвата пакетов.

**Вариант 1: Запуск с sudo**
bash
sudo tcpdump -i eth0


**Вариант 2: Capabilities (без sudo)**
bash
<h2 id="ustanovit-capabilities">Установить capabilities</h2>
sudo setcap cap_net_raw,cap_net_admin+eip /usr/sbin/tcpdump

<h2 id="teper-mozhno-bez-sudo">Теперь можно без sudo</h2>
tcpdump -i eth0


**Вариант 3: Добавить пользователя в группу**
bash
<h2 id="sozdat-gruppu-dlya-zahvata-paketov">Создать группу для захвата пакетов</h2>
sudo groupadd packet-capture
sudo usermod -aG packet-capture $USER

<h2 id="nastroit-capabilities-dlya-gruppy">Настроить capabilities для группы</h2>
echo "cap_net_raw,cap_net_admin=ie" | sudo tee /etc/security/capability.conf


Проверка доступных интерфейсов


**Список интерфейсов:**
bash
tcpdump -D

<h2 id="alternativnye-metody">Альтернативные методы:</h2>
ip link show
ifconfig -a
ls /sys/class/net


**Результат:**
1
.eth0
2.eth1
3.any [Up, Running]
4.lo [Up, Running, Loopback]
5.nflog (Linux netfilter log (NFLOG) interface)
6.nfqueue (Linux netfilter queue (NFQUEUE) interface)
7.usbmon1 (USB bus number 1)


Настройка Promiscuous Mode


**Включение при каждом запуске:**
bash
<h2 id="optsiya-p-otklyuchaet-promiscuous-mode">Опция -p отключает promiscuous mode</h2>
tcpdump -p -i eth0

<h2 id="po-umolchaniyu-promiscuous-mode-vklyuchen">По умолчанию promiscuous mode включен</h2>
tcpdump -i eth0


---

3. Базовый синтаксис и основные команды


Базовый синтаксис


**Структура команды:**
bash
tcpdump [опции] [выражение фильтрации]


**Основные опции:**
- `-i` - интерфейс
- `-c` - количество пакетов
- `-w` - запись в файл
- `-r` - чтение из файла
- `-n` - не разрешать имена
- `-v` - verbose режим
- `-vv` - очень подробный
- `-vvv` - максимально подробный

Основные команды


**1. Захват на конкретном интерфейсе:**
bash
<h2 id="zahvat-na-eth0">Захват на eth0</h2>
sudo tcpdump -i eth0

<h2 id="zahvat-na-vseh-interfeysah">Захват на всех интерфейсах</h2>
sudo tcpdump -i any


**2. Ограничение количества пакетов:**
bash
<h2 id="zahvatit-10-paketov-i-ostanovitsya">Захватить 10 пакетов и остановиться</h2>
sudo tcpdump -c 10 -i eth0


**3. Запись в файл:**
bash
<h2 id="zapis-v-pcap-fayl">Запись в PCAP файл</h2>
sudo tcpdump -i eth0 -w capture.pcap

<h2 id="kombinirovanie-s-limitom">Комбинирование с лимитом</h2>
sudo tcpdump -i eth0 -w capture.pcap -c 100


**4. Чтение из файла:**
bash
<h2 id="chtenie-i-analiz-dampa">Чтение и анализ дампа</h2>
sudo tcpdump -r capture.pcap

<h2 id="s-podrobnym-vyvodom">С подробным выводом</h2>
sudo tcpdump -r capture.pcap -vvv


**5. Без разрешения имен:**
bash
<h2 id="pokazyvat-ip-adresa-vmesto-imen">Показывать IP адреса вместо имен</h2>
sudo tcpdump -n -i eth0


**6. Подробный вывод:**
bash
<h2 id="v-basic-verbose">-v: basic verbose</h2>
sudo tcpdump -v -i eth0

<h2 id="vv-detailed-verbose">-vv: detailed verbose</h2>
sudo tcpdump -vv -i eth0

<h2 id="vvv-maximum-verbose">-vvv: maximum verbose</h2>
sudo tcpdump -vvv -i eth0


Вывод информации о пакетах


**Структура вывода:**
timestamp
[protocol] src > dst: flags, data-seqno, ack, win, options


**Примеры вывода:**
text
<h2 id="tcp-paket">TCP пакет</h2>
10:23:45.123456 IP 192.168.1.100.54321 > 8.8.8.8.53: Flags [S], seq 0, win 65535, options [mss 1460], length 0

<h2 id="udp-paket">UDP пакет</h2>
10:23:45.234567 IP 192.168.1.100.12345 > 8.8.8.8.53: 1234+ A? www.example.com. (36)

<h2 id="icmp-paket">ICMP пакет</h2>
10:23:45.345678 IP 192.168.1.100 > 8.8.8.8: ICMP echo request, id 12345, seq 1, length 64


Типы вывода


**1. ASCII вывод:**
bash
<h2 id="pokazyvat-soderzhimoe-paketov-v-ascii">Показывать содержимое пакетов в ASCII</h2>
sudo tcpdump -A -i eth0


**2. Hex и ASCII:**
bash
<h2 id="pokazyvat-v-hex-i-ascii">Показывать в hex и ASCII</h2>
sudo tcpdump -X -i eth0


**3. Hex dump в одну строку:**
bash
<h2 id="kompaktnyy-hex-dump">Компактный hex dump</h2>
sudo tcpdump -xx -i eth0


Работа с ограничениями


**По времени:**
bash
<h2 id="zahvat-na-30-sekund">Захват на 30 секунд</h2>
timeout 30 sudo tcpdump -i eth0

<h2 id="ispolzuya-g-rotating-fayly">Используя -G (rotating файлы)</h2>
sudo tcpdump -i eth0 -G 3600 -w capture_%Y%m%d_%H%M%S.pcap


**По размеру файла:**
bash
<h2 id="ogranichenie-razmera-fayla-naprimer-10mb">Ограничение размера файла (например, 10MB)</h2>
sudo tcpdump -i eth0 -C 10 -w capture.pcap

<h2 id="s-rotatsiey-faylov">С ротацией файлов</h2>
sudo tcpdump -i eth0 -C 10 -w capture.pcap -W 10


---

4. Фильтрация пакетов


Берклиевский пакетный фильтр (BPF)


BPF (Berkeley Packet Filter) - это мощный язык фильтрации пакетов.

**Базовая структура:**
protocol
direction host/port expression


Фильтрация по хосту


**Захват трафика с конкретного IP:**
bash
<h2 id="trafik-ot-192-168-1-100">Трафик от 192.168.1.100</h2>
sudo tcpdump -i eth0 src host 192.168.1.100

<h2 id="trafik-k-192-168-1-100">Трафик к 192.168.1.100</h2>
sudo tcpdump -i eth0 dst host 192.168.1.100

<h2 id="trafik-ot-i-k-192-168-1-100">Трафик от и к 192.168.1.100</h2>
sudo tcpdump -i eth0 host 192.168.1.100


**Фильтрация по домену:**
bash
<h2 id="zahvat-trafika-k-example-com">Захват трафика к example.com</h2>
sudo tcpdump -i eth0 host example.com


Фильтрация по порту


**Захват на конкретном порту:**
bash
<h2 id="tcp-port-80-http">TCP порт 80 (HTTP)</h2>
sudo tcpdump -i eth0 port 80

<h2 id="udp-port-53-dns">UDP порт 53 (DNS)</h2>
sudo tcpdump -i eth0 port 53

<h2 id="lyuboy-protokol-na-portu-443">Любой протокол на порту 443</h2>
sudo tcpdump -i eth0 port 443

<h2 id="diapazon-portov">Диапазон портов</h2>
sudo tcpdump -i eth0 portrange 8000-8100


**Фильтрация по source/destination портам:**
bash
<h2 id="ishodyaschiy-tcp-port-22-ssh">Исходящий TCP порт 22 (SSH)</h2>
sudo tcpdump -i eth0 src port 22

<h2 id="vhodyaschiy-port-22">Входящий порт 22</h2>
sudo tcpdump -i eth0 dst port 22


Фильтрация по протоколу


**Только TCP:**
bash
sudo tcpdump -i eth0 tcp


**Только UDP:**
bash
sudo tcpdump -i eth0 udp


**Только ICMP:**
bash
sudo tcpdump -i eth0 icmp


**Только ARP:**
bash
sudo tcpdump -i eth0 arp


**IPv6:**
bash
sudo tcpdump -i eth0 ip6


Комбинирование фильтров


**Логические операторы:**
bash
<h2 id="and-i">AND (и)</h2>
sudo tcpdump -i eth0 'tcp and port 80'

<h2 id="or-ili">OR (или)</h2>
sudo tcpdump -i eth0 'tcp or udp'

<h2 id="not-ne">NOT (не)</h2>
sudo tcpdump -i eth0 'not icmp'

<h2 id="kombinatsii">Комбинации</h2>
sudo tcpdump -i eth0 '(tcp and port 80) or (tcp and port 443)'


**Сложные фильтры:**
bash
<h2 id="http-trafik-s-konkretnogo-ip">HTTP трафик с конкретного IP</h2>
sudo tcpdump -i eth0 'tcp port 80 and src host 192.168.1.100'

<h2 id="ssh-trafik-krome-localhost">SSH трафик кроме localhost</h2>
sudo tcpdump -i eth0 'tcp port 22 and not host 127.0.0.1'

<h2 id="dns-zaprosy-dlya-opredelennogo-domena">DNS запросы для определенного домена</h2>
sudo tcpdump -i eth0 'udp port 53 and host example.com'


Фильтрация по размеру пакета


**Минимальный размер:**
bash
<h2 id="pakety-bolshe-1500-bayt">Пакеты больше 1500 байт</h2>
sudo tcpdump -i eth0 greater 1500


**Максимальный размер:**
bash
<h2 id="pakety-menshe-100-bayt">Пакеты меньше 100 байт</h2>
sudo tcpdump -i eth0 less 100


Фильтрация по содержимому


**Поиск строки в данных:**
bash
<h2 id="poisk-password-v-paketah">Поиск &quot;password&quot; в пакетах</h2>
sudo tcpdump -i eth0 -A 'tcp contains "password"'

<h2 id="poisk-v-http-zagolovkah">Поиск в HTTP заголовках</h2>
sudo tcpdump -i eth0 -A 'tcp and port 80 and contains "GET"'


**Фильтрация по HTTP методам:**
bash
<h2 id="tolko-get-zaprosy">Только GET запросы</h2>
sudo tcpdump -i eth0 -A 'tcp port 80 and contains "GET"'

<h2 id="tolko-post-zaprosy">Только POST запросы</h2>
sudo tcpdump -i eth0 -A 'tcp port 80 and contains "POST"'


Фильтрация по флагам TCP


**SYN пакеты:**
bash
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'


**ACK пакеты:**
bash
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-ack != 0'


**FIN пакеты:**
bash
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-fin != 0'


**RST пакеты:**
bash
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-rst != 0'


---

5. Захват различных протоколов


HTTP и HTTPS


**Захват HTTP трафика:**
bash
<h2 id="zahvat-na-portu-80">Захват на порту 80</h2>
sudo tcpdump -i eth0 -A 'tcp port 80'

<h2 id="sohranit-v-fayl">Сохранить в файл</h2>
sudo tcpdump -i eth0 -w http_traffic.pcap 'tcp port 80'


**Анализ HTTP запросов:**
bash
<h2 id="filtratsiya-po-metodu">Фильтрация по методу</h2>
sudo tcpdump -i eth0 -A 'tcp port 80 and contains "GET"'

<h2 id="zahvat-tolko-zagolovkov">Захват только заголовков</h2>
sudo tcpdump -i eth0 -A 'tcp port 80' | grep -i "Host\|User-Agent\|Cookie"


**HTTPS трафик:**
bash
<h2 id="zahvat-tls-ssl-soedineniy">Захват TLS/SSL соединений</h2>
sudo tcpdump -i eth0 'tcp port 443'

<h2 id="sohranenie-dlya-analiza">Сохранение для анализа</h2>
sudo tcpdump -i eth0 -w https_traffic.pcap 'tcp port 443'


**Client Hello анализа:**
bash
<h2 id="analiz-tls-handshake">Анализ TLS handshake</h2>
sudo tcpdump -i eth0 -vvv 'tcp port 443 and tcp[13] == 0x02' # SYN


DNS (Domain Name System)


**Захват DNS запросов:**
bash
<h2 id="udp-port-53">UDP порт 53</h2>
sudo tcpdump -i eth0 'udp port 53'

<h2 id="dns-zaprosy-k-konkretnomu-domenu">DNS запросы к конкретному домену</h2>
sudo tcpdump -i eth0 'udp port 53 and host example.com'


**Анализ DNS трафика:**
bash
<h2 id="pokazat-dns-query-i-response">Показать DNS query и response</h2>
sudo tcpdump -i eth0 -vvv 'udp port 53'

<h2 id="sohranit-dns-trafik">Сохранить DNS трафик</h2>
sudo tcpdump -i eth0 -w dns_traffic.pcap 'udp port 53'


**Анализ подозрительных DNS запросов:**
bash
<h2 id="dga-domain-generation-algorithm-detektsiya">DGA (Domain Generation Algorithm) детекция</h2>
sudo tcpdump -i eth0 'udp port 53' | grep -E '[a-z]{20,}'


SSH (Secure Shell)


**Захват SSH трафика:**
bash
<h2 id="tcp-port-22">TCP порт 22</h2>
sudo tcpdump -i eth0 'tcp port 22'

<h2 id="ssh-ot-konkretnogo-ip">SSH от конкретного IP</h2>
sudo tcpdump -i eth0 'tcp port 22 and src host 192.168.1.100'


**Анализ SSH попыток подключения:**
bash
<h2 id="syn-pakety-dlya-ssh">SYN пакеты для SSH</h2>
sudo tcpdump -i eth0 'tcp port 22 and tcp[tcpflags] & tcp-syn != 0'


FTP (File Transfer Protocol)


**Захват FTP трафика:**
bash
<h2 id="control-connection-port-21">Control connection (порт 21)</h2>
sudo tcpdump -i eth0 'tcp port 21'

<h2 id="data-connection">Data connection</h2>
sudo tcpdump -i eth0 'tcp port 20'


**Анализ FTP команд:**
bash
<h2 id="user-i-pass-komandy-credentials">USER и PASS команды (credentials)</h2>
sudo tcpdump -i eth0 -A 'tcp port 21' | grep -i "USER\|PASS"


SMTP (Simple Mail Transfer Protocol)


**Захват почтового трафика:**
bash
<h2 id="smtp-port-25">SMTP порт 25</h2>
sudo tcpdump -i eth0 'tcp port 25'

<h2 id="starttls-smtp-port-587">STARTTLS SMTP (порт 587)</h2>
sudo tcpdump -i eth0 'tcp port 587'


**Поиск credentials в SMTP:**
bash
<h2 id="analiz-auth-komandy">Анализ AUTH команды</h2>
sudo tcpdump -i eth0 -A 'tcp port 25' | grep -i "auth\|login\|password"


SNMP (Simple Network Management Protocol)


**Захват SNMP трафика:**
bash
<h2 id="udp-port-161">UDP порт 161</h2>
sudo tcpdump -i eth0 'udp port 161'

<h2 id="snmp-traps-port-162">SNMP traps (порт 162)</h2>
sudo tcpdump -i eth0 'udp port 162'


NTP (Network Time Protocol)


**Захват NTP трафика:**
bash
<h2 id="udp-port-123">UDP порт 123</h2>
sudo tcpdump -i eth0 'udp port 123'


SMB/CIFS (Samba)


**Захват SMB трафика:**
bash
<h2 id="porty-139-445">Порты 139, 445</h2>
sudo tcpdump -i eth0 'tcp port 139 or tcp port 445'

<h2 id="analiz-smb-authentication">Анализ SMB authentication</h2>
sudo tcpdump -i eth0 -A 'tcp port 445' | grep -i "ntlmssp\|kerberos"


RDP (Remote Desktop Protocol)


**Захват RDP трафика:**
bash
<h2 id="tcp-port-3389">TCP порт 3389</h2>
sudo tcpdump -i eth0 'tcp port 3389'


---

6. Анализ сетевого трафика


Базовый анализ


**Счетчики пакетов:**
bash
<h2 id="podschet-zahvachennyh-paketov">Подсчет захваченных пакетов</h2>
sudo tcpdump -i eth0 -c 0 2>&1 | tail -1


**Статистика размеров пакетов:**
bash
<h2 id="pokazyvat-razmery-paketov">Показывать размеры пакетов</h2>
sudo tcpdump -i eth0 -c 100 | awk '{print $NF}'


Анализ с помощью параметров вывода


**1. Временные метки:**
bash
<h2 id="unix-timestamp">Unix timestamp</h2>
sudo tcpdump -i eth0 -tt

<h2 id="timestamp-s-mikrosekundami">Timestamp с микросекундами</h2>
sudo tcpdump -i eth0 -tttt


**2. Относительные временные метки:**
bash
<h2 id="otnositelno-pervogo-paketa">Относительно первого пакета</h2>
sudo tcpdump -i eth0 -ttttt


**3. Подсчет протоколов:**
bash
<h2 id="pokazat-protocol-header-length">Показать protocol header length</h2>
sudo tcpdump -i eth0 -vvv


Расширенный анализ


**Анализ TCP соединений:**
bash
<h2 id="tcp-flagi-s-podrobnostyami">TCP флаги с подробностями</h2>
sudo tcpdump -i eth0 -vvv 'tcp'

<h2 id="tcp-okna-i-sequence-numbers">TCP окна и sequence numbers</h2>
sudo tcpdump -i eth0 -S 'tcp'


**Анализ размеров:**
bash
<h2 id="pokazat-razmer-paketa">Показать размер пакета</h2>
sudo tcpdump -i eth0 -c 100 | grep -oE 'length [0-9]+'


Поиск конкретных паттернов


**Поиск в заголовках:**
bash
<h2 id="zagolovki-http">Заголовки HTTP</h2>
sudo tcpdump -i eth0 -A 'tcp port 80' | grep -E "^GET\|^POST\|^HEAD"


**Поиск в данных:**
bash
<h2 id="email-adresa">Email адреса</h2>
sudo tcpdump -i eth0 -A | grep -E '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'

<h2 id="ip-adresa">IP адреса</h2>
sudo tcpdump -i eth0 -n | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'


Анализ фрагментации


**Поиск фрагментированных пакетов:**
bash
<h2 id="ip-fragmenty">IP фрагменты</h2>
sudo tcpdump -i eth0 'ip[6:2] & 0x1fff > 0'


Анализ подозрительной активности


**Spoofing:**
bash
<h2 id="zahvat-paketov-iz-lokalnoy-podseti-no-ne-ot-lokalnyh-ip">Захват пакетов из локальной подсети, но не от локальных IP</h2>
sudo tcpdump -i eth0 'src net 192.168.1.0/24 and not src host 192.168.1.1'


**Port scanning:**
bash
<h2 id="mnozhestvennye-syn-na-raznye-porty">Множественные SYN на разные порты</h2>
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0 and !tcp[tcpflags] & tcp-ack != 0'


---

7. Работа с логами и дампами


Формат PCAP


**Создание PCAP файла:**
bash
<h2 id="zapis-v-fayl">Запись в файл</h2>
sudo tcpdump -i eth0 -w capture.pcap

<h2 id="zapis-s-filtrom">Запись с фильтром</h2>
sudo tcpdump -i eth0 -w capture.pcap 'tcp port 80'


Чтение дампов


**Базовое чтение:**
bash
<h2 id="chtenie-iz-fayla">Чтение из файла</h2>
sudo tcpdump -r capture.pcap

<h2 id="s-filtrom">С фильтром</h2>
sudo tcpdump -r capture.pcap 'tcp port 80'

<h2 id="podrobnyy-vyvod">Подробный вывод</h2>
sudo tcpdump -r capture.pcap -vvv


**Чтение с ограничением:**
bash
<h2 id="pervye-100-paketov">Первые 100 пакетов</h2>
sudo tcpdump -r capture.pcap -c 100

<h2 id="poslednie-100-kombinirovanie-s-tail">Последние 100 (комбинирование с tail)</h2>
sudo tcpdump -r capture.pcap | tail -100


Оптимизация размера файлов


**Сжатие при записи:**
bash
<h2 id="compress-cherez-pipe">Compress через pipe</h2>
sudo tcpdump -i eth0 -w - | gzip > capture.gz

<h2 id="decompress-pri-chtenii">Decompress при чтении</h2>
zcat capture.gz | tcpdump -r -


**Ротация файлов:**
bash
<h2 id="rotatsiya-kazhdye-10-minut-10mb">Ротация каждые 10 минут (10MB)</h2>
sudo tcpdump -i eth0 -G 600 -C 10 -w capture_%Y%m%d_%H%M%S.pcap

<h2 id="rotatsiya-kazhdye-100mb">Ротация каждые 100MB</h2>
sudo tcpdump -i eth0 -C 100 -w capture.pcap


Работа с большими файлами


**Разбиение файлов:**
bash
<h2 id="sozdanie-dampov-po-vremeni">Создание дампов по времени</h2>
sudo tcpdump -i eth0 -G 3600 -w hourly_capture_%Y%m%d_%H.pcap


**Слияние PCAP файлов:**
bash
<h2 id="ispolzovanie-mergecap-wireshark">Использование mergecap (Wireshark)</h2>
mergecap -w combined.pcap file1.pcap file2.pcap file3.pcap


**Экстракция сегментов:**
bash
<h2 id="pakety-s-100-po-200">Пакеты с 100 по 200</h2>
sudo tcpdump -r capture.pcap -c 100 -w segment.pcap -A 101


Анализ статистики дампов


**Основная информация:**
bash
<h2 id="ispolzovanie-capinfos-wireshark">Использование capinfos (Wireshark)</h2>
capinfos capture.pcap

<h2 id="pervye-i-poslednie-pakety">Первые и последние пакеты</h2>
sudo tcpdump -r capture.pcap -c 1
sudo tcpdump -r capture.pcap | tail -1


Экспорт в другие форматы


**Кумулятивная длина:**
bash
<h2 id="eksport-v-tekst">Экспорт в текст</h2>
sudo tcpdump -r capture.pcap > output.txt

<h2 id="eksport-s-ascii">Экспорт с ASCII</h2>
sudo tcpdump -r capture.pcap -A > output.txt

<h2 id="eksport-hex">Экспорт hex</h2>
sudo tcpdump -r capture.pcap -X > output_hex.txt


Очистка и фильтрация дампов


**Создание чистых дампов:**
bash
<h2 id="udalenie-shuma">Удаление шума</h2>
sudo tcpdump -r capture.pcap -w clean.pcap 'not arp and not icmp'

<h2 id="tolko-relevantnyy-trafik">Только релевантный трафик</h2>
sudo tcpdump -r capture.pcap -w relevant.pcap 'tcp port 80 or tcp port 443'


---

8. Расширенный анализ и статистика


Анализ производительности


**Throughput:**
bash
<h2 id="ispolzovanie-ifstat">Использование ifstat</h2>
sudo ifstat -i eth0

<h2 id="ili-cherez-tcpdump">Или через tcpdump</h2>
sudo tcpdump -i eth0 -tttt | awk '{print $1,$2}' | tail -1


Детальный TCP анализ


**TCP flow analysis:**
bash
<h2 id="analiz-tcp-handshakes">Анализ TCP handshakes</h2>
sudo tcpdump -i eth0 -vvv 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'

<h2 id="retransmissions">Retransmissions</h2>
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-ack != 0 and tcp[24] != 0'


**Окна TCP:**
bash
<h2 id="analiz-razmerov-tcp-okon">Анализ размеров TCP окон</h2>
sudo tcpdump -i eth0 -vvv 'tcp' | grep -i "win"


Статистика по протоколам


**Подсчет протоколов:**
bash
<h2 id="ispolzovanie-tcpdump-s-awk">Использование tcpdump с awk</h2>
sudo tcpdump -i eth0 -n -c 1000 | awk '{print $1}' | sort | uniq -c


**Статистика портов:**
bash
sudo tcpdump -i eth0 -n 'tcp or udp' | awk '{print $9}' | cut -d. -f5 | sort | uniq -c | sort -rn | head -20


Анализ пропускной способности


**Bandwidth utilization:**
bash
<h2 id="ispolzovanie-iftop">Использование iftop</h2>
sudo iftop -i eth0

<h2 id="ili-cherez-tcpdump-s-post-processing">Или через tcpdump с post-processing</h2>


Детекция аномалий


**Повторяющиеся пакеты:**
bash
<h2 id="duplicate-packets">Duplicate packets</h2>
sudo tcpdump -i eth0 -vvv | grep -i "duplicate"


**Out-of-order пакеты:**
bash
<h2 id="out-of-order-delivery">Out-of-order delivery</h2>
sudo tcpdump -i eth0 -S -vvv 'tcp' | grep -i "out-of-order"


---

9. Интеграция с другими инструментами


Wireshark


**Конвертация для Wireshark:**
bash
<h2 id="tcpdump-sozdaet-standartnyy-pcap-format">TCPdump создает стандартный PCAP формат</h2>
<h2 id="wireshark-mozhet-otkryvat-napryamuyu">Wireshark может открывать напрямую</h2>
sudo tcpdump -i eth0 -w capture.pcap

<h2 id="otkryt-v-wireshark">Открыть в Wireshark</h2>
wireshark capture.pcap


**Использование tshark вместо tcpdump:**
bash
<h2 id="tshark-cli-versiya-wireshark">tshark - CLI версия Wireshark</h2>
tshark -i eth0 -f 'tcp port 80'

<h2 id="ili-s-filtrom">Или с фильтром</h2>
tshark -r capture.pcap -Y 'http.request.method == "GET"'


Tcpdump + grep/awk для анализа


**Экстракция данных:**
bash
<h2 id="izvlechenie-ip-adresov">Извлечение IP адресов</h2>
sudo tcpdump -i eth0 -n | awk '{print $3,$5}' | sort | uniq -c

<h2 id="chastota-portov">Частота портов</h2>
sudo tcpdump -i eth0 -n 'tcp or udp' | awk '{print $5}' | cut -d. -f5 | sort | uniq -c


Интеграция с Bro/Zeek


**Экспорт в Bro формате:**
bash
<h2 id="ispolzovanie-bro-dlya-analiza">Использование bro для анализа</h2>
bro -r capture.pcap

<h2 id="parsing-logov-bro">Парсинг логов Bro</h2>
bro-cut < *.log | head


Snort


**Для IDS/IPS:**
bash
<h2 id="snort-mozhet-chitat-pcap-fayly">Snort может читать PCAP файлы</h2>
snort -r capture.pcap

<h2 id="ispolzovanie-s-pravilami">Использование с правилами</h2>
snort -r capture.pcap -c /etc/snort/snort.conf


Elasticsearch + Logstash


**Индексация в Elastic:**
bash
<h2 id="ispolzovanie-filebeat">Использование filebeat</h2>
filebeat -c filebeat.yml

<h2 id="analiz-v-kibana">Анализ в Kibana</h2>


---

10. Расследование сетевых атак


DDoS атаки


**Захват DDoS трафика:**
bash
<h2 id="syn-flood">SYN flood</h2>
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0 and !tcp[tcpflags] & tcp-ack != 0'

<h2 id="icmp-flood">ICMP flood</h2>
sudo tcpdump -i eth0 'icmp'

<h2 id="udp-flood">UDP flood</h2>
sudo tcpdump -i eth0 'udp'


**Анализ атаки:**
bash
<h2 id="istochniki-syn-flood">Источники SYN flood</h2>
sudo tcpdump -i eth0 -n 'tcp[tcpflags] & tcp-syn != 0 and !tcp[tcpflags] & tcp-ack != 0' | awk '{print $3}' | sort | uniq -c | sort -rn


Port Scanning


**Детекция сканирования портов:**
bash
<h2 id="syn-scan-bez-ack">SYN scan (без ACK)</h2>
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0 and !tcp[tcpflags] & tcp-ack != 0'

<h2 id="fin-scan">FIN scan</h2>
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-fin != 0 and !tcp[tcpflags] & tcp-syn != 0'

<h2 id="null-scan">NULL scan</h2>
sudo tcpdump -i eth0 'tcp[tcpflags] == 0'


ARP Spoofing


**Детекция ARP спуфинга:**
bash
<h2 id="dublikaty-arp">Дубликаты ARP</h2>
sudo tcpdump -i eth0 -nn 'arp' | grep -i "duplicate"


**Анализ ARP таблицы:**
bash
<h2 id="vse-arp-pakety">Все ARP пакеты</h2>
sudo tcpdump -i eth0 -n 'arp'


Man-in-the-Middle (MiTM)


**SSL stripping:**
bash
<h2 id="fallback-s-https-na-http">Fallback с HTTPS на HTTP</h2>
sudo tcpdump -i eth0 'tcp port 443 and tcp port 80'


Data Exfiltration


**Подозрительный исходящий трафик:**
bash
<h2 id="bolshie-ishodyaschie-dannye">Большие исходящие данные</h2>
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-ack != 0' -vv | grep -E "length [0-9]{4,}"

<h2 id="konnektsii-k-neznakomym-ip">Коннекции к незнакомым IP</h2>
sudo tcpdump -i eth0 'dst net not 192.168.1.0/24'


Command & Control (C2)


**Поиск C2 трафика:**
bash
<h2 id="dns-tunneling">DNS tunneling</h2>
sudo tcpdump -i eth0 -A 'udp port 53 and data[10:1] > 60'

<h2 id="http-c2">HTTP C2</h2>
sudo tcpdump -i eth0 -A 'tcp port 80' | grep -i "malicious\|c2\|command"


SQL Injection в трафике


**Детекция SQL injection попыток:**
bash
sudo tcpdump -i eth0 -A 'tcp port 80' | grep -iE "union.*select|';.*or|drop.*table"


---

11. Практические кейсы расследований


Кейс 1: Расследование SQL Injection атаки


**Ситуация:** Обнаружена попытка SQL injection на веб-сервере компании.

**Захват трафика:**
bash
<h2 id="zahvat-na-servere">Захват на сервере</h2>
sudo tcpdump -i eth0 -w attack.pcap 'tcp port 80'

<h2 id="posle-obnaruzheniya-ataki-analiz">После обнаружения атаки - анализ</h2>
sudo tcpdump -r attack.pcap -A 'tcp port 80 and contains "SELECT"'


**Анализ:**
bash
<h2 id="poisk-sql-komand">Поиск SQL команд</h2>
sudo tcpdump -r attack.pcap -A | grep -iE "SELECT|UNION|DROP|INSERT|UPDATE"

<h2 id="ip-atakuyuschego">IP атакующего</h2>
sudo tcpdump -r attack.pcap -n 'tcp port 80' | awk '{print $3}' | cut -d. -f1-4 | sort | uniq

<h2 id="vremya-ataki">Время атаки</h2>
sudo tcpdump -r attack.pcap -t 'tcp port 80'


**Результат:** Определен IP атакующего, время и метод атаки.

Кейс 2: Анализ DDoS атаки


**Ситуация:** Сервер недоступен из-за DDoS.

**Захват:**
bash
<h2 id="zahvat-vo-vremya-ataki">Захват во время атаки</h2>
sudo tcpdump -i eth0 -w ddos.pcap -c 10000

<h2 id="analiz-istochnikov">Анализ источников</h2>
sudo tcpdump -r ddos.pcap -n | awk '{print $3}' | cut -d. -f1-4 | sort | uniq -c | sort -rn | head -20


**Анализ типа атаки:**
bash
<h2 id="syn-flood">SYN flood</h2>
sudo tcpdump -r ddos.pcap 'tcp[tcpflags] & tcp-syn != 0 and !tcp[tcpflags] & tcp-ack != 0' | wc -l

<h2 id="icmp-flood">ICMP flood</h2>
sudo tcpdump -r ddos.pcap 'icmp' | wc -l


**Результат:** Идентифицирован тип атаки и список атакующих IP.

Кейс 3: Утечка данных


**Ситуация:** Подозрение на утечку данных через SFTP.

**Захват:**
bash
<h2 id="zahvat-sftp-trafika">Захват SFTP трафика</h2>
sudo tcpdump -i eth0 -w sftp.pcap 'tcp port 22'

<h2 id="poisk-bolshih-peredach">Поиск больших передач</h2>
sudo tcpdump -r sftp.pcap -vvv | grep -E "length [0-9]{4,}"


**Анализ:**
bash
<h2 id="razmery-peredach">Размеры передач</h2>
sudo tcpdump -r sftp.pcap | awk '{print $NF}' | grep -oE '[0-9]+' | awk '{sum+=$1} END {print sum}'

<h2 id="vremya-peredach">Время передач</h2>
sudo tcpdump -r sftp.pcap -t


**Результат:** Подтверждена утечка данных, определен объем.

---

12. Этические и правовые аспекты


Юридические требования


**1. Получение права:**
- Согласие владельца сети
- Субпоэна или ордер
- Законный доступ к сети

**2. Защита конфиденциальности:**
- Шифрование захваченного трафика
- Ограничение доступа
- Удаление после дела

**3. Цепочка хранения:**
- Документирование захвата
- Хэширование PCAP файлов
- Контроль доступа

Этические стандарты


**Правила:**
1. Захват только необходимого
2. Минимальное влияние на сеть
3. Безопасное хранение
4. Честная отчетность

Ответственное раскрытие


**Находки в трафике:**
- Уязвимости в системах
- Неправильная конфигурация
- Потенциальные атаки

**Правильный процесс:**
1. Обнаружение проблемы
2. Документирование
3. Уведомление владельцев
4. Консультация с юристами

---

13. FAQ


1. Нужен ли root доступ для tcpdump?


**Ответ:** Да, TCPdump требует повышенных привилегий для захвата пакетов. Можно использовать sudo или настроить capabilities.

2. Как сохранить захваченный трафик в файл?


**Ответ:** Используйте опцию `-w`: `sudo tcpdump -i eth0 -w capture.pcap`

3. Можно ли читать PCAP файлы в реальном времени?


**Ответ:** Да, используя `tail -c +0 -f`: `tail -c +0 -f capture.pcap | tcpdump -r -`

4. Как отфильтровать только входящий или исходящий трафик?


**Ответ:** Используйте `src` и `dst`: `sudo tcpdump -i eth0 src host 192.168.1.100`

5. Можно ли анализировать зашифрованный трафик?


**Ответ:** Частично. Можно анализировать метаданные, но не содержимое зашифрованных пакетов без ключей.

6. Как найти сканирование портов в логах?


**Ответ:** `sudo tcpdump -r capture.pcap 'tcp[tcpflags] & tcp-syn != 0 and !tcp[tcpflags] & tcp-ack != 0'`

7. Можно ли фильтровать по содержимому пакета?


**Ответ:** Да, используя `contains`: `sudo tcpdump -i eth0 'tcp contains "password"'`

8. Как ограничить размер захватываемого файла?


**Ответ:** Используйте `-C` для ротации: `sudo tcpdump -i eth0 -C 100 -w capture.pcap`

9. Работает ли tcpdump на всех операционных системах?


**Ответ:** Да, с портами для Windows (WinDump), macOS, BSD и Linux.

10. Какой максимальный размер файла поддерживает tcpdump?


**Ответ:** Размер файлов ограничен файловой системой. Используйте ротацию с `-C` или `-G`.

11. Можно ли использовать tcpdump для мониторинга в реальном времени?


**Ответ:** Да, запустите без `-c`: `sudo tcpdump -i eth0`. Используйте `Ctrl+C` для остановки.

12. Как экспортировать результаты анализа?


**Ответ:** Экспортируйте в текстовый формат: `sudo tcpdump -r capture.pcap -A > output.txt`

13. Можно ли использовать tcpdump на роутере или коммутаторе?


**Ответ:** На роутере - да. На коммутаторе потребуется SPAN port или mirror port.

14. Как детектировать аномальную активность в трафике?


**Ответ:** Используйте комбинацию фильтров для детекции аномалий: SYN floods, port scans, большие передачи данных.

15. Совместим ли tcpdump с Wireshark?


**Ответ:** Да, полностью. TCPdump создает стандартный PCAP формат, который Wireshark может открывать напрямую.

---

14. Заключение


TCPdump представляет собой фундаментальный инструмент для захвата и анализа сетевого трафика в цифровой криминалистике. Его простота, мощь и гибкость делают его незаменимым в арсенале каждого сетевого эксперта. От базового захвата пакетов до сложного анализа атак - TCPdump предоставляет все необходимые средства для эффективного расследования сетевых инцидентов.

Понимание синтаксиса BPF, различных протоколов и техник анализа является критически важным для успешного использования TCPdump. Постоянное обучение и практика помогут вам развить навыки эффективного анализа сетевого трафика и выявления подозрительной активности.

Помните об этических и правовых аспектах захвата сетевого трафика. Всегда получайте соответствующее разрешение перед захватом данных, соблюдайте законодательство и используйте полученные знания ответственно. Ваша цель - помочь правосудию путем честного и компетентного анализа, а не злоупотребления доступом к данным.

Данное руководство охватывает основы работы с TCPdump, но успешное расследование зависит от ваших навыков, логического мышления и внимательности к деталям. Используйте TCPdump как инструмент в вашем арсенале, но помните: истинное мастерство приходит с опытом и постоянной практикой.

---

**⚠️ Дисклеймер:** Статья носит информационно-образовательный характер и не содержит инструкций для совершения противоправных действий.