Мы Используем Tcpdump Для Анализа И Перехвата Сетевого Трафика.



Мы используем tcpdump для анализа и перехвата сетевого трафика.
</p><p>

Утилита tcpdump — отличный командный инструмент, способный перехватывать и анализировать сетевой трафик.

Может оказаться отличным подспорьем при решении сетевых проблем.

Пакеты можно сохранить в файл и проанализировать позже.

Рекомендуется время от времени запускать эту утилиту для мониторинга вашей сети.

Содержание:

  • вывод tcpdump
  • Установка tcpdump
  • параметры tcpdump
  • tcpdump фильтры:
    • Фильтр выражений
    • Фильтр портов
    • Фильтр хостов
    • Объединение фильтров
  • Сохранение заголовков в файл
  • Посмотреть детали пакета
  • Заключение


вывод tcpdump

Утилита tcpdump позволяет проверять заголовки пакетов TCP/IP и печатать одну строку для каждого пакета.

Он будет делать это до тех пор, пока вы не нажмете Ctrl + C. Давайте посмотрим на одну строку из примера вывода:

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   

20:58:26.765637 IP 10.0.0.50.80 > 10.0.0.1.53181: Flags [F.], seq 1, ack 2, win 453, options [nop,nop,TS val 3822939 ecr 249100129], length 0

Каждая линия включает в себя:
  • Временная метка Unix ( 20: 58: 26.765637 )
  • протокол ( ИП )
  • имя хоста источника или IP-адрес и номер порта ( 10.0.0.50.80 )
  • имя хоста или IP-адрес назначения и номер порта ( 10.0.0.1.53181 )
  • TCP-флаги ( Флаги [Ф.

    ] ).

    Указывает состояние соединения и может содержать более одного значения:

    • о С - СИН.

      Первый шаг в установлении связи

    • Ф - ФИН.

      Прекращение соединения

    • - АКТ.

      Пакет подтверждения успешно получен

    • П - НАЖМИ.

      Поручает получателю обрабатывать пакеты вместо их буферизации.

    • Р - РСТ.

      Соединение прервано

  • Порядковый номер данных в пакете.

    ( последовательность 1 )

  • Номер подтверждения.

    ( акк 2 )

  • Размер окна ( выиграть 453) .

    Количество байтов, доступных в буфере приема.

    Ниже приведены параметры TCP.

  • Длина полезных данных.

    ( длина 0 )



Установка tcpdump

В дистрибутивах на основе Дебиан tcpdump можно установить с помощью команды APT:

# apt install tcpdump -y

В дистрибутивах на основе об/мин tcpdump можно установить с помощью YUM:

# yum install tcpdump -y

В РЭЛ 8 с использованием ДНФ :

# dnf install tcpdump -y



параметры tcpdump

Запускать tcpdump нужно с root-правами.

Tcpdump включает в себя множество опций и фильтров.

Запуск tcpdump без каких-либо параметров перехватит все пакеты, проходящие через интерфейс по умолчанию.

Отобразите список сетевых интерфейсов, доступных системе, на которых tcpdump может перехватывать пакеты:

# tcpdump -D

или

# tcpdump --list-interfaces



1.eth0 2.nflog (Linux netfilter log (NFLOG) interface) 3.nfqueue (Linux netfilter queue (NFQUEUE) interface) 4.eth1 5.any (Pseudo-device that captures on all interfaces) 6.lo [Loopback]

Очень полезно для систем, в которых нет команды для вывода списка интерфейсов.

Чтобы перехватить пакеты, проходящие через определенный интерфейс, используйте -i с именем интерфейса.

Если вы не укажете имя, то tcpdump подберет первый найденный сетевой интерфейс.



# tcpdump -i eth1



tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes 01:06:09.278817 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 4761, seq 1, length 64 01:06:09.279374 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 4761, seq 1, length 64 01:06:10.281142 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 4761, seq 2, length 64

  • -v увеличивает количество отображаемой информации о пакете
  • -vv дает еще более подробную информацию
По умолчанию tcpdump преобразует IP-адреса в имена хостов, а также использует имена служб вместо номеров портов.

  • -n Если DNS не работает или вы не хотите, чтобы tcpdump выполнял поиск имени.



