Windump

Обмен здоровыми данными

Обмен даными происходит при помощи пакетов с установленным флагом PUSH, для сжатости в tcpdump он обозначается как P, в скобочках указывается полезная нагрузка. И по-прежнему каждый посланный пакет подтверждается с иной стороны. На самом деле это довольно сложный этап, при котором может происходить много разных событий, например один из партнеров перестал передавать данные и не подтвердил приобретенные пакеты от сервера. В самом протоколе TCP заложены механизмы в случае появления непредвиденной ситуации во время передавания данных, однако рассматривать их сейчас – значит углубиться еще дальше в работу протокола, что сейчас мне не хотелось бы делать.

Анализ sip трафика asterisk с помощью sngrep

Давайте посмотрим, что у нас происходит во время регистрации у провайдера. В данном случае это проект zadarma. Запускаем в одной консоли sngrep, а в другой выполняем команду, в результате которой в том числе обновятся все регистрации.

# asterisk -rx "sip reload"

Смотрим консоль с sngrep. Там появилась строка с командой register.

Выбираем ее и жмем Enter. Проваливаемся в более подробную информацию о событии. Направления стрелок указывают направления передачи информации. Сначала наш сервер отправил запрос на регистрацию.

Потом удаленный сервер прислал ответ о том, что все в порядке.

Обращаю внимание на выделенный параметр expires=120. Это время действия регистрации, которую установил для нас сервер

Она равна двум минутам. Если мы посмотрим на левый столбец последнего скрина, то заметим, что повторный запрос на регистрацию нашим сервером был отправлен через 105 секунд. Это время expires — 15 секунд.

Дальше подключим нового абонента к нашему серверу и посмотрим на его регистрацию. Это будет софтофон с номером 100.

Смотрим подробности обмена информацией.

Клиент с user-agent 3CXPhone запросил регистрацию с временем 120. Наш сервер зарегистрировал его с указанными параметрами.

Теперь предположим, что к нам подключается очень много клиентов и мы хотим увеличить интервал регистрации с 120 секунд до 600 (10 минут), чтобы на сервер сыпалось поменьше запросов. Мы можем указать этот параметр на стороне каждого клиента, но это более хлопотно. Вместо этого изменим минимальное время регистрации на сервере. Проверим, какое оно установлено сейчас.

# asterisk -rx "sip show settings" | grep "Reg. min duration\|Reg. max duration\|Reg. default duration"

Reg. min duration 60 secs
Reg. max duration: 3600 secs
Reg. default duration: 120 secs

Изменим параметр Reg. default duration и Reg. min duration до 600 секунд. Для этого добавляем в sip.conf в блок параметры.

defaultexpiry=600
minexpiry=600

Перечитываем настройки.

# asterisk -rx "sip reload"

Открываем в консоли sngrep и снова подключаемся тем же софтфоном. Проверяем регистрацию.

Клиент шлет запрос с Expires: 120, мы ему подтверждаем регистрацию с нашим временем — 600.

Повторно за регистрацией абонент придет теперь только через 10 минут.

Проблема +arplookup 0.0.0.0 failed: host is not on local network

Лечение: запускаем команду и ищем MAC c ошибкой

# tcpdump -vvv -n -l -e arp | grep 0.0.0.0
...
16:43:57.407018 00:0e:89:1d:cc:87 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: arp who-has 86.90.285.175 (00:50:fc:f0:3e:e9) tell 0.0.0.0
...

arplookup 0.0.0.0 failed: host is not on local network

Default route 0.0.0.0

# tcpdump -vvv -n -l -e arp
# tcpdump -i rl1 -vvv -n -l -e arp

arpdig – dig an interface for arp responses. Выводит соответствие между IP и MAC. Пример использования:

# arpdig 195.143.151.1/28

gratuitous arp — самообращенные запросы. При таком запросе инициатор формирует пакет, где в качестве IP используется его собственный адрес.

arping — Работа с ARP протоколом: очистка таблицы level «ping» utility Пример использования:

for /l %i in (1,1,254) do ping -n 1 -w 1 192.168.1.%i
arp -a | find "арп"

Установка

Большинство разработчиков операционных систем на базе Linux включают утилиту tcpdump в список предустановленных, но если по какой-то причине она в вашем дистрибутиве отсутствует, ее можно всегда скачать и установить через «Терминал». Если у вас ОС основана на Debian, а это Ubuntu, Linux Mint, Kali Linux и им подобные, нужно выполнить эту команду:

При установке вам нужно ввести пароль

Обратите внимание, что при наборе он не отображается, также для подтверждения установки нужно ввести символ «Д» и нажать Enter

Если у вас Red Hat, Fedora или CentOS, то команда для установки будет иметь следующий вид:

После того как утилита будет установлена, ей сразу же можно пользоваться. Об этом и о многом другом будет рассказано дальше по тексту.

Examples of usage

TCPdump allows write a sniff to a file or display it realtime. It provides several ways how to use it for DNS analysis.

1) Detailed description of the example one: capturing DNS on the fly

tcpdump -i eth0 udp port 53

this example display lines of UDP datagrams exchanged on the UDP port number 53 (dns service) captured on the eth0 interface (-i eth0 specify it)

root@palo-Xubuntu:~# tcpdump -i eth0 udp port 53

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:42:12.989067 IP 10.0.2.15.11008 > castor.kis.fri.uniza.sk.domain: 17791+  A? voip.kis.fri.uniza.sk. (50)
14:42:12.989655 IP castor.kis.fri.uniza.sk.domain > 10.0.2.15.11008: 17791* 1/1/1 A 158.193.152.2 (99)

A DNS query is generally formatted as

              src > dst: id op? flags qtype qclass name (len)

where:

  • src is a host with IP address 10.0.2.15,
  • dst is a destination, i.e. an IP address or a dns name of your preconfigured DNS server, here castor.kis.fri.uniza.sk, this resolving can be turned of using the -n swtich. Then we would see an IP addres there, here  158.193.152.2.
  • id is the query ID, 17991 here
  • op is ommited here
  • qtype means the type of DNS query here A? means the Address Resoruce Record
  • (len) is the query length not including transport headers, 50B here

DNS server responses are formatted as

src > dst:  id op rcode flags a/n/au type class data (len)

where in our example we can see

castor.kis.fri.uniza.sk.domain > 10.0.2.15.11008: 17791* 1/1/1 A 158.193.152.2 (99)
  • src is a dns server name or an IP address, here castor.kis.fri.uniza.sk, this resolving can be turned of using the -n switch. Then we would see an IP address there, here  158.193.152.2.
  • dst is a destination, i.e. asking node  IP address or a dns name, here 10.0.2.15,.
  • id is the answer on a query with number, here 17991

    • a/ the number of answer records
    • /n the number of name server records
    • au the number of additional records
  • here we have 1 answer 1 name server and 2 additional records
  • type means the type of DNS query. HEre it was A
  • (len) is the query length not including transport headers, 99B here

Программная реализация

Программа состоит из двух основных частей: части захвата пакетов (обращение к библиотеке, libpcap (Unix) или pcap (Windows)) и части отображения захваченных пакетов (которая на уровне исходного кода является модульной и для поддержки нового протокола достаточно добавить новый модуль).

Часть захвата пакетов (при запуске) передаёт «выражение выбора пакетов» (идущее после всех параметров командной строки) напрямую библиотеке захвата пакетов, которая проверяет выражение на синтаксис, компилирует его (во внутренний формат данных), а затем копирует во внутренний буфер программы сетевые пакеты, проходящие через выбранный интерфейс и удовлетворяющие условиям в выражении.

Часть отображения пакетов выбирает захваченные пакеты по одному из буфера, заполняемого библиотекой, и выводит их (в воспринимаемом человеком виде) на стандартный вывод построчно, в соответствии с заданным (в командной строке) уровнем детальности.

Если задан подробный вывод пакетов, программа проверяет для каждого сетевого пакета, имеется ли у неё модуль расшифровки данных, и, в случае наличия, соответствующей подпрограммой извлекает (и отображает) тип пакета в протоколе или передаваемые в пакете параметры.

Синтаксис

Как и любая другая команда, tcpdump имеет свой синтаксис. Зная его, вы сможете задавать все необходимые параметры, которые будут учитываться при выполнении команды. Синтаксис имеет следующий вид:

При использовании команды вам обязательно необходимо указывать интерфейс для отслеживания. Фильтры и опции — это не обязательные переменные, но они позволяют выполнить более гибкую настройку.

