Сетевые технологии

Утилита tcpdump

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

Установка tcpdump

Во многих дистрибутивах команда tcpdump поставляется по умолчанию, но если в вашем дистрибутиве ее нет, то вы можете очень просто ее установить из официальных репозиториев. Например, в Ubuntu/Debian:
sudo apt-get install tcpdump
В Fedora/Red Hat/CentOS:
sudo yum install tcpdump
Arch Linux:
sudo pacman -S tcpdump

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

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

Синтаксис команды tcpdump

Команда имеет такой синтаксис:
$ tcpdump опции -i интерфейс фильтры
При вызове обязательно нужно передать интерфейс, который будете отслеживать. Если интерфейс не указать, то будет использован первый в списке.
Опции настраивают отображение и основные возможности утилиты, а фильтры позволяют отсеять ненужные пакеты. Основные опции:
  • -A — выводить все пакеты в формате ASCII;
  • -c — закрыть программу после перехвата n-ого количества пакетов;
  • -C — при записи пакетов в файл, проверять размер файла, и если он больше заданного — создать новый файл;
  • -D — вывести список доступных сетевых интерфейсов;
  • -e — выводить информацию уровня соединения для каждого пакета, это может быть полезно, например, для отображения MAC адреса;
  • -f — выводить доменное имя для ip адресов;
  • -F — читать пакеты из файла, а не интерфейса;
  • -G — создавать новый файл лога через указанный промежуток времени;
  • -H — обнаруживать заголовки 802.11s;
  • -i — имя интерфейса для перехвата пакетов. Вы можете захватывать пакеты со всех интерфейсов, для этого укажите any;
  • -I — переключить интерфейс в режим монитора для захвата всех проходящих пакетов;
  • -j — установить формат Timestamp для записи пакетов;
  • -J — посмотреть доступные Timestamp;
  • -K — не проверять контрольные суммы пакетов;
  • -l — добавить поддержку прокрутки к выводу;
  • -L — вывести поддерживаемые протоколы подключения для интерфейса;
  • -n — не отображать доменные имена;
  • -r — прочитать пакеты из файла, созданного с помощью -w;
  • -v, -vv, -vvv — более подробный вывод;
  • -q — выводить минимум информации;
  • -w — записать вывод в файл;
  • -Z — пользователь, от имени которого будут создаваться файлы.

Фильтры tcpdump

Фильтры разделяются на следующие классификации:
  • host — адрес узла сети;
  • port – порт на котором нужно ловить пакеты;
  • portrange – диапазон портов;
  • net – сеть.
  • src — параметр, касающийся отправителя;
  • dst — параметр, касающейся получателя;
  • ip — ip адрес;
  • proto — протокол.
Доступны такие протоколы: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp и udp.
# Примеры
# захват всего трафика в котором в качестве источника или получателя стоят ip адреса из сети 192.168.0.0/24:
tcpdump net 192.168.0.0/24

# Будет захватываться весь трафик на 80-м порту:
tcpdump  port 80

Как пользоваться tcpdump

Перед тем как перейти к использованию tcpdump нужно посмотреть какие сетевые интерфейсы вы можете использовать. Для этого запустите команду с опцией -D:
sudo tcpdump -D
Пример выбора конкретного интерфейса:
tcpdump -i eth0
Поиск трафика по IP:
tcpdump host 10.0.139.10
Поиск трафика по портам:
tcpdump port 3389
tcpdump src port 1025
Поиск трафика одного протокола:
tcpdump icmp
Поиск трафика IP6:
tcpdump ip6
Поиск трафика с использованием портовых диапазонов:
tcpdump portrange 21-23
Поиск трафика на основе размера пакета:
tcpdump less 32
tcpdump greater 64
tcpdump <= 128
Письменные записи в файл:
tcpdump port 80 -w capture_file
Часто полезно сохранять результат пакетов в файл для анализа в будущем. Эти файлы известны как файлы PCAP (PEE-cap), и их можно обрабатывать сотнями различных приложений, включая сетевые анализаторы, системы обнаружения вторжений и, конечно же, самим tcpdump.

Чтение файлов:
tcpdump -r capture_file
В заключении можно сказать, что tcpdump — это ценный инструмент для всех, кто хочет вступить в сетевую или информационную безопасность.

Необычный способ взаимодействия с трафиком в сочетании с точностью, которую он предоставляет при проверке пакетов, делает его наилучшим инструментом для изучения TCP / IP.
Сетевые технологии