# tcpdump –n



listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 04:19:07.675216 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186733178:2186733278, ack 204106815, win 37232, length 100 04:19:07.675497 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.

], ack 100, win 65535, length 0 04:19:07.675747 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 100:136, ack 1, win 37232, length 36 04:19:07.675902 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.

], ack 136, win 65535, length 0 04:19:07.676142 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 136:236, ack 1, win 37232, length 100

  • -c захватывает только набор строк, например 5:


#tcpdump -c 5



04:19:07.675216 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186733178:2186733278, ack 204106815, win 37232, length 100 04:19:07.675497 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.

], ack 100, win 65535, length 0 04:19:07.675747 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 100:136, ack 1, win 37232, length 36 04:19:07.675902 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.

], ack 136, win 65535, length 0 04:19:07.676142 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 136:236, ack 1, win 37232, length 100 5 packets captured

  • -tttt для использования более удобных временных меток (по умолчанию — временные метки Unix)


# tcpdump –tttt



2020-07-06 04:30:12.203638 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 2186734102:2186734138, ack 204107103, win 37232, length 36 2020-07-06 04:30:12.203910 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.

], ack 36, win 65535, length 0 2020-07-06 04:30:12.204292 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 36:72, ack 1, win 37232, length 36 2020-07-06 04:30:12.204524 IP 10.0.2.2.50422 > 10.0.2.15.22: Flags [.

], ack 72, win 65535, length 0 2020-07-06 04:30:12.204658 IP 10.0.2.15.22 > 10.0.2.2.50422: Flags [P.], seq 72:108, ack 1, win 37232, length 36



tcpdump фильтры



Фильтр выражений

Фильтр выражений выбирает, какие заголовки пакетов будут отображаться.

Если фильтры не применены, отображаются все заголовки пакетов.

Наиболее распространенные фильтры:

  • порт
  • хозяин
  • источник
  • летнее время
  • TCP
  • UDP
  • ICMP


Фильтр портов

Фильтр портов используется для просмотра пакетов, поступающих на определенный порт:

# tcpdump -i eth1 -c 5 port 80



23:54:24.978612 IP 10.0.0.1.53971 > 10.0.0.50.80: Flags [SEW], seq 53967733, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 256360128 ecr 0,sackOK,eol], length 0 23:54:24.978650 IP 10.0.0.50.80 > 10.0.0.1.53971: Flags [S.E], seq 996967790, ack 53967734, win 28960, options [mss 1460,sackOK,TS val 5625522 ecr 256360128,nop,wscale 6], length 0 23:54:24.978699 IP 10.0.0.1.53972 > 10.0.0.50.80: Flags [SEW], seq 226341105, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 256360128 ecr 0,sackOK,eol], length 0 23:54:24.978711 IP 10.0.0.50.80 > 10.0.0.1.53972: Flags [S.E], seq 1363851389, ack 226341106, win 28960, options [mss 1460,sackOK,TS val 5625522 ecr 256360128,nop,wscale 6], length 0



Фильтр хостов

Для перехвата пакетов, входящих или исходящих от определенного хоста.

Например, IP-адрес 10.0.2.15:

# tcpdump host 10.0.2.15



03:48:06.087509 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 3862934963:3862934999, ack 65355639, win 37232, length 36 03:48:06.087806 IP 10.0.2.2.50225 > 10.0.2.15.22: Flags [.

], ack 36, win 65535, length 0 03:48:06.088087 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 36:72, ack 1, win 37232, length 36 03:48:06.088274 IP 10.0.2.2.50225 > 10.0.2.15.22: Flags [.

], ack 72, win 65535, length 0 03:48:06.088440 IP 10.0.2.15.22 > 10.0.2.2.50225: Flags [P.], seq 72:108, ack 1, win 37232, length 36

Для перехвата пакетов определенных типов протоколов.

Например, icmp на интерфейсе eth1:

# tcpdump -i eth1 icmp



