23.06.2025

Tcpdump + Wireshark: анализ и перехват трафика

При работе со множеством различных устройств в инфраструктуре необходимо обеспечить их корректное и безопасное функционирование. Одним из источников потенциальных угроз является сетевой трафик, как внешний, так и внутренний. Без должных систем анализа и его мониторинга многие атаки или же проблемы в работе системы могут остаться незамеченными или нанести существенный ущерб, при работе!

В данном материале, мы рассмотрим, как собрать и более эффективно проанализировать сетевой трафик на машине с использованием связки инструментов tcpdump + wireshark на Linux и Windows.

Как происходит перехват трафика?

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

Скриншот №1 — Схема работы

А Wireshark в данной связке может дополнительно их проанализировать и выдать аналитику по каждому из, а также предоставит удобную панель для поиска и фильтрации необходимых соединений!

Сбор и аналитика сетевого трафика

Определимся со схемой нашей инфраструктуры и машинами, с которых будем перехватывать соединение:

Для аналитики с рабочих станций используйте Wireshark, а для серверов tcpdump!

В большинстве случаев он уже есть, однако, установить можно командой Linux для deb-подобных систем:

apt update && apt install tcpdump wireshark -y

Для rpm-подобных решений, команда будет выглядеть так:

dnf install tcpdump wireshark -y

Рассмотрим основные возможности и примеры использования tcpdump : фильтры, опции и режимы работы. Определим пул интерфейсов:

ip a

Скриншот №2 — Список интерфейсов

Для того, чтобы перехватывать трафик с конкретного интерфейса укажем опцию -i:

sudo tcpdump -i enp0s5

Скриншот №3 — Сырой трафик

Трафика много и вывод на экране будет так же объемным, поэтому в таком виде проанализировать почти ничего не возможно. Укажем опцией -w файл, в который будем производить запись, а так же фильтры для поиска конкретного соединения:

Все эти фильтры должны быть связаны операторами:

К примеру, мне интересно мое соединение по SSH, следовательно, команда будет выглядеть так:

tcpdump -i enp0s5 host <my-ip> tcp port 22

Скриншот №4 — Захват трафика с фильтрами

Вместо тысячи пакетов уже несколько! Но иногда для анализа картины нужен весь трафик поэтому пишем его со всех интерфейсов командой с опцией -i any, где any это псевдоинтерфейс, который слушает трафик со всех источников. Чтобы на этой же машине просмотреть записанный трафик откроем через команду:

tcpdump -r /путь-к-файлу

Скриншот №5 — Чтение трафика из файла в tcpdump

Затем можем его открыть через WireShark, передав файл на основное устройство:

Скриншот №6 — Трафик в Wireshark

Фильтры на Wireshark имеют такую же логику фильтрации, где мы указываем:

((!(ip.addr == 46.191.184.42)) && !(ip.addr == 172.23.0.2)) && !(ip.addr == 172.23.0.3)

Важно, чтобы каждое из выражений было в отдельных скобках! Чтобы просмотреть полезную нагрузку в Wireshark выберите нужный пакет, а для tcpdump, при его чтении добавьте опцию -A:

tcpdump -A -r /путь-к-файлу

Скриншот №7 — Чтение полезной нагрузки

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

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

Скриншот №8 — Создание сервера