GNU/Linux >> Tutoriales Linux >  >> Linux

Analizador de paquetes:15 ejemplos de comandos TCPDUMP

El comando tcpdump también se denomina analizador de paquetes.

El comando tcpdump funcionará en la mayoría de las versiones del sistema operativo Unix. tcpdump nos permite guardar los paquetes que se capturan, de modo que podamos usarlo para futuros análisis. El archivo guardado se puede ver con el mismo comando tcpdump. También podemos usar software de código abierto como wireshark para leer los archivos tcpdump pcap.

En este tutorial de tcpdump, analicemos algunos ejemplos prácticos sobre cómo usar el comando tcpdump.

1. Captura paquetes de una interfaz ethernet particular usando tcpdump -i

Cuando ejecuta el comando tcpdump sin ninguna opción, capturará todos los paquetes que fluyen a través de todas las interfaces. La opción -i con el comando tcpdump le permite filtrar en una interfaz de ethernet en particular.

$ tcpdump -i eth1
14:59:26.608728 IP xx.domain.netbcp.net.52497 > valh4.lell.net.ssh: . ack 540 win 16554
14:59:26.610602 IP resolver.lell.net.domain > valh4.lell.net.24151:  4278 1/0/0 (73)
14:59:26.611262 IP valh4.lell.net.38527 > resolver.lell.net.domain:  26364+ PTR? 244.207.104.10.in-addr.arpa. (45)

En este ejemplo, tcpdump capturó todos los flujos de paquetes en la interfaz eth1 y los muestra en la salida estándar.

Nota :La utilidad Editcap se utiliza para seleccionar o eliminar paquetes específicos del archivo de volcado y traducirlos a un formato dado.

2. Capture solo N cantidad de paquetes usando tcpdump -c

Cuando ejecuta el comando tcpdump, proporciona paquetes hasta que cancela el comando tcpdump. Con la opción -c puede especificar el número de paquetes a capturar.

$ tcpdump -c 2 -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
14:38:38.184913 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 1457255642:1457255758(116) ack 1561463966 win 63652
14:38:38.690919 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 116:232(116) ack 1 win 63652
2 packets captured
13 packets received by filter
0 packets dropped by kernel

El comando tcpdump anterior capturó solo 2 paquetes de la interfaz eth0.

Nota: Mergecap y TShark:Mergecap es una herramienta de combinación de volcado de paquetes, que combinará varios volcados en un solo archivo de volcado. Tshark es una poderosa herramienta para capturar paquetes de red, que se puede utilizar para analizar el tráfico de la red. Viene con distribución de analizador de red wireshark.

3. Mostrar paquetes capturados en ASCII usando tcpdump -A

La siguiente sintaxis de tcpdump imprime el paquete en ASCII.

$ tcpdump -A -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
14:34:50.913995 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 1457239478:1457239594(116) ack 1561461262 win 63652
E.....@.@..]..i...9...*.V...]...P....h....E...>{..U=...g.
......G..7\+KA....A...L.
14:34:51.423640 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 116:232(116) ack 1 win 63652
E.....@.@..\..i...9...*.V..*]...P....h....7......X..!....Im.S.g.u:*..O&....^#Ba...
E..(R.@.|.....9...i.*...]...V..*P..OWp........

Nota: El comando Ifconfig se usa para configurar las interfaces de red

4. Mostrar paquetes capturados en HEX y ASCII usando tcpdump -XX

Algunos usuarios pueden querer analizar los paquetes en valores hexadecimales. tcpdump proporciona una forma de imprimir paquetes en formato ASCII y HEX.

$tcpdump -XX -i eth0
18:52:54.859697 IP zz.domain.innetbcp.net.63897 > valh4.lell.net.ssh: . ack 232 win 16511
        0x0000:  0050 569c 35a3 0019 bb1c 0c00 0800 4500  .PV.5.........E.
        0x0010:  0028 042a 4000 7906 c89c 10b5 aaf6 0f9a  .(.*@.y.........
        0x0020:  69c4 f999 0016 57db 6e08 c712 ea2e 5010  i.....W.n.....P.
        0x0030:  407f c976 0000 0000 0000 0000            @..v........
18:52:54.877713 IP 10.0.0.0 > all-systems.mcast.net: igmp query v3 [max resp time 1s]
        0x0000:  0050 569c 35a3 0000 0000 0000 0800 4600  .PV.5.........F.
        0x0010:  0024 0000 0000 0102 3ad3 0a00 0000 e000  .$......:.......
        0x0020:  0001 9404 0000 1101 ebfe 0000 0000 0300  ................
        0x0030:  0000 0000 0000 0000 0000 0000            ............

5. Capture los paquetes y escríbalos en un archivo usando tcpdump -w

tcpdump le permite guardar los paquetes en un archivo y luego puede usar el archivo del paquete para un análisis más detallado.

$ tcpdump -w 08232010.pcap -i eth0
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
32 packets captured
32 packets received by filter
0 packets dropped by kernel

La opción -w escribe los paquetes en un archivo dado. La extensión del archivo debe ser .pcap, que puede ser leído por cualquier analizador de protocolo de red.

6. Leyendo los paquetes de un archivo guardado usando tcpdump -r

Puede leer el archivo pcap capturado y ver los paquetes para su análisis, como se muestra a continuación.

$tcpdump -tttt -r data.pcap
2010-08-22 21:35:26.571793 00:50:56:9c:69:38 (oui Unknown) > Broadcast, ethertype Unknown (0xcafe), length 74:
        0x0000:  0200 000a ffff 0000 ffff 0c00 3c00 0000  ............<...
        0x0010:  0000 0000 0100 0080 3e9e 2900 0000 0000  ........>.).....
        0x0020:  0000 0000 ffff ffff ad00 996b 0600 0050  ...........k...P
        0x0030:  569c 6938 0000 0000 8e07 0000            V.i8........
