Tcpdump куда сохраняет файлы
Man page of TCPDUMP
Your system may have a different version installed, possibly with some local modifications. To achieve the best results, please make sure this version of this man page suits your needs. If necessary, try to look for a different version on this web site or in the man pages available in your installation.
SYNOPSIS
[ -c count ] [ --count ] [ -C file_size ]
[ -E spi@ipaddr algo:secret. ]
[ -F file ] [ -G rotate_seconds ] [ -i interface ]
[ --immediate-mode ] [ -j tstamp_type ] [ -m module ]
[ -M secret ] [ --number ] [ --print ]
[ --print-sampling nth ] [ -Q in|out|inout ] [ -r file ]
[ -s snaplen ] [ -T type ] [ --version ] [ -V file ]
[ -w file ] [ -W filecount ] [ -y datalinktype ]
[ -z postrotate-command ] [ -Z user ]
[ --time-stamp-precision= tstamp_precision ]
[ --micro ] [ --nano ]
[ expression ]
DESCRIPTION
Tcpdump prints out a description of the contents of packets on a network interface that match the Boolean expression (see pcap-filter (7) for the expression syntax); the description is preceded by a time stamp, printed, by default, as hours, minutes, seconds, and fractions of a second since midnight. It can also be run with the -w flag, which causes it to save the packet data to a file for later analysis, and/or with the -r flag, which causes it to read from a saved packet file rather than to read packets from a network interface. It can also be run with the -V flag, which causes it to read a list of saved packet files. In all cases, only packets that match expression will be processed by tcpdump .
Tcpdump will, if not run with the -c flag, continue capturing packets until it is interrupted by a SIGINT signal (generated, for example, by typing your interrupt character, typically control-C) or a SIGTERM signal (typically generated with the kill (1) command); if run with the -c flag, it will capture packets until it is interrupted by a SIGINT or SIGTERM signal or the specified number of packets have been processed.
When tcpdump finishes capturing packets, it will report counts of: packets ``captured'' (this is the number of packets that tcpdump has received and processed); packets ``received by filter'' (the meaning of this depends on the OS on which you're running tcpdump , and possibly on the way the OS was configured - if a filter was specified on the command line, on some OSes it counts packets regardless of whether they were matched by the filter expression and, even if they were matched by the filter expression, regardless of whether tcpdump has read and processed them yet, on other OSes it counts only packets that were matched by the filter expression regardless of whether tcpdump has read and processed them yet, and on other OSes it counts only packets that were matched by the filter expression and were processed by tcpdump ); packets ``dropped by kernel'' (this is the number of packets that were dropped, due to a lack of buffer space, by the packet capture mechanism in the OS on which tcpdump is running, if the OS reports that information to applications; if not, it will be reported as 0).
On platforms that support the SIGINFO signal, such as most BSDs (including macOS) and Digital/Tru64 UNIX, it will report those counts when it receives a SIGINFO signal (generated, for example, by typing your ``status'' character, typically control-T, although on some platforms, such as macOS, the ``status'' character is not set by default, so you must set it with stty (1) in order to use it) and will continue capturing packets. On platforms that do not support the SIGINFO signal, the same can be achieved by using the SIGUSR1 signal.
Using the SIGUSR2 signal along with the -w flag will forcibly flush the packet buffer into the output file.
Reading packets from a network interface may require that you have special privileges; see the pcap (3PCAP) man page for details. Reading a saved packet file doesn't require special privileges.
OPTIONS
For the expression syntax, see pcap-filter (7) .
The expression argument can be passed to tcpdump as either a single Shell argument, or as multiple Shell arguments, whichever is more convenient. Generally, if the expression contains Shell metacharacters, such as backslashes used to escape protocol names, it is easier to pass it as a single, quoted argument rather than to escape the Shell metacharacters. Multiple arguments are concatenated with spaces before being parsed.
EXAMPLES
To print all packets arriving at or departing from sundown :
To print traffic between helios and either hot or ace :
To print all IP packets between ace and any host except helios :
To print all traffic between local hosts and hosts at Berkeley:
To print all ftp traffic through internet gateway snup : (note that the expression is quoted to prevent the shell from (mis-)interpreting the parentheses):
To print traffic neither sourced from nor destined for local hosts (if you gateway to one other net, this stuff should never make it onto your local net).
To print the start and end packets (the SYN and FIN packets) of each TCP conversation that involves a non-local host.
To print the TCP packets with flags RST and ACK both set. (i.e. select only the RST and ACK flags in the flags field, and if the result is "RST and ACK both set", match)
Утилита tcpdump — отличный инструмент командной, который способен перехватывать и анализировать сетевой трафик. Может оказаться большим подспорьем при решении сетевых проблем. Пакеты можно сохранить в файл и анализировать позже. Рекомендуется время от времени запускать эту утилиту, чтобы следить за своей сетью.
- Вывод tcpdump
- Установка tcpdump
- Опции tcpdump
- Фильтры tcpdump:
- Фильтр выражений
- Фильтр портов
- Фильтр хостов
- Комбинирование фильтров
11) Захват пакетов, поступающих с удаленного хоста
Чтобы показывать только пакеты, поступающие с определенного IP-адреса, используйте параметр src
Вы можете видеть пакеты запросов
Сохранение заголовков пакетов в файл
Поскольку выходные данные tcpdump могут быстро прокручиваться за пределы экрана, вы можете сохранять заголовки пакетов в файле с флагом -w.
Файлы для сохранения вывода используют формат pcap и имеют расширение .pcap.
PCAP обозначает packet capture.
Следующая команда сохранит 10 строк вывода на интерфейсе eth1 в icmp.pcap.
Выводы
В этой статье мы рассмотрели как пользоваться tcpdump. Это очень мощный сетевой анализатор, который работает только через командную строку. Надеюсь, эта информация была полезной для вас и теперь использование tcpdump будет намного проще, если у вас остались вопросы, спрашивайте в комментариях!
На завершение видео с лекцией о tcpdump:
Мануал
tcpdump – это команда устранения неполадок сети, которая также известна как пакетный сниффер, используемый для захвата и отображения пакетов из сети.
tcpdump позволяет пользователям захватывать и отображать TCP / IP и другие пакеты, которые передаются или принимаются по сети, к которой подключен компьютер.
Он позволяет выполнять поиск в режиме реального времени путем перенаправления захваченных данных на grep или данные могут быть записаны в файл для последующего поиска. Вы можете применять фильтры к пакетам и избегать трафика, который вы не хотите видеть.
Для запуска команды tcpdump требуется root-доступ.
Вы можете захватить все данные, проходящие через вашу локальную сеть, и поместить эти данные в файл.
Он не отображает вывод в реальном времени на экран, но фиксирует пакеты в сети в указанном файле.
Вы можете сохранить все пакеты или часть пакетов (заголовок).
Вы можете выбрать захват и анализ трафика через один сетевой интерфейс или весь сетевой интерфейс. В
этой статье мы узнаем, как использовать команду tcpdump для анализа трафика, идущего на машину Linux.
Вывод tcpdump
Утилита tcpdump позволяет проверять заголовки пакетов TCP/IP и выводить одну строку для каждого из пакетов. Она будет делать это до тех пор, пока не нажать Ctrl + C.
Давайте рассмотрим одну строку из примера вывода:
Каждая строка включает:
- Метка времени Unix (20: 58: 26.765637)
- протокол (IP)
- имя или IP-адрес исходного хоста и номер порта (10.0.0.50.80)
- имя хоста или IP-адрес назначения и номер порта (10.0.0.1.53181)
- Флаги TCP (Flags [F.]). Указывают на состояние соединения и могут содержать более одного значения:
- o S — SYN. Первый шаг в установлении соединения
- F — FIN. Прекращение соединения
- — ACK. Пакет подтверждения принят успешно
- P — PUSH. Указывает получателю обрабатывать пакеты вместо их буферизации
- R — RST. Связь прервалась
Фильтры tcpdump
Фильтр выражений
Фильтр выражений выбирает, какие заголовки пакетов будут отображаться. Если фильтры не применяются, отображаются все заголовки пакетов.
Самые распространенные фильтры :
Фильтр портов
Фильт портов используется для просмотра пакетов, поступающих на определенный порт:
Фильтр хостов
Для перехвата пакетов, приходящих или исходящих от определенного хоста. Например, IP-адрес 10.0.2.15:
Для перехвата пакетов определенных типов протоколов. Например, icmp, на интерфейсе eth1:
Комбинирование фильтров
Фильтры можно комбинировать с помощью операторов:
Это позволит писать команды, которые могут более точно изолировать пакеты. Например, пакеты с определенного IP-адреса и для определенного порта:
Если нужно перехватить все пакеты кроме ICMP, используем оператор NOT:
5) Перехватить пакет из определенного порта
Вы можете перехватить пакеты с указанным номером порта с параметром port
6) Перехватить пакет, игнорируя определенный порт
Вы можете игнорировать порт при перехвате пакетов.
Это возможно при параметре not port
фильтр по порту
Используйте фильтр port для просмотра пакетов, поступающих на определенный порт:
4) Захват данных с использованием IP-адреса и порта
Вывод
Утилита tcpdump проста в настройке и освоении. Необходимо лишь немного разобраться с:
После чего tcpdump станет отличным помощником в вопросах обеспечения безопасности вашей сети.
Утилита tcpdump - это очень мощный и популярный инструмент для перехвата и анализа сетевых пакетов. Она позволяет просматривать все входящие и исходящие из определенного интерфейса пакеты и работает в командной строке. Конечно, вы могли бы пользоваться Wirshark для анализа сетевых пакетов, это графическая утилита, но иногда бывают ситуации когда нужно работать только в терминале.
Tcpdump ничем не хуже Wireshark, и имеет все необходимые возможности для анализа пакетов, к тому же вы можете сохранить все перехваченные пакеты в файл, чтобы анализировать их потом с помощью того же самого Wireshark. В этой статье мы рассмотрим как пользоваться tcpdump для перехвата сетевых пакетов.
Вывод tcpdump
Утилита tcpdump позволяет проверять заголовки пакетов TCP/IP и выводить одну строку для каждого из пакетов. Она будет делать это до тех пор, пока не нажать Ctrl + C.
Давайте рассмотрим одну строку из примера вывода:
Каждая строка включает:
- Метка времени Unix (20: 58: 26.765637)
- протокол (IP)
- имя или IP-адрес исходного хоста и номер порта (10.0.0.50.80)
- имя хоста или IP-адрес назначения и номер порта (10.0.0.1.53181)
- Флаги TCP (Flags [F.]). Указывают на состояние соединения и могут содержать более одного значения:
- o S — SYN. Первый шаг в установлении соединения
- F — FIN. Прекращение соединения
- — ACK. Пакет подтверждения принят успешно
- P — PUSH. Указывает получателю обрабатывать пакеты вместо их буферизации
- R — RST. Связь прервалась
Установка tcpdump
В дистрибутивах на основе Debian tcpdump можно установить с помощью команды APT:
В дистрибутивах на основе RPM tcpdump можно установить с помощью YUM:
В RHEL 8 с использование DNF:
7) Перехватывать пакеты из определенного протокола
Вы можете только захватить пакеты icmp или tcp
Вы можете просто заменить tcp на icmp для этого
Использование фильров tcpdump
Если фильтры не применяются вовсе, отображаются все заголовки пакетов.
Обычно используемые фильтры – это port, host, src, dst, tcp, udp, icmp.
фильтр по хосту
Для захвата всех пакетов, поступающих или исходящих из хоста с IP-адресом 10.0.2.15:
Чтобы захватить пакеты определенного типа протокола, например, icmp, на интерфейсе eth1:
3) Анализ конкретного интерфейса и ограничение пакетов
Теперь вы можете решить проанализировать трафик на указанном интерфейсе с параметром -i и ограничить количество пакетов для захвата с помощью -c
8) Запись журнала в определенный файл
Можно сохранить захваченные пакеты в файле.
По умолчанию при захвате пакетов в файл он сохраняет только 68 байтов данных из каждого пакета.
Остальная часть информации игнорируется.
Вы можете использовать -s, чтобы сообщить tcpdump, сколько байтов для каждого пакета сохранить и указать 0, поскольку длина моментального снимка пакетов указывает tcpdump на сохранение целого пакета.
1) Анализ трафика по всему интерфейсу
tcpdump по умолчанию не установлен, поэтому вам нужно установить его
Формат источника – source.port, где источником может быть имя хоста или IP-адрес.Пакет предназначен для флага 169.255.7.5.44284.
Вам нужно нажать кнопку отмены, чтобы остановить ее.
Если вам нужна дополнительная информация, tcpdump предоставляет несколько опций, которые улучшают или изменяют его вывод:
- -i интерфейс: прослушивание указанного интерфейса.
- -n: Не разрешать имена хостов. Вы можете использовать -nn, чтобы не разрешать имена хостов или имена портов.
- -t: Не печатать метку времени на каждой линии сброса.
- -X: Показать содержимое пакета как в hex, так и в ascii.
- -v, -vv, -vvv: увеличить количество информации о пакете, которую вы получите.
- -c N: Только получить N количество пакетов и затем остановить.
- -s: Определить привязку (размер) захвата в байтах. Используйте -s0, чтобы получить все, если вы не намеренно захватываете меньше.
- -S: печать абсолютных порядковых номеров.
- -q: Показывать меньше информации о протоколе.
- -w-файл: достаточно записать исходные пакеты в файл
Заключение
tcpdump прост в настройке, и как только вы поймете вывод, различные флаги и фильтры, его можно использовать для решения проблем с сетью и защиты вашей сети.
Anything in here will be replaced on browsers that support the canvas element
Уязвимость Log4j является одной из самых смертоносных проблем безопасности в современных системах. Логирование является ключевой функцией в современных приложениях, и библиотека логирования Log4j является лидером в этой области. Эта библиотека используется в большинстве приложений, сервисов и систем. Следовательно, все те приложения, в которых используется Log4j, подвержены этой уязвимости Log4j, обнаруженной в прошлом году. В связи […]
Самая распространенная команда Docker также является универсальной командой. Узнайте о нескольких вариантах использования команды docker ps. Одной из первых команд Docker, которую вы используете, является команда docker ps. Она показывает запущенные контейнеры: docker ps На самом деле, выполнив эту команду, вы получите список запущенных контейнеров и их уникальный ID контейнера, имя образа, команду, которую он […]
Passbolt – это менеджер паролей с открытым исходным кодом, который позволяет безопасно хранить и передавать учетные данные для входа на сайт, пароль роутера, пароль Wi-Fi и т.д. В этом руководстве будет показано, как установить Passbolt Community Edition (CE) на Ubuntu 22.04 с сервером базы данных PostgreSQL, который обычно быстрее, чем сервер базы данных MariaDB/MySQL. Особенности […]
socialscan – это инструмент командной строки для проверки использования электронной почты и имен пользователей социальных сетей на онлайн-платформах. Если задан адрес электронной почты или имя пользователя, socialscan возвращает, доступен ли он, занят или недействителен на онлайн-платформах. Другие подобные инструменты проверяют доступность имени пользователя, запрашивая страницу профиля рассматриваемого имени пользователя и на основе такой информации, как […]
14) Захват пакета с использованием диапазона портов
Для захвата сетевого трафика можно использовать ряд портов
Anything in here will be replaced on browsers that support the canvas element
Уязвимость Log4j является одной из самых смертоносных проблем безопасности в современных системах. Логирование является ключевой функцией в современных приложениях, и библиотека логирования Log4j является лидером в этой области. Эта библиотека используется в большинстве приложений, сервисов и систем. Следовательно, все те приложения, в которых используется Log4j, подвержены этой уязвимости Log4j, обнаруженной в прошлом году. В связи […]
Самая распространенная команда Docker также является универсальной командой. Узнайте о нескольких вариантах использования команды docker ps. Одной из первых команд Docker, которую вы используете, является команда docker ps. Она показывает запущенные контейнеры: docker ps На самом деле, выполнив эту команду, вы получите список запущенных контейнеров и их уникальный ID контейнера, имя образа, команду, которую он […]
Passbolt – это менеджер паролей с открытым исходным кодом, который позволяет безопасно хранить и передавать учетные данные для входа на сайт, пароль роутера, пароль Wi-Fi и т.д. В этом руководстве будет показано, как установить Passbolt Community Edition (CE) на Ubuntu 22.04 с сервером базы данных PostgreSQL, который обычно быстрее, чем сервер базы данных MariaDB/MySQL. Особенности […]
socialscan – это инструмент командной строки для проверки использования электронной почты и имен пользователей социальных сетей на онлайн-платформах. Если задан адрес электронной почты или имя пользователя, socialscan возвращает, доступен ли он, занят или недействителен на онлайн-платформах. Другие подобные инструменты проверяют доступность имени пользователя, запрашивая страницу профиля рассматриваемого имени пользователя и на основе такой информации, как […]
Мануал
Просмотр сведений о пакете
Пока мы видели только заголовки пакетов, а для просмотра содержимого нужно использовать параметр -A. Вывод содержимого будет в формате ASCII.
С помощью опции -X можно отобразить вывод в шестнадцатеричном формате, правда, это не сильно помогает в тех случаях, когда соединение зашифровано.
10) Захват пакетов с дополнительной информацией
Вы можете сканировать сеть более глубоко.
Вы можете использовать комбинации команд для фильтрации того, что вам нужно:
Установка
В дистрибутивах на основе Debian tcpdump можно установить с помощью команды APT:
Или используя DNF, если RHEL 8
Как выглядит вывод tcpdump?
tcpdump позволяет вам проверять заголовки пакетов TCP / IP.
Он выводит одну строку для каждого пакета, и команда продолжает работать, пока вы не нажмете Ctrl + C для завершения.
Давайте рассмотрим одну строку для примера из вывода:
- Метка времени Unix (20: 58: 26.765637)
- протокол (IP)
- имя хоста или IP-адрес источника и номер порта (10.0.0.50.80)
- имя хоста или IP адрес и номер порта (10.0.0.1.53181)
- Флаги TCP (Флаги [F.]). Флаги указывают на состояние соединения. М ожет включать более одного значения, как в этом примере [F.] для FIN-ACK. Это поле может иметь следующие значения:
- S – SYN. Первый шаг в установлении связи.
- F – FIN. Завершение соединения.
- , – ACK. Пакет подтверждения получен успешно.
- P – Push. Сообщает получателю обрабатывать пакеты, а не буферизировать их.
- R – RST. Связь прервана.
- Порядковый номер данных в пакете. (след. 1)
- Номер подтверждения (подтверждение 2)
- Размер окна (победа 453). Количество байтов, доступных в приемном буфере. Далее следуют параметры TCP.
- Длина полезных данных. (длина 0)
9) Чтение файла записи tcpdump
Вы не можете прочитать содержимое файла, который сохраняет пакеты tcpdump с помощью общих команд, таких как cat или less, то вам нужно использовать параметр -r команды tcpdump
Опции tcpdump
Запускать tcpdump нужно с правами root. Tcpdump включает в себя множество опций и фильтров. При запуске tcpdump без каких-либо параметров произойдет перехват всех пакетов, проходящих через интерфейс по умолчанию.
Вывести список доступных системе сетевых интерфейсов, в которых tcpdump может захватывать пакеты:
Очень полезно для систем, в которых нет команды для вывода списка интерфейсов.
Для захвата пакетов, проходящих через определенный интерфейс, используйте -i с именем интерфейса. Если не указать имя, тогда tcpdump подберет первый обнаруженный сетевой интерфейс.
- -v увеличивает количество отображаемой информации о пакетах
- -vv дает еще более подробную информацию
По умолчанию tcpdump преобразует IP-адреса в имена хостов, а также использует имена служб вместо номеров портов.
- -n Если DNS не работает или вы не хотите, чтобы tcpdump выполнял поиск имени.
- -tttt для использования более удобных временных меток (по умолчанию используются временные метки Unix)
12) Захват пакетов на получателе удаленным хостом
Можно отображать только пакеты с определенным назначением.
Например, вы можете показывать пакеты в пункте назначения маршрутизатору
Здесь вы можете увидеть пакеты replies
13) Захват как входящих, так и исходящих пакетов определенного хоста
В двух приведенных выше командах мы использовали src и dst для захвата входящих и исходящих пакетов с определенного хоста в два разных раза.
Но это можно сделать непосредственно в одной команде только с параметром хоста.
Сохранение заголовков в файл
Вывод tcpdump может довольно быстро перемещаться по экрану. В таких случаях можно сохранить заголовки пакетов в файле с опцией -w. Вывод сохраняется в файлы с расширением .pcap.
Следующая команда сохраняет 10 строк вывода интерфейса eth1 в icmp.pcap.
Прочитать этот файл можно с помощью опции -r
Установка tcpdump
Во многих дистрибутивах команда tcpdump поставляется по умолчанию, но если в вашем дистрибутиве ее нет, то вы можете очень просто ее установить из официальных репозиториев. Например, в Ubuntu/Debian:
sudo apt install tcpdum p
В Fedora/Red Hat/CentOS:
sudo yum install tcpdump
Когда установка завершится, вы можете переходить к работе.
Опции команды tcpdump
Для запуска tcpdump вы должны быть пользователем root.
Инструмент включает в себя множество опций и фильтров.
Запуск tcpdump без каких-либо опций захватит все пакеты, проходящие через интерфейс по умолчанию.
Чтобы увидеть список сетевых интерфейсов, доступных в системе и по которым tcpdump может захватывать пакеты:
Это особенно полезно в системах, в которых нет команды для вывода списка интерфейсов.
Для захвата пакетов, проходящих через определенный интерфейс, используйте флаг -i с именем интерфейса.
Без -i tcpdump подберет первый сетевой интерфейс, с которым столкнулся.
Флаг -v увеличивает количество информации, которую вы видите о пакетах, -vv дает вам еще больше деталей.
По умолчанию tcpdump резолвит IP-адреса в имена хостов, а также использует имена сервисов вместо номеров портов
Если DNS не работает или вы не хотите, чтобы tcpdump выполнял поиск имен, используйте параметр -n.
Чтобы захватить только определенное количество строк, скажем, 5, используйте флаг -c:
Объединение фильтров
Вы можете объединить эти выражения с операторами AND, OR и NOT.
Это позволит вам писать команды, которые могут более точно изолировать пакеты:
Пакеты с определенного IP и предназначеные для определенного порта:
2) Список доступных интерфейсов
Команда 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 - пользователь, от имени которого будут создаваться файлы.
Это не все опции, но их вам будет вполне достаточно для решения большинства задач. Чаще мы будем применять фильтры. С помощью фильтров вы можете отсеивать только те типы пакетов, которые хотите видеть. Вы можете фильтровать по ip адресу, протоколу, сети, интерфейсу и многим другим параметрам. Но фильтры tcpdump мы будем рассматривать уже на примерах.
Просмотр информации о пакете
До сих пор мы с вами видели только заголовки пакетов, а для просмотра содержимого пакета необходимо использовать опцию -A.
Инструмент выведет содержимое пакета в ASCII, что может помочь при устранении неполадок в сети.
Также флаг -X может использоваться для отображения вывода в шестнадцатеричном формате.
Это не сильно поможет, если соединение зашифровано.
Как пользоваться tcpdump
Перед тем как перейти к использованию tcpdump нужно посмотреть какие сетевые интерфейсы вы можете использовать. Для этого запустите команду с опцией -D:
Начнем рассматривать примеры tcpdump с захвата трафика на интерфейсе eth0, у меня это основной интерфейс, который подключен к интернету. Для работы программе необходимы права суперпользователя, поэтому не забудьте указать sudo:
sudo tcpdump -i eth0
Чтобы остановить работу команды нажмите Ctrl+C. В выводе вы сразу же увидите все перехваченные пакеты. Формат записи для каждого пакета будет выглядеть следующим образом:
Такой формат характерен для пакетов данных, в зависимости от протокола выделенный черным текст будет отличаться. Сначала идет временная метка, затем протокол, далее зеленым отмечен ip адрес отправителя, а синим адрес адресата, в данном случае, нашего компьютера. Дальше идут дополнительные параметры tcp и в конце размер пакета в байтах. Подробность вывода информации можно контролировать с помощью опций -v, Например:
sudo tcpdump -v -i eth0
Здесь уже появляется информация о протоколе IP:
IP (tos 0x0, ttl 64 , id 50309, offset 0, flags [DF], proto TCP (6) , length 64)
Мы можем узнать информацию о времени жизни пакета ttl, версию протокола TCP и длину поля заголовка. Опция -vv будет выводить проверку контрольных сумм пакета и содержимое в некоторых случаях.
После опций вы можете указывать фильтры для пакетов. Вот основные параметры, по которым можно отсеивать пакеты:
- host - имя хоста;
- ip - ip адрес;
- proto - протокол;
- net - адрес сети или подсети;
- port - адрес порта;
- src - параметр, касающийся отправителя;
- dst - параметр, касающейся получателя;
- Доступны такие протоколы: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp и udp.
Вы можете все это комбинировать между собой, чтобы получить желаемый результат. Рассмотрим более детально на примерах. Отсеем только пакеты, адресованные нашему компьютеру:
sudo tcpdump -i eth0 ip dst 192.168.1.2
Также мы можем отобрать пакеты, отправляемые на определенный узел:
Как видите, это DNS пакеты и здесь вместо флагов TCP содержится полезная информация, запрос ip адреса хоста. Также вы можете выбрать ответные пакеты от определенного хоста:
Здесь нет полного содержимого пакета, если вы хотите его получить нужно использовать опцию -v или -vv:
Из операций объедения доступны and и or, также можно применять скобки для обозначения приоритета. Вам необязательно указывать host, во многих случаях достаточно src или dst, утилита сама поймет что имелось в виду. Точно такую же конструкцию можно использовать для портов. Например, мы можем отсеять все запросы или ответы к DNS (на порт 53):
sudo tcpdump -vv -i eth0 port 53
sudo tcpdump -vv -i eth0 port 80
Естественно, тут тоже можно применять dst и src для более конкретных результатов. Вы можете фильтровать не один порт, а целый диапазон портов:
sudo tcpdump portrange 21-23
Если указать один из протоколов, вы отфильтруете только пакеты этого протокола, например tcp, udp или arp:
sudo tcpdump -vv arp
Точно также можно выбрать все udp пакеты:
sudo tcpdump -vv udp
Также доступен фильтр по обозначению сети:
sudo tcpdump net 129.168.1.1/24
Кроме того, вы можете фильтровать пакеты по их размеру, например, меньше 32 байт:
sudo tcpdump less 32
tcpdump greater 128
Иногда бывает необходимо сохранить захваченный трафик в файл, для этого используется опция -w:
sudo tcpdump -i eth0 -w file.pcap
Этот файл можно открыть с помощью любой программы для чтения таких файлов, например, Wireshark. Чтобы открыть сохраненные в файл пакеты используйте опцию -r:
sudo tcpdump -r file.pcap
Остался еще один момент, на который стоит обратить внимание. Это формат отображения содержимого пакетов. Вы можете вывести содержимое пакета в формате ASCII используйте опцию -A:
sudo tcpdump -A -i eth0
Также вы можете отобразить содержимое в формате HEX и ASCII для этого используйте -XX:
sudo tcpdump -XX -i eth0
Читайте также: