Поиск по сайту:

Захват пакетов с помощью Tcpdump и их анализ с помощью Wireshark в Ubuntu


В этом руководстве я покажу вам, как анализировать сетевые пакеты в Linux. Я буду использовать инструменты Tcpdump и Wireshark. В этом руководстве в качестве ОС используется Ubuntu, но оно применимо и к другим дистрибутивам Linux.

Зачем вам нужен Tcpdump?

На ум может прийти очевидный вопрос: зачем заботиться о Tcpdump, если с помощью Wireshark можно сделать почти все. Что ж, вот ответ на это: иногда удобнее использовать Tcpdump для захвата пакетов по сравнению с Wireshark. Например, если целевая машина, на которой вы перехватываете пакет, является удаленной, на которой не установлен Wireshark, или это просто удаленная безголовая машина, в обоих случаях Tcpdump очень удобен. Чтобы просмотреть различные параметры, которые можно использовать с Tcpdump, выполните поиск справочных страниц.

Что такое TCPDump?

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

План этого учебника

Теперь перейдем к основной цели этого руководства. В этом руководстве мы увидим, как мы можем взаимодействовать Tcpdump с Wireshark. Здесь мы указываем работу, которую мы собираемся выполнить в этом руководстве:

  1. Подключение к удаленному компьютеру (хост 2) с помощью SSH.
  2. Захват трафика с помощью Tcpdump и сохранение файла Capture.
  3. Отправка файла захвата на локальный компьютер (хост 1), на котором установлена программа Wireshark.
  4. Использование Wireshark для анализа захваченного сеанса Tcpdump.

Проверка перед полетом

В этом руководстве мы используем два компьютера с Ubuntu 20.04 . Вам нужно настроить их самостоятельно. Наша конфигурация IP выглядит следующим образом:

Хост 1 (локальная машина): 192.168.186.150

Хост 2 (удаленная машина): 192.168.186.201

Шаги, упомянутые в этом руководстве, должны работать в любой системе Linux с соблюдением следующих требований:

  1. Местный хост (хост 1) с установленным Wireshark и настроенным SSH.
  2. SSH-доступ с локального хоста (хост 1) на удаленный хост (хост 2).
  3. Tcpdump и SSH настроены на удаленном узле (узел 2).
  4. учетная запись пользователя «sudo» на узле 2 для запуска Tcpdump, а также на узле 1 (зависит от настройки Wireshark).

Давай начнем…

Чтобы продолжить, подключитесь с локального компьютера (хост 1) к удаленному компьютеру (хост 2) с помощью протокола доступа SSH. Мы уже установили SSH-соединение между двумя машинами. Поэтому мы будем использовать приведенную ниже команду с терминала хоста 1 для подключения к хосту 2:

$ ssh ‘user_name’@’IP_of_Host2’

Здесь замените «user_name» на имя пользователя хоста 2, к которому мы подключаемся, а «IP_of_Host2» — это IP-адрес хоста 2. Для справки см. рисунок ниже:

$ tcpdump --list-interfaces

Пример вывода:

1.enp0s3 [Up, Running]
2.lo [Up, Running, Loopback]
3.any (псевдоустройство, которое захватывает все интерфейсы) [Up, Running]
4.eno1 [Up ]
5.bluetooth-monitor (Bluetooth Linux Monitor) [нет]
6.nflog (интерфейс журнала сетевого фильтра Linux (NFLOG)) [нет]
7.nfqueue (интерфейс очереди сетевого фильтра Linux (NFQUEUE)) [нет]
8.bluetooth0 (номер адаптера Bluetooth 0) [нет]

$ sudo tcpdump -s 65535 -i enp0s3 -w my_remote_capture.pcap

  1. -s: Старые версии Tcpdump обрезают пакеты до 68 или 96 байт. Параметр «-s» используется для захвата пакетов полной длины.
  2. -i: выбирает интерфейс для прослушивания.
  3. -w: сохраняет захваченные необработанные пакеты в файл, а не отображает их на терминале.

Захваченный трафик хранится в файле с именем my_remote_capture.pcap. Теперь мы передадим этот файл на хост 1 для анализа с помощью Wireshark. Для передачи файла мы используем команду scp. Опять же, мы уже настроили scp для работы между двумя машинами. Синтаксис команды показан ниже:

$ scp my_remote_capture.pcap 'username'@'IP_of_remote_machine':

Здесь username — это имя пользователя на хосте 1, а IP_of_remote_machine — это также IP-адрес хоста 1.

Анализ файла захвата

Давайте применим фильтр отображения к вышеуказанному файлу. Поскольку мы были подключены к хосту 2 с помощью SSH, должны быть какие-то следы протокола SSH. В текстовом поле, соответствующем фильтру отображения, введите «ssh»:

Завершение…

Поздравляем, мы наконец-то продемонстрировали, как можно выполнять удаленный захват на машине. Мы видели, как можно комбинировать Tcpdump с Wireshark.