Tcpdump linux ������� ��������� ����
Welcome!
This is the official web site of tcpdump, a powerful command-line packet analyzer; and libpcap, a portable C/C++ library for network traffic capture.
In this page, you’ll find the latest stable version of tcpdump and libpcap, as well as current development snapshots, a complete documentation, and information about how to report bugs or contribute patches.
Documentation
Full documentation is provided with the source packages in man page format. People with Windows distributions are best to check the Windows PCAP page for references to WinDUMP. What follows are the man pages formatted in HTML (using man2html) and some tutorials written by external contributors.
Latest Releases
Tcpdump
Version: 4.99.1
Release Date: June 9, 2021
Download: tcpdump-4.99.1.tar.gz (changelog) (PGP signature and key)
This release contains initial work to redo how buffer overruns are handled. The next major release will be 5.0, and will have all the legacy ND_CHECK* macros removed, but this is taking longer than planned. No new code with ND_CHECK* will be accepted.
We maintain a list of public CVE information. This tcpdump release requires libpcap 1.10.1 in order to pass all test cases.
Libpcap
Version: 1.10.1
Release Date: June 9, 2021
Download: libpcap-1.10.1.tar.gz (changelog) (PGP signature and key)
Current Development Versions
The current development versions are freely accessible through the GitHub Git hosting site. tcpdump can be found at GitHub: tcpdump and libpcap can be found at GitHub: libpcap. You can clone these repositories with the following commands:
You can then configure and compile the source via the normal GNU autoconf method. The continuous integration systems below automatically build the current development versions of tcpdump and libpcap:
- Cirrus CI
- tcpdump
× - libpcap
× - tcpslice
×
- tcpdump
- OpenCSW Buildbot
- tcpdump
× - libpcap
×
- tcpdump
- AppVeyor CI
- tcpdump
× - libpcap
×
- tcpdump
- The Tcpdump Group Buildbot (infrastructure sponsored by sysmocom)
- tcpdump
× - tcpdump
× - tcpdump
× - libpcap
× - libpcap
× - libpcap
× - tcpslice
× - tcpslice
× - tcpslice
×
- tcpdump
- The Tcpdump Group Buildbot (infrastructure sponsored by OSU OSL)
- tcpdump
× - tcpdump
× - tcpdump
× - tcpdump
× - tcpdump
× - libpcap
× - libpcap
× - libpcap
× - libpcap
× - libpcap
× - tcpslice
× - tcpslice
× - tcpslice
× - tcpslice
× - tcpslice
×
- tcpdump
- The Tcpdump Group Buildbot (hardware sponsored by RISC-V International)
- tcpdump
× - libpcap
× - tcpslice
×
- tcpdump
- The Tcpdump Group Buildbot (own infrastructure)
- tcpdump
× - tcpdump
× - tcpdump
× - tcpdump
× - tcpdump
× - libpcap
× - libpcap
× - libpcap
× - libpcap
× - libpcap
× - tcpslice
× - tcpslice
× - tcpslice
× - tcpslice
× - tcpslice
×
- tcpdump
Mailing List
Patches, Bug Reports and Feature Requests
Bugs and patches are tracked through GitHub. Please submit them using the following resources:
- Submit bugs and feature requests on the issue tracker.
- Submit patches by forking the branch at GitHub: libpcap and issuing a pull request.
- Submit bugs and feature requests on the issue tracker.
- Submit patches by forking the branch at GitHub: tcpdump and issuing a pull request.
How to Contribute
Tcpdump and libpcap are open source software and anyone can make contributions. You can help by:
- downloading and testing libpcap and tcpdump on your platform
- contributing code
- proofreading the documentation and the man pages
- providing .pcap files for protocols or protocol features that tcpdump supports, but does not test yet
If you want to contribute, please subscribe to the tcpdump-workers mailing list. It’s a good idea to discuss bugfixes and new feature additions in advance, because the changes may have bigger implications than you think and your patch may not get accepted.
Contents
© 2010-2021 The Tcpdump Group. Designed by Luis MartinGarcia; based on a template by TEMPLATED. [Valid HTML 4.01] [Valid CSS]
Источник
Как пользоваться tcpdump
Утилита tcpdump — это очень мощный и популярный инструмент для перехвата и анализа сетевых пакетов. Она позволяет просматривать все входящие и исходящие из определенного интерфейса пакеты и работает в командной строке. Конечно, вы могли бы пользоваться Wirshark для анализа сетевых пакетов, это графическая утилита, но иногда бывают ситуации когда нужно работать только в терминале.
Tcpdump ничем не хуже Wireshark, и имеет все необходимые возможности для анализа пакетов, к тому же вы можете сохранить все перехваченные пакеты в файл, чтобы анализировать их потом с помощью того же самого Wireshark. В этой статье мы рассмотрим как пользоваться tcpdump для перехвата сетевых пакетов.
Установка tcpdump
Во многих дистрибутивах команда tcpdump поставляется по умолчанию, но если в вашем дистрибутиве ее нет, то вы можете очень просто ее установить из официальных репозиториев. Например, в Ubuntu/Debian:
sudo apt install tcpdum p
В Fedora/Red Hat/CentOS:
sudo yum install 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 — пользователь, от имени которого будут создаваться файлы.
Это не все опции, но их вам будет вполне достаточно для решения большинства задач. Чаще мы будем применять фильтры. С помощью фильтров вы можете отсеивать только те типы пакетов, которые хотите видеть. Вы можете фильтровать по ip адресу, протоколу, сети, интерфейсу и многим другим параметрам. Но фильтры tcpdump мы будем рассматривать уже на примерах.
Как пользоваться tcpdump
Перед тем как перейти к использованию tcpdump нужно посмотреть какие сетевые интерфейсы вы можете использовать. Для этого запустите команду с опцией -D:
Начнем рассматривать примеры tcpdump с захвата трафика на интерфейсе eth0, у меня это основной интерфейс, который подключен к интернету. Для работы программе необходимы права суперпользователя, поэтому не забудьте указать sudo:
sudo tcpdump -i eth0
Чтобы остановить работу команды нажмите Ctrl+C. В выводе вы сразу же увидите все перехваченные пакеты. Формат записи для каждого пакета будет выглядеть следующим образом:
13:03:41.795599 IP udp032919uds.hawaiiantel.net.6881 > 192.168.1.2.52055 : Flags [.], seq 640160396:640161844, ack 436677393, win 2050, options [nop,nop,TS val 3805626438 ecr 4677385], length 1448
Такой формат характерен для пакетов данных, в зависимости от протокола выделенный черным текст будет отличаться. Сначала идет временная метка, затем протокол, далее зеленым отмечен 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
Также мы можем отобрать пакеты, отправляемые на определенный узел:
sudo tcpdump -i eth0 dst host google-public-dns-a.google.com
Как видите, это DNS пакеты и здесь вместо флагов TCP содержится полезная информация, запрос ip адреса хоста. Также вы можете выбрать ответные пакеты от определенного хоста:
sudo tcpdump -i eth0 src host google-public-dns-a.google.com
Здесь нет полного содержимого пакета, если вы хотите его получить нужно использовать опцию -v или -vv:
sudo tcpdump -vv -i eth0 host dst google-public-dns-a.google.com
С помощью оператора and вы можете объединить несколько фильтров в один:
sudo tcpdump -i eth0 dst host google-public-dns-a.google.com and src host google-public-dns-a.google.com
Из операций объедения доступны and и or, также можно применять скобки для обозначения приоритета. Вам необязательно указывать host, во многих случаях достаточно src или dst, утилита сама поймет что имелось в виду. Точно такую же конструкцию можно использовать для портов. Например, мы можем отсеять все запросы или ответы к DNS (на порт 53):
sudo tcpdump -vv -i eth0 port 53
Точно такое же можно провернуть для http (порт 80):
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
Выводы
В этой статье мы рассмотрели как пользоваться tcpdump. Это очень мощный сетевой анализатор, который работает только через командную строку. Надеюсь, эта информация была полезной для вас и теперь использование tcpdump будет намного проще, если у вас остались вопросы, спрашивайте в комментариях!
На завершение видео с лекцией о tcpdump:
Источник