Wireshark para todos. Trucos de vida para todos los días



Un paquete con certificados de Habr



Wireshark es un programa muy famoso para capturar y analizar el tráfico de la red, una herramienta indispensable para un hacker, ingeniero de redes, programador, especialista en seguridad . En general, cualquier persona curiosa que quiera estudiar en detalle el tráfico desde su teléfono móvil o el de otra persona, pulsera fitness, TV.



Wireshark captura paquetes de red en tiempo real y los guarda, por ejemplo, en archivos pcap (Packet Capture). Luego se utilizan para estudiar el tráfico, recuperar información, analizar el rendimiento de la red y detectar ataques. Es una alternativa y un agregado a la utilidad estándar tcpdump



, con una interfaz gráfica, filtros y más funciones.



Casos de uso prácticos



Wireshark tiene un millón de funciones, pero literalmente cualquier persona con un conocimiento mínimo puede usarlo en su beneficio. A continuación se muestran ejemplos de tareas básicas de redes.



Descifrado de tráfico SSL / TLS



Chrome y Firefox pueden escribir registros de claves de sesión, que se utilizan para cifrar el tráfico SSL / TLS. Nuestra tarea es habilitar la grabación de estos registros y luego subirlos a Wireshark para su análisis. Se supone que tenemos acceso físico a la computadora del usuario cuyo tráfico queremos descifrar. O a un servidor que establece una conexión encriptada con el usuario.



Primero, habilite la grabación de claves.



Compilaciones anteriores de Windows 10



El método antiguo funciona en versiones anteriores de Windows 10. Vaya a Panel de control  → Sistema y seguridad  → Sistema . En la pestaña "Parámetros adicionales del sistema", haga clic en el botón "Variables de entorno".







Agregue una nueva variable para el usuario SSLKEYLOGFILE



y especifique la ruta al archivo.







Como resultado, obtenemos registros con claves, el comienzo del archivo:



# Archivo de registro de secretos SSL / TLS, generado por NSS
CLIENT_HANDSHAKE_TRAFFIC_SECRET 2f80c7dfd9f1bd5f4cf0084b9c814006178a06b820c5cab264f3727fac1abb23 dcfc82758fbb587e526daaab9fdc0bcaaab2768e
SERVER_HANDSHAKE_TRAFFIC_SECRET 2f80c7dfd9f1bd5f4cf0084b9c814006178a06b820c5cab264f3727fac1abb23 d807f4757db1f9ba8df434d8b0005d07e4987459c1d14c7ea793e4c4f5b240dc
CLIENT_TRAFFIC_SECRET_0 2f80c7dfd9f1bd5f4cf0084b9c814006178a06b820c5cab264f3727fac1abb23 40186c6b1c925c63cd57e8fa235ba9d0bf14eb29c21cbb6494ef944e1e7a4cc3
SERVER_TRAFFIC_SECRET_0 2f80c7dfd9f1bd5f4cf0084b9c814006178a06b820c5cab264f3727fac1abb23 a0a377f26a0962eceae55bec94fcd7549d9b1d5d1e9b70c45627299ca2b9b129
EXPORTER_SECRET 2f80c7dfd9f1bd5f4cf0084b9c814006178a06b820c5cab264f3727fac1abb23 
...


Windows 10



En las versiones más recientes, después de instalar Windows 10, es posible que la antigua forma de agregar variables de entorno ya no funcione. Luego, hay una opción alternativa que usa un comando en PowerShell .



Establecer variable:



[Environment]::SetEnvironmentVariable("PATH", "C:\TestPath", "User")







El primer parámetro es el nombre de la variable, el segundo es el valor, el tercero es para qué nivel está la variable (usuario o sistema).



En nuestro caso:



[Environment]::SetEnvironmentVariable("SSLKEYLOGFILE", "D:\wireshark", "User")







Linux y Mac OS X



En Linux y Mac OS X, puede usar este comando para cambiar la variable de entorno y mantener registros, iniciando el navegador desde la misma ventana de terminal, ya que las variables de entorno siempre funcionan dentro de la misma sesión.



# export SSLKEYLOGFILE=/Users/username/sslkeylogs/output.log
# open -a firefox
# wireshark
      
      





Después de acumular el registro, inicie Wireshark.







Vamos a los "Parámetros", allí, en la pestaña "Protocolos", encontramos la sección TLS (antes se llamaba SSL) - y especificamos la ruta al archivo con los registros y la clave que se usó en el cifrado simétrico sesión: (Pre) -Master-Secret nombre de archivo de registro .







Por ejemplo, cuando un usuario inicia sesión en el servidor de Gmail en la ventana de inspección de paquetes QUIC, vemos paquetes QUIC normales cifrados con una clave TLS.







