Wireshark

Una guía para la interfaz de línea de comandos de Wireshark tshark

Una guía para la interfaz de línea de comandos de Wireshark tshark
En los tutoriales anteriores de Wireshark, hemos cubierto temas de nivel fundamental a avanzado. En este artículo, entenderemos y cubriremos una interfaz de línea de comandos para Wireshark, i.mi., tshark. La versión de terminal de Wireshark admite opciones similares y es muy útil cuando una interfaz gráfica de usuario (GUI) no está disponible.

Aunque una interfaz gráfica de usuario es, en teoría, mucho más fácil de usar, no todos los entornos la admiten, especialmente los entornos de servidor con solo opciones de línea de comandos. Por lo tanto, en algún momento, como administrador de red o ingeniero de seguridad, tendrá que utilizar una interfaz de línea de comandos. Es importante tener en cuenta que tshark a veces se usa como sustituto de tcpdump. Aunque ambas herramientas son casi equivalentes en la funcionalidad de captura de tráfico, tshark es mucho más potente.

Lo mejor que puede hacer es usar tshark para configurar un puerto en su servidor que reenvía información a su sistema, de modo que pueda capturar el tráfico para su análisis usando una GUI. Sin embargo, por el momento, aprenderemos cómo funciona, cuáles son sus atributos y cómo puede utilizarlo al máximo de sus capacidades.

Escriba el siguiente comando para instalar tshark en Ubuntu / Debian usando apt-get:

[correo electrónico protegido]: ~ $ sudo apt-get install tshark -y

Ahora escribe tshark -help para enumerar todos los argumentos posibles con sus respectivos indicadores que podemos pasar a un comando tshark.

[correo electrónico protegido]: ~ $ tshark --help | cabeza -20
TShark (Wireshark) 2.6.10 (Git v2.6.10 empaquetado como 2.6.10-1 ~ ubuntu18.04.0)
Volcar y analizar el tráfico de la red.
Ver https: // www.Wirehark.org para obtener más información.
Uso: tshark [opciones]…
Interfaz de captura:
-I nombre o idx de la interfaz (def: primer no loopback)
-F filtro de paquetes en la sintaxis del filtro libpcap
-s longitud de la instantánea del paquete (def: máximo apropiado)
-p no capturar en modo promiscuo
-Capturo en modo monitor, si está disponible
-B tamaño del búfer del kernel (def: 2MB)
-y tipo de capa de enlace (def: primera apropiada)
--tipo de sello de tiempo método de marca de tiempo para la interfaz
-D imprimir lista de interfaces y salir
-L imprimir lista de tipos de capa de enlace de iface y salir
--list-time-stamp-types lista de impresión de tipos de marca de tiempo para iface y exit
Capturar condiciones de parada:

Puede ver una lista de todas las opciones disponibles. En este artículo, cubriremos la mayoría de los argumentos en detalle, y comprenderá el poder de esta versión de Wireshark orientada a terminales.

Selección de la interfaz de red:

Para realizar la captura y el análisis en vivo en esta utilidad, primero debemos descubrir nuestra interfaz de trabajo. Tipo tshark -D y tshark enumerará todas las interfaces disponibles.

[correo electrónico protegido]: ~ $ tshark -D
1. enp0s3
2. alguna
3. lo (bucle invertido)
4. nflog
5. nfqueue
6. usbmon1
7. ciscodump (captura remota de Cisco)
8. randpkt (generador de paquetes aleatorio)
9. sshdump (captura remota SSH)
10. udpdump (captura remota de escucha UDP)

Tenga en cuenta que no todas las interfaces enumeradas funcionarán. Tipo ifconfig para encontrar interfaces de trabajo en su sistema. En mi caso es enp0s3.

Capturar tráfico:

Para iniciar el proceso de captura en vivo, usaremos el tshark comando con el "-I"Opción para comenzar el proceso de captura desde la interfaz de trabajo.

[correo electrónico protegido]: ~ $ tshark -i enp0s3

