Любому уважающему себя системному администратору необходимо знать, как работать с сетевыми анализаторами, будь то tcpdump или Wireshark. Поэтому сегодня расскажу вам о сетевом анализаторе tcpdump и покажу 12 примеров его применения.
tcpdump — утилита UNIX (есть клон для Windows), позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа.
Если tcpdump у вас еще не установлен, то воспользуйтесь следующей командой.
# apt-get install tcpdump
1. Захват пакетов с конкретного интерфейса. tcpdump -i
Когда tcpdump выполняется без опций, то будут захватываться все пакеты на всех интерфейсах. Поэтому, чтобы захватить пакеты с определенного интерфейса, необходимо воспользоваться опцией -i.
# tcpdump -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 14:03:39.403288 IP 192.168.1.3.ntp > ntp1.vniiftri.ru.ntp: NTPv4, Client, length 48 14:03:39.403647 IP 192.168.1.3.47995 > 192.168.1.1.domain: 48869+ PTR? 142.76.117.62.in-addr.arpa. (44) 14:03:39.445481 IP gw-comreg.vniiftri.ru > 192.168.1.3: ICMP host ntp1.vniiftri.ru unreachable - admin prohibited filter, length 84 14:03:39.496036 IP 192.168.1.1.domain > 192.168.1.3.47995: 48869 1/0/0 PTR ntp1.vniiftri.ru. (74)
В этом примере tcpdump захватывает все пакеты идущие через интерфейс eth0. Можно конечно было и не указывать eth0, т.к. tcpdump считает eth0 интерфейсом по умолчанию.
2. Захват определенного количества пакетов. tcpdump -c
Когда мы выполняем tcpdump. Он выдает нам все пакеты до тех пор пока мы не завершим его работу нажав Ctrl + C. Используя опцию -c, можно указать конкретное количество пакетов для захвата, после чего tcpdump закроется.
# tcpdump -c 7 -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 14:17:49.972652 IP 192.168.1.3.53397 > 192.168.1.1.domain: 20528+ A? www.google.ru. (31) 14:17:49.972675 IP 192.168.1.3.53397 > 192.168.1.1.domain: 27106+ AAAA? www.google.ru. (31) 14:17:49.973012 IP 192.168.1.3.52114 > 192.168.1.1.domain: 48629+ PTR? 1.1.168.192.in-addr.arpa. (42) 14:17:49.973704 IP 192.168.1.3.45633 > 192.168.1.1.domain: 16713+ A? www.aldeid.com. (32) 14:17:49.973711 IP 192.168.1.3.45633 > 192.168.1.1.domain: 7826+ AAAA? www.aldeid.com. (32) 14:17:50.065806 IP 192.168.1.1.domain > 192.168.1.3.52114: 48629 NXDomain 0/0/0 (42) 14:17:50.065982 IP 192.168.1.3.36930 > 192.168.1.1.domain: 1687+ PTR? 3.1.168.192.in-addr.arpa. (42) 7 packets captured 13 packets received by filter 0 packets dropped by kernel
tcpdump указано захватить 7 пакетов.
3. Отображать захваченные пакеты в формате ASCII. tcpdump -A
Давайте для примера укажем захватить 7 пакетов и отобразить в формате ASCII.
# tcpdump -A -c 7 -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 14:22:07.033387 IP 192.168.1.3.56814 > bk-in-f101.1e100.net.www: Flags [F.], seq 1827308969, ack 3970156663, win 125, options [nop,nop,TS val 1580605 ecr 3457196390], length 0 E..4_.@.@.&A......Ee...Pl......w...}....... ...=...f 14:22:07.033773 IP 192.168.1.3.51256 > 192.168.1.1.domain: 26283+ PTR? 101.69.194.173.in-addr.arpa. (45) E..I.=@.@............8.5.5..f............101.69.194.173.in-addr.arpa..... 14:22:07.114784 IP bk-in-f101.1e100.net.www > 192.168.1.3.56814: Flags [.], ack 1, win 178, options [nop,nop,TS val 3457210473 ecr 1580605], length 0 E..4`...0.uK..Ee.....P.....wl.......vy..... ...i...= 14:22:07.123829 IP 192.168.1.1.domain > 192.168.1.3.51256: 26283 1/0/0 PTR bk-in-f101.1e100.net. (79) E..kJ...0............5.8.W.qf............101.69.194.173.in-addr.arpa................. bk-in-f101.1e100.net. 14:22:07.124020 IP 192.168.1.3.45050 > 192.168.1.1.domain: 50302+ PTR? 3.1.168.192.in-addr.arpa. (42) E..F.S@.@..............5.2{ .~...........3.1.168.192.in-addr.arpa..... 14:22:07.213627 IP 192.168.1.1.domain > 192.168.1.3.45050: 50302 NXDomain 0/0/0 (42) E..F.M..0............5...2...~...........3.1.168.192.in-addr.arpa..... 14:22:07.213809 IP 192.168.1.3.52997 > 192.168.1.1.domain: 21551+ PTR? 1.1.168.192.in-addr.arpa. (42) E..F.j@.@..............5.2.OT/...........1.1.168.192.in-addr.arpa..... 7 packets captured 8 packets received by filter 0 packets dropped by kernel
4. Отображать захваченные пакеты в HEX и ASCII форматах. tcpdump -XX
Многим необходимо анализировать пакеты в hex значениях. Задав опцию -XX, tcpdump позволяет отображать пакеты в HEX и ASCII форматах.
# tcpdump -XX -c 5 -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 14:26:22.025863 IP 192.168.1.3.42468 > bk-in-f113.1e100.net.www: Flags [F.], seq 681713275, ack 442747703, win 108, options [nop,nop,TS val 1644353 ecr 3091190628], length 0 0x0000: 0021 9154 c6b9 001f 1601 c56d 0800 4500 .!.T.......m..E. 0x0010: 0034 3a41 4000 4006 4ba4 c0a8 0103 adc2 .4:A@.@.K....... 0x0020: 4571 a5e4 0050 28a2 1e7b 1a63 cb37 8011 Eq...P(..{.c.7.. 0x0030: 006c 4b86 0000 0101 080a 0019 1741 b83f .lK..........A.? 0x0040: d364 .d 14:26:22.026256 IP 192.168.1.3.49752 > 192.168.1.1.domain: 44366+ PTR? 113.69.194.173.in-addr.arpa. (45) 0x0000: 0021 9154 c6b9 001f 1601 c56d 0800 4500 .!.T.......m..E. 0x0010: 0049 1741 4000 4011 a00e c0a8 0103 c0a8 .I.A@.@......... 0x0020: 0101 c258 0035 0035 862d ad4e 0100 0001 ...X.5.5.-.N.... 0x0030: 0000 0000 0000 0331 3133 0236 3903 3139 .......113.69.19 0x0040: 3403 3137 3307 696e 2d61 6464 7204 6172 4.173.in-addr.ar 0x0050: 7061 0000 0c00 01 pa..... 14:26:22.107844 IP bk-in-f113.1e100.net.www > 192.168.1.3.42468: Flags [.], ack 1, win 117, options [nop,nop,TS val 3091202466 ecr 1644353], length 0 0x0000: 001f 1601 c56d 0021 9154 c6b9 0800 4500 .....m.!.T....E. 0x0010: 0034 4b41 0000 3006 8aa4 adc2 4571 c0a8 .4KA..0.....Eq.. 0x0020: 0103 0050 a5e4 1a63 cb37 28a2 1e7c 8010 ...P...c.7(..|.. 0x0030: 0075 1d3f 0000 0101 080a b840 01a2 0019 .u.?.......@.... 0x0040: 1741 .A 14:26:22.116644 IP 192.168.1.1.domain > 192.168.1.3.49752: 44366 1/0/0 PTR bk-in-f113.1e100.net. (79) 0x0000: 001f 1601 c56d 0021 9154 c6b9 0800 4500 .....m.!.T....E. 0x0010: 006b 7fbd 0000 3011 8770 c0a8 0101 c0a8 .k....0..p...... 0x0020: 0103 0035 c258 0057 81a6 ad4e 8180 0001 ...5.X.W...N.... 0x0030: 0001 0000 0000 0331 3133 0236 3903 3139 .......113.69.19 0x0040: 3403 3137 3307 696e 2d61 6464 7204 6172 4.173.in-addr.ar 0x0050: 7061 0000 0c00 01c0 0c00 0c00 0100 001b pa.............. 0x0060: bb00 160a 626b 2d69 6e2d 6631 3133 0531 ....bk-in-f113.1 0x0070: 6531 3030 036e 6574 00 e100.net. 14:26:22.116853 IP 192.168.1.3.60930 > 192.168.1.1.domain: 19760+ PTR? 3.1.168.192.in-addr.arpa. (42) 0x0000: 0021 9154 c6b9 001f 1601 c56d 0800 4500 .!.T.......m..E. 0x0010: 0046 1758 4000 4011 9ffa c0a8 0103 c0a8 .F.X@.@......... 0x0020: 0101 ee02 0035 0032 b44f 4d30 0100 0001 .....5.2.OM0.... 0x0030: 0000 0000 0000 0133 0131 0331 3638 0331 .......3.1.168.1 0x0040: 3932 0769 6e2d 6164 6472 0461 7270 6100 92.in-addr.arpa. 0x0050: 000c 0001 .... 5 packets captured 8 packets received by filter 0 packets dropped by kernel
5. Захватить пакеты и направить вывод в файл. tcpdump -w
# tcpdump -w file_name.pcap -i eth0 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 706 packets captured 706 packets received by filter 0 packets dropped by kernel
Расширение файла должно быть .pcap для того, чтобы его могли прочитать другие сетевые анализаторы. Wireshark например.
6. Чтение пакетов из файла. tcpdump -r
Чтобы прочитать пакеты из pcap файла и отобразить их содержимое для анализа, воспользуйтесь следующей командой.
# tcpdump -XX -r file_name.pcap reading from file file_name.pcap, link-type EN10MB (Ethernet) 15:03:14.980144 IP 192.168.1.3.36854 > 192.168.1.1.domain: 31011+ A? sourceforge.net. (33) 0x0000: 0021 9154 c6b9 001f 1601 c56d 0800 4500 .!.T.......m..E. 0x0010: 003d 8857 4000 4011 2f04 c0a8 0103 c0a8 .=.W@.@./....... 0x0020: 0101 8ff6 0035 0029 dd8a 7923 0100 0001 .....5.)..y#.... 0x0030: 0000 0000 0000 0b73 6f75 7263 6566 6f72 .......sourcefor 0x0040: 6765 036e 6574 0000 0100 01 ge.net..... 15:03:14.980161 IP 192.168.1.3.36854 > 192.168.1.1.domain: 22859+ AAAA? sourceforge.net. (33) 0x0000: 0021 9154 c6b9 001f 1601 c56d 0800 4500 .!.T.......m..E. 0x0010: 003d 8858 4000 4011 2f03 c0a8 0103 c0a8 .=.X@.@./....... 0x0020: 0101 8ff6 0035 0029 e262 594b 0100 0001 .....5.).bYK.... 0x0030: 0000 0000 0000 0b73 6f75 7263 6566 6f72 .......sourcefor 0x0040: 6765 036e 6574 0000 1c00 01 ge.net..... 15:03:14.985797 IP 192.168.1.3.56923 > bc1.sgmn.net.www: Flags [S], seq 3546006763, win 5840, options [mss 1460,sackOK,TS val 2197593 ecr 0,nop,wscale 6], length 0 0x0000: 0021 9154 c6b9 001f 1601 c56d 0800 4500 .!.T.......m..E. 0x0010: 003c 4cb2 4000 4006 1950 c0a8 0103 b24d .<L.@.@..P.....M 0x0020: 60c1 de5b 0050 d35b c4eb 0000 0000 a002 `..[.P.[........ 0x0030: 16d0 5d09 0000 0204 05b4 0402 080a 0021 ..]............! 0x0040: 8859 0000 0000 0103 0306 .Y........ 15:03:14.989195 IP 192.168.1.3.56924 > bc1.sgmn.net.www: Flags [S], seq 3810406905, win 5840, options [mss 1460,sackOK,TS val 2197594 ecr 0,nop,wscale 6], length 0 0x0000: 0021 9154 c6b9 001f 1601 c56d 0800 4500 .!.T.......m..E. 0x0010: 003c b9a3 4000 4006 ac5e c0a8 0103 b24d .<..@.@..^.....M 0x0020: 60c1 de5c 0050 e31e 31f9 0000 0000 a002 `...P..1....... 0x0030: 16d0 e036 0000 0204 05b4 0402 080a 0021 ...6...........! 0x0040: 885a 0000 0000 0103 0306 .Z........ 15:03:15.069385 IP 192.168.1.1.domain > 192.168.1.3.36854: 31011 1/0/0 A 216.34.181.60 (49) 0x0000: 001f 1601 c56d 0021 9154 c6b9 0800 4500 .....m.!.T....E. 0x0010: 004d 96ab 0000 3011 70a0 c0a8 0101 c0a8 .M....0.p....... 0x0020: 0103 0035 8ff6 0039 e298 7923 8180 0001 ...5...9..y#.... 0x0030: 0001 0000 0000 0b73 6f75 7263 6566 6f72 .......sourcefor 0x0040: 6765 036e 6574 0000 0100 01c0 0c00 0100 ge.net.......... 0x0050: 0100 0003 0800 04d8 22b5 3c ........".<
7. Захватить пакеты и отобразить IP-адрес вместо имени хоста. tcpdump -n
Во всех предыдущих примерах, пакеты отображались с DNS-адресами, но не с IP-адресами. Следующий пример показывает, как отображать IP-адреса захваченных пакетов.
# tcpdump -n -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 15:14:36.230605 IP 192.168.1.3.42311 > 192.168.1.1.53: 41264+ A? www.aldeid.com. (32) 15:14:36.230628 IP 192.168.1.3.42311 > 192.168.1.1.53: 36217+ AAAA? www.aldeid.com. (32) 15:14:36.321354 IP 192.168.1.1.53 > 192.168.1.3.42311: 41264 2/0/0 CNAME aldeid.com., A 46.252.206.1 (62) 15:14:36.329376 IP 192.168.1.1.53 > 192.168.1.3.42311: 36217 1/1/0 CNAME aldeid.com. (114) 15:14:36.329548 IP 192.168.1.3.50184 > 46.252.206.1.80: Flags [S], seq 2843670781, win 5840, options [mss 1460,sackOK,TS val 2367929 ecr 0,nop,wscale 6], length 0 15:14:36.416523 IP 46.252.206.1.80 > 192.168.1.3.50184: Flags [S.], seq 2979506353, ack 2843670782, win 5792, options [mss 1460,nop,nop,TS val 1058588753 ecr 2367929,nop,wscale 7], length 0
8. Захват пакетов и отображение даты. tcpdump -tttt
# tcpdump -tttt -c 10 -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 2011-12-16 15:20:19.119186 IP ch3.sourceforge.net.www > 192.168.1.3.60183: Flags [R.], seq 1733868151, ack 2799185013, win 149, length 0 2011-12-16 15:20:19.119551 IP 192.168.1.3.55011 > 192.168.1.1.domain: 18361+ PTR? 3.1.168.192.in-addr.arpa. (42) 2011-12-16 15:20:19.210840 IP 192.168.1.1.domain > 192.168.1.3.55011: 18361 NXDomain 0/0/0 (42) 2011-12-16 15:20:19.210990 IP 192.168.1.3.60408 > 192.168.1.1.domain: 5597+ PTR? 60.181.34.216.in-addr.arpa. (44) 2011-12-16 15:20:19.302479 IP 192.168.1.1.domain > 192.168.1.3.60408: 5597 1/0/0 PTR ch3.sourceforge.net. (77) 2011-12-16 15:20:19.302673 IP 192.168.1.3.36084 > 192.168.1.1.domain: 46921+ PTR? 1.1.168.192.in-addr.arpa. (42) 2011-12-16 15:20:19.393648 IP 192.168.1.1.domain > 192.168.1.3.36084: 46921 NXDomain 0/0/0 (42) 2011-12-16 15:20:19.930727 IP 192.168.1.3.60184 > ch3.sourceforge.net.www: Flags [S], seq 4213911820, win 5840, options [mss 1460,sackOK,TS val 2453829 ecr 0,nop,wscale 6], length 0 2011-12-16 15:20:19.933450 IP 192.168.1.3.35159 > jangle.cacetech.com.www: Flags [F.], seq 2251522727, ack 3157887949, win 108, options [nop,nop,TS val 2453830 ecr 25896294], length 0 2011-12-16 15:20:19.933479 IP 192.168.1.3.35160 > jangle.cacetech.com.www: Flags [F.], seq 4109229407, ack 3305525460, win 108, options [nop,nop,TS val 2453830 ecr 25896294], length 0 10 packets captured 14 packets received by filter 0 packets dropped by kernel
9. Чтение пакетов, которые больше или равно N байт
# tcpdump -w file_name.pcap greater 1024
10. Принимать пакеты только определенного типа
Если вам нужны пакеты конкретного типа, например: fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp или udp. В конце команды необходимо написать тип протокола.
# 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 15:33:56.326109 ARP, Request who-has 192.168.1.3 tell 192.168.1.1, length 46 15:33:56.326125 ARP, Reply 192.168.1.3 is-at 00:1f:16:01:c5:6d (oui Unknown), length 28 15:34:29.576256 ARP, Request who-has 192.168.1.3 tell 192.168.1.1, length 46 15:34:29.576271 ARP, Reply 192.168.1.3 is-at 00:1f:16:01:c5:6d (oui Unknown), length 28
11. Чтение пакетов, которые меньше или равно N байт
# tcpdump -w file_name.pcap less 1024
12. Принимать пакеты приходящие на конкретный порт. tcpdump port
Если вы хотите проанализировать пакеты, которые приходят на определенный порт, то нужно воспользоваться следующей командой.
# tcpdump -i eth0 port 22 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 15:43:02.915883 IP 192.168.1.3.57565 > 109.120.144.208.addr.datapoint.ru.ssh: Flags [S], seq 3940766754, win 5840, options [mss 1460,sackOK,TS val 2794575 ecr 0,nop,wscale 6], length 0 15:43:05.912246 IP 192.168.1.3.57565 > 109.120.144.208.addr.datapoint.ru.ssh: Flags [S], seq 3940766754, win 5840, options [mss 1460,sackOK,TS val 2795325 ecr 0,nop,wscale 6], length 0 15:43:05.952443 IP 192.168.1.3.57565 > 109.120.144.208.addr.datapoint.ru.ssh: Flags [S], seq 3940766754, win 5840, options [mss 1460,sackOK,TS val 2795335 ecr 0,nop,wscale 6], length 0
На сегодня все. Дальше будет еще интереснее. Если возникнут вопросы, обращайтесь.
1 comments On TCPDUMP. 12 примеров использования
Pingback: Как редактировать пакеты в Wireshark. - Cryptoworld ()