Опции

Хоть опцию и не обязательно указывать, перечислить доступные все же нужно. В таблице продемонстрирован не весь их список, а только наиболее популярные, но их с лихвой хватит, чтобы решить большинство поставленных задач.

Опция Определение
-A Позволяет отсортировать пакеты с форматом ASCII
-l Добавляет функцию прокрутки
-i После ввода нужно указать сетевой интерфейс, который будет отслеживаться. Чтобы начать отслеживать все интерфейсы, впишите после опции слово «any»
-c Завершает процесс отслеживания после проверки указанного количества пакетов
-w Генерирует текстовый файл с отчетом проверки
-e Показывает уровень интернет-соединения пакета данных
-L Выводит только те протоколы, которые поддерживает указанный сетевой интерфейс
-C Создает другой файл во время записи пакета, если его размер больше заданного
-r Открывает файл для чтения, который был создан с помощью опции -w
-j Для записи пакетов будет использоваться формат TimeStamp
-J Позволяет просмотреть все доступные форматы TimeStamp
-G Служит для создания файла с логами. Опция требует также указания временного значения, по истечении которого будет создаваться новый лог
-v, -vv, -vvv В зависимости от количества символов в опции, вывод команды будет становиться подробнее (увеличение прямо пропорционально количеству символов)
-f В выводе показывает имя домена адресов IP
-F Позволяет считывать информацию не из сетевого интерфейса, а из указанного файла
-D Демонстрирует все сетевые интерфейсы, которые можно использовать
-n Деактивирует отображение доменных имен
-Z Задает пользователя, под учетной записью которого будут созданы все файлы
-K Пропуск анализа контрольных сумм
-q Демонстрация краткой информации
-H Позволяет обнаружить заголовки 802.11s
-I Используется при захвате пакетов в режиме монитора

Разобрав опции, чуть ниже мы перейдем непосредственно к их применениям. А пока что будут рассмотрены фильтры.

Фильтры

Как говорилось в самом начале статьи, вы можете добавлять в синтаксис tcpdump фильтры. Сейчас будут рассмотрены наиболее популярные из них:

Фильтр Определение
host Служит для указания имени хоста
net Указывает IP подсети и сети
ip Служит для указания адреса протокола
src Выводит пакеты, которые были отправлены с указанного адреса
dst Выводит пакеты, которые были получены указанным адресом
arp, udp, tcp Фильтрация по одному из протоколов
port Отображает информацию, относящуюся к определенному порту
and, or Служит для объединения нескольких фильтров в команде
less, greater Вывод пакетов меньше или больше указанного размера

Все вышеперечисленные фильтры можно комбинировать между собой, таким образом, в выдаче команды вы будете наблюдать только ту информацию, которую желаете увидеть. Чтобы более детально разобраться в использовании вышеперечисленных фильтров, стоит привести примеры.

tcpdump для VoIP SIP H.323

Ключ -w применяется для записи данных в отдельный файл. Прочитать это файл можно применяя ключи -r и -X(показать заголовки), например:

# tcpdump -r tcpdumplog
# tcpdump -X -r tcpdumplog
# tcpdump -i eth0 -n port 5060 -w mbill
or
# tcpdump -i eth0 -n -s 0 port 5060 -vvv -w /home/capture_file_name
or 
# tcpdump -i eth0 -n host 89.31.241.2 -vvv -w /home/textcall

Анализирует траффик удаленно через SSH с помощью Wireshark

ssh root@HOST tcpdump -U -s0 -w - 'not port 22' | wireshark -k -i -

UDP трафик с и на IP xxx.xxx.xxx.251 destined for port 5060:

# tcpdump -nnvvS udp and host xxx.xxx.xxx.251 and dst port 5060

Записать в файл mbill251 весь трафик с хоста xxx.xxx.xxx.251 за исключением трафика ssh

# tcpdump -n -i eth0 host xxx.xxx.xxx.251 -vvv and not port 22 -w /home/mbill251

Прослушать порт 5060 с ip xxx.xxx.xxx.251