Usar Ctrl + C para detener la captura en vivo. En el comando anterior, canalicé el tráfico capturado al comando de Linux cabeza para mostrar los primeros paquetes capturados. O también puede utilizar el "-c "Sintaxis para capturar la"norte" número de paquetes.

[correo electrónico protegido]: ~ $ tshark -i enp0s3 -c 5

Si solo ingresa tshark, de forma predeterminada, no comenzará a capturar tráfico en todas las interfaces disponibles ni escuchará su interfaz de trabajo. En su lugar, capturará paquetes en la primera interfaz listada.

También puede usar el siguiente comando para verificar múltiples interfaces:

[correo electrónico protegido]: ~ $ tshark -i enp0s3 -i usbmon1 -i lo

Mientras tanto, otra forma de capturar el tráfico en vivo es usar el número junto con las interfaces enumeradas.

[correo electrónico protegido]: ~ $ tshark -i número_interfaz

Sin embargo, en presencia de múltiples interfaces, es difícil realizar un seguimiento de sus números listados.

Filtro de captura:

Los filtros de captura reducen significativamente el tamaño del archivo capturado. Tshark usa la sintaxis de filtro de paquetes de Berkeley -F "”, Que también es utilizado por tcpdump. Usaremos la opción "-f" para capturar solo paquetes de los puertos 80 o 53 y usaremos "-c" para mostrar solo los primeros 10 paquetes.

[correo electrónico protegido]: ~ $ tshark -i enp0s3 -f "puerto 80 o puerto 53" -c 10

Guardar el tráfico capturado en un archivo:

La clave a tener en cuenta en la captura de pantalla anterior es que la información que se muestra no se guarda, por lo que es menos útil. Usamos el argumento "-w"Para guardar el tráfico de red capturado en prueba_captura.pcap en / tmp carpeta.

[correo electrónico protegido]: ~ $ tshark -i enp0s3 -w / tmp / test_capture.pcap

Mientras que, .pcap es la extensión de tipo de archivo Wireshark. Al guardar el archivo, puede revisar y analizar el tráfico en una máquina con Wireshark GUI más tarde.

Es una buena práctica guardar el archivo en /tmp ya que esta carpeta no requiere ningún privilegio de ejecución. Si lo guarda en otra carpeta, incluso si está ejecutando tshark con privilegios de root, el programa denegará el permiso por razones de seguridad.

Analicemos todas las formas posibles a través de las cuales puede:

  • aplicar límites a la captura de datos, de modo que salir tshark o detener automáticamente el proceso de captura, y
  • salida de sus archivos.

Parámetro de parada automática:

Puede utilizar el "-a”Para incorporar indicadores disponibles, como el tamaño del archivo de duración y los archivos. En el siguiente comando, usamos el parámetro autostop con el duración bandera para detener el proceso en 120 segundos.

[correo electrónico protegido]: ~ $ tshark -i enp0s3 -a duración: 120 -w / tmp / test_capture.pcap

Del mismo modo, si no necesita que sus archivos sean extragrandes, tamaño del archivo es una bandera perfecta para detener el proceso después de algunos límites de KB.

[correo electrónico protegido]: ~ $ tshark -i enp0s3 -a: 50 -w / tmp / test_capture.pcap

Más importante, archivos bandera le permite detener el proceso de captura después de una serie de archivos. Pero esto solo puede ser posible después de crear varios archivos, lo que requiere la ejecución de otro parámetro útil, captura de salida.

Capturar parámetro de salida:

Capturar salida, también conocido como argumento ringbuffer "-B", Viene con las mismas banderas que la parada automática. Sin embargo, el uso / salida es un poco diferente, yo.mi., las banderas duración y tamaño del archivo, ya que le permite cambiar o guardar paquetes en otro archivo después de alcanzar un límite de tiempo especificado en segundos o tamaño de archivo.

El siguiente comando muestra que capturamos el tráfico a través de nuestra interfaz de red enp0s3, y capturar el tráfico mediante el filtro de captura "-F"Para tcp y dns. Usamos la opción ringbuffer "-b" con un tamaño del archivo bandera para guardar cada archivo de tamaño 15 Kb, y también use el argumento autostop para especificar el número de archivos usando archivos opción tal que detiene el proceso de captura después de generar tres archivos.

