Tcpdump: Difference between revisions
No edit summary |
No edit summary |
||
| (5 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
Aleksei Pant |
|||
__TOC__ |
__TOC__ |
||
= Что такое Tcpdump = |
= Что такое Tcpdump = |
||
| Line 69: | Line 71: | ||
Эти команды вернут вывод только в том случае, если есть обмен данными по протоколу ICMP, UDP или TCP соответственно. |
Эти команды вернут вывод только в том случае, если есть обмен данными по протоколу ICMP, UDP или TCP соответственно. |
||
Также можно настроить tcpdump для захвата пакетов, относящихся к одному хосту. Это особенно полезно, когда все системы вашей сети функционируют, кроме одной. Этот фильтр позволяет производить точечные операции и ускоряет общий рабочий процесс устранения неполадок, поскольку не затрагивает все остальные данные. |
|||
Чтобы вывести захваченные пакеты, которые относятся к определенному хосту, нужно определить сетевой адрес хоста с помощью параметра '''host''': |
|||
<pre>sudo tcpdump host "хост-параметр"</pre> |
|||
[[File:ubuntu7_C18055.png|1000px]] |
|||
Подобно фильтру сетевого протокола, эта команда будет возвращать выходные данные только в том случае, если какая-либо текущая передача связана с определенным хостом. |
|||
Tcpdump оснащен параметром '''port''', позволяющим фильтровать сетевой трафик и захватывать только те пакеты, которые передаются на определенный порт или с него. |
|||
<pre>sudo tcpdump port "номер порта"</pre> |
|||
Также tcpdump позволяет просматривать содержимое захваченных пакетов, а также отображает на выходе их заголовки. Можно передать определенные параметры команде tcpdump, чтобы проверить содержимое захваченного пакета. |
|||
Вот как можно просмотреть содержимое первых 3-х пакетов: |
|||
<pre>sudo tcpdump -с 3 -x</pre> |
|||
[[File:ubuntu8_C18055.png|1000px]] |
|||
Если вы хотите просмотреть данные в формате ASCII, вы можете подставить параметр '''-A''': |
|||
<pre>sudo tcpdump -A</pre> |
|||
[[File:ubuntu9_C18055.png|1000px]] |
|||
Latest revision as of 18:41, 17 December 2022
Aleksei Pant
Что такое Tcpdump
Tcpdump — это утилита UNIX, позволяющая перехватывать и анализировать сетевой трафик, который проходит через компьютер, на котором данная программа запущена. Также существует клон tcpdump и для windows, WinDump. Это диагностический инструмент, позволяющий увидеть нам информацию о пакетах. Информация будет содержать сведения о том, откуда приходят входящие пакеты и куда направляются исходящие пакеты, предоставляя некоторую дополнительную информацию. Мы даже можем сохранить результат в файл, чтобы посмотреть его в случае необходимости.
Для выполнения программы требуется наличие прав суперпользователя и прямой доступ к устройству.
Пользователь может применять различные фильтры, чтобы сделать вывод более точным. Фильтр — это выражение, которое идет после параметров и позволяет нам выбирать пакеты, которые мы ищем. При отсутствии фильтров tcpdump будет сбрасывать весь трафик, видимый выбранным сетевым адаптером.
Для чего используется Tcpdump
- Для отладки приложений, использующих сеть для связи.
- Для отладки самой сети.
- Для захвата и чтения данных, отправленных другими пользователями или компьютерами. Пользователь, управляющий маршрутизатором, через который проходит незашифрованный трафик, может использовать tcpdump для получения паролей или другой информации.
Работа с Tcpdump
Чтобы начать работу, прежде всего, утилиту стоит установить. Для этого используем команду:
sudo apt-get install tcpdump
Выполнение tcpdump без параметров будет искать первый активный интерфейс. После этого утилита найдет и отобразит информацию о пакетах, входящих или исходящих с сетевого устройства. Процесс можно прервать комбинацией Ctrl+C. Заходим в терминал и пишем:
sudo tcpdump
После завершения команды на выходе мы получим следующую информацию, показывающую сколько пакетов было захвачено, сколько действительно получено и сколько покинуло ядро.
Отображение параметров
Для просмотра информации о трафике мы можем выбрать какой-нибудь другой интерфейс. Чтобы узнать, с какими интерфейсами будет работать tcpdump, используется параметр «-D», который отображает список устройств, которые можно использовать в качестве параметров. Для того, чтобы вывести этот список, используем команду:
sudo tcpdump -D
Альтернативой служит команда:
sudo tcpdump --list-interfaces
Далее просто указываем любой из предложенных интерфейсов для использования, например:
sudo tcpdump -i enp0s3
Также для удобства вместо названия интерфейса можно использовать номер его идентификатора в списке следующим образом:
sudo tcpdump -i "номер идентификатора"
Или:
sudo tcpdump --interface "номер идентификатора"
Ограничение количества пакетов для захвата
В случае, когда мы хотим ограничить вывод определенным количеством пакетов, мы можем использовать параметр -c, благодаря которому мы указываем, сколько пакетов мы хотим захватить и отобразить информацию после вывода заданного нами числа пакетов. Для примера ограничим вывод до 10-ти штук командой
sudo tcpdump -c 10
Поскольку пакеты получаются по несколько штук единовременно, то на выходе количество захваченных и количество полученных пакетов отличается, так как мы ограничили вывод до 10-ти. Как итог получаем:
Сохранение вывода tcpdump в файл
Tcpdump может сохранить результат в файл, на который позже можно будет ссылаться. Для этого мы будем использовать параметр -w вместе с именем файла, чтобы записать его. После выполнения tcpdump сохранит захваченные данные в файле .pcap, который впоследствии можно будет проанализировать с помощью tcpdump или других инструментов мониторинга сети.
Чтобы сохранить вывод инструмента в файл, нам нужно будет присвоить ему любое имя, которое мы хотим. Например:
sudo tcpdump -w world.dump
Чтобы прочитать этот файл используется параметр -r:
sudo tcpdump -r world.dump
Фильтры tcpdump
tcpdump способен захватывать огромное количество трафика за один запуск. Очень часто такой большой и ненужный поток информации может сбить с толку при расследовании или устранении неполадок с конкретным хостом или сетевым протоколом. Именно поэтому эта утилита обладает несколькими фильтрами. Вы можете добавить к команде tcpdump определенные параметры, чтобы отфильтровать сетевой трафик и захватить определенные пакеты.
Чтобы отфильтровать пакеты, передаваемые по определенному протоколу, нужно ввести имя протокола с помощью команды tcpdump. После этого будут захватываться только те пакеты, которые передаются по заданному сетевому протоколу.
Например, для захвата пакетов на основе ICMP нужно просто приписать icmp в конце команды tcpdump. Команды udp и tcp работают аналогично, если вы хотите перехватывать только пакеты UDP или TCP.
sudo tcpdump icmp
sudo tcpdump upd
sudo tcpdump tcp
Эти команды вернут вывод только в том случае, если есть обмен данными по протоколу ICMP, UDP или TCP соответственно.
Также можно настроить tcpdump для захвата пакетов, относящихся к одному хосту. Это особенно полезно, когда все системы вашей сети функционируют, кроме одной. Этот фильтр позволяет производить точечные операции и ускоряет общий рабочий процесс устранения неполадок, поскольку не затрагивает все остальные данные.
Чтобы вывести захваченные пакеты, которые относятся к определенному хосту, нужно определить сетевой адрес хоста с помощью параметра host:
sudo tcpdump host "хост-параметр"
Подобно фильтру сетевого протокола, эта команда будет возвращать выходные данные только в том случае, если какая-либо текущая передача связана с определенным хостом.
Tcpdump оснащен параметром port, позволяющим фильтровать сетевой трафик и захватывать только те пакеты, которые передаются на определенный порт или с него.
sudo tcpdump port "номер порта"
Также tcpdump позволяет просматривать содержимое захваченных пакетов, а также отображает на выходе их заголовки. Можно передать определенные параметры команде tcpdump, чтобы проверить содержимое захваченного пакета.
Вот как можно просмотреть содержимое первых 3-х пакетов:
sudo tcpdump -с 3 -x
Если вы хотите просмотреть данные в формате ASCII, вы можете подставить параметр -A:
sudo tcpdump -A