ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Анализатор пакетов: 15 примеров команды tcpdump

Анализатор пакетов: 15 примеров команды tcpdump

Команда tcpdump также называется анализатором пакетов.

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

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

1. Захват пакетов от конкретного интерфейса локальных сетей с использованием tcpdump -i

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

$ tcpdump -i eth1       
12:59:41.967250 ARP, Request who-has free.msk.ispsystem.net tell gw.msk.ispsystem.net, length 46
12:59:41.967257 ARP, Request who-has reserve.scoffserver.ru tell gw.msk.ispsystem.net, length 46
12:59:41.969692 IP andreyex.ru.44141 > wdc-ns1.ispsystem.net.domain: 14799+ PTR? 184.48.146.82.in-addr.arpa. (44)                                             
...

 

В этом примере, tcpdump захватил все пакеты потока в интерфейсе eth1 и отображает в стандартном выводе.

2. Захват только N-ое число пакетов с помощью tcpdump -c

При выполнении команды tcpdump дает пакеты, пока вы не отмените команду tcpdump. Используя опцию -c вы можете указать количество пакетов для захвата.

$ tcpdump -c 2 -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:01:35.165898 ARP, Request who-has 213.159.211.80 tell gw.msk.ispsystem.net, length 46
13:01:35.170637 IP andreyex.ru.35123 > wdc-ns1.ispsystem.net.domain: 7254+ PTR? 80.211.159.213.in-addr.arpa. (45)
2 packets captured          
7 packets received by filter
0 packets dropped by kernel

 

Команда tcpdump захватили только 2 пакета от интерфейса eth0.

3. Выод на дисплей перехваченных пакетов в ASCII, используя tcpdump -a

Следующий синтаксис tcpdump печатает пакет в ASCII.