tcpdump -i eth0 -n -s 0 port 5060 and host xxx.xxx.xxx.251 -vvv -w /usr/local/tcpdumplog/log
tcpdump -i eth0 -n -s 0 port 1720 and host xxx.xxx.xxx.251 -vvv -w /usr/local/tcpdumplog

H.323 сигналинг ловим с двух IP. В таком виде с двух IP отказалось снимать, может быть OR нужно было поставить.

# tcpdump -i eth0 -n -s 0 port 1720 and host xxx.xxx.164.1 and host xxx.xxx.107.1 -vvv -w /usr/local/tcpdumplog/logfile

Фильтрующие выражения tcpdump

В команде tcpdump возможно задать фильтрующее правило. Фильтрующее выражение состоит из параметра отбора пакетов и значения задаваемого параметра. Например, команда

debian:~# tcpdump -i eth0 host 10.0.0.1

имеет опцию -i eth0, задающую прослушиваемый интерфейс eth0 и фильтрующее выражение, заставляющее tcpdump отображать все пакеты, у которых в поле отправителя и в поле получателя стоит адрес 10.0.0.1. При этом, host — это параметр отбора, а 10.0.0.1 — это значение параметра.

Фильтрующие выражения можно комбинировать между собой с помощью дополнительных операторов and, or и not. C помощью этих операторов можно строить довольно сложные логические конструкции, группируя параметры в скобки. Например, команда:

debian:~# tcpdump -i eth0 dst 10.0.0.5 and port 53

ограничит отображение только пакетами отправленные на хост 10.0.0.5 по протоколу DNS (порт 53).

Наиболее часто используемые фильтрующие параметры команды tcpdump:

dst хост

Проверяет, совпадает ли адрес получателя IP-пакета с указанным значением. Возможно задавать как IP, подсеть в формате 10.0.0.1/24, так и имя хоста.

src хост

Проверяет, совпадает ли адрес отправителя IP пакета с указанным значением. Возможно задавать как IP, подсеть в формате 10.0.0.1/24, так и имя хоста.

host хост

Проверяет, совпадает ли адрес отправителя или получателя с заданным значением. Возможно задавать как IP, подсеть в формате 10.0.0.1/24, так и имя хоста.

net имя_сети

Проверяется, находится ли адрес отправителя/получателя в заданной сети. Возможно указание сети в формате CIDR (например 10.0.0.1/22), либо указание имени сети, заданной в файле /etc/networks.

ip | arp | rarp | tcp | udp | icmp [хост]

Проверяет, принадлежит ли пакет одному из указанных протоколов и при указании адреса хоста проверяет, совпадает ли адрес отправителя\получателя с заданным. Возможно задавать как IP, подсеть в формате 10.0.0.1/24, так и имя хоста.

[tcp | udp] dst port номер_порта

Проверяется, принадлежит ли пакет протоколу TCP/UDP и равен ли порт назначения заданному. Можно указать номер порта, либо имя, заданное в файле /etc/services.

[tcp | udp] src port номер_порта

Проверяется, принадлежит ли пакет протоколу TCP/UDP и равен ли порт источника заданному. Можно указать номер порта, либо имя, заданное в файле /etc/services.

[tcp | udp] port номер_порта

Проверяется, принадлежит ли пакет протоколу TCP/UDP и равен ли порт назначения или источника заданному. Можно указать номер порта, либо имя, заданное в файле /etc/services.

ip broadcast

Проверяется, является ли IP пакет широковещательным.

ether { src | dst | host } MAC_адрес

Проверяется, принадлежит ли сетевой пакет источнику, назначению, источнику или назначению имеющему заданный MAC_адрес.

ether broadcast

Проверяется, является ли ARP-пакет широковещательным.

Как пользоваться tcpdump

Перед тем как перейти к использованию tcpdump нужно посмотреть какие сетевые интерфейсы вы можете использовать. Для этого запустите команду с опцией -D:

Начнем рассматривать примеры tcpdump с захвата трафика на интерфейсе eth0, у меня это основной интерфейс, который подключен к интернету. Для работы программе необходимы права суперпользователя, поэтому не забудьте указать sudo:

Чтобы остановить работу команды нажмите 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 , length 1448

Такой формат характерен для пакетов данных, в зависимости от протокола выделенный черным текст будет отличаться. Сначала идет временная метка, затем протокол, далее зеленым отмечен ip адрес отправителя, а синим адрес адресата, в данном случае, нашего компьютера. Дальше идут дополнительные параметры tcp и в конце размер пакета в байтах. Подробность вывода информации можно контролировать с помощью опций -v, Например:

Здесь уже появляется информация о протоколе IP:

IP (tos 0x0, ttl 64, id 50309, offset 0, flags , 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.

Вы можете все это комбинировать между собой, чтобы получить желаемый результат. Рассмотрим более детально на примерах. Отсеем только пакеты, адресованные нашему компьютеру:

Также мы можем отобрать пакеты, отправляемые на определенный узел:

Как видите, это DNS пакеты и здесь вместо флагов TCP содержится полезная информация, запрос ip адреса хоста. Также вы можете выбрать ответные пакеты от определенного хоста:

Здесь нет полного содержимого пакета, если вы хотите его получить нужно использовать опцию -v или -vv:

С помощью оператора and вы можете объединить несколько фильтров в один:

Из операций объедения доступны and и or, также можно применять скобки для обозначения приоритета. Вам необязательно указывать host, во многих случаях достаточно src или dst, утилита сама поймет что имелось в виду. Точно такую же конструкцию можно использовать для портов. Например, мы можем отсеять все запросы или ответы к DNS (на порт 53):

Точно такое же можно провернуть для http (порт 80):

Естественно, тут тоже можно применять dst и src для более конкретных результатов. Вы можете фильтровать не один порт, а целый диапазон портов:

Если указать один из протоколов, вы отфильтруете только пакеты этого протокола, например tcp, udp или arp:

Точно также можно выбрать все udp пакеты:

Также доступен фильтр по обозначению сети:

Кроме того, вы можете фильтровать пакеты по их размеру, например, меньше 32 байт:

Или больше 128:

Иногда бывает необходимо сохранить захваченный трафик в файл, для этого используется опция -w:

Этот файл можно открыть с помощью любой программы для чтения таких файлов, например, Wireshark. Чтобы открыть сохраненные в файл пакеты используйте опцию -r:

Остался еще один момент, на который стоит обратить внимание. Это формат отображения содержимого пакетов

Вы можете вывести содержимое пакета в формате ASCII используйте опцию -A:

Также вы можете отобразить содержимое в формате HEX и ASCII для этого используйте -XX:

Практические примеры tcpdump в Linux

Во многих из этих примеров tcpdump linux есть ряд способов для достижения нужного результата. Как видно из некоторых примеров, можно захватывать пакеты вплоть до отдельных битов.

Метод, который вы будете использовать, будет зависеть от вашего желаемого выхода и количества трафика. Захват трафика на занятой гигабитной линии связи может заставить вас использовать специальные низкоуровневые фильтры пакетов.

При устранении неполадок на сети вы, как правило, просто хотите получить быстрый результат. Фильтрация по порту и выбор вывода ascii в сочетании с grep, cut или awk часто дают такой результат. Вы всегда можете углубиться в пакет, если требуется.

Например, при получении HTTP-запросов и ответов вы можете отфильтровать все пакеты, кроме данных, удалив SYN / ACK / FIN, однако, если вы используете grep, лишнее все равно будет отфильтровано. Будьте проще.

Это можно увидеть в следующих примерах tcpdump linux, где цель состоит в том, чтобы получить результат самым простым (и, следовательно, самым быстрым) способом.

Извлечение имени пользователя HTTP

Извлечение имени пользователя HTTP из заголовка запроса HTTP.

Извлечение HTTP-паролей в POST-запросах.

Получим несколько паролей из данных POST. Будет включать Host: и запрос местоположения, чтобы мы знали, для чего используется пароль.

Захват всех ICMP-пакетов

Посмотреть все пакеты ICMP на интерфейсе.

Захват электронной почты SMTP / POP3

Можно извлечь тело письма и другие данные, в этом примере мы только анализируем получателей электронной почты.

Захват трафика IPv6

Захват трафика IPv6 с помощью фильтра ip6. В этих примерах мы указали протоколы TCP и UDP, используя proto 6 и proto 17.

Как работает Tcpdump

Tcpdump печатает заголовки пакетов в сетевом интерфейсе, которые соответствуют логическому выражение , Его также можно запустить с помощью-w , который заставляет его сохранять данные пакета в файл для последующего анализа и / или с помощью-р флаг, который заставляет его считывать из сохраненного пакетного файла, а не читать пакеты из сетевого интерфейса. Во всех случаях только пакеты, которые соответствуют выражение будут обрабатываться ТСРйитр .

Tcpdump будет, если не будет работать с-с flag, продолжить сбор пакетов до тех пор, пока он не будет прерван сигналом SIGINT (сгенерированный, например, путем ввода символа прерывания, обычно Ctrl + C,) или сигнал SIGTERM (обычно генерируемый с помощьюубийство(1)); если запустить-с флаг, он будет захватывать пакеты до тех пор, пока не будет прерван сигналом SIGINT или SIGTERM или не будет обработано указанное количество пакетов.

Переключатели, упомянутые выше, подробно описаны ниже в этой статье.

когда ТСРйитр завершает захват пакетов, он будет сообщать о количестве:

  • Пакеты, полученные фильтром.
    • Смысл этого зависит от ОС, на которой вы работаете ТСРйитр , и, возможно, по пути настройки ОС. Если в командной строке был указан фильтр, то на некоторых ОС он подсчитывает пакеты независимо от того, были ли они сопоставлены выражением фильтра, а на других он учитывает только пакеты, которые были сопоставлены выражением фильтра и обрабатывались ТСРйитр.
  • Пакеты «отбрасываются ядром».
    • Это количество пакетов, которые были удалены из-за нехватки пространства в буфере, механизмом захвата пакетов в ОС, на котором ТСРйитр выполняется, если ОС сообщает эту информацию приложениям. Если нет, то будет сообщено как 0.

На платформах, поддерживающих сигнал SIGINFO, таких как большинство BSD (Berkeley Software Distributions), он будет сообщать о таких подсчетах, когда он получает сигнал SIGINFO (сгенерированный, например, путем ввода вашего символа «статус», обычно Ctrl + T,) и будет продолжать сбор пакетов.

Пример отчета tcpdump

Ниже представлен пример отчета сетевого трафика в tcpdump: клиент делает запрос страницы из браузера, приобретает необходимые данные, а затем закрывает соединение. Этот простейший отчет не выделяется неизвестно чем особенным. На загруженном сервере подобные записи наверняка просто игнорируются, однако наша мишень – научиться читать эти отчеты, для того, чтобы в дальнейшем перейти к более сложным записям. В этом случае мы рассматриваем стандартное TCP – соединение.

Для более понятного восприятия, я разделил данный отчет на 3 этапа, сам Tcpdump конечно же ничего подобного не делает. Ниже я подробно обрисую каждую процедуру.

1 этап

  • 07:18:54.437096 192.168.0.4.1026 > 192.168.0.1.80: S 3292064290:3292064290(0) win 5840 <mss 1460>
  • 07:18:54.445895 192.168.0.1.80 > 192.168.0.4.1026: S 3900383410:3900383410(0) ack 3292064291 win 5792 <mss 1460>
  • 07:18:54.449874 192.168.0.4.1026 > 192.168.0.1.80: . ack 1 win 5840

2 шаг

  • 07:18:54.449921 192.168.0.4.1026 > 192.168.0.1.80: P 1:566(565) ack 1 win 5840
  • 07:18:54.450152 192.168.0.1.80 > 192.168.0.4.1026: . ack 566 win 6780
  • 07:18:54.505579 192.168.0.1.80 > 192.168.0.4.1026: P 1:321(320) ack 566 win 6780
  • 07:18:54.506535 192.168.0.4.1026 > 192.168.0.1.80: . ack 321 win 6432

3 шаг

  • 07:18:54.565873 192.168.0.4.1026 > 192.168.0.1.80: F 566:566(0) ack 322 win 6432
  • 07:18:54.565954 192.168.0.1.80 > 192.168.0.4.1026: . ack 567 win 6780
  • 07:18:54.56708 192.168.0.1.80 > 192.168.0.4.1026: F 321:321(0) ack 566 win 6780
  • 07:18:54.567954 192.168.0.4.1026 > 192.168.0.1.80: . ack 322 win 6432

Before we proceed

Some basics about how to run tcpdump in your server in the right way.

Make sure tcpdump is installed and configured properly

[root@mwiws01 ~]# tcpdump --version
tcpdump version 4.9.2
libpcap version 1.5.3
OpenSSL 1.0.2k-fips 26 Jan 2017

Use the right interface name (or) use any in the interface name.

To Get the interface name of your IP which you need to specify it in the tcpdump command.  you can execut the command ifconfig (or) ip a

In my case, My web server IP is 192.168.10.10 so I should pick and use the interface name of the same enp0s8

Once you found your interface. In the requests you are going to track. you must mention the interface name

tcpdump -i enp0s8

you can optionally monitor all the available interfaces by mentioning

tcpdump -i any

Now we are All ready to Play.

Ключи

ключ описание
-a Преобразовывает сетевые и широковещательные адреса в доменные имена.
-e Отображает данные канального уровня (MAC-адрес, протокол, длина пакета). Помимо IP-адресов будут отображаться MAC-адреса компьютеров.
-F файл Использовать фильтр, находящийся в файле. Если вы используете этот параметр, фильтр из командной строки будет игнорироваться.
-i Указывает на то, какой сетевой интерфейс будет использоваться для захвата пакетов. По умолчанию — eth0, для выбора всех интерфейсов — any. Если отсутствует локальная сеть, то можно воспользоваться интерфейсом обратной связи lo.
-l Использовать стандартный потоковый вывод tcpdump (stdout), например для записи в файл:

shell# tcpdump -l | tee out.log //отобразит работу tcpdump и сохранит результат в файле out.log
-N Не добавляет доменное расширение к именам узлов. Например tcpdump отобразит ‘net’ вместо ‘net.library.org’
-n Отображает IP-адрес вместо имени хоста.
-nn Отображает номер порта вместо используемого им протокола.
-p Не переводит интерфейс в режим приема всех пакетов (promiscuous mode).
-q Выводит минимум информации. Обычно это имя протокола, откуда и куда шел пакет, порты и количество переданных данных.
-r Этот параметр позволяет tcpdump прочесть трафик из файла, если он был предварительно сохранен параметром -w.
-S Позволяет не обрабатывать абсолютные порядковые номера (initial sequence number — ISN) в относительные.
-s число Количество байтов пакета, которые будет обрабатывать tcpdump. При установке большого числа отображаемых байтов информация может не уместиться на экране и её будет трудно изучать. В зависимости от того, какие цели вы преследуете, и следует выбирать значение этого параметра. По умолчанию tcpdump захватывает первые 68 байт (для SunOS минимум 96 байт), однако если вы хотите увидеть содержимое всего пакета, используйте значение в 1514 байт (максимально допустимый размер кадра в сети Ethernet).
-t Не отображает метку времени в каждой строке.
-T тип Интерпретация пакетов заданного типа. Поддерживаются типы aodv, cnfp, rpc, rtp, rtcp, snmp, tftp, vat, wb.
-tt Отображает неформатированную метку времени в каждой строке.
-tttt Показывает время вместе с датой.
-v Вывод подробной информации (TTL; ID; общая длина заголовка, а также его параметры; производит проверку контрольных сумм IP и ICMP-заголовков)
-vv Вывод ещё более полной информации, в основном касается NFS и SMB.
-vvv Вывод максимально подробной информации.
-w файл Сохраняет данные tcpdump в двоичном формате. Преимущества использования данного способа по сравнению с обычным перенаправлением в файл является высокая скорость записи и возможность чтения подобных данных другими программами, например snort, но этот файл нельзя прочитать человеку. Возможен вывод двоичных данных на консоль, для этого необходимо использовать -w —
-x Делает распечатку пакета в шестнадцатеричной системе, полезно для более детального анализа пакета. Количество отображаемых данных зависит от параметра -s
-xx То же, что и предыдущий параметр -x, но включает в себя заголовок канального уровня
-X Выводит пакет в ASCII- и hex-формате. Полезно в случае анализа инцидента связанного со взломом, так как позволяет просмотреть какая текстовая информация передавалась во время соединения.
-XX То же, что и предыдущий параметр -X, но включает заголовок канального уровня.
-с число tcpdump завершит работу после получения указанного числа пакетов.
-U Собранные пакеты будут сразу складываться в файл, а иначе копиться в памяти до тех пор, пока она не закончится
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *