Если у вас Unix или Unix-подобная (Linux, Mac OS) операционная система, вы можете использовать инструмент tcpdump для проверки сетевого трафика.
Программа tcpdump — это утилита командной строки, которую можно установить бесплатно.
Он обычно не интегрируется в операционные системы, поэтому вам нужно установить его из реестра tcpdump GitHub или с официального сайта tcpdump .
Contents
- 1 Элементы tcpdump
- 2 Формат tcpdump
- 3 Параметры tcpdump
- 4 Параметры tcpdump
- 5 Выражение Tcpdump
- 6 Примеры tcpdump
- 7 Формат вывода Tcpdump
- 8 TCPdump для Windows
- 9 Использование анализаторов пакетов
- 10 tcpdump часто задаваемые вопросы
- 11 В чем разница между Wireshark и tcpdump?
- 12 Как убить процесс tcpdump?
- 13 Где хранятся файлы tcpdump?
Элементы tcpdump
Утилита перехвата пакетов, используемая tcpdump, предоставляется libpcab, библиотекой процедур C/C++. Основная программа tcpdump является интерфейсом для процесса захвата пакетов . При запуске он запустит процесс libcap для захвата сетевых пакетов и последующего отображения их содержимого на экране. Если при запуске программы не указано ограничение на количество перехватываемых пакетов, она будет продолжать работать вечно. Затем обработка завершается сигналом прерывания (Control-C).
Программа запускается из командной строки и включает в себя несколько опций, которые обозначены флажками. Эти флаги изменяют поведение программы, заставляя ее выбирать пакеты, соответствующие указанному шаблону, ограничивая время ее работы или заставляя ее читать сохраненные пакеты из файла, а не из сетевого интерфейса.
Формат tcpdump
Команда tcpdump может быть запущена сама по себе или с опциями, параметрами и/или регулярными выражениями. Ни один из этих элементов не является обязательным, и порядок не важен.
tcpdump <-option_identifier> <option_name> <parameter> <parameter_value> <regular expressions>
Параметры tcpdump
За командой tcpdump следуют параметры, также известные как флаги . Каждый из них обозначается дефисом, за которым следует буква. Ниже приведен список каждого из этих флагов.
-Печать пакетов в ASCII без заголовков на уровне канала
-b показать номер AS в формате ASDOT
-B размер_буфера в КиБ (1024 байта
-c count — лимит пакетов для захвата
-C размер_файла — процесс создаст новый файл, как только этот предельный размер файла будет заполнен; Размер x 1 миллион байт
-d Вывести скомпилированный код сопоставления пакетов в ASCII
-dd Выводить код сопоставления пакетов в виде фрагмента программы на C
-ddd Выводить код сопоставления пакетов в виде десятичных чисел, которым предшествует счетчик
-D Список всех доступных интерфейсов
-e Печатать заголовок уровня ссылки в каждой строке дампа
-E spi@ipaddr algo:secret — для расшифровки пакетов IPsec ESP:
spi — индекс параметра безопасности
ip addr — это адрес назначения в пакете
algo — это алгоритм, по умолчанию des-cbc, и это поле является необязательным.
Возможные значения:
- des-cbc
- 3des-cbc
- blowfish-cbc
- rc3-cbc
- cast128-cbc
secret — это текст ASCII для секретного ключа ESP. Если ему предшествует 0x, то это шестнадцатеричное значение.
-f Печатать «чужие» IPv4-адреса численно, а не символически
-F файл — использовать файл в качестве входных данных для выражения фильтра
-G rotate_seconds — период ротации файла сохранения с опцией -w, добавит отметку времени к имени
-h Напечатать строки версий tcpdump и libpcap, напечатать сообщение об использовании и выйти
-H Обнаружение заголовков проекта сетки 802.11s
-i интерфейс — интерфейс для прослушивания, по умолчанию самое низкое имя в алфавитном порядке
-I режим монитора | немедленный режим — убирает буферизацию
-j tstamp_type — установить тип временной метки для захвата на tstamp_type
-J tstamp_precision — установить точность метки времени ( микро или нано ), по умолчанию — микро. Если tstamp_precision имеет значение null, вывести список типов временных меток и выйти .
-K Не проверять контрольные суммы
-l Строка стандартного вывода буферизована. Например , tcpdump -l | tee dat или tcpdump -l > dat & tail -f dat
-L Список известных типов каналов передачи данных для интерфейса в указанном режиме и выход
-m module — загрузить определения модулей SMI MIB из файлового модуля .
-M secret — значение общего секрета для проверки с помощью опции TCP-MD5.
-n Не преобразовывать адреса (т.е. адреса хостов, номера портов и т.д.) в имена
-N Не печатать уточнение доменного имени для имен хостов
-# Печатать необязательный номер пакета в начале строки
-O Не запускать оптимизатор кода сопоставления пакетов
-p Не переводить интерфейс в неразборчивый режим
-Q direction – направление отправки/получения. Может быть in , out , или inout
-q Выводить меньше информации о протоколе
-r файл – читать пакеты из файла. Specify – для стандартного ввода
-S Вывести абсолютные порядковые номера TCP
-s snaplen — snarf snaplen байтов из каждого пакета, а не 262144 байта по умолчанию
-T type — интерпретировать пакеты как указанный тип . Варианты:
- aodv Специальный протокол вектора расстояния по запросу
- carp Общий протокол резервирования адресов
- cnfp Протокол Cisco NetFlow
- lmp Протокол управления ссылками
- pgm Прагматичный Общий Многоадресный
- pgm_zmtp1 ZMTP/1.0 внутри PGM/EPGM)
- resp Протокол сериализации REdis
- радиус РАДИУС
- rpc Удаленный вызов процедуры
- rtp Протокол приложений реального времени
- rtcp Протокол управления приложениями реального времени
- snmp Простой протокол управления сетью
- tftp Тривиальный протокол передачи файлов
- ватный визуальный аудио инструмент
- wb распределенная белая доска
- zmtp1 Протокол передачи сообщений ZeroMQ 1.0
- Виртуальная расширяемая локальная сеть vxlan
-t Не печатать метку времени в каждой строке дампа
-tt Печатать метку времени как смещение с 1 января 1970 года в каждой строке дампа
-ttt Распечатать дельту (разрешение в микросекундах) между текущей и предыдущей строкой
-tttt Печатать отметку времени: дата, час, минута, секунда в каждой строке дампа
-ttttt Напечатать дельту (микросекундное разрешение) между текущей и первой строкой
-u Напечатать некодированные дескрипторы NFS
-U Пакет буферизован
-v Чуть более подробный вывод
-vv Более подробный вывод
-vvv Самый подробный вывод
-V файл — прочитать список имен файлов из файла . Стандартный ввод используется, если файл –
-w файл — записать вывод в файл
-W limit – максимальное количество файлов, которое будет создано с помощью опций -C и -G .
-x Печатать данные каждого пакета за вычетом его заголовка уровня ссылки в шестнадцатеричном формате.
-xx Печатать данные каждого пакета, включая его заголовок уровня ссылки, в шестнадцатеричном формате .
-X Печатать данные каждого пакета за вычетом заголовка уровня канала в шестнадцатеричном формате и ASCII.
-XX Печатать данные каждого пакета, включая его заголовок уровня канала, в шестнадцатеричном формате и ASCII.
-y datalinktype — установить тип канала передачи данных для использования при захвате пакетов в datalinktype
-z postrotate-command — обрабатывать файлы сохранения обычно со сжатием, например -z gzip
-Z пользователь — изменить идентификатор пользователя на пользователя и идентификатор группы на основную группу пользователей .
Связанный пост: Шпаргалка по tcpdump
Параметры tcpdump
Параметры tcpdump также известны как примитивы . Они указывают, должен ли захват пакетов получать данные только с указанных хостов. Эти параметры также могут быть выражены как условия с помощью логических операторов и , или , и не . Вам не нужно ставить знак равенства (=) между именем параметра и его значением, и вам не нужно расставлять параметры с помощью знаков препинания. В каждом случае вам просто нужно пространство.
Наиболее часто используемый из этих параметров — хост, который позволяет ограничить захват передачами только из одного источника. В каждом случае имя устройства в качестве значения параметра может быть заменено его адресом. Если параметр имеет версию dst , этот вариант ограничивает вывод только пакетами, имеющими этот атрибут для пункта назначения. Параметры, включающие src , ищут пакеты с заданным значением в данных, относящихся к их происхождению.
Вот варианты параметров:
host host_name — также dst host или src host .
Также может начинаться с ip , arp или rarp
ether ehost — значение из /etc/ethers или число. Также ether src и ether dest .
хост -шлюз — получить пакеты, прошедшие через хост -шлюз
net network_num — IP-адрес источника или получателя включает network_num Также dst net и src net
номер порта |имя — также порт dst и порт src . Может быть с tcp или udp для ограничения протокола
ip proto protocol – перехватывать IP-пакеты указанного протокола. Имя должно быть в /etc/protocols
ether proto protocol – захватить пакет типа эфирного протокола. Опции для протокола – это число или:
- ip
- ip6
- arp
- rarp
- atalk
- atalkarp
- decnet
- decdts
- decdns
- lanbridge
- lat
- mopdl
- moprc
- pup
- sca
- sprite
- stp
- vexp
- vprod
- xns
Broadcast Перехватывает широковещательные пакеты Ethernet. Также пишется как эфирное вещание
IP-трансляция Захватывает широковещательные IP-пакеты.
multicast Перехватывает многоадресные пакеты Ethernet. Также пишется как многоадресная рассылка эфира
ip multicast Перехватывает многоадресные IP-пакеты
decnet host host_name — если источником или получателем DECNET является host_name
decnet src host_name — захват, если источником DECNET является host_name
decnet dst host_name — захватить, если пунктом назначения DECNET является host_name
wlan host ehost — если первый, второй, третий или четвертый адрес IEEE 802.11 — ehost
wlan addr1 ehost — зафиксировать, является ли первый адрес IEEE 802.11 ehost
wlan addr2 ehost — зафиксировать, является ли второй адрес IEEE 802.11 ehost
wlan addr3 ehost — зафиксировать, является ли третий адрес IEEE 802.11 ehost
wlan addr4 ehost — если четвертый адрес IEEE 802.11 — ehost . Используется только для WDS
type type — захватить, если тип кадра IEEE 802.11 — type, то есть число или:
- data
- mgt
- ctl
подтип подтипа — захватить, если кадр IEEE 802.11 имеет подтип , который является числом или:
- assocreq
- assocresp
- reassocreq
- reassocresp
- probereq
- proberesp
- beacon
- atim
- disassoc
- auth
- deauth
- data
dir dir — захватить, если направлением кадра IEEE 802.11 является dir , что является числом или:
- nods
- tods
- fromds
- dstods
Выражение Tcpdump
Сегмент выражений команды tcpdump позволяет вам добавить немного программирования к вашему выбору пакетов. Однако, в отличие от обычной программы, этот набор инструкций должен быть написан в одну строку. Если вы часто пользуетесь Unix или Linux, вы привыкли к регулярным выражениям сценариев оболочки, и у вас не должно возникнуть проблем с пониманием формата этих фильтров.
Пакеты, отвечающие критерию, установленному выражением, будут перехвачены. Таким образом, результат каждого выражения должен быть «истинным».
Есть несколько условий выражения, которые обычно не встречаются в сценариях оболочки, и они перечислены ниже:
Только
Это возвращает длину пакета. Пример использования: len != 5 .
прототип[выражение:размер]
В этом объекте:
proto — это имя уровня протокола. Может быть:
- ether
- fddi
- ip
- arp
- rarp
- tcp
- udp
- icmp
expr — смещение в байтах. Это необходимо включить, но его можно указать как 0, чтобы получить значение с начала объекта.
размер является необязательным и представляет количество байтов в параметре. Значение по умолчанию — 1, но также может быть 2, 3 или 4.
Примеры использования:
ether[0] & 1 != 0 верно для всего многоадресного трафика.
ip[0] & 0xf != 5 верно для всех IP-пакетов с параметрами.
ip[6:2] & 0x1fff = 0 верно для нефрагментированных дейтаграмм и ноль фрагментированных дейтаграмм.
Примеры tcpdump
Во всех этих случаях результаты команды будут отображаться на экране, если только не включена опция, связанная с файлом, или если команда не запущена с перенаправлением вывода или передачей в файл.
Отображение пакетов, отправляемых с или на компьютер, обозначенный как lab1:
tcpdump host lab1
Показать все IP-пакеты, проходящие между lab1 и любым узлом, кроме приема:
tcpdump ip host lab1 and not reception
Показать весь ftp-трафик через интернет-шлюз styx:
tcpdump ‘gateway styx and (port ftp or ftp-data)’
Отобразите пакеты SYN и FIN для каждого сеанса связи TCP, в котором участвует нелокальный хост:
tcpdump ‘tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet
Отображение широковещательных или многоадресных IP-пакетов, которые не были отправлены через широковещательную или многоадресную рассылку Ethernet:
tcpdump ‘ether[0] & 1 = 0 и ip[16] >= 224’
Формат вывода Tcpdump
Формат записи, используемый для записи сетевых пакетов в файлы, стал стандартом, принятым многими новыми анализаторами пакетов и анализаторами трафика.
Стандарт не является простым и адаптирован для каждого протокола. Однако те приложения, которые приняли этот формат, также учитывают эти вариации. Формат называется pcap , что является названием процесса захвата пакетов, используемого tcpdump. Файлы в этом формате обычно имеют расширение .pcap .
TCPdump для Windows
Существует адаптация tcpdump для Windows. Это называется WinDump и использует WinPcap для захвата пакетов так же, как tcpdump использует функцию pcap из libpcap. WinPcap фактически принадлежит Riverbed Technology . Эта же компания является основным спонсором Wireshark , вероятно, самого известного и широко используемого анализатора пакетов в мире. Существует беспроводная версия WinPcap, которая называется AirPcap . Вы можете бесплатно загрузить WinDump, WinPcap и AirPcap с веб- сайта WinPcap .
Использование анализаторов пакетов
Утилита командной строки tcpdump полезна для тех, кто знаком с операционными системами Unix и Linux и любит писать сценарии оболочки. Тем, кто не имеет достаточного опыта в составлении команд с помощью регулярных выражений в командной строке, будет сложно пользоваться этой программой.
У вас есть другие варианты, потому что есть много доступных анализаторов пакетов, таких как Wireshark, о котором упоминалось выше. Подробнее об альтернативах tcpdump вы можете узнать в этом обзоре анализаторов пакетов .
У вас есть любимый анализатор пакетов? Вы поклонник tcpdump или предпочитаете более удобные альтернативы? Оставьте сообщение в разделе комментариев ниже и поделитесь своим опытом.
tcpdump часто задаваемые вопросы
В чем разница между Wireshark и tcpdump?
И Wireshark, и tcpdump перехватывают пакеты. На этом уровне оба эти инструмента одинаковы. Однако у Wireshark есть интерфейс DUI, который включает в себя функции анализа пакетов. Tcpdump — это утилита командной строки. У него меньше функций, и его сложнее использовать.
Как убить процесс tcpdump?
Обычно нажатие Control-C останавливает процесс tcpdump. Если это не сработает, найдите идентификатор процесса tcpdump с помощью команды ps -aux , затем введите kill -9 , затем идентификатор процесса и нажмите клавишу возврата.
Где хранятся файлы tcpdump?
Если вы не укажете каталог и имя файла, в котором должны храниться записи tcpdump, файл будет записан в каталог, в котором вы находились при запуске tcpdump. Вы можете указать, где tcpdump должен хранить перехваченные пакеты, с помощью sudo tcpdump -i 1 -w , за которым следует путь и имя файла.