$ tcpdump -A -i eth0
13:03:06.516709 IP 213.132.93.178.25321 > andreyex.ru.vlsi-lm: Flags [.], ack 3120779210, win 254, length 0                                                   
E..($.@.u..B..].....b...%.=...O.P.......                                          
13:03:06.517120 IP andreyex.ru.35313 > wdc-ns1.ispsystem.net.domain: 13562+ PTR? 178.93.132.213.in-addr.arpa. (45)                                            
E..I9.@.@........x.....5.5[F4............178.93.132.213.in-addr.arpa.....         
13:03:06.517523 IP wdc-ns1.ispsystem.net.domain > andreyex.ru.35313: 13562 NXDomain 0/1/0 (103) 
D...ns1.?.n2.x.......

 

4. Вывод на дисплей перехваченных пакетов в HEX и ASCII с использованием tcpdump -xx

Некоторые пользователи могли бы анализировать пакеты в шестнадцатеричных значениях. tcpdump предоставляет возможность печатать пакеты в обоих форматах ASCII и HEX.

$tcpdump -XX -i eth0
13:04:55.671670 ARP, Request who-has ns-24.ru tell gw.msk.ispsystem.net, length 46
        0x0000:  ffff ffff ffff 288a 1cea fff0 0806 0001  ......(.........        
        0x0010:  0800 0604 0001 288a 1cea fff0 5057 c401  ......(.....PW..        
        0x0020:  0000 0000 0000 5057 c50a 0000 0000 0000  ......PW........        
        0x0030:  0000 0000 0000 0000 4af9 3265            ........J.2e            
13:04:55.673089 ARP, Request who-has free.msk.ispsystem.net tell gw.msk.ispsystem.net, length 46
        0x0000:  ffff ffff ffff 288a 1cea fff0 0806 0001  ......(.........        
        0x0010:  0800 0604 0001 288a 1cea fff0 5292 3001  ......(.....R.0.        
        0x0020:  0000 0000 0000 5292 31af 0000 0000 0000  ......R.1.......        
        0x0030:  0000 0000 0000 0000 ee11 d278

5. Захват пакетов и запись в файл с помощью tcpdump -w

tcpdump позволяет сохранить пакеты в файл, а затем вы можете использовать файл пакетов для дальнейшего анализа.

$ tcpdump -w 08232010.pcap -i eth0
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                                                                             
^C6239 packets captured                                                                                                                                       
7052 packets received by filter                                                                                                                               
811 packets dropped by kernel

 

Опция -w записывает пакеты в указанный файл. Расширение файла должно быть .pcap, который может быть прочитан любым протоколом сетевого
анализатора.

6. Чтение пакетов из сохраненного файла с помощью tcpdump -r

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

$tcpdump -tttt -r 08232010.pcap
reading from file 08232010.pcap, link-type EN10MB (Ethernet)                                                                                                  
2017-04-07 13:06:28.035332 IP 213.132.93.178.25557 > andreyex.ru.vlsi-lm: Flags [.], ack 2280823022, win 252, length 0                                        
2017-04-07 13:06:28.036239 IP 213.132.93.178.25558 > andreyex.ru.vlsi-lm: Flags [.], ack 1395913898, win 252, length 0                                        
2017-04-07 13:06:28.037210 IP 213.132.93.178.25557 > andreyex.ru.vlsi-lm: Flags [.], ack 427, win 257, length 0                                               
2017-04-07 13:06:28.038258 IP 213.132.93.178.25558 > andreyex.ru.vlsi-lm: Flags [.], ack 149, win 252, length 0                                               
2017-04-07 13:06:28.053807 IP 213.132.93.178.25558 > andreyex.ru.vlsi-lm: Flags [P.], seq 0:1056, ack 149, win 252, length 1056                               
2017-04-07 13:06:28.053850 IP andreyex.ru.vlsi-lm > 213.132.93.178.25558: Flags [.], ack 1056, win 352, length 0

7. Захват пакетов с IP-адреса с помощью tcpdump -n

Во всех приведенных выше примерах, он печатает пакеты с адресом DNS, но не адрес IP. Следующий пример захватывает пакеты и отображает IP-адрес участвующей машины.

$ tcpdump -n -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                                                                                      
13:09:44.819573 IP 213.132.93.178.25691 > 213.159.209.228.vlsi-lm: Flags [.], ack 1414291154, win 257, length 0                                               
13:09:44.820282 IP 213.132.93.178.25691 > 213.159.209.228.vlsi-lm: Flags [.], ack 427, win 255, length 0                                                      
13:09:44.824067 IP 213.132.93.178.25690 > 213.159.209.228.vlsi-lm: Flags [.], ack 1150807970, win 253, length 0

8. Захват пакетов с надлежащей временной меткой с использованием считываемой tcpdump -tttt

$ tcpdump -n -tttt -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                                                                                      
2017-04-07 13:10:23.336752 ARP, Request who-has 213.159.210.195 tell 213.159.210.1, length 46                                                                 
2017-04-07 13:10:23.338998 ARP, Request who-has 212.109.196.195 tell 212.109.196.1, length 46                                                                 
2017-04-07 13:10:23.339009 ARP, Request who-has 80.87.202.158 tell 80.87.202.1, length 46                                                                     
2017-04-07 13:10:23.339011 ARP, Request who-has 188.120.248.196 tell 188.120.248.1, length 46                                                                 
2017-04-07 13:10:23.339013 ARP, Request who-has 212.109.197.156 tell 212.109.196.1, length 46

9. Пакеты прочитанные больше, чем n байт

Вы можете получить больше пакетов, чем n числа байтов, используя фильтр «greater» через команду tcpdump

$ tcpdump -w g_1024.pcap greater 1024

10. Получение пакетов только определенного типа протокола

Вы можете получить пакеты в зависимости от типа протокола. Вы можете указать один из этих протоколов – fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp и udp. Следующий пример захватывает только пакеты arp, протекающие через интерфейс eth0.

$ tcpdump -i eth0 arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode                                                                                    
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                                                                                      
13:11:31.451191 ARP, Request who-has ark-hoster.ru tell gw.msk.ispsystem.net, length 46                                                                       
13:11:31.456275 ARP, Request who-has aitkblack.fvds.ru tell gw.msk.ispsystem.net, length 46                                                                   
13:11:31.463781 ARP, Request who-has e-sro.su tell gw.msk.ispsystem.net, length 46                                                                            
13:11:31.464276 ARP, Request who-has yaroslav.fvds.ru tell gw.msk.ispsystem.net, length 46

11. Чтение пакетов меньше, чем n байтов

Вы можете получить только пакеты меньше, чем n байтов, используя фильтр «less» с помощью команды tcpdump

$ tcpdump -w l_1024.pcap  less 1024

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

Если вы хотите знать все пакеты, полученные по определенному порту на компьютере, вы можете использовать команду tcpdump, как показано ниже.

$ tcpdump -i eth0 port 22
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                                                                                      
^C                                                                                                                                                            
0 packets captured                                                                                                                                            
0 packets received by filter                                                                                                                                  
0 packets dropped by kernel

 

В данном случае порт 22 отключен.

13. Захват пакетов для конкретного адресата ip-адреса и порта

Эти пакеты будут иметь номера источника и назначения ip-адреса и порт. Используя tcpdump мы можем применить фильтры на источнике или назначения IP и номер порта. Следующая команда перехватывает поток пакетов в eth0,  с конкретного IP-адреса назначения и номера порта 22.

$ tcpdump -w xpackets.pcap -i eth0 dst 10.181.140.216 and port 22

14. Захват пакетов TCP между двумя узлами

Если два различных процесса из двух разных машин общается по протоколу TCP, мы можем захватить эти пакеты с помощью tcpdump, как показано ниже.

$tcpdump -w comm.pcap -i eth0 dst 16.181.170.246 and port 22

 

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

15. Фильтр пакетов tcpdump – захват всех, кроме пакетов arp и rarp

В команде tcpdump, вы можете указать условие “and”, “or” и “not” для фильтрации пакетов.

$ tcpdump -i eth0 not arp and not rarp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode                                                                                    
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                                                                                      
13:13:42.454613 IP 213.132.93.178.25885 > andreyex.ru.vlsi-lm: Flags [.], ack 1557656178, win 253, length 0                                                   
13:13:42.455558 IP 213.132.93.178.25885 > andreyex.ru.vlsi-lm: Flags [.], ack 427, win 257, length 0                                                          
13:13:42.458275 IP andreyex.ru.https > crawl-66-249-64-254.googlebot.com.39708: Flags [.], ack 1382390548, win 252, options [nop,nop,TS val 32239888 ecr 36826
85903], length 0

 

Exit mobile version