[correo electrónico protegido]: ~ $ tshark -i enp0s3 -f "puerto 53 o puerto 21" -b: 15 -a archivos: 2 -w / tmp / test_capture.pcap

He dividido mi terminal en dos pantallas para monitorear activamente la creación de tres .archivos pcap.

Ir a tu / tmp carpeta y use el siguiente comando en el segundo terminal para monitorear las actualizaciones después de cada segundo.

[correo electrónico protegido]: ~ $ watch -n 1 "ls -lt"

Ahora, no necesitas memorizar todas estas banderas. En su lugar, escriba un comando tshark -i enp0s3 -f "puerto 53 o puerto 21" -b: 15 -a en tu terminal y presiona Pestaña. La lista de todas las banderas disponibles estará disponible en su pantalla.

[correo electrónico protegido]: ~ $ tshark -i enp0s3 -f "puerto 53 o puerto 21" -b: 15 -a
duración: archivos::
[correo electrónico protegido]: ~ $ tshark -i enp0s3 -f "puerto 53 o puerto 21" -b: 15 -a

Leer .Archivos pcap:

Lo más importante es que puede utilizar un "-r”Parámetro para leer test_capture.pcap y canalícelo al cabeza mando.

[correo electrónico protegido]: ~ $ tshark -r / tmp / test_capture.pcap | cabeza

La información que se muestra en el archivo de salida puede ser un poco abrumadora. Para evitar detalles innecesarios y obtener una mejor comprensión de cualquier dirección IP de destino específica, utilizamos el -r opción para leer el archivo capturado del paquete y usar una ip.addr filtro para redirigir la salida a un nuevo archivo con el "-w" opción. Esto nos permitirá revisar el archivo y refinar nuestro análisis aplicando más filtros.

[correo electrónico protegido]: ~ $ tshark -r / tmp / test_capture.pcap -w / tmp / redirected_file.pcap ip.dst == 216.58.209.142
[correo electrónico protegido]: ~ $ tshark -r / tmp / redirected_file.pcap | cabeza
1 0.000000000 10.0.2.15 → 216.58.209.142 TLSv1.2370 Datos de aplicación
2 0.000168147 10.0.2.15 → 216.58.209.142 TLSv1.2669 Datos de aplicación
3 0.011336222 10.0.2.15 → 216.58.209.142 TLSv1.2 5786 Datos de aplicación
4 0.016413181 10.0.2.15 → 216.58.209.142 TLSv1.2 Datos de la aplicación 1093
5 0.016571741 10.0.2.15 → 216.58.209.142 TLSv1.2 403 Datos de aplicación
6 0.016658088 10.0.2.15 → 216.58.209.142 TCP 7354 [segmento TCP de una PDU reensamblada]
7 0.016738530 10.0.2.15 → 216.58.209.142 TLSv1.2948 Datos de aplicación
8 0.023006863 10.0.2.15 → 216.58.209.142 TLSv1.2233 Datos de aplicación
9 0.023152548 10.0.2.15 → 216.58.209.142 TLSv1.2669 Datos de aplicación
10 0.023324835 10.0.2.15 → 216.58.209.142 TLSv1.2 3582 Datos de aplicación

Seleccionar campos para generar:

Los comandos anteriores generan un resumen de cada paquete que incluye varios campos de encabezado. Tshark también le permite ver campos específicos. Para especificar un campo, usamos "-Campo T"Y extraer campos según nuestra elección.

Después de la "-Campo T", Usamos la opción" -e "para imprimir los campos / filtros especificados. Aquí, podemos usar filtros de visualización de Wireshark.

