Aunque una interfaz gráfica de usuario es, en teoría, mucho más fácil de usar, no todos los entornos lo admiten, especialmente entornos de servidor con solo opciones de línea de comandos. Por lo tanto, en algún momento, como administrador de la red o ingeniero de seguridad, deberá usar una interfaz de línea de comandos. 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 del tráfico, Tshark es mucho más poderoso.
Lo mejor que puede hacer es usar Tshark para configurar un puerto en su servidor que reenvía información a su sistema, para que pueda capturar el tráfico para el análisis utilizando una GUI. Sin embargo, por el momento, aprenderemos cómo funciona, cuáles son sus atributos y cómo puede utilizarlo lo mejor que pueda.
Escriba el siguiente comando para instalar Tshark en Ubuntu/Debian usando apt-get:
ubuntu@ubuntu: ~ $ sudo apt -get install tshark -y
Ahora escriba tshark -help Para enumerar todos los argumentos posibles con sus respectivos banderas que podemos pasar a un comando tshark.
ubuntu@ubuntu: ~ $ 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.Wireshark.org para obtener más información.
Uso: Tshark [Opciones] ..
Interfaz de captura:
-iNombre o IDX de la interfaz (DEF: Primer no loopback)
-FFiltro de paquetes en la sintaxis del filtro libpcap
-sLongitud de la instantánea de paquetes (DEF: máximo apropiado)
-P No captures en modo promiscuo
-Captura en modo monitor, si está disponible
-B tamaño del búfer de núcleo (DEF: 2 MB)
-Y Tipo de capa de enlace (DEF: Primero apropiado)
--Método de marca de tiempo de tipo de tiempo para la interfaz para la interfaz
-D Lista de impresión de interfaces y salida
-L Lista de impresión de tipos de la capa de enlace de IFACE y salida
--Lista de tipos de estampas de lista Lista de impresión de tipos de marca de tiempo para IFACE y salida
Condiciones de parada de captura:
Puede notar 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 la terminal.
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.
ubuntu@ubuntu: ~ $ tshark -d
1. ENP0S3
2. cualquier
3. Lo (Loopback)
4. nflog
5. nfqueue
6. USBMON1
7. Ciscodump (Cisco Remote Capture)
8. Randpkt (generador de paquetes aleatorios)
9. sshdump (captura remota ssh)
10. UDPDUMP (Captura remota del oyente UDP)
Tenga en cuenta que no todas las interfaces enumeradas funcionarán. Tipo ifconfig para encontrar interfaces que funcionen en su sistema. En mi caso, es ENP0S3.
Captura del tráfico:
Para comenzar el proceso de captura en vivo, utilizaremos el tshark comando con el "-iOpción para comenzar el proceso de captura desde la interfaz de trabajo.
ubuntu@ubuntu: ~ $ tshark -i enp0s3
Usar Ctrl+C Para detener la captura en vivo. En el comando anterior, he metido el tráfico capturado al comando Linux cabeza Para mostrar los primeros paquetes capturados. O también puede usar la sintaxis "-c" para capturar el "norte" Número de paquetes.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -c 5
Si solo entra tshark, Por defecto, no comenzará a capturar el tráfico en todas las interfaces disponibles ni escuchará su interfaz de trabajo. En cambio, capturará paquetes en la primera interfaz enumerada.
También puede usar el siguiente comando para verificar múltiples interfaces:
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -i usbmon1 -i lo
Mientras tanto, otra forma de vivir el tráfico de captura es usar el número junto con las interfaces enumeradas.
ubuntu@ubuntu: ~ $ tshark -i interface_number
Sin embargo, en presencia de múltiples interfaces, es difícil realizar un seguimiento de sus números enumerados.
Filtro de captura:
Los filtros de captura reducen significativamente el tamaño del archivo capturado. Tshark utiliza la sintaxis del 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.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "puerto 80 o puerto 53" -c 10
Guardar tráfico capturado en un archivo:
Lo clave a tener en cuenta en la captura de pantalla anterior es que la información que se muestra no se guarda, por lo tanto, es menos útil. Usamos el argumento "-w"Para guardar el tráfico de red capturado para test_capture.PCAP en /TMP carpeta.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -w /tmp /test_capture.PCAP
Mientras, .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 Como esta carpeta no requiere ningún privilegio de ejecución. Si lo guarda en otra carpeta, incluso si está ejecutando Tshark con privilegios raíz, el programa negará el permiso debido a razones de seguridad.
Cavemos en todas las formas posibles a través de las cuales puede:
Parámetro AutoStop:
Puedes usar el "-aParámetro para incorporar banderas 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.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -a duración: 120 -W /tmp /test_capture.PCAP
Del mismo modo, si no necesita que sus archivos sean extra grandes, tamaño del archivo es una bandera perfecta para detener el proceso después de algunos límites de KB.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -a filesize: 50 -W /tmp /test_capture.PCAP
Más importante, archivos La bandera le permite detener el proceso de captura después de varios archivos. Pero esto solo puede ser posible después de crear múltiples archivos, lo que requiere la ejecución de otro parámetro útil, captura de salida.
Parámetro de salida de captura:
Captura de salida, también conocido como argumento de ringbuffer "-b", Viene junto con las mismas banderas que Autostop. 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 los paquetes en otro archivo después de alcanzar un límite de tiempo especificado en segundos o tamaño del archivo.
El siguiente mando muestra que capturamos el tráfico a través de nuestra interfaz de red ENP0S3, y capturar tráfico utilizando el filtro de captura "-F"Para TCP y DNS. Utilizamos 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 de AutoStop para especificar el número de archivos usando archivos opción de tal manera que detenga el proceso de captura después de generar tres archivos.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "puerto 53 o puerto 21" -b filesize: 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 actualizaciones después de cada segundo.
ubuntu@ubuntu: ~ $ 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 filesize: 15 -A En su terminal y presiona Pestaña. La lista de todas las banderas disponibles estará disponible en su pantalla.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "puerto 53 o puerto 21" -b filesize: 15 -a
Duración: archivos: filesize:
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "puerto 53 o puerto 21" -b filesize: 15 -a
Lectura .Archivos PCAP:
Lo más importante, puede usar un "-riñonalParámetro para leer el test_capture.archivos PCAP y canalizarlo al cabeza dominio.
ubuntu@ubuntu: ~ $ 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 comprender mejor cualquier dirección IP de destino específica, utilizamos el -riñonal opción para leer el archivo capturado en paquete y usar un IP.addr Filtrar 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.
ubuntu@ubuntu: ~ $ tshark -r /tmp /test_capture.PCAP -W /TMP /redirected_file.PCAP IP.DST == 216.58.209.142
ubuntu@ubuntu: ~ $ tshark -r /tmp /redirected_file.PCAP | Cabeza
1 0.000000000 10.0.2.15 → 216.58.209.142 TLSV1.2 370 datos de aplicación
2 0.000168147 10.0.2.15 → 216.58.209.142 TLSV1.2 669 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 1093 datos de aplicación
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 de reensamblado]
7 0.016738530 10.0.2.15 → 216.58.209.142 TLSV1.2 948 datos de aplicación
8 0.023006863 10.0.2.15 → 216.58.209.142 TLSV1.2 233 datos de aplicación
9 0.023152548 10.0.2.15 → 216.58.209.142 TLSV1.2 669 datos de aplicación
10 0.023324835 10.0.2.15 → 216.58.209.142 TLSV1.2 3582 datos de aplicación
Selección de campos a la salida:
Los comandos anteriores salen un resumen de cada paquete que incluye varios campos de encabezado. Tshark también le permite ver los campos especificados. Para especificar un campo, usamos "-T campo"Y extrae campos según nuestra elección.
Después de la "-T campo"Switch, usamos la opción" -e "para imprimir los campos/filtros especificados. Aquí, podemos usar filtros de pantalla de Wireshark.
ubuntu@ubuntu: ~ $ tshark -r /tmp /test_capture.PCAP -T Fields -E Frame.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 apretón de manos cifrados:
Hasta ahora, hemos aprendido a guardar y leer archivos de salida utilizando 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 garantiza una transmisión de datos segura o cifrada a través del cable. Para la transmisión segura, un cifrado de seguridad de la capa de transporte inicia un proceso de apretón de manos para comenzar la comunicación entre el cliente y el servidor.
Capturemos y comprendamos el apretón de manos TLS usando tshark. Divida su terminal en dos pantallas y use un wget comandar para recuperar un archivo HTML de https: // www.Wireshark.organizar.
ubuntu@ubuntu: ~ $ wget https: // www.Wireshark.organizar
--2021-01-09 18: 45: 14-- https: // www.Wireshark.org/
Conectándose a www.Wireshark.org (www.Wireshark.org) | 104.26.10.240 |: 443 ... conectado.
Solicitud HTTP enviada, en espera de respuesta ... 206 Contenido parcial
Longitud: 46892 (46k), 33272 (32k) restante [texto/html]
Guardar a: 'Índice.html '
índice.html 100%[+++++++++++++++++ ================================= ==>] 45.79k 154kb/s en 0.2S
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 utilizando el "-CParámetro. Al realizar el análisis, las marcas de tiempo son importantes para reconstruir eventos, por lo tanto, usamos "-t AD", De una manera que Tshark agrega marca de tiempo junto a cada paquete capturado. Por último, usamos el comando de host para capturar paquetes del host compartido dirección IP.
Este apretón de manos es bastante similar al apretón de manos TCP. Tan pronto como el apretón de manos de tres vías TCP concluye en los primeros tres paquetes, los paquetes de cuarto a noveno signo siguen un ritual de apretón de manos algo similar e incluyen cadenas TLS para garantizar una comunicación cifrada entre ambas partes.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -c 11 -t anuncio anfitrión 104.26.10.240
Capturar 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 60 443 → 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 Hello
5 2021-01-09 18:45:14.281007512 104.26.10.240 → 10.0.2.15 TCP 60 443 → 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 Servidor Hola, Cambie las especificaciones de cifrado
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.3 134 Cambiar las especificaciones de cifrado, datos de la aplicación
11 2021-01-09 18:45:14.394614735 104.26.10.240 → 10.0.2.15 TCP 60 443 → 48512 [ACK] SEQ = 2519 ACK = 400 Win = 65535 Len = 0
11 paquetes capturados
Ver 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 de paquetes dentro de un paquete dentro de un instante. Sin embargo, todavía es posible inspeccionar el paquete y volcar la información completa del paquete que se muestra en el panel de paquetes de GUI.
Para inspeccionar un paquete completo, utilizamos un comando de ping con la opción "-c" para capturar un solo paquete.
ubuntu@ubuntu: ~ $ ping -c 1 104.26.10.240
Ping 104.26.10.240 (104.26.10.240) 56 (84) bytes de datos.
64 bytes de 104.26.10.240: icmp_seq = 1 ttl = 55 tiempo = 105 ms
--- 104.26.10.240 estadísticas de ping ---
1 paquetes transmitidos, 1 recibidos, 0% de pérdida de paquetes, 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 un indicador adicional para mostrar los detalles completos del paquete. Puede notar varias secciones, mostrar los detalles de los marcos, Ethernet II, IPV y ICMP.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -c 1 -v host 104.26.10.240
Marco 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
[Cambio de tiempo para este paquete: 0.000000000 segundos]
Tiempo de época: 1610209419.167581606 segundos
[Tiempo delta del marco capturado anterior: 0.000000000 segundos]
[Tiempo delta del marco mostrado anterior: 0.000000000 segundos]
[Tiempo desde referencia o primer cuadro: 0.000000000 segundos]
Número de marco: 1
Longitud del marco: 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 ... = LG Bit: dirección administrada localmente (esta no es la fábrica predeterminada)
… 0 ... = bit de 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)
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
[Cambio de tiempo para este paquete: 0.000000000 segundos]
Tiempo de época: 1610209419.167581606 segundos
[Tiempo delta del marco capturado anterior: 0.000000000 segundos]
[Tiempo delta del marco mostrado anterior: 0.000000000 segundos]
[Tiempo desde referencia o primer cuadro: 0.000000000 segundos]
Número de marco: 1
Longitud del marco: 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 ... = LG Bit: dirección administrada localmente (esta no es la fábrica predeterminada)
… 0 ... = bit de 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 ... = LG Bit: Dirección globalmente única (predeterminado de fábrica)
… 0 ... = bit de ig: dirección individual (unicast)
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 ... = Servicios diferenciados CodePoint: predeterminado (0)
… 00 = Notificación de congestión explícita: no con capacidad para ECN (0)
Longitud total: 84
Identificación: 0xcc96 (52374)
FLAGS: 0x4000, no te fragmenten
0 ... = bit reservado: no establecido
.1 ... = no fragmento: establecer
... 0 ... = Más fragmentos: no establecido
… 0 0000 0000 0000 = Compensación de fragmentos: 0
Hora de vivir: 64
Protocolo: ICMP (1)
Suma de verificación de encabezado: 0xeef9 [Validación deshabilitada]
[Estado de la suma de verificació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))
Código: 0
SUMACIÓN DE CHECKS: 0x0CB7 [Correcto]
[Estado de la suma de verificació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 datos de ICMP: 9 de enero de 2021 21:23:39.000000000 PKT
[Marca de tiempo de datos ICMP (relativo): 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 de 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 mientras trabaja en casos de uso de nivel avanzado. Podemos aprovechar la capacidad de Tshark para imprimir campos y manipular datos según nuestros requisitos para el análisis en profundidad. En otras palabras, es capaz de hacer prácticamente todo lo que Wireshark hace. Lo más importante, es perfecto para olfatear paquetes de forma remota usando SSH, que es un tema para otro día.