2010-08-22 21:35:26.571797 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.50570: P 800464396:800464448(52) ack 203316566 win 71
2010-08-22 21:35:26.571800 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.50570: P 52:168(116) ack 1 win 71
2010-08-22 21:35:26.584865 IP valh5.lell.net.ssh > 11.154.12.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADC

7. Captura paquetes con dirección IP usando tcpdump -n

En todos los ejemplos anteriores, imprime paquetes con la dirección DNS, pero no con la dirección IP. El siguiente ejemplo captura los paquetes y mostrará la dirección IP de las máquinas involucradas.

$ tcpdump -n -i eth0
15:01:35.170763 IP 10.0.19.121.52497 > 11.154.12.121.ssh: P 105:157(52) ack 18060 win 16549
15:01:35.170776 IP 11.154.12.121.ssh > 10.0.19.121.52497: P 23988:24136(148) ack 157 win 113
15:01:35.170894 IP 11.154.12.121.ssh > 10.0.19.121.52497: P 24136:24380(244) ack 157 win 113

8. Capture paquetes con la marca de tiempo legible adecuada usando tcpdump -tttt

$ tcpdump -n -tttt -i eth0

2010-08-22 15:10:39.162830 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 49800 win 16390
2010-08-22 15:10:39.162833 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 50288 win 16660
2010-08-22 15:10:39.162867 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 50584 win 16586

9. Leer paquetes de más de N bytes

Puede recibir solo los paquetes de más de n número de bytes usando un filtro 'mayor' a través del comando tcpdump

$ tcpdump -w g_1024.pcap greater 1024

10. Reciba solo los paquetes de un tipo de protocolo específico

Puede recibir los paquetes según el tipo de protocolo. Puede especificar uno de estos protocolos:fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp y udp. El siguiente ejemplo captura solo paquetes arp que fluyen a través de la interfaz 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 96 bytes
19:41:52.809642 arp who-has valh5.lell.net tell valh9.lell.net
19:41:52.863689 arp who-has 11.154.12.1 tell valh6.lell.net
19:41:53.024769 arp who-has 11.154.12.1 tell valh7.lell.net

11. Leer paquetes de menos de N bytes

Puede recibir solo los paquetes con menos de n número de bytes usando un filtro 'menos' a través del comando tcpdump

$ tcpdump -w l_1024.pcap  less 1024

12. Reciba flujos de paquetes en un puerto en particular usando el puerto tcpdump

Si desea conocer todos los paquetes recibidos por un puerto en particular en una máquina, puede usar el comando tcpdump como se muestra a continuación.

$ tcpdump -i eth0 port 22
19:44:44.934459 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 18932:19096(164) ack 105 win 71
19:44:44.934533 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 19096:19260(164) ack 105 win 71
19:44:44.934612 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 19260:19424(164) ack 105 win 71

13. Capturar paquetes para IP y puerto de destino en particular

Los paquetes tendrán IP de origen y destino y números de puerto. Usando tcpdump podemos aplicar filtros en la IP de origen o destino y el número de puerto. El siguiente comando captura flujos de paquetes en eth0, con una IP de destino particular y el número de puerto 22.

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

14. Captura paquetes de comunicación TCP entre dos hosts

Si dos procesos diferentes de dos máquinas diferentes se comunican a través del protocolo tcp, podemos capturar esos paquetes usando tcpdump como se muestra a continuación.

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

Puede abrir el archivo comm.pcap con cualquier herramienta de análisis de protocolo de red para depurar posibles problemas.

15. Paquetes de filtro tcpdump:captura todos los paquetes que no sean arp y rarp

En el comando tcpdump, puede dar la condición "y", "o" y "no" para filtrar los paquetes en consecuencia.

$ tcpdump -i eth0 not arp and not rarp
20:33:15.479278 IP resolver.lell.net.domain > valh4.lell.net.64639:  26929 1/0/0 (73)
20:33:15.479890 IP valh4.lell.net.16053 > resolver.lell.net.domain:  56556+ PTR? 255.107.154.15.in-addr.arpa. (45)
20:33:15.480197 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 540:1504(964) ack 1 win 96
20:33:15.487118 IP zz.domain.innetbcp.net.63897 > valh4.lell.net.ssh: . ack 540 win 16486
20:33:15.668599 IP 10.0.0.0 > all-systems.mcast.net: igmp query v3 [max resp time 1s]

Linux
  1. Ejemplos de comandos sa en Linux

  2. w Ejemplos de comandos en Linux

  3. Ejemplos de comandos ac en Linux

  4. Ejemplos de comandos df en Linux

  5. Ejemplos de comandos du en Linux

10 ejemplos de comandos iftop en Linux

16 ejemplos de comandos de eco en Linux

Comando Tcpdump en Linux

Tutorial del comando tcpdump de Linux para principiantes (8 ejemplos)

Comando tcpdump de Linux

Ejemplos de comandos id en Linux