En los últimos años, hemos presenciado el desarrollo de innumerables mejoras en lo que respecta al fortalecimiento de los procesos de autenticación de usuarios. Sin embargo, cuando estos procesos fallan, o bien cuando queremos hacer frente a amenazas internas, debemos recurrir al estudio de patrones conductuales de los usuarios legítimos con el objeto de lograr identificar anomalías en el tráfico de red. A lo largo de este artículo veremos algunas herramientas sencillas y gratuitas para que sepan cómo crear perfiles de red, y puedan perfilar tráfico de red a pequeña escala.

La ventaja que posee este tipo de análisis radica en su transparencia para los usuarios finales. Incluso aunque éstos accedan desde diferentes plataformas, dispositivos, o con configuraciones de privacidad activadas, el flujo de paquetes producido puede igualmente ser moldeado para estructurarse en una firma única por cada usuario.

El proceso de generación de patrones implica, en primer lugar, la captura del tráfico de red. Luego, es necesario realizar un análisis que determine ciertos puntos críticos en el flujo contra los cuales poder comparar a futuro nuevos comportamientos. La detección de la anomalía surge de la contraposición de estos puntos en el tiempo y la evaluación del nivel de confianza en términos estadísticos. Finalmente, se decide si es necesaria la emisión de una alerta.

¿Qué información debemos analizar?

Tras capturar con nuestro sniffer predilecto los paquetes de red que transitan nuestro servidor durante el tiempo necesario, podemos iniciar la etapa de análisis. Una vez que tenemos las muestras a estudiar –recolectadas en este caso con tcpdump-, podemos inicialmente investigar los protocolos de red utilizados.

Mediante herramientas de fingerprinting como NetworkMiner, podemos agrupar rápidamente el tráfico generado por cada estación, además de acceder a las características físicas del equipo físico.

fingerprinting_networkminer
Algunos protocolos como FTP no son seguros y transmiten las credenciales del usuario en texto plano. Este tipo de protocolos nos permite mapear explícitamente cada usuario con el tráfico que ha generado. En redes donde estos protocolos no son utilizados, o donde cada usuario físico no se encuentra necesariamente ligado a una estación de trabajo particular –es decir, donde varios usuarios utilizan una misma máquina-, es posible utilizar tokens de usuario para realizar el seguimiento de cada flujo de tráfico.

A continuación podemos ver en NetworkMiner la captura de las credenciales del tráfico FTP:

trafico_ftp

Es posible apreciar lo que parecen ser intentos fallidos de inicio de sesión, que pueden ser mejor estudiados mediante el análisis de los parámetros en los paquetes. Estos son eventos a tener en cuenta, ya que pueden alertarnos de posibles ataques de fuerza bruta.

eventos_inicio_sesion

Hasta aquí, hemos visto diferentes esquemas para identificar en la captura de pantalla los diferentes usuarios, los protocolos que normalmente usan, y los equipos físicos que les corresponden. Además, podemos utilizar herramientas como Wireshark combinadas con bases de datos de locaciones geográficas para observar la ubicación estimada del equipo cliente.

GeoLite proporciona binarios gratuitos que nos permiten realizar este tipo de comparaciones, generando un mapa planisferio para obtener una vista mucho más gráfica. En este caso hemos utilizado los comandos --pnat y --seed de la herramienta tcprewrite para aleatorizar y enmascarar las direcciones IP pertenecientes a las máquinas virtuales de prueba:

direcciones_ipcaptura_trafico

Otro aspecto de suma importancia al momento de construir patrones de tráfico es claramente la cantidad de tráfico que cada usuario produce en la red. Dos herramientas gratuitas que nos permiten emitir estadísticas al respecto son yaf y SiLK, que trabajan entre muchos formatos, siendo uno ellos IPFIX –del inglés Internet Protocol Flow Information Export.

Ambas cuentan con altos niveles de escalabilidad y rapidez en el procesamiento de grandes redes. En la siguiente imagen, las hemos utilizado de manera combinada para obtener la cantidad de tráfico de bajada y de subida que cada IP ha generado:

trafico_ip

Una buena práctica es tomar los datos de cantidad de bytes de bajada y subida, y luego seccionarlos por intervalos de tiempo. Así, obtenemos un nivel superior de detalle en cuanto a la carga de red producida por cada usuario.

Wireshark, dentro de las variadas estadísticas que ofrece, nos permite generar un gráfico con la cantidad de paquetes enviados distribuidos a lo largo del tiempo; esta opción se conoce como IO Graphs. Estos gráficos pueden funcionar como huellas del tráfico de la red, y de ser estudiados a lo largo del tiempo, nos permiten contrastarlos y determinar rápida y visualmente eventos anómalos en la red.

Una vez que hemos diseccionado el tráfico de red y analizado los diferentes aspectos que hacen a su estudio, podemos pasar a generar los puntos críticos de comparación. Un ejemplo de lo anterior sería marcar un intervalo de confianza alrededor de dos veces la desviación media respecto del valor promedio.

Es necesario tener en cuenta que las alertas deben ser analizadas en conjunto: puede que un evento aislado parezca carecer de importancia alguna y, sin embargo, al analizarlo desde una perspectiva integradora, podemos apreciar que se corresponde con una potencial intrusión.

En resumen…

Es importante comprender que el análisis de perfiles de usuarios mediante el tráfico producido es también necesario en redes pequeñas o medianas, y puede aplicarse sobre las mismas sin mayores costos. Mediante herramientas sencillas y gratuitas, podemos acceder a los recursos necesarios para detectar intrusos o amenazas internas, incrementando el nivel de confianza sobre los usuarios de nuestra red.