04:03:47.408545 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 75, length 64 04:03:47.408999 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 2812, seq 75, length 64 04:03:48.408697 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 76, length 64 04:03:48.409208 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 2812, seq 76, length 64 04:03:49.411287 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 2812, seq 77, length 64



Объединение фильтров

Фильтры можно комбинировать с помощью операторов:
  • И
  • ИЛИ
  • НЕТ
Это позволит вам писать команды, которые смогут более точно изолировать пакеты.

Например, пакеты с определенного IP-адреса и для определенного порта:

# tcpdump -n -i eth1 src 10.0.0.1 and dst port 80



00:18:17.155066 IP 10.0.0.1.54222 > 10.0.0.50.80: Flags [F.], seq 500773341, ack 2116767648, win 4117, options [nop,nop,TS val 257786173 ecr 5979014], length 0 00:18:17.155104 IP 10.0.0.1.54225 > 10.0.0.50.80: Flags [S], seq 904045691, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 257786173 ecr 0,sackOK,eol], length 0 00:18:17.157337 IP 10.0.0.1.54221 > 10.0.0.50.80: Flags [P.], seq 4282813257:4282813756, ack 1348066220, win 4111, options [nop,nop,TS val 257786174 ecr 5979015], length 499: HTTP: GET / HTTP/1.1 00:18:17.157366 IP 10.0.0.1.54225 > 10.0.0.50.80: Flags [.

], ack 1306947508, win 4117, options [nop,nop,TS val 257786174 ecr 5983566], length 0

Если вам нужно перехватить все пакеты кроме ICMP, используйте оператор НЕТ :

# tcpdump -i eth1 not icmp



Сохранение заголовков в файл

Вывод tcpdump может довольно быстро перемещаться по экрану.

В таких случаях вы можете сохранить заголовки пакетов в файле с помощью опции .

Вывод сохраняется в файлы с расширением .

pcap .

Следующая команда сохраняет 10 строк вывода интерфейса eth1 в icmp.pcap.

# tcpdump -i eth1 -c 10 -w icmp.pcap



tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes 10 packets captured 10 packets received by filter 0 packets dropped by kernel

Вы можете прочитать этот файл, используя опцию

# tcpdump -i eth1 -c 10 -w icmp.pcap



reading from file icmp.pcap, link-type EN10MB (Ethernet) 05:33:20.852732 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 33, length 64 05:33:20.853245 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 3261, seq 33, length 64 05:33:21.852586 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 34, length 64 05:33:21.853104 IP 10.0.0.51 > vagrant-ubuntu-trusty-64: ICMP echo reply, id 3261, seq 34, length 64 05:33:22.852615 IP vagrant-ubuntu-trusty-64 > 10.0.0.51: ICMP echo request, id 3261, seq 35, length 64



Посмотреть детали пакета

До сих пор мы видели только заголовки пакетов, а для просмотра содержимого нам нужно использовать параметр .

Вывод содержимого будет в формате ASCII. Использование опции -ИКС Можно отображать вывод в шестнадцатеричном формате, хотя это не сильно помогает в случаях, когда соединение зашифровано.



# tcpdump -c10 -i eth1 -n -A port 80



23:35:53.109306 IP 10.0.0.1.53916 > 10.0.0.50.80: Flags [P.], seq 2366590408:2366590907, ack 175457677, win 4111, options [nop,nop,TS val 255253117 ecr 5344866], length 499: HTTP: GET / HTTP/1.1 E.'.

@.

@.

%.

.

.

2.P.M. uE. .

6.}.

Q.bGET / HTTP/1.1 Host: 10.0.0.50 Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9 If-Modified-Since: Tue, 04 Mar 2014 11:46:45 GMT



Заключение

Утилита tcpdump проста в настройке и освоении.

Просто нужно немного понять:

  • заключение
  • фильтры
  • параметры
После чего tcpdump станет отличным помощником в обеспечении безопасности вашей сети.



Мы используем tcpdump для анализа и перехвата сетевого трафика.
</p><p>

Теги: #tcpdump #сетевой трафик #анализ сетевого трафика #сетевая безопасность #сетевая безопасность #перехват сетевого трафика #информационная безопасность #Хабр #Системное администрирование

Вместе с данным постом часто просматривают: