Tcpdump утилита командной строки для сниффинга сетевых пакетов. Чаще всего используется для устранения неполадок в сетях и тестирования проблем безопасности. Несмотря на отсутствие графического пользовательского интерфейса, это самая популярная, мощная и универсальная утилита командной строки.
Он является родным для Linux, поэтому большинство дистрибутивов Linux устанавливают его как часть стандартной ОС. Tcpdump - это программа с интерфейсом libpcap, которая представляет собой библиотеку для захвата сетевых датаграмм.
Эта статья проясняет tcpdump, показывая, как захватывать, читать и анализировать захваченный сетевой трафик с помощью этой утилиты. Позже мы будем использовать наши знания для проверки пакетов данных с помощью расширенных фильтров флагов TCP.
Установка tcpdump
Установка tcpdump по умолчанию в вашем дистрибутиве зависит от параметров, выбранных в процессе установки. В случае выборочной установки возможно, что пакет недоступен. Вы можете проверить установку tcpdump, используя dpkg команда с «-s" вариант.
ubuntu $ ubuntu: ~ $ dpkg -s tcpdumpИли используйте команду «sudo apt-get install tcpdump» для установки tcpdump в Ubuntu Linux.
Захват пакетов в Tcpdump:
Чтобы начать процесс захвата, нам сначала нужно найти наш рабочий интерфейс, используя значок «ifconfigКоманда. Или мы можем перечислить все доступные интерфейсы, используя tcpdump команда с «-D" вариант.
ubuntu $ ubuntu: ~ $ tcpdump -DЧтобы начать процесс захвата, вы можете использовать синтаксис;
tcpdump [-options] [выражение]Например, в приведенной ниже команде мы используем «-я»Возможность захвата трафика на«enp0s3»Интерфейс с«-c», Чтобы ограничить количество перехваченных пакетов и написать«-ш"Это к test_capture.pcap файл.
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 -w / tmp / test_capture.pcapТочно так же вы можете использовать различные комбинации фильтров для изоляции трафика в соответствии с вашими требованиями. Один из таких примеров включает в себя захват сетевых данных, исходящих и поступающих на хост, используя хозяин команда для конкретного порт. Кроме того, я использовал «-п», Чтобы tcpdump не перехватывал запросы DNS. Этот флаг очень полезен для насыщения трафика при устранении неполадок в сети.
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 хост 10.0.2.15 и порт dst 80 -w / tmp / test_capture1.pcaptcpdump: прослушивание enp0s3, тип канала EN10MB (Ethernet), размер захвата 262144 байта
20 пакетов захвачено
21 пакет получен фильтром
0 пакетов отброшено ядром
Мы используем "а также», Чтобы захватывать только пакеты, содержащие хост 10.0.2.15 и порт назначения 80. Точно так же можно применять различные другие фильтры, чтобы упростить устранение неполадок.
Если вы не хотите использовать значок «-c”Флаг для ограничения трафика захвата, вы можете использовать сигнал прерывания, i.е., Ctrl + C, остановить процесс изоляции.
Чтение файлов Tcpdump
Чтение захваченных файлов tcpdump может быть утомительным. По умолчанию tcp назначает имена IP-адресам и портам. Мы будем использовать «-р»Флаг для чтения нашего уже захваченного файла test_capture.pcap сохранено в / tmp папка. Мы направим вывод в awk команда, чтобы вывести только исходный IP-адрес и порты и передать их команде глава для отображения только первых 5 записей.
ubuntu $ ubuntu: ~ $ sudo tcpdump -r / tmp / test_capture1.pcap | awk -F «» 'print $ 3' | голова -5чтение из файла / tmp / test_capture.pcap, линк-тип EN10MB (Ethernet)
IP убунту.53298
IP убунту.53298
IP убунту.53298
IP убунту.53298
IP убунту.53298
Однако рекомендуется использовать IP-адреса и порты в цифрах для решения сетевых проблем. Мы отключим разрешение IP-имен с помощью «-п»Флаг и названия портов с«-nn«.
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -ntcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола
прослушивание enp0s3, тип канала EN10MB (Ethernet), размер захвата 262144 байта
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Флаги [P.], seq 1276027591: 1276027630, ack 544039114, win 63900, длина 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: Флаги [P.], seq 3381018839: 3381018885, ack 543136109, win 65535, длина 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: Флаги [.], ack 39, win 65535, длина 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: Флаги [.], ack 46, win 65535, длина 0
20:08:22.202346 IP 216.58.209.142.443> 10.0.2.15.41050: Флаги [P.], seq 502925703: 502925826, ack 1203118935, win 65535, длина 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: Флаги [P.], seq 1:40, ack 123, win 65535, длина 39
Понимание захваченного вывода
Tcpdump захватывает множество протоколов, включая UDP, TCP, ICMP и т. Д. Здесь непросто охватить их все. Однако важно понимать, как отображается информация и какие параметры она включает.
Tcpdump отображает каждый пакет в строке с меткой времени и информацией о протоколе. Обычно формат протокола TCP следующий:
Поясним одно из полей захваченного пакета по полям:
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Флаги [P.], seq 1276027591: 1276027630, ack 544039114, win 63900, длина 39- 20:08:22.146354: отметка времени захваченного пакета
- IP: протокол сетевого уровня.
- 10.0.2.15.54080: это поле содержит исходный IP-адрес и исходный порт.
- 172.67.39.148.443: это поле представляет собой IP-адрес назначения и номер порта.
- Флаги [P.] /
: Флаги представляют состояние подключения. В этом случае [P.] указывает на пакет подтверждения PUSH. Поле флага также включает некоторые другие значения, например: - S: SYN
- P: НАЖАТЬ
- [.]: ACK
- F: FIN
- [S.]: SYN_ACK
- R: RST
- seq 1276027591: 1276027630: порядковый номер в первом: последнем формате обозначает количество данных в пакете. За исключением первого пакета, где числа указаны в абсолютном значении, последующие пакеты имеют относительные числа. В данном случае числа здесь означают, что пакет содержит байты данных от 1276027591 до 1276027630.
- ack 544039114: Номер подтверждения отображает следующий ожидаемый порядковый номер данных.
- win 63900: размер окна показывает количество доступных байтов в полученном буфере.
- length 39: Длина данных полезной нагрузки в байтах.
Расширенные фильтры
Теперь мы можем использовать некоторые расширенные параметры фильтра заголовков для отображения и анализа только пакетов данных. В любом пакете TCP флаги TCP начинаются с 14-го байта, так что PSH и ACK представлены 4-м и 5-м битами.
Мы можем использовать эту информацию, включив эти биты 00011000 или 24 для отображения пакетов данных только с флагами PSH и ACK. Мы передаем это число в tcpdump с помощью фильтра «tcp [13] = 24«, Обратите внимание, что индекс массива в TCP начинается с нуля.
Мы отфильтруем этот пакет из нашего text_capture.pcap файл и используйте -А возможность отобразить для вас всю информацию о пакете.
Точно так же вы можете отфильтровать некоторые другие пакеты флагов, используя «Tcp [13] = 8» и «tcp [13] = 2» только для флагов PSH и SYN и т. д.
ubuntu $ ubuntu: ~ $ sudo tcpdump -A 'tcp [13] = 24' -r / tmp / test_capture.pcapчтение из файла / tmp / test_capture.pcap, линк-тип EN10MB (Ethernet)
19:26:17.827902 IP убунту.53298> 32.121.122.34.до н.э.googleusercontent.ком.http: Флаги [P.], seq 4286571276: 4286571363, ack 252096002, win 64240, длина 87: HTTP: GET / HTTP / 1.1
E…:?@.@.Икс.
… "Зы .2.П… П… GET / HTTP / 1.1
Хост: проверка подключения.убунту.ком
Принимать: */*
Подключение: закрыть
Заключение
В этой статье мы познакомили вас с некоторыми из наиболее важных тем tcpdump. Tcpdump в сочетании с мощью интерфейса командной строки может оказать большую помощь в устранении неполадок сети, автоматизации и управлении безопасностью. После изучения и объединения его фильтры и параметры командной строки могут внести большой вклад в выполнение повседневных задач по устранению неполадок и автоматизации, а также в общее понимание сети.