Su red es la columna vertebral de las operaciones de su empresa. Asegúrese de saber lo que ocurre en su interior.
En muchos sentidos, el panorama de las empresas digitales ha vivido alguna que otra revolución. Lo que comenzó como simples scripts CGI escritos en Perl ha florecido ahora en despliegues en clúster que se ejecutan de forma totalmente automatizada en Kubernetes y otros marcos de orquestación (perdón por la jerga pesada – no me la estoy inventando en absoluto; ¡es sólo la forma en que las cosas son hoy en día!).
Pero no puedo evitar sonreír al pensar que los fundamentos siguen siendo los mismos que en los años setenta.
Todo lo que tenemos son abstracciones sobre abstracciones soportadas por cables duros y físicos que forman la red (vale, también hay redes virtuales, pero se entiende la idea). Si queremos ponernos elegantes, podemos dividir la red en capas según el modelo OSI, pero dicho y hecho, siempre, siempre estamos tratando con protocolos TCP/IP (¡advertencia, lectura pesada por delante!), pings, routers, todos los cuales tienen un objetivo en común: la transmisión de paquetes de datos.
Entonces, ¿qué es un paquete de red?
No importa lo que estemos haciendo — chatear, transmitir vídeo, jugar, navegar, comprar cosas — se trata esencialmente de un intercambio de paquetes de datos entre dos ordenadores (redes). Un «paquete» es la unidad más pequeña de información que fluye en una red (o entre redes), y existe un método bien definido para construir y verificar los paquetes de red (más allá del alcance de este artículo, pero si se siente aventurero, aquí tiene más).
En términos más sencillos, cada paquete representa un eslabón de la cadena, y se transmite correctamente en el origen y se valida en el destino. Incluso si un solo paquete llega fuera de orden, el proceso se suspende hasta que se hayan recibido todos los paquetes en el orden correcto, y sólo entonces se juntan para formar los datos que representaban originalmente (una imagen, por ejemplo).
Ahora que entendemos lo que es una red, pasa a entender lo que hace un analizador de redes. Es una herramienta que le permite echar un vistazo a los paquetes individuales de su red.
Pero, ¿por qué querría tomarse esa molestia? Hablemos de ello a continuación.
¿Por qué necesitamos analizar paquetes?
Parece que los paquetes son más o menos los bloques de construcción básicos en el flujo de datos de una red, del mismo modo que los átomos son la base de toda la materia (sí, lo sé, no son verdaderas partículas fundamentales, pero es una analogía lo suficientemente buena para nuestros propósitos). Y cuando se trata de analizar materiales o gases, nunca nos preocupamos por lo que hace un átomo individual; así pues, ¿por qué preocuparnos por un solo paquete de red a nivel individual? ¿Qué podemos saber aparte de lo que ya sabemos?
Es difícil vender la importancia del análisis a nivel de paquetes cuando no te han mordido antes en la espalda, pero lo intentaré.
El análisis de paquetes significa ensuciarse las manos y llegar hasta las mismas cañerías para averiguar algo. Generalmente, necesita analizar paquetes de red cuando todo lo demás ha fallado. Normalmente, esto incluye escenarios aparentemente desesperados como los siguientes:
- Pérdida inexplicable de datos secretos a pesar de no existir una brecha evidente
- Diagnóstico de aplicaciones lentas cuando no parece haber ninguna evidencia
- Asegurarse de que su ordenador/red no ha sido comprometido
- Probar o refutar que un atacante no se está aprovechando de su WiFi
- Averiguar por qué su servidor es el cuello de botella a pesar de tener poco tráfico
En definitiva, el análisis de paquetes entra dentro de ciertos tipos de pruebas contundentes. Si sabe cómo realizar el análisis de paquetes y dispone de una instantánea, puede salvarse de ser acusado injustamente de un pirateo o simplemente de ser culpado como desarrollador o administrador de red incompetente.
En cuanto a una historia real, creo que este comentario en la entrada del blog que se encuentra aquí es excepcional (reproducido aquí por si acaso):
Una aplicación crítica para mi empresa presentaba problemas de rendimiento, se caía de bruces en las implantaciones de los clientes. Se trataba de una aplicación de fijación de precios de acciones que se utilizaba a la cabeza de las centrales de teletipos en empresas financieras de todo el mundo. Si usted tenía un 401(k) en torno al año 2000, probablemente dependía de esta aplicación. Hice análisis del tipo que usted ha descrito, concretamente sobre el comportamiento del TCP. Señalé que el problema estaba en la implementación de TCP por parte del proveedor del sistema operativo. El comportamiento defectuoso consistía en que cada vez que la pila de envío entraba en control de congestión, nunca se recuperaba. El resultado era una ventana de envío cómicamente pequeña, a veces sólo unos múltiplos de MSS.
Me llevó un tiempo batallar con los gestores de cuentas y la gente de soporte al desarrollador del proveedor del sistema operativo que no entendían el problema, ni mi explicación, ni que el problema *no podía* estar en la aplicación porque la aplicación es felizmente ignorante de las maquinaciones de TCP. Era como hablar con una pared. Empecé desde el principio con cada conferencia telefónica. Finalmente conseguí hablar por teléfono con un tipo con el que podía mantener una buena discusión. Resultó que había introducido las extensiones RFC1323 en la pila Al día siguiente tenía en mis manos un parche para el sistema operativo y el producto funcionó perfectamente a partir de ese momento.
El desarrollador me explicó que había un error que provocaba que los ACK entrantes *con carga útil* se clasificaran erróneamente como DUPACKs cuando la pila estaba en control de congestión.
Esto nunca ocurriría con aplicaciones half-duplex como HTTP, pero la aplicación que yo estaba soportando enviaba datos bidireccionalmente en el socket en todo momento.
En aquel momento no contaba con mucho apoyo por parte de la dirección (mi jefe incluso me gritó por «querer utilizar siempre un sniffer» para solucionar los problemas), y nadie salvo yo estaba buscando en la implementación TCP del proveedor del SO el origen del problema. Luchar por mí mismo contra la solución del proveedor del SO hizo que esta victoria fuera especialmente dulce, me hizo ganar una tonelada de capital para hacer mis propias cosas y me llevó a que los problemas más interesantes aparecieran en mi escritorio.
En caso de que no le apeteciera leer toda esa losa de texto, o de que no tuviera mucho sentido, este caballero se enfrentaba a problemas de rendimiento de los que se culpaba a su aplicación, y la dirección, como era de esperar, no le prestaba ningún apoyo. Sólo un análisis exhaustivo de paquetes demostró que el problema no estaba en la aplicación, ¡sino en cómo el sistema operativo estaba gestionando el protocolo de red!
La solución no era un ajuste en la aplicación, ¡sino un parche de los desarrolladores del sistema operativo! 😮
Vaya, vaya… Sin el análisis a nivel de paquetes, ¿dónde cree que estaría esta persona? Probablemente fuera de su trabajo. Si esto no le convence de la importancia del análisis de paquetes (también llamado olfateo de paquetes), no sé qué lo hará. 🙂
Ahora que ya sabe que el análisis de paquetes es un superpoder, tengo buenas noticias: ¡no es tan difícil hacerlo!
Gracias a herramientas de rastreo de paquetes potentes pero sencillas de utilizar, obtener información del análisis a nivel de paquetes puede ser tan fácil como leer un cuadro de mando de ventas. Dicho esto, necesitará algo más que un conocimiento superficial de lo que ocurre dentro de una red. Pero, de nuevo, aquí no hay ciencia de cohetes, ni lógica retorcida que dominar… sólo simple sentido común.
Si empieza a leer la documentación de una de estas herramientas a medida que las utiliza en su red, muy pronto será un experto. 😀
Wireshark
Wireshark es un viejo proyecto (comenzó allá por 1998) que es prácticamente el estándar de la industria cuando se trata de bucear profundamente en las redes. Es impresionante si se tiene en cuenta que es una organización dirigida puramente por voluntarios, respaldada por algunos generosos patrocinadores. Wireshark sigue siendo de código abierto (no está en GitHub, pero el código puede encontrarse aquí) ¡e incluso tiene una conferencia técnica a su nombre!
Entre las muchas capacidades de Wireshark se encuentran:
- Soporte para cientos de protocolos de red.
- Interoperable con muchos formatos de archivo (tcpdump (libpcap), Pcap NG, Catapult DCT2000, Cisco Secure IDS iplog, Microsoft Network Monitor, Network General Sniffer® (comprimido y sin comprimir), Sniffer® Pro y NetXray®, etc.).
- Funciona en prácticamente todas las plataformas existentes (Linux, Windows, macOS, Solaris, FreeBSD, etc.).
- Lectura de datos en directo de Ethernet, IEEE 802.11, PPP/HDLC, ATM, Bluetooth, USB, Token Ring, entre otros.
- Descompresión gzip sobre la marcha.
- Soporta montones de protocolos de descifrado (WPA/WPA2, SNMPv3, etc.)
- Amplio análisis de VoIP
- Reglas de coloreado para un análisis visual más rápido
¿Busca Wireshark en su terminal? Claro, pruebe Termshark
tcpdump
Si usted es de la vieja escuela (léase adicto empedernido a la línea de comandos), tcpdump es para usted.
Es otra de esas utilidades icónicas de Linux (como curl) que sigue siendo tan relevante como siempre, tanto que casi todas las demás herramientas «más sofisticadas» se basan en ella. Como dije antes, no tiene un entorno gráfico, pero la herramienta lo compensa con creces.
Pero instalarlo puede ser un dolor; mientras que tcpdump viene incluido con la mayoría de las distribuciones modernas de Linux, si la suya no lo hace, entonces usted terminará teniendo que construir desde la fuente.
los comandos de tcpdump son cortos y sencillos, destinados a resolver un problema concreto, como por ejemplo
- Mostrar todas las interfaces disponibles
- Capturar sólo una de las interfaces
- Guardar los paquetes capturados en un archivo
- Capturar sólo los paquetes fallidos
. . y así sucesivamente.
Si sus necesidades son sencillas y necesita realizar un análisis rápido, tcpdump puede ser una gran opción a tener en cuenta (¡especialmente si teclea tcpdump
y descubre que ya está instalado!). Eche un vistazo a este post para ver algunos ejemplos de comandos tcpdump en tiempo real.
Tproxy
Tproxy es una sencilla herramienta de línea de comandos de código abierto para proxyar conexiones TCP a través de la red. Tproxy está escrito en el lenguaje de programación Go y es una herramienta de línea de comandos Go, y empaquetado como un binario Go por lo que está disponible en todas las plataformas Linux y macOS modernas.
La imagen inferior muestra la línea de comandos para monitorizar conexiones Mysql:
Su caso de uso principal es proxy conexiones HTTP e inspeccionar el contenido de la solicitud HTTP, y las respuestas. También puede utilizarse para proxyar otros protocolos, como SOCKS o TCP. Se puede utilizar para proxy conexiones TCP entre dos hosts, o para analizar el tráfico en una conexión en vivo. Es útil para depurar y probar aplicaciones que utilizan TCP como protocolo de transporte, y para construir servicios proxy TCP.
Fue escrito con el objetivo de proporcionar una interfaz fácil de usar para la utilidad de línea de comandos tcpdump, permitiendo a los usuarios proxy conexiones TCP y realizar otros análisis avanzados de red sin necesidad de comprender el protocolo TCP subyacente.
A continuación, la línea de comandos muestra las conexiones gRPC:
Actúa como un proxy TCP, permitiéndole conectarse a servicios y aplicaciones remotas como si estuviera en la máquina local. Permite construir servicios TCP personalizados en hosts remotos, de forma similar a un proxy TCP inverso que permite una variedad de mejoras de seguridad, resolución de problemas y rendimiento cuando se trata de aplicaciones que utilizan TCP.
A continuación se indican algunos usos más de Tproxy
- Es útil para depurar y optimizar las conexiones TCP.
- También es útil para entender cómo funcionan otros programas proxy, como Burp Suite y ZAP.
- Puede utilizarse para proxy conexiones TCP entre dos hosts, o entre un host y un servicio TCP remoto, como una base de datos o un servicio web.
- Monitoriza las conexiones MySQL y las conexiones gRPC y también comprueba la fiabilidad de la conexión en términos de tasa de retransmisión y RTT
La mayoría de los usuarios encontrarán que Tproxy simplifica su flujo de trabajo y les permite realizar complejos análisis de red y analizar aplicaciones web sin necesidad de alterar la aplicación o la propia red. La herramienta puede descargarse de GitHub.
NetworkMiner
Promocionándose como herramienta de análisis forense de redes (FNAT), NetworkMiner es uno de los mejores analizadores a nivel de paquetes con los que se encontrará. Es una herramienta de código abierto que puede analizar una red de forma pasiva y viene con una impresionante interfaz gráfica de usuario para el análisis que puede mostrar imágenes individuales y otros archivos transferidos.
Pero eso no es todo. NetworkMiner viene con excelentes otras características tales como:
- Soporte IPv6
- Análisis sintáctico de archivos PCAP
- Extracción de certificados X.509 del tráfico cifrado SSL
- Pcap sobre IP
- Funciona con varios tipos de tráfico, como FTP, TFTP, HTTP, SMB, SMB2, SMTP, POP3, etc.
- Huella digital del sistema operativo
- Localización Geo IP
- Soporte para scripts de línea de comandos
Tenga en cuenta que algunas de estas funciones están disponibles en la versión comercial.
Fiddler
A diferencia de otros rastreadores de red pasivos, Fiddler es algo que se sitúa entre su dispositivo y el mundo exterior y, por lo tanto, requiere cierta configuración (¿es por eso que lo llamaron «Fiddler»? 😉 ).
Es una herramienta gratuita personalizable (usando FiddlerScript) que tiene una larga y distinguida historia, así que si su objetivo es husmear tráfico HTTP/HTTPS como un jefe, Fiddler es el camino a seguir.
Hay muchas cosas que puede hacer con Fiddler, especialmente si le apetece ponerse la capucha de hacker:
- Manipulación de sesiones: Destruya las cabeceras HTTP y los datos de sesión, modificándolos como desee.
- Pruebas de seguridad: Le permite simular ataques man-in-the-middle y descifrar todo el tráfico HTTPS por usted.
- Pruebas derendimiento: Analice los tiempos de carga de las páginas (o de respuesta de la API) y vea qué parte de la respuesta es el cuello de botella.
En caso de que se sienta perdido, la documentación es muy buena y muy recomendable.
WinDump
Si echa de menos la sencillez de tcpdump y quiere llevarlo a sus sistemas Windows, diga hola a WinDump. Una vez instalado, funciona desde la línea de comandos escribiendo «tcpdump» del mismo modo que la utilidad funciona en los sistemas Linux.
Tenga en cuenta que no hay nada que instalar en sí; WinDump es un binario que puede ejecutarse directamente, siempre que tenga instalada una implementación de la biblioteca Pcap( se recomiendanpcap, ya que winpcap ya no está en desarrollo).
BruteShark
BruteShark esuna eficaz herramienta de análisis forense de redes (NFAT) que puede utilizar para procesar e inspeccionar el tráfico de red como archivos PCAP y capturar directamente desde interfaces de red.
Incluye la reconstrucción de sesiones TCP, la construcción de mapas de red, la extracción de hashes de contraseñas fuertemente encriptadas, la conversión de hashes a un formato Hashcat para realizar un ataque de Fuerza Bruta fuera de línea.
La principal intención de este proyecto es ayudar a los administradores de red y a los investigadores de seguridad encargados de analizar el tráfico de red e identificar puntos débiles.
Hay dos versiones de BruteShark disponibles: una aplicación basada en una interfaz gráfica de usuario (GUI) para Windows y una herramienta CLI para Linux y Windows. Algunos de los proyectos incluidos en esta solución pueden utilizarse incluso de forma independiente para analizar el tráfico de red en máquinas Windows y Linux.
BruteShark también puede realizar varias operaciones como extraer consultas DNS, tallar archivos, extraer llamadas VoIP (SIP, RTP), construir diagramas de red para usuarios y nodos de red, extraer hashes de autenticación utilizando Hashcat (NTLM, HTTP-Digest, CRAM-MD5, Kerberos, etc.), y recuperar y codificar contraseñas y nombres de usuario.
Todos los proyectos se implementan a través de .Net Standard y .Net Core para un soporte multiplataforma y moderno. Esta solución ofrece una arquitectura de tres capas e incluye uno o varios proyectos, incluyendo PL, BLL y DAL en cada capa.
A través de DAL (Data Access Layer), el proyecto ayuda en la lectura de archivos sin procesar de PCAP utilizando controladores como WinPcap, libpcap, y bibliotecas envoltorio como SharpPcap. Del mismo modo, la BLL (Business Logic Layer) se encarga del análisis de la información de red (TCP, paquetes, etc.), y PL utiliza un proyecto transversal y se refiere tanto a la capa BLL como a la DAL.
OmniPeek
Para las redes más grandes que tienen toneladas de MB de datos fluyendo a través de ellas cada segundo, las herramientas que todo el mundo utiliza pueden agotarse. Si le ocurre lo mismo, puede que merezca la pena echar un vistazo a OmniPeek.
Es una herramienta de rendimiento, análisis y análisis forense para analizar redes, especialmente cuando se necesitan tanto capacidades de bajo nivel como cuadros de mando exhaustivos.
Capsa
Si lo único que le preocupa es la plataforma Windows, Capsa también es un serio contendiente. Viene en tres versiones: gratuita, estándar y empresarial, cada una con capacidades diferentes.
Dicho esto, incluso la versión gratuita admite más de 300 protocolos y cuenta con funciones interesantes como las alertas (que se activan cuando se cumplen determinadas condiciones). La oferta estándar está un escalón por encima, soporta 1000 protocolos y le permite analizar conversaciones y reconstruir flujos de paquetes.
En definitiva, una opción sólida para los usuarios de Windows.
EtherApe
Si lo que busca son visualizaciones potentes y código abierto, EtherApe es una gran opción. Aunque los binarios preconstruidos sólo están disponibles para un puñado de distribuciones Linux, el código fuente está disponible (tanto en SourceForge como en GitHub), por lo que construirlo por su cuenta es una opción.
Esto es lo que hace grande a EtherApe en mi opinión
- Monitorización multinodo codificada por colores.
- Soporte para una tonelada de formatos de paquetes como ETH_II, 802.2, 803.3, IP, IPv6, ARP, X25L3, REVARP, ATALK, AARP, IPX, VINES, TRAIN, LOOP, VLAN, etc. (en realidad, muchos, muchos, más).
- Lee datos en directo del «cable» o de un archivo tcpdump.
- Soporta la resolución de nombres estándar
- A partir de las últimas versiones, la interfaz gráfica de usuario se ha trasladado a GTK3, lo que resulta en una experiencia más agradable.
CommView
Si su tienda es exclusiva de Windows y valora la conveniencia del soporte prioritario, se recomienda CommView. Es un potente analizador de tráfico de red con funciones avanzadas como análisis de VoIP, rastreo remoto, etc., incorporadas.
Lo que más me impresionó es su capacidad para exportar datos a formatos utilizados por varios formatos abiertos y propietarios, como Sniffer®, EtherPeek™, AiroPeek™, Observer®, NetMon, Wireshark/Tcpdump y Wireshark/pcapng, e incluso volcados hexadecimales planos.
Wifi Explorer
El último de la lista es Wifi Explorer, que tiene una versión gratuita para Windows y una versión estándar para Windows y macOS. Si el análisis de redes WiFi es todo lo que necesita (que es más o menos el estándar en estos días), entonces Wifi Explorer le hará la vida más fácil.
Es una herramienta muy bien diseñada y repleta de funciones para llegar directamente al corazón de la red.
Mención honorífica: Sería un flaco favor cerrar este post sin mencionar un analizador de red exclusivo para macOS con el que me tropecé: Little Snitch. Tiene un cortafuegos incorporado, por lo que viene con la ventaja añadida de permitirle controlar de inmediato todo el tráfico a la perfección (lo que puede parecer una molestia, pero a la larga es una enorme ganancia).
¿Qué es lo siguiente?
La mejor forma de aprender las herramientas anteriores es probar a instalarlas y analizar los paquetes. No importa qué herramienta utilice, no puede ignorar Wireshark. Así que, ¡empiece con eso!