Pero aparece una nueva pestaña QUIC descifrada en la parte inferior de la pantalla , que muestra el contenido descifrado de estos paquetes.







Este método de descifrar el tráfico del cliente no requiere instalar Wireshark en su computadora, basta con descargar un volcado con claves y luego usarlo junto con el volcado de tráfico.



Según la legislación rusa moderna, los proveedores deben almacenar el tráfico de usuarios durante algún tiempo, incluido el tráfico TLS / SSL cifrado. Ahora está claro qué tipo de mecanismo se puede utilizar para descifrarlo y analizarlo. Un atacante debe tener claves de sesión para el cifrado simétrico. Las mayores empresas de Internet rusas, como Yandex y Mail.ru, cumplen obedientemente los requisitos de la legislación rusa y proporcionan estas claves (consulte la orden FSB n. ° 432 del 12/08/2016 sobre el procedimiento para obtener claves de cifrado).



Nota... Este método no se limita solo a HTTP. Del mismo modo, puede interceptar y descifrar el tráfico SSL / TLS en otras transmisiones. Por ejemplo, tráfico cifrado del servidor MySQL .







Analizar el tráfico de otra computadora



Si necesita lidiar con el servidor en producción, es conveniente copiar archivos pcap desde allí y analizar el tráfico en su computadora personal.



Escribimos paquetes en el servidor usando el rastreador de paquetes tcpdump, que se incluye en el paquete estándar * nix:



tcpdump port 443 -w output.pcap
      
      





Luego copiamos los archivos a nuestra computadora:



scp host:~/output.pcap
      
      





Aquí ya estamos lanzando Wireshark y abriendo el archivo resultante.



Existe una opción para monitorear el tráfico del servidor en tiempo real desde la computadora de su hogar / trabajo. Por ejemplo, todo el tráfico excepto los puertos 22 y 53:



ssh root@host tcpdump -U -s0 'not port 22 and not port 53' -w - | wireshark -k -I -
      
      





Aproximadamente lo mismo en una computadora con Windows:



plink.exe -ssh -pw password root@host "tcpdump -ni eth0 -s 0 -w - not port 22" | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -
      
      





Buscando problemas



Para seleccionar una conexión TCP específica, buscamos cualquier paquete de interés, hacemos clic derecho sobre él y aplicamos el filtro de diálogo.







Ahora, de todo el tráfico registrado, solo quedan los paquetes que pertenecen a esta conexión en particular.







En la captura de pantalla, vemos los paquetes desde el comienzo del establecimiento de la conexión TLS: un paquete con un saludo del cliente, un paquete de respuesta con un saludo del servidor, un certificado presentado, una lista de cifrados, etc. El contenido de cada paquete se puede examinar por separado. Muy cómodamente.



Un patrón típico es utilizar Wireshark para diagnosticar problemas específicos. Por ejemplo, si la conexión TLS se rompe, podemos entrar y ver quién la rompió (cliente o servidor), en qué etapa sucedió y por qué motivo.



Contenido del paquete



El contenido de bytes de cada paquete es mágico. Específicamente, esta funcionalidad de Wireshark le permite identificar los errores más graves. Por ejemplo, hace unos años se reveló que los controladores Intel 82574L Gigabit Ethernet se desactivan si se les envía un paquete especialmente diseñado con una secuencia específica de bytes, el llamado "paquete de muerte" . Fue gracias a Wireshark que quedó claro qué bytes específicos en el paquete conducen a la desconexión garantizada de la tarjeta de red.



Aquí hay una entrada para paquetes específicos: pod-http-post.pcap y pod-icmp-ping.pcap . Podemos descargarlos, abrirlos en Wireshark y verlos con nuestros propios ojos.



La interfaz de red Intel está deshabilitada si la dirección 0x47f es 2 o 3, es decir, 32 HEX o 33 HEX. Si hay 4, entonces todo está bien.







Cualquier paquete era adecuado para el ataque: HTTP POST, ICMP echo-request, etc. Por ejemplo, se puede configurar una respuesta 200 en un servidor web para "eliminar" las interfaces de red en las máquinas cliente. Una situación bastante curiosa.



Buscar paquetes por contenido



Arriba, aplicamos un filtro de diálogo para devolver todos los paquetes para una conexión TCP específica. Sin embargo, los filtros también se pueden escribir manualmente. A continuación, se muestran algunos ejemplos de solicitudes:



  • frame contains "google"



    - buscar todos los paquetes con la palabra "google" en cualquier parte del paquete

  • tcp.port == 443



    - puerto 443

  • dns.resp.len > 0



    - todas las respuestas de DNS

  • ip.addr == 95.47.236.28



    - dirección IP específica para el destinatario o remitente