[correo electrónico protegido]: ~ $ tshark -r / tmp / test_capture.pcap -T campos -e marco.número -e ip.src -e ip.dst | cabeza
1 10.0.2.15 216.58.209.142
2 10.0.2.15 216.58.209.142
3 216.58.209.142 10.0.2.15
4 216.58.209.142 10.0.2.15
5 10.0.2.15 216.58.209.142
6 216.58.209.142 10.0.2.15
7 216.58.209.142 10.0.2.15
8 216.58.209.142 10.0.2.15
9 216.58.209.142 10.0.2.15
10 10.0.2.15 115.186.188.3

Capture datos de protocolo de enlace cifrados:

Hasta ahora, hemos aprendido a guardar y leer archivos de salida usando varios parámetros y filtros. Ahora aprenderemos cómo HTTPS inicializa la sesión tshark. Los sitios web a los que se accede a través de HTTPS en lugar de HTTP garantizan una transmisión de datos segura o cifrada a través del cable. Para una transmisión segura, un cifrado de seguridad de la capa de transporte inicia un proceso de protocolo de enlace para iniciar la comunicación entre el cliente y el servidor.

Capturemos y entendamos el protocolo de enlace TLS usando tshark. Divida su terminal en dos pantallas y use un wget comando para recuperar un archivo html de https: // www.Wirehark.org.

[correo electrónico protegido]: ~ $ wget https: // www.Wirehark.org
--2021-01-09 18: 45: 14-- https: // www.Wirehark.org /
Conectando a www.Wirehark.org (www.Wirehark.org) | 104.26.10.240 |: 443… conectado.
Solicitud HTTP enviada, esperando respuesta ... 206 Contenido parcial
Duración: 46892 (46 K), 33272 (32 K) restantes [texto / html]
Guardando en: 'índice.html '
índice.html 100% [++++++++++++++ ================================ ==>] 45.79K 154KB / s en 0.2 s
2021-01-09 18:43:27 (154 KB / s) - 'índice.html 'guardado [46892/46892]

En otra pantalla, usaremos tshark para capturar los primeros 11 paquetes usando el "-C"Parámetro. Al realizar el análisis, las marcas de tiempo son importantes para reconstruir eventos, por lo que utilizamos "-t anuncio”, De manera que tshark agrega una marca de tiempo junto con cada paquete capturado. Por último, usamos el comando host para capturar paquetes del host compartido dirección IP.

Este protocolo de enlace es bastante similar al protocolo de enlace de TCP. Tan pronto como el protocolo de enlace de tres vías de TCP concluye en los primeros tres paquetes, del cuarto al noveno paquete sigue un ritual de protocolo de enlace algo similar e incluyen cadenas TLS para garantizar la comunicación cifrada entre ambas partes.

[correo electrónico protegido]: ~ $ tshark -i enp0s3 -c 11 -t host de anuncios 104.26.10.240
Capturando en 'enp0s3'
1 2021-01-09 18:45:14.174524575 10.0.2.15 → 104.26.10.240 TCP 74 48512 → 443 [SYN] Seq = 0 Win = 64240 Len = 0 MSS = 1460 SACK_PERM = 1 TSval = 2488996311 TSecr = 0 WS = 128
2 2021-01-09 18:45:14.279972105 104.26.10.240 → 10.0.2.15 TCP 60443 → 48512 [SYN, ACK] Seq = 0 Ack = 1 Win = 65535 Len = 0 MSS = 1460
3 2021-01-09 18:45:14.280020681 10.0.2.15 → 104.26.10.240 TCP 54 48512 → 443 [ACK] Seq = 1 Ack = 1 Win = 64240 Len = 0
4 2021-01-09 18:45:14.280593287 10.0.2.15 → 104.26.10.240 TLSv1 373 Cliente Hola
5 2021-01-09 18:45:14.281007512 104.26.10.240 → 10.0.2.15 TCP 60443 → 48512 [ACK] Seq = 1 Ack = 320 Win = 65535 Len = 0
6 2021-01-09 18:45:14.390272461 104.26.10.240 → 10.0.2.15 TLSv1.3 1466 Server Hello, Change Cipher Spec
7 2021-01-09 18:45:14.390303914 10.0.2.15 → 104.26.10.240 TCP 54 48512 → 443 [ACK] Seq = 320 Ack = 1413 Win = 63540 Len = 0
8 2021-01-09 18:45:14.392680614 104.26.10.240 → 10.0.2.15 TLSv1.3 1160 Datos de aplicación
9 2021-01-09 18:45:14.392703439 10.0.2.15 → 104.26.10.240 TCP 54 48512 → 443 [ACK] Seq = 320 Ack = 2519 Win = 63540 Len = 0
10 2021-01-09 18:45:14.394218934 10.0.2.15 → 104.26.10.240 TLSv1.3134 Cambiar especificación de cifrado, datos de aplicación
11 2021-01-09 18:45:14.394614735 104.26.10.240 → 10.0.2.15 TCP 60443 → 48512 [ACK] Seq = 2519 Ack = 400 Win = 65535 Len = 0
11 paquetes capturados

Visualización del paquete completo:

La única desventaja de una utilidad de línea de comandos es que no tiene una GUI, ya que se vuelve muy útil cuando necesita buscar mucho tráfico de Internet, y también ofrece un Panel de paquetes que muestra todos los detalles del paquete dentro de un instante. Sin embargo, aún es posible inspeccionar el paquete y volcar toda la información del paquete que se muestra en el Panel de paquetes de la GUI.

Para inspeccionar un paquete completo, usamos un comando ping con la opción "-c" para capturar un solo paquete.

[correo electrónico protegido]: ~ $ ping -c 1104.26.10.240
PING 104.26.10.240 (104.26.10.240) 56 (84) bytes de datos.
64 bytes desde 104.26.10.240: icmp_seq = 1 ttl = 55 tiempo = 105 ms
--- 104.26.10.240 estadísticas de ping ---
1 paquete transmitido, 1 recibido, 0% de pérdida de paquete, tiempo 0 ms
rtt min / avg / max / mdev = 105.095/105.095/105.095/0.000 ms

En otra ventana, use el comando tshark con una bandera adicional para mostrar todos los detalles del paquete. Puede observar varias secciones que muestran detalles de Frames, Ethernet II, IPV e ICMP.

[correo electrónico protegido]: ~ $ tshark -i enp0s3 -c 1 -V host 104.26.10.240
Trama 1:98 bytes en el cable (784 bits), 98 bytes capturados (784 bits) en la interfaz 0
Id de interfaz: 0 (enp0s3)
Nombre de la interfaz: enp0s3
Tipo de encapsulación: Ethernet (1)
Hora de llegada: 9 de enero de 2021 21:23:39.167581606 PKT
[Time shift para este paquete: 0.000000000 segundos]
Época: 1610209419.167581606 segundos
[Delta de tiempo del fotograma capturado anterior: 0.000000000 segundos]
[Delta de tiempo desde el cuadro visualizado anterior: 0.000000000 segundos]
[Tiempo desde la referencia o el primer fotograma: 0.000000000 segundos]
Número de cuadro: 1
Longitud de la trama: 98 bytes (784 bits)
Longitud de captura: 98 bytes (784 bits)
[El marco está marcado: Falso]
[El marco se ignora: falso]
[Protocolos en el marco: eth: ethertype: ip: icmp: data]
Ethernet II, Src: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6), Dst: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
Destino: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
Dirección: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
… 1… = bit LG: dirección administrada localmente (NO es el valor predeterminado de fábrica)
… 0… = bit IG: dirección individual (unidifusión)
Fuente: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6)
Dirección: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6)
Id de interfaz: 0 (enp0s3)
Nombre de la interfaz: enp0s3
Tipo de encapsulación: Ethernet (1)
Hora de llegada: 9 de enero de 2021 21:23:39.167581606 PKT
[Time shift para este paquete: 0.000000000 segundos]
Época: 1610209419.167581606 segundos
[Delta de tiempo del fotograma capturado anterior: 0.000000000 segundos]
[Delta de tiempo desde el cuadro visualizado anterior: 0.000000000 segundos]
[Tiempo desde la referencia o el primer fotograma: 0.000000000 segundos]
Número de cuadro: 1
Longitud de la trama: 98 bytes (784 bits)
Longitud de captura: 98 bytes (784 bits)
[El marco está marcado: Falso]
[El marco se ignora: falso]
[Protocolos en el marco: eth: ethertype: ip: icmp: data]
Ethernet II, Src: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6), Dst: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
Destino: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
Dirección: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
… 1… = bit LG: dirección administrada localmente (NO es el valor predeterminado de fábrica)
… 0… = bit IG: dirección individual (unicast)
Fuente: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6)
Dirección: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6)
… 0… = bit LG: dirección única global (predeterminado de fábrica)
… 0… = bit IG: dirección individual (unidifusión)
Tipo: IPv4 (0x0800)
Protocolo de Internet versión 4, Src: 10.0.2.15, Dst: 104.26.10.240
0100… = Versión: 4
… 0101 = Longitud del encabezado: 20 bytes (5)
Campo de servicios diferenciados: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00… = Punto de código de servicios diferenciados: Predeterminado (0)
… 00 = Notificación de congestión explícita: Transporte no compatible con ECN (0)
Longitud total: 84
Identificación: 0xcc96 (52374)
Banderas: 0x4000, no fragmentar
0… = bit reservado: no establecido
.1… = No fragmentar: Establecer
… 0… = Más fragmentos: No establecido
… 0 0000 0000 0000 = Desplazamiento de fragmento: 0
Tiempo de vida: 64
Protocolo: ICMP (1)
Suma de comprobación del encabezado: 0xeef9 [validación deshabilitada]
[Estado de la suma de comprobación del encabezado: No verificado]
Fuente: 10.0.2.15
Destino: 104.26.10.240
Protocolo de mensajes de control de Internet
Tipo: 8 (solicitud de eco (ping))
Codigo: 0
Suma de comprobación: 0x0cb7 [correcto]
[Estado de la suma de comprobación: bueno]
Identificador (BE): 5038 (0x13ae)
Identificador (LE): 44563 (0xae13)
Número de secuencia (BE): 1 (0x0001)
Número de secuencia (LE): 256 (0x0100)
Marca de tiempo de los datos de icmp: 9 de enero de 2021 21:23:39.000000000 PKT
[Marca de tiempo de los datos icmp (relativa): 0.167581606 segundos]
Datos (48 bytes)
0000 91 8e 02 00 00 00 00 00 10 11 12 13 14 15 16 17…
0010 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27… !PS
0020 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 () *+,-./ 01234567
Datos: 918e020000000000101112131415161718191a1b1c1d1e1f…
[Longitud: 48]

