Julia Evans, autora del material que publicamos hoy, decidió hablar sobre una de sus herramientas de red favoritas llamada
Wireshark . Este es un programa potente y complejo, equipado con una interfaz gráfica, diseñado para analizar el tráfico en las redes de computadoras. Julia dice que, en la práctica, usa solo algunas de las características de Wireshark, pero generalmente son útiles. Aquí quiere compartir con todos los que desean una historia sobre los métodos más útiles para trabajar con el programa y espera que sean útiles no solo para ella, sino también para todos los que tienen que resolver problemas de red.

Instalar Wireshark
Las distribuciones de Wireshark para varios sistemas operativos se pueden encontrar
aquí . Para instalar el programa, puede descargar e instalar el archivo correspondiente. Alternativamente, si usa distribuciones de Linux basadas en Debian, puede usar el comando
sudo apt install wireshark
. Si lo desea, para encontrar la última versión del programa, puede consultar el archivo personal de
los paquetes
wireshark-dev .
Así es como se ve la interfaz del programa.
Interfaz de WiresharkA primera vista, todo esto puede parecer demasiado complicado: una larga lista de paquetes, un campo misterioso para ingresar algún tipo de solicitud ... ¿Cómo trabajar con Wireshark?
Análisis de archivos pcap
Normalmente uso Wireshark para averiguar las causas de los problemas de red. La secuencia de acciones realizadas en el curso de la resolución de tales problemas se ve así:
- Capture paquetes con
tcpdump
(generalmente con un comando como sudo tcpdump port 443 -w output.pcap
). - Copiar el archivo pcap a una computadora portátil que funcione (
scp host:~/output.pcap .
). - Abrir un archivo pcap usando Wireshark (
wireshark output.pcap
).
Como puede ver, todo es muy simple. Sin embargo, después de abrir el archivo pcap en el programa, es posible que tenga una pregunta lógica sobre qué hacer con todo esto. Hablemos de eso.
Análisis de conexión TCP
A menudo, cuando analizo una determinada situación en Wireshark, necesito verificar alguna conexión TCP específica, con la cual, por alguna razón, algo está mal. Gracias a Wireshark, puede analizar el ciclo de vida completo de una conexión TCP individual y descubrir las causas del comportamiento incorrecto del sistema.
Puede hacer esto haciendo clic derecho en el paquete que le interesa y eligiendo el
Conversation filter > TCP
comando
Conversation filter > TCP
en el menú contextual.
Iniciar análisis de conexión TCPDespués de eso, Wireshark mostrará otros paquetes de la misma conexión TCP a la que pertenece el paquete en el que hizo clic. En la figura a continuación, puede ver un ejemplo de una conexión SSL exitosa: hay paquetes de
server key exchange
que se utilizan para establecer conexiones SSL.
Análisis de conexión TCPLa técnica de análisis de paquetes TCP discutida aquí tuve que usar el día en que se escribió este artículo, en el trabajo. Se interrumpieron algunas conexiones y noté que después de enviar el paquete de
client hello
del
client hello
, el
client hello
envió el paquete
FIN ACK
, que finalizó la conexión TLS. Lo que logré averiguar resultó ser útil, ya que quedó claro que el cliente y no el servidor estaban finalizando la conexión. Como resultado, inmediatamente descubrí que el problema radica en el cliente, y tengo que prestarle atención.
Lo anterior es un esquema muy típico para mí de trabajar con Wireshark. Por lo general, el cliente y el servidor están involucrados en la conexión, y algo sale mal en el cliente o en el servidor. Esto puede ser, por ejemplo, algún tipo de falla o error en la configuración del sistema. Como resultado, Wireshark me brinda una ayuda invaluable para identificar al culpable de los problemas, ayudándome a descubrir si es un cliente o un servidor.
Decodificar como equipo
Para entender qué es exactamente un paquete en particular, Wireshark usa números de puerto, y este enfoque generalmente funciona. Por ejemplo, si un programa ve algo de tráfico en el puerto 80, decide que es tráfico HTTP y generalmente lo es.
Sin embargo, a veces las conexiones HTTP usan puertos inusuales y, como resultado, Wireshark necesita sugerencias para reconocerlas. Tales sugerencias se pueden dar al programa llamando al menú contextual del paquete y seleccionando
Decode as
comando allí. Además, puede decirle a Wireshark qué protocolo se utiliza para transmitir paquetes utilizando un determinado puerto. Estas sugerencias simplifican el análisis de datos.
Ver contenido del paquete
En Wireshark, hay simplemente un modo encantador para ver información detallada sobre un paquete, con el que puede comprender el contenido de cualquier paquete. Tomemos, por ejemplo, el paquete con el mensaje de
client hello
del
client hello
del ejemplo anterior. Este es el primer paquete de conexión SSL, el cliente con su ayuda dice: “¡Hola! ¡Aquí estoy!
Wireshark ofrece al administrador de la red dos herramientas increíblemente útiles para examinar el contenido del paquete. El primero es un modo de visualización en el que puede expandir los encabezados disponibles para el paquete (por ejemplo, encabezado Ethernet, encabezado IP, encabezado TCP) y ver su contenido.
Análisis de encabezado de paqueteEl segundo modo de ver paquetes es un verdadero milagro. Aquí puede ver los datos de paquete sin procesar como una secuencia de bytes. Y, lo que es especialmente bueno, si pasa el mouse sobre un byte (por ejemplo, en la figura a continuación, el cursor está en el byte incluido en
tiles.services.mozilla.com
), el programa, en la barra de estado, le dirá a qué campo pertenece. este byte (en este caso, es el campo
Server Name
del
Server Name
) y sobre el nombre en código utilizado por Wireshark para este campo (en este caso,
ssl.handshake.extensions_server_name
)
Análisis de datos de paquete sin procesarPaquete de búsqueda
Wireshark admite un potente lenguaje de consulta. Esto simplifica enormemente la búsqueda de paquetes específicos en listas. Por lo general, cuando trabajo con un programa, uso consultas muy simples. Aquí hay algunos ejemplos:
- El
frame contains "mozilla"
que le permite buscar la línea mozilla
en cualquier parte del paquete y enumerar los paquetes encontrados. - La solicitud
tcp.port == 443
muestra paquetes utilizando el puerto TCP 443. - La consulta
dns.resp.len > 0
muestra todas las respuestas DNS - La
ip.addr == 52.7.23.87
muestra paquetes cuya dirección IP de origen o destino es 52.7.23.87.
El lenguaje de consulta Wireshark tiene capacidades mucho mayores que el lenguaje de consulta
tcpdump
(y, además, admite el autocompletado presionando la tecla TAB). Como resultado, a menudo uso la siguiente secuencia de acciones: capturo una gran cantidad de paquetes usando
tcpdump
(digamos, algo así como todos los paquetes desde el puerto 443), y luego los estudio cuidadosamente usando Wireshark.
Ver detalles de la duración de la conexión TCP
A veces debo prestar especial atención al estudio de las conexiones TCP lentas. ¿Cómo hacer esto, siempre que en mi archivo haya registros de miles de paquetes? ¿Cómo encontrar conexiones TCP lentas?
Si selecciona
Statistics
en el menú principal del programa y el comando
Conversations
en él, Wireshark nos proporcionará un maravilloso conjunto de información estadística.
Informacion EstadisticaEn particular, aquí, en la columna
Duration
, puede ver la duración de las conexiones TCP, identificar las más largas y estudiarlas detenidamente. Esta es una característica muy útil.
Actualización de Wireshark
Si no ha actualizado Wireshark durante mucho tiempo, vale la pena hacerlo. Por ejemplo, recientemente, en una computadora portátil que funcionaba, estaba investigando paquetes HTTP / 2. Entonces no fue fácil para mí y decidí mirar la documentación. Al final resultó que, tenía una versión antigua del programa. En la actualización que instalé, el soporte HTTP / 2 mejoró seriamente, es decir, había justo lo que necesitaba.
Uso de Wireshark para aprender protocolos de red
Este artículo contiene algunos términos que pueden atribuirse a algo como la jerga de los especialistas en redes. Por ejemplo: trama, puerto TCP (puerto TCP), respuesta DNS (respuesta DNS), dirección IP de origen (dirección IP de origen), conexiones SSL de paquete de
client hello
(saludo del cliente SSL). Una de las razones para usarlos es el hecho de que Wireshark definitivamente no está tratando de proteger al usuario de las complejidades de la estructura interna de las tecnologías de red. Para un principiante, este estado de cosas puede, al principio, hacerle pensar que Wireshark no es un programa para él, sino solo para especialistas experimentados en redes.
Sin embargo, el enfoque de Wireshark en los mecanismos de red de bajo nivel tiene una gran ventaja. El hecho es que al trabajar con este programa, puede aprender algo nuevo sobre los protocolos de red. Por ejemplo, no sé mucho sobre los mecanismos internos del protocolo TLS / SSL. Sin embargo, al analizar el tráfico en Wireshark, noté que los dos primeros paquetes de la conexión SSL son
client hello
y
server hello
. Como resultado, el protocolo, que, si uno no profundiza en los detalles de su trabajo, parece misterioso e inaccesible para la comprensión, comienza a tomar una forma más comprensible, se convierte en algo que se puede entender y analizar.
Resumen
Wireshark tiene enormes oportunidades. Aquí hablamos solo de algunos de ellos. Sin embargo, los métodos de trabajo discutidos aquí, según el autor del material, se utilizan en aproximadamente el 95% de las situaciones en las que se necesita Wireshark. Por lo tanto, esperamos que incluso lo poco que aprendiste hoy te sea útil.
Estimados lectores! ¿Utilizas Wireshark?