… Etc. Los filtros son mucho más ricos que los de tcpdump, por lo que es mejor realizar análisis de tráfico en Wireshark.



Tráfico de telefonía móvil



Del mismo modo, puede analizar el tráfico del reloj fitness a través de Bluetooth o el tráfico de cualquier aplicación móvil para Android. Para hacer esto, necesita registrar los paquetes PCAP en su dispositivo móvil y transferirlos para su análisis a Wireshark en su PC en funcionamiento.



Hay varios programas de grabación de PCAP móviles. Por ejemplo, la aplicación

PCAPdroid para Android:





PCAPdroid



En principio, no puede transferir los archivos PCAP grabados, sino analizarlos directamente en su dispositivo móvil. Algunos rastreadores móviles también tienen funciones rudimentarias de rastreo de paquetes, consulte Captura de paquetes y Termux (más sobre eso a continuación).





Captura de paquetes



Wireshark también tiene una interfaz Androiddump directa para extraer datos del teléfono directamente a través del SDK de Android.



Tráfico de TV y otros electrodomésticos



Para estudiar el tráfico del televisor, el teléfono inteligente de la esposa u otros electrodomésticos que están conectados a la red doméstica a través de Ethernet y WiFi, deberá registrar PCAP en el enrutador. A veces, las herramientas integradas son suficientes . Si tiene un enrutador con firmware DD-WRT, puede ejecutarlo directamente en el dispositivo tcpdump



:



ssh root@192.168.1.1 -c "tcpdump -v -w - -i eth2" > mypackets.pcap
      
      





Para el firmware OpenWrt, hay una opción para reflejar el tráfico usando iptables-mod-tee .



El tráfico se puede duplicar y registrar mediante un concentrador físico adicional o una conexión de red. Consulte la documentación para obtener más detalles .











Otra forma es interceptar el tráfico inalámbrico WiFi utilizando la utilidad Airodump-ng sin conectarse a un enrutador. Pero esto es más adecuado para analizar el tráfico en los puntos de acceso de otras personas.



Además, todo está moleteado: cargue los archivos en Wireshark, ejecute los filtros.



Por cierto, Wireshark también admite análisis de tráfico USB: sniffer USBPcap incorporadoe importar paquetes de rastreadores de terceros como Npcap y RawCap .



Terremoto



Si analiza registros grandes en un servidor remoto, pero no desea copiar todo en su máquina, Termshark puede ser útil : una interfaz de usuario conveniente en la consola para el analizador TShark, que se parece a Wireshark.



Funciones



  • Leer archivos pcap y escuchar el tráfico de interfaces activas en tiempo real (donde tshark está habilitado)

  • Filtrar pcap o interfaces activas con filtros de visualización de Wireshark

  • Reensamblaje e inspección de transmisiones TCP y UDP

  • Ver sesiones de red para cada protocolo

  • Copiar los paquetes seleccionados de la consola al portapapeles

  • La herramienta está escrita en el lenguaje Go, en cada plataforma se compila en un solo archivo ejecutable: ya hay versiones integradas para Linux, macOS, variantes BSD, Android (termux) y Windows






Así es como se ve la versión de Android:







Wireshark como aplicación web



Si por alguna razón no puede ejecutar Wireshark en su máquina local, puede utilizar el servicio en la nube CloudShark , que está sorprendentemente bien hecho. La función principal es colaborar y publicar análisis de paquetes por URL. Por ejemplo, cloudshark.org/captures/05aae7c1b941 . Los archivos se cargan en la nube y se analizan en el navegador. Esto es necesario si desea pedir consejo en el foro, compartir información con colegas o publicar un desglose del paquete para una amplia audiencia. Por cierto, es conveniente usarlo desde un teléfono móvil, porque existen aplicaciones para la captura de paquetes para Android, pero no hay un buen analizador. El servicio es de pago, hay un período de prueba de 30 días.















Con todo, Wireshark es un programa fantástico para todas las ocasiones.



Además del uso práctico real, el analizador da una idea aproximada de cómo funciona el filtrado DPI con proveedores rusos. Todo está dispuesto de la misma manera allí. El sistema escanea el tráfico en tiempo real, filtra específicamente los paquetes de Twitter y ralentiza su entrega a los usuarios en Rusia. En particular, Roskomnadzor ha estado lidiando con esta lascivia desde el 10 de marzo de 2021 .






Publicidad



Si necesita un servidor para alquilar en Linux o Windows para trabajar , definitivamente venga a nosotros: ¡activación del servicio un minuto después del pago!



Únase a nuestro chat de Telegram .






All Articles