Conclusión:

El aspecto más desafiante del análisis de paquetes es encontrar la información más relevante e ignorar los bits inútiles. Aunque las interfaces gráficas son fáciles, no pueden contribuir al análisis automatizado de paquetes de red. En este artículo, ha aprendido los parámetros tshark más útiles para capturar, mostrar, guardar y leer archivos de tráfico de red.

Tshark es una utilidad muy útil que lee y escribe los archivos de captura compatibles con Wireshark. La combinación de filtros de visualización y captura contribuye mucho al trabajar en casos de uso de nivel avanzado. Podemos aprovechar la capacidad de tshark para imprimir campos y manipular datos según nuestros requisitos para un análisis en profundidad. En otras palabras, es capaz de hacer prácticamente todo lo que hace Wireshark. Lo más importante es que es perfecto para rastrear paquetes de forma remota usando ssh, que es un tema para otro día.

Cómo desarrollar un juego en Linux
Hace una década, no muchos usuarios de Linux predecían que su sistema operativo favorito algún día sería una plataforma de juegos popular para videoju...
Puertos de código abierto de motores de juegos comerciales
Las recreaciones gratuitas, de código abierto y de motores de juegos multiplataforma se pueden usar para jugar títulos de juegos antiguos y también al...
Los mejores juegos de línea de comandos para Linux
La línea de comandos no es solo su mayor aliado cuando usa Linux, también puede ser la fuente de entretenimiento porque puede usarla para jugar muchos...