Echeverria Fs PDF
Echeverria Fs PDF
Echeverria Fs PDF
PROFESOR GUÍA:
ALEJANDRO HEVIA ANGULO
MIEMBROS DE LA COMISIÓN:
JOSÉ MIGUEL PIQUER GARDNER
RODRIGO ARENAS ANDRADE
SANTIAGO DE CHILE
OCTUBRE 2008
Resumen
Aunque ya existen dispositivos de red y sistemas desarrollados para este fin, los
sistemas son de carácter privado, funcionan para algunos dispositivos de red o no son
fáciles de utilizar.
El sistema desarrollado y los resultados obtenidos dan una base para la creación de
nuevos métodos de detección, con el fin de mejorar la seguridad computacional dentro de
las organizaciones.
A mi madre, abuela y familia por su
apoyo incondicional
Índice
1 INTRODUCCIÓN ................................................................................................................................ 4
1.1 MOTIVACIÓN.................................................................................................................................................... 6
1.2 SITUACIÓN ACTUAL............................................................................................................................................ 6
1.3 OBJETIVO GENERAL ........................................................................................................................................... 8
1.4 OBJETIVOS ESPECÍFICOS ...................................................................................................................................... 8
1.4.1 Diseño e implementación ......................................................................................................................... 8
1.4.2 Evaluación ................................................................................................................................................ 8
1.5 TRABAJO REALIZADO .......................................................................................................................................... 9
1.6 ESTRUCTURA DE LA MEMORIA. .......................................................................................................................... 10
2 ANTECEDENTES .............................................................................................................................. 11
2.1 REDES IP ....................................................................................................................................................... 11
2.2 SEGURIDAD EN LA RED ..................................................................................................................................... 12
2.3 MALWARE ..................................................................................................................................................... 12
2.4 BOTNET ......................................................................................................................................................... 13
2.4.1 Mecanismos de Control y Comando (C&C) ............................................................................................ 13
2.4.2 Formas de Propagación ......................................................................................................................... 14
2.4.3 Formas de Detección Mediante el Tráfico IP .......................................................................................... 14
2.5 NETFLOW ...................................................................................................................................................... 15
2.6 MONITOREO DE PAQUETES IP ........................................................................................................................... 16
2.7 SISTEMAS PARA EL MONITOREO DE PAQUETES IP .................................................................................................. 16
2.8 TÉCNICAS PARA LA DETECCIÓN DE MALWARE ....................................................................................................... 17
2.8.1 Top N / Baseline sobre flujos IP .............................................................................................................. 17
2.8.2 Calce de Patrones ................................................................................................................................... 18
2.8.3 TCP flags para Netflow........................................................................................................................... 20
2.8.4 ICMP ....................................................................................................................................................... 22
2.9 PROTOCOLO TCP/IP........................................................................................................................................ 23
2.9.1 Capa de Aplicación ................................................................................................................................. 24
2.9.2 Capa de Transporte ................................................................................................................................ 24
2.9.3 Capa de Red ........................................................................................................................................... 25
2.9.4 Capa Física ............................................................................................................................................. 27
3 DESARROLLO .................................................................................................................................. 28
3.1 REQUISITOS FUNCIONALES ................................................................................................................................ 28
3.1.1 Recibir y almacenar los flujos IP provenientes de sensores en redes distribuidas. ................................ 29
3.1.2 Capacidad para filtrar la información almacenada para el posterior análisis. ...................................... 29
3.1.3 Administración de procesos para la recepción y el almacenamiento de los flujos IP............................. 29
3.1.4 Realizar consultas complejas a la información de flujo almacenada..................................................... 30
3.1.5 Facilitar la creación, almacenamiento y utilización de consultas sobre el tráfico IP proveniente de
sensores distribuidos. .......................................................................................................................................... 30
3.2 EVALUACIÓN DE HERRAMIENTAS PARA ANÁLISIS DEL TRÁFICO IP .............................................................................. 30
3.2.1 Recibir y almacenar los flujos IP provenientes de sensores en redes distribuidas. ................................ 31
3.2.2 Capacidad para filtrar la información almacenada para el posterior análisis. ...................................... 31
1
3.2.3 Administración de procesos para la recepción y el almacenamiento de los flujos IP............................. 31
3.2.4 Realizar consultas complejas a la información de flujo almacenada..................................................... 32
3.2.5 Facilitar la creación, almacenamiento y utilización de consultas sobre el tráfico IP proveniente de
sensores distribuidos. .......................................................................................................................................... 32
3.2.6 Selección de herramienta ....................................................................................................................... 32
3.3 DISEÑO ......................................................................................................................................................... 34
3.3.1 Componentes generales ......................................................................................................................... 34
3.3.2 Componentes específicos sistema Mon-dist .......................................................................................... 39
3.4 IMPLEMENTACIÓN SISTEMA MON-DIST ............................................................................................................... 42
3.4.1 Interfaz Inicial......................................................................................................................................... 42
3.4.2 Administración de Redes ........................................................................................................................ 42
3.4.3 Administración de Usuarios ................................................................................................................... 43
3.4.4 Colectores de flujos IP ............................................................................................................................ 44
3.4.5 Administración de Tablas de flujos IP .................................................................................................... 46
3.4.6 Consultas ................................................................................................................................................ 48
3.4.7 Administración de Filtros ....................................................................................................................... 51
3.4.8 Administración de Tablas de Importación.............................................................................................. 51
3.4.9 Importador de datos de flujos IP ............................................................................................................ 52
3.4.10 Administración de Resultados ........................................................................................................... 53
3.4.11 Base de Datos 1 ................................................................................................................................. 54
3.4.12 Base de datos 2 .................................................................................................................................. 55
3.5 LENGUAJE Y MEDIO AMBIENTE .......................................................................................................................... 56
3.6 ESTIMACIONES DE LA CAPACIDAD DE PROCESAMIENTO Y ALMACENAMIENTO DEL SISTEMA ............................................. 56
3.6.1 Descripción de los Ambientes de Prueba ............................................................................................... 56
3.6.2 Estimación de capacidades de almacenamiento de datos..................................................................... 57
3.6.3 Tiempo de procesamiento ...................................................................................................................... 59
3.6.4 Discusión ................................................................................................................................................ 60
8 CONCLUSIONES .............................................................................................................................. 98
9 REFERENCIAS Y BIBLIOGRAFÍA .......................................................................................................100
10 GLOSARIO .....................................................................................................................................101
ANEXOS.................................................................................................................................................102
3
1 Introducción
La seguridad informática tiene un rol muy importante dentro de las organizaciones
con respecto a la confidencialidad, integridad y disponibilidad de la información. En cuanto
a confidencialidad, la información importante no debe ser accesible por personas no
autorizadas; la integridad garantiza que la información no haya sido modificada; la
disponibilidad se refiere a que los servicios o recursos deben encontrarse disponibles
cuando se necesiten.
El monitoreo de las redes consiste en analizar el tráfico IP en una red para obtener
métricas, medidas de efectividad e información estadística útil. Estas pueden ser utilizadas
para mejorar la seguridad informática en las organizaciones. Por ejemplo, una gran
cantidad de computadores externos enviando paquetes de red hacia una máquina interna,
podría causar una denegación de servicio (DoS, denial of service) a la máquina receptora.
Un análisis de tráfico IP puede identificar el origen de dichos paquetes. Con esta
información se pueden realizar acciones como por ejemplo, no aceptar paquetes
provenientes de la máquina atacante.
Actualmente existen sistemas para analizar el tráfico IP los cuales, sin embargo, son
de origen comercial (y por ende su diseño y código es confidencial), están diseñados para
dispositivos muy específicos, o son complicados de utilizar y/o limitados a redes locales o
de pequeña escala.
Netflow es una tecnología utilizada por dispositivos de red Cisco, para coleccionar la
información del tráfico IP. La información de tráfico es almacenada utilizando el formato
con el mismo nombre en un flujo Netflow. Un flujo IP o flujo Netflow se refieren a un
conjunto de paquetes que viajan en sentido unidireccional, compartiendo: IP de origen y
destino, así como puertos de origen y destino, y protocolo.
El monitoreo puede ser realizado a diferentes escalas. Desde una red local, hasta un
conjunto de estas. Por ejemplo, en una red local determinada puede ser interesante
monitorear direcciones recurrentes de destino a una IP particular. Esta información puede
4
ayudar a detectar la existencia de malware en algunos de los equipos de la red. Si llevamos
esto a una escala mayor, donde se relaciona esta información con un conjunto mayor de
computadores, esta información puede ser útil, por ejemplo, para saber la magnitud del
ataque o los posibles implicados.
5
1.1 Motivación
En la actualidad el análisis de seguridad en base al tráfico IP en redes puede llegar a
ser muy costoso en tiempo de transferencia y espacio en disco para sistemas de seguridad.
Analizar el tráfico utilizando flujos IP resulta ser de gran ayuda puesto que el espacio
en disco es reducido gracias a la disminución de la información de tráfico almacenada,
posibilitando una mayor cobertura en el tiempo del tráfico analizado. Reducir el tamaño de
la información disminuye el tiempo de transferencia, mejorando la eficiencia en la
recepción de la información.
6
Se encontraron herramientas de código abierto para el análisis de flujos IP como
Ntop, Nfdump y Silk. Ntop sigue la misma línea de las herramientas comerciales
mencionadas, sin la limitante del acceso al código fuente, por lo cual tampoco permite
agregar consultas especificas, escogidas libremente por el usuario. Nfdump y Silk permiten
hacer un análisis acabado del tráfico IP pudiendo ser tráfico local como distribuido.
Tanto Nfdump como Silk permiten las tres etapas, lo cual posibilita el monitoreo
sobre la información de flujos. Sin embargo, son difíciles de utilizar y la estructura propia de
estas herramientas hace en algunos casos engorrosa la experimentación con ellas.
Nfsend es un programa que utiliza Nfdump para las 3 etapas mencionadas y funciona
por una interfaz web. Uno de los problemas encontrados en Nfsend es que utiliza solo
algunos comandos de Nfdump. Nfsend solo permite hacer filtros simples a la información de
flujo. Esta no permitir guardar consultas ni cruzar información entre otros.
7
1.3 Objetivo General
El objetivo principal de esta memoria es diseñar, implementar y evaluar un sistema
para analizar redes IP, en base al flujo de la comunicación, esto es, el origen/destino de los
paquetes de comunicación utilizados, para la identificación y detección de tráficos no
autorizados y otros estadísticos similares, como ataques de DoS, actividades de escaneo de
puertos, etc., donde la identificación y detección es realizada principalmente en forma
batch.
1.4.2 Evaluación
o Explorar nuevas consultas interesantes desde una perspectiva de seguridad
informática.
8
1.5 Trabajo Realizado
En una primera etapa se investigaron herramientas de código abierto útiles para el
análisis del tráfico IP como son Nfdump y Silk. Estas implementan la recepción,
almacenamiento y análisis del flujo IP. Se definieron requisitos funcionales para los
objetivos planteados y de acuerdo a éstos se evaluaron los sistemas. En base a las
conclusiones y la definición de la herramienta más adecuada para analizar el tráfico IP, se
diseñó el sistema utilizando funcionalidades propias de Nfdump y una base de datos
relacional.
9
1.6 Estructura de la Memoria.
El capítulo 2 contiene información relevante para el desarrollo de esta memoria en
cuanto a conceptos de seguridad informática, flujos Netflow, técnicas de análisis sobre
Netflow, redes de bots (Botnets) y estructura del protocolo IP. El capítulo 3 detalla los pasos
seguidos para el diseño e implementación del sistema. El capítulo 4 describe las técnicas
para la detección de anomalías (malware) en base al flujo de paquetes, utilizándolas para la
creación de nuevas consultas de seguridad, tanto en un ambiente local como distribuido. El
capítulo 5 contiene la evaluación del sistema mediante dos experimentos: detección de
malware sobre tráfico IP y efectividad de métodos de detección en ambiente real. El
capítulo 6 describe el problema de análisis de flujos IP sobre redes con NAT, junto a una
experimentación exploratoria del problema. El capítulo 7 describe trabajos futuros y
propone extensiones a la presente memoria.
10
2 Antecedentes
En este cápitulo se hace una introducción a distintos conceptos importantes para el
entendimiento de la memoria.
2.1 Redes IP
El estándar de comunicación de red más utilizado en la actualidad es el protocolo
TCP/IP. Este se divide por capas de modo tal que se pueda sustituir una capa por otra
equivalente, esto evita la sustitución del hardware y todo el software.
El estándar utilizado para el transporte de información son los paquetes UDP y TCP
ambos utilizan IP (Internet Protocol). Tanto como TCP y UDP son estructuras formales con
distintas características, TCP es utilizado para transacciones en las que se necesita un
control permanente de la comunicación, UDP se utiliza generalmente para la transmisión de
información rápidamente y poco confiable (ej, video, radio).
El proceso del envío de paquetes se asemeja al envío de cartas. Una carta para ser
enviada necesita una dirección de origen y una de destino. El receptor de la carta por medio
de la dirección de origen sabrá a quien responder. Las cartas enviadas no llegan
directamente desde una dirección a otra, si no que pasan por diferentes agentes antes de
llegar a su destino. Los paquetes IP se comportan de forma similar. Un paquete enviado no
llega directamente al destino, si no que es transmitido a una dirección que sabe cómo hacer
llegar el paquete a su destino. Cuando éste llega a destino el destinatario puede saber la
dirección del emisor del paquete IP.
11
La dirección de origen y destino usada por el protocolo de internet se llama
dirección IP. Además de esta información el paquete IP contiene más información propia
del protocolo, la cual está detallada en el punto 2.9 de esta sección.
• Los IDS (sistemas de detección de intrusos, por su sigla en Inglés) son utilizados
para la detección “online” de accesos no-autorizados, utilizando la información de
los paquetes IP y contrastándola con comportamientos sospechosos conocidos.
2.3 Malware
Se denomina malware a un tipo de software intrusivo y malicioso. Este busca
comprometer máquinas para poder abusar de éstas o dejarlas incapacitadas de cumplir su
función.
En el contexto del tráfico IP este se verá afectado por paquetes enviados a rangos de IP y
puertos aleatorios.
12
• Backdoor: software creado para permitir al creador tener acceso al sistema infectado,
por medio de una puerta trasera. Tráfico poco frecuente en cierto puerto o sobre
máquinas poco accesadas, son frecuentemente indicios de anomalías.
• Botnet: es una red de bots comandados desde un bot central. Este malware se describe
más en detalle en la sección siguiente debido a su relevancia dentro de la memoria.
2.4 Botnet
Es una colección de software robots (o bots) que funcionan de forma autónoma.
Tienen la capacidad de recibir comandos desde un bot central controlado por el atacante.
También pueden infectar máquinas para implantarles otros bots, aumentando el número de
bots en la botnet.
Los bots traen su propio mecanismo de expansión. Este es similar al de los gusanos.
Por ejemplo, utiliza técnicas de escaneo de redes en busca de máquinas y así transmitir el
bot.
Las botnet son generalmente utilizadas para fines maliciosos. Pueden realizar
ataques como los denominados ataques de denegación de servicios distribuidos
(distributed denial of service, DDoS). Estos ataques buscan sobrecargar los recursos de la
máquina atacada, en algunos casos mediante el envío masivo de paquetes IP.
Los medios de comunicación más utilizados por los bots y el C&C son:
1) IRC: Algunos bot están diseñados para conectarse a un servidor IRC y recibir
comando a través de los canales de éste. El C&C puede enviar órdenes por el canal
creado para la botnet. Este tipo de botnet son las más utilizadas en la actualidad. Los
13
botnet suelen ser combatidos en base a políticas como por ejemplo no permitir
tráfico por el puerto predeterminado de IRC (6667).
2) Http: Los bot son capacitados para leer cada cierto tiempo alguna dirección en
especial. El mecanismo de C&C publica en la dirección los comandos a ejecutar. Estos
son más difíciles de encontrar debido a la utilización del puerto 80 (puerto utilizado
por servidores web).
3) P2P: Estos bot se basan en la utilización de técnicas p2p para controlar y comandar,
dejando de ser un mecanismo centralizado. Esto se debe a que los nodos pueden
actuar como cliente o servidor.
En algunos casos los mismos bot pasan a ser C&C, aumentando la dificultad para
detectar la botnet.
Las vulnerabilidades pueden ser de distinto tipo. A veces son fallas en la seguridad
de servicios propios de los sistemas operativos, programas específicos o sólo servicios mal
configurados o habilitados por error.
Los botnet intentan muchas veces utilizar los puertos para el intercambio de
archivos de Windows (puerto 135, 139 y 445) para expandirse. De la misma manera, el
monitoreo de estos puertos junto a relaciones entre bot, mejoran la detección de la botnet.
14
La identificación de un comportamiento similar de un grupo de máquinas en un
periodo de tiempo pequeño entrega indicios, en algunos casos, de la presencia de una
botnet. Generalmente las Botnet pueden cambiar la dirección IP del C&C constantemente.
Para esto utilizan servidores de DNS los cuales están actualizando constantemente la
dirección IP asociada al nombre del dominio del C&C (técnica llamada DNS flux). Por
ejemplo, un comportamiento usual es el envío de paquetes DNS desde un grupo de
máquinas a un mismo servidor de DNS y luego las mismas máquinas envían paquetes IP
hacia una dirección IP en común.
2.5 Netflow
Netflow es un protocolo desarrollado por Cisco. Para agrupar la información del
tráfico. Esta información es exportada mediante el uso de datagramas UDP o SCTP hacia
máquinas recolectoras del flujo Netflow.
Cada paquete IP que transita por un router o switch, que soporte Netflow, es
examinado por atributos (campos IP) determinados. Estos atributos en su conjunto actúan
como “huellas digitales” de los paquetes. Con estos se determina si estos son únicos o
similares a otros paquetes. Los atributos son:
1) Dirección IP origen
2) Dirección IP destino
3) Puerto origen
4) Puerto destino
5) Tipo de protocolo de capa 3
6) Interface de ingreso
7) Tipo de servicio IP (type of service,TOS)
Todos los paquetes con los mismos valores de los atributos son agrupados en un
flujo IP denominado flujo Netflow. Junto a los atributos almacenados se agregan el número
total de paquetes observados y la suma total de bytes de los paquetes pertenecientes al flujo
Netflow, timestamp para el inicio y término del flujo y la agrupación de los TCP flags en el
flujo (sólo protocolo TCP) entre otros.
El uso de esta técnica para almacenar la información básica del tráfico IP disminuye
el tamaño de la información recolectada. Esto logra una transmisión más rápida y permite
un mayor almacenamiento de la información de tráfico. Si esta información es comparada
con el almacenamiento y transmisión de información de tráfico por cada paquete, es claro
que la información almacenada y transmitida para Netflow es mucho menor.
Los gusanos por ejemplo buscan máquinas en la red para transmitirse. Estos envían
paquetes de conexión a un rango de direcciones IP probables de existir y a distintos
puertos, con la finalidad de realizar conexiones exitosas con las máquinas. Si se analiza la
información del tráfico IP, se verá expresado los intentos de conexión de una máquina hacia
un grupo de máquinas en un periodo de tiempo pequeño. Esto significará que
probablemente estemos en presencia de un gusano en la red.
Las aplicaciones de código abierto varían en muchos factores, por ejemplo, no todas
soportan todas las versiones de flujos IP (Netflow, IPFIX, sFlow). La forma de almacenar los
datos en algunos casos es guardándolos en tablas en bases de datos. En otros casos, se
utilizan archivos propios para guardar la información. También hay aplicaciones que no
soportan múltiples exportadores de flujos.
16
La estructura básica de los sistemas para el monitoreo de flujos es la mostrada en la
figura 1.
La máquina colectora recepciona y almacena los flujos. Para esto existe un proceso
esperando los flujos y almacenándolos en el disco duro de la máquina.
Los flujos almacenados pueden ser consultados por medio de una herramienta
especializada en el análisis de flujos IP.
Las técnicas más utilizadas son Top N / Baseline, calce de patrones, TCP flags e ICMP.
Un top N rankea datos en base a una característica especial. Por ejemplo, un top N
para un grupo de máquinas utilizando la característica del número total de paquetes
enviados por máquina, genera una lista con las máquinas ordenadas de mayor a menor, con
respecto al número total de paquetes enviados.
17
Análisis Top N / Baseline es la técnica más común y básica para analizar flujos. La
idea es analizar los flujos que tengan alguna característica sobresaliente (top N),
especialmente el valor de los campos que se desvían significativamente del
comportamiento “normal” (baseline)
Normalmente hay dos maneras de hacer uso del método Top N / Baseline:
Top N sesión
La estrategia “Top N sesión” identifica anomalías a través de ordenar los flujos por
dirección de destino u origen, y así detectar patrones distintos al normal establecido por el
baseline. Esta estrategia deja en evidencia la presencia de nuevos gusanos, ataques
Dos/DDos, escaneo de red o cierta clase de abusos de red.
Si una máquina está infectada con un gusano, ésta actuará completamente diferente
al baseline normal. La máquina tratará de conectarse a otros host para infectarlos, logrando
que las peticiones de conexión aumenten. Por la misma razón cuando alguien esté
escaneando un gran bloque de direcciones en busca de servicios vulnerables, se verá
especialmente un alto volumen de sesiones enviadas por una sola dirección IP.
Top N data
Este método puede ser definido como una gran transferencia de datos (por ejemplo,
cantidad de paquetes IP) transferidos en un cierto periodo de tiempo, entre dos máquinas, o
una máquina y un bloque de direcciones IP. Por ejemplo las máquinas que transfieren más
cantidad de datos hacia el exterior deben ser rankeadas. Se podrían rankear por cantidad de
bytes entrantes o bytes salientes. Si los valores difieren del baseline normal una alerta
debiera ser invocada. Uno de los motivos posibles para esta diferencia es la existencia de un
gusano copando el ancho de banda.
Los campos de IP y puertos, de origen y destinos son los más ocupados para el calce
de patrones. Los flujos serán examinados y los host asociados a campos de flujos
sospechosos serán alertados dependiendo de los criterios especificados.
Calce de puerto
La manera más común de ocupar el calce de puerto para la detección de anomalías
es cuando se conoce un puerto común de uso de un malware determinado. Por ejemplo, el
puerto 1434 es el utilizado por “SQL Slammer” (gusano el cual causa un DoS a las máquinas
18
afectadas), entonces, si se quisiera encontrar este ataque se deberá analizar la información
buscando el puerto 1434. Al encontrar rastros de utilización del puerto será recomendable
analizar las máquinas. Un problema con esta solución es que es posible que algún programa
no malicioso también ocupe el puerto, disminuyendo la efectividad para la detección de
malware.
Calce de dirección IP
Existen varias formas de utilizar el calce de direcciones:
Existen diferentes reglas para considerar los flujos anormales. Estas dependerán de
las reglas internas de la organización y de las limitantes de las redes. A continuación se
muestran solo algunas de esta:
Cualquier flujo para el tráfico saliente donde la dirección de origen no sea parte de
las máquinas del segmento, podrá ser considerado anormal.
En casos especiales por políticas internas la red solo puede recibir flujos de ciertas
direcciones. Esto es, cualquier flujo donde la dirección de origen que no sea parte de las
direcciones descritas para el tráfico entrante, será considerado anormal.
o Direcciones Fijas
Algunas clases de anomalías tendrán una o más direcciones IP fijas a utilizar. Por
ejemplo, W32/Netsky.c (gusano de envió masivo de correos) después de infectar envía
consultas DNS a direcciones especificas. Por lo cual las máquinas que contengan tráfico con
esas direcciones podrían estar comprometidas.
19
2.8.3 TCP flags para Netflow
Una de las tareas más difíciles cuando se hace análisis basado en los flujos, es que el
administrador debe evaluar una gran cantidad de datos (flujos). Si sólo ocupara los
métodos de Top N / Baseline, y calce de patrones, este estaría limitado a ver solo una
porción de las anomalías de la red.
Los paquetes TCP tienen asociados distintos flags donde son utilizados para indicar
el status o condición de la conexión. TCP ocupa el método llamado “three way handshake”
para realizar una conexión.
Para esto la máquina con el gusano intentará establecer una conexión con la
máquina afectada mediante el mecanismo de “three way handshake” especificado en el
protocolo TCP.
• El cliente manda un paquete TCP con el flag SYN activado al host de destino
• El host de destino manda de vuelta un paquete con la activación de los flags
SYN/ACK
• El cliente reconoce que el host lo reconoce con un ACK
20
Figura 2: El host de destino existe y el puerto se encuentra abierto.
Usando flujos IP se esperará ver métodos para analizar combinaciones de TCP flags
como ACK/SYN/FIN en los registros de ambas direcciones. Por ejemplo, un flujo
perteneciente a una conexión de inicio a fin, contará con por lo menos los flag
ACK/SYN/FIN. Supongamos que inicialmente una máquina emisora envía un paquete con el
flag SYN activado pidiendo conectarse, luego en los siguientes paquetes se vera el flag ACK
activado debido a la comunicación con la otra máquina y finalmente si la máquina termina
la conexión se vera el flag FIN activado, luego el flujo tendra los tres flags acumulados en la
información del flujo.
Desde la perspectiva de flujos IP, se analizarán los flujos en los cuales solo el bit SYN
fue configurado por el host del gusano y no recibieron respuesta.
3) La tercera posibilidad resulta que el host de destino existe pero el puerto buscado
está cerrado.
21
Figura 4: El host de destino existe y el puerto se encuentra cerrado.
Del punto de vista de flujos el host del gusano mostrará en los registros solo
peticiones SYN hacia el host de destino y respuestas RST/ACK hacia el host del gusano.
2.8.4 ICMP
El propósito de ICMP es proveer feedback automático de problemas en la red. Los
mensajes ICMP en los flujos IP pueden también ser usados para encontrar los potenciales
host maliciosos.
El tipo y código de ICMP son almacenados en los flujos IP, estos son registrados en el
puerto de destino en los registros.
Por ejemplo, cuando el valor del protocolo es ICMP y el puerto de destino fuera 2048
(hexadecimal 800) quiere decir que el tipo de ICMP es 8 y el código es 00 (sin código), con
lo que se concluye que el paquete es un “ICMP echo” de petición (ping).
Hay dos tipos interesantes de paquetes ICMP que pueden ser usados para la
detección de flujos anormales cuando analizamos los flujos entrantes. Estos son ICMP
destino inalcanzable y ICMP puerto inalcanzable.
22
2.8.4.1 ICMP destino inalcanzable y ICMP puerto inalcanzable
De acuerdo a la implementación de ICMP, si la red de destino o el host de destino son
inalcanzables, el Gateway (equipo encargado de conectar dos redes) mandará mensajes de
destino inalcanzable al host de origen.
Para peticiones UDP, máquinas con puertos cerrados podrían mandar mensajes de
vuelta “ICMP puerto inalcanzable” hacia el host de origen. Si un gusano se esparciera con
UDP, este gatillaría una gran cantidad de flujo de “ICMP puerto inalcanzable”.
Lo primero es saber que el protocolo TCP/IP está compuesto de 4 capas, las cuales
están relacionadas en cuanto a sus capacidades.
0 16 31
puerto de origen puerto de destino
número SEQ
número ACK
Hlen reserved Flags Window
Checksum urgent pointer
Options Padding
DATA
Figura 5: Paquete TCP.
• Número SEQ : número de secuencia (necesario para volver a armar los datos).
• flags: 6 bits:
24
o PSH: es la forma en que se indica que no se debiera seguir juntando bytes para
pasárselos juntos al proceso.
0 16 31
puerto de origen puerto de destino
Largo Checksum
DATA
Figura 6: Paquete UDP.
25
2.9.3.1 Datagrama IP
Es la unidad base de transferencia utilizado por la capa de red para abstraerse del
tipo de conexión.
0 16 31
Vers Hlen tipo de servicio largo total
Identificación flags fragment offset
time to live protocolo header checksum
dirección IP de origen
dirección IP de destino
IP opciones (si hay alguna) padding
DATA
Figura 7: Datagrama IP.
• Tipo de servicio (TOS): primeros 3 bits son la precedencia, luego vienen bits
denominados D (low delay), T (high throughput), R (high reliability) y los últimos 2 no
se usan.
• Protocolo: identifica el protocolo al cual se debe entregar los datos de este datagrama
(ej: TCP, UDP, ICMP).
Los mensajes ICMP son construidos en la capa IP, usualmente por un datagrama IP
que ha generado una respuesta ICMP. El protocolo de internet encapsula el mensaje ICMP
con un nuevo header IP y lo transmite de la manera usual.
0 16 31
Tipo Código Checksum
ICMP data
Figura 8: Header paquete ICMP.
26
Campos asociados al paquete ICMP
• Checksum: checksum calculado sobre la cabecera del paquete ICMP junto a los datos.
• ICMP data: este campo varía dependiendo del tipo de mensaje ICMP.
27
3 Desarrollo
Este capítulo está dedicado al diseño de la aplicación para el análisis del tráfico IP
utilizando la información de flujos IP en redes distribuidas.
28
En la figura 9 se muestran 4 redes locales (LAN) conectadas a internet (world area
network, WAN). Las redes, por medio de sensores exportadores de flujos IP, envían la
información del tráfico de red propio hacia una máquina colectora. Esta máquina almacena
los flujos IP entrantes. La información del tráfico IP puede ser analizada utilizando
herramientas especializadas.
29
3.1.4 Realizar consultas complejas a la información de flujo almacenada
Un requerimiento claro es poder realizar toda clase de preguntas a la información
almacenada, distinguiendo entre redes y sensores distintos.
El manejo de esta información debe ser lo más libre posible. Por ejemplo, hacer
consultas anidadas, es decir, realizar consultas sobre resultados de otras consultas, poder
agrupar la información y a la vez realizar cálculos a los datos de cada grupo. Por ejemplo
obtener el promedio de cada grupo, etc.
30
3.2.1 Recibir y almacenar los flujos IP provenientes de sensores en redes
distribuidas.
Este requerimiento es cumplido por las dos herramientas. Los flujos son
recepcionados mediante procesos que monitorean puertos determinados. La información
de flujo es almacenada en archivos propios de cada implementación. La lectura de los datos
es permitida principalmente con sus herramientas propias.
• SILK-Rwfilter: pertenece a Silk, selecciona parte de la información de los flujos IP. Los
resultados pueden ser procesados por otras herramientas de Silk.
Silk provee distintas herramientas para consultar los datos, estas para ser utilizadas
necesitan crear comandos en base a pipe’s de la línea de comando. Por ejemplo, Rwfilter
permite filtrar los flujos dependiendo de los argumentos, Rwsort es utilizado para ordenar,
Rwcut es utilizado para mostrar la información, Rwcount es utilizado para sumarizar la
información (sumar los bytes o numero de paquetes), Rwgroup es utilizado para agrupar, y
otros.
Silk permite hacer toda clase de preguntas por medio de sus herramientas, sin
embargo la manera de hacerlas requiere de un conocimiento muy específico de la
herramienta. En consecuencia, utilizar la herramienta requiere un buen estudio, focalizando
al usuario en aprender a utilizar Silk en vez de experimentar para la búsqueda de nuevas
métodos de detección.
Nfdump tiene una complejidad mucho menor para realizar consultas nuevas. Esta
permite agrupar, mostrar, sumarizar y filtrar en base a argumentos en la ejecución del
proceso. En el caso de necesitar hacer consulta sobre los resultados, Nfdump permite
exportar los resultados a su formato propio, permitiendo realizar consultas sobre
resultados de consultas.
32
Los puntos 4 y 5 de los requisitos funcionales dan a entender la necesidad de facilitar
la creación y almacenamiento de las consultas realizadas.
Una de las características de los sistemas descritos es que son soluciones probadas y
utilizadas actualmente, como consecuencia, utilizar herramientas de estos sistemas para
controlar el flujo IP resulta ser una buena solución. Esto permite concentrarse en la
creación del sistema y no así en la creación de herramientas ya existentes para el manejo de
flujos IP (Netflow).
33
3.3 Diseño
En esta sección se detalla el diseño del sistema en base a la evaluación y requisitos
planteados.
34
La figura 11 muestra un proceso llamado “Administrador de Sensores” encargado de
manejar el funcionamiento de los procesos Nfcapd. Estos procesos almacenan toda la
información de los flujos IP provisto por los sensores, en archivos propios de Nfdump.
Este proceso se divide en dos partes: la primera parte realiza el primer filtrado de la
información con comandos propios de Nfdump. La segunda parte recibe esta información y
realiza un análisis más complejo sobre los datos.
Al ejecutar una consulta con Nfdump sobre los datos, este permite la salida de los
resultados como nuevos datos binarios utilizables por Nfdump o enviarlos a la salida
estándar con un formato personalizado. Esto hace posible implementar o utilizar otra
herramienta para realizar un análisis más complejo a los datos. Esto es posible debido a que
al poder formatear la salida de los datos, se podrá construir un adaptador para la
herramienta encargada del análisis.
35
• Solución 2: Consultar los datos utilizando sentencias SQL en una base de
datos relacional
Esta solución plantea que se podría insertar la información de flujo en una base de
datos relacional. Y con esta información por medio de sentencias SQL se analizarán los
datos.
Una de las primeras preguntas que surge con respecto a construir un motor para
consultas de Nfdump o utilizar una base de datos, es sobre el performance al momento de
consultar los datos debido al volumen de información y tiempo de procesamiento. Este es
un punto importante en el diseño del sistema.
36
Figura 12: Detalle de analizador de información de flujos IP
Almacenar consultas
Administración de filtros para Nfdump
Administración de tablas para almacenamiento de flujos
Administración de tablas para almacenar listas de IP o puertos para realizar cruces
con la información almacenada.
Administración de resultados provenientes de consultas realizadas.
Administración de usuarios del sistema
Administración de redes
37
Figura 13: Detalle de componente de administración y extensión de consultas
38
3.3.2 Componentes específicos sistema Mon-dist
La relación entre las componentes descritas se detalla en la figura 14.
39
3.3.2.3 Administrador de Importación de Datos
Se administran listas de IP o puertos, con los cuales es posible hacer cruces con la
información del sistema. Las listas son creadas a partir de archivos de texto planos
conteniendo la lista almacena.
Este módulo no es un requisito directo del sistema, pero fue implementado para
facilitar una posible extensión del sistema. En especial, implementar el manejo de perfiles
de usuarios. Por ejemplo, algunos usuarios podrían crear consultas y otros solo podrían
visualizarlas.
40
creadas, los receptores de los flujos, las tablas creadas en la base de datos “Admin” para el
almacenamiento de los flujos IP y las tablas creadas en “Flujos” con las listas importadas.
41
3.4 Implementación Sistema Mon-dist
En esta sección se muestran las interfaces gráficas creada para cada componente del
sistema implementado, se detalla las características principales.
El sistema contempla una red ingresada por defecto, esta es denominada “General” y
permite a los usuarios pertenecientes a la red hacer análisis utilizando la información
proveniente de todos los sensores del sistema. Las consultas creadas por los usuarios son
visibles para las demás redes y finalmente es posible hacer modificaciones internas a las
otras redes.
42
Figura 16: Interfaz administradora para red “General”.
Solo los usuarios pertenecientes a la red “General” tienen la capacidad de ver y
administrar todas las otras redes, en caso de no ser usuario de la red “General”, la interfaz
cambia a la mostrada en la figura 17.
43
Figura 18: Interfaz administradora de usuarios.
Esta interfaz no es requisito del sistema pero se creó para facilitar una futura
extensión, como soportar diferentes perfiles, por ejemplo, un usuario pueda solo ver
resultados de estadísticas, y no así crear nuevas.
Si el estado del sistema concuerda con el estado del proceso: no se toma acción.
44
Figura 19: Interfaz administradora de routers.
Información relevante:
• Dir: directorio donde se alojara la información recibida por el colector, el directorio está
restringido a los directorios después de /home/fes/mon-dist/data/, este es un path
relativo configurado en un archivo de propiedades.
• Intervalo: los datos almacenados del flujo IP son separados en varios archivos por
intervalo de tiempo. Por ejemplo, si se tiene un intervalo de 5 minutos y llevo
recolectado tráfico por 1 hora, significa que tengo 12 archivos con el tráfico almacenado.
• Modo de obtención de IP: este campo es utilizado solo para conocer si la asignación de
IP del sensor es de tipo estática o dinámica dependiendo del router que asigna la
dirección. Esta información es útil para saber si la IP del sensor es mantenida en el
tiempo y es posible identificar tráfico propio del sensor.
• Tipo de IP local: este campo es utilizado solo para mantener un registro del tipo de
asignación de IP, bajo el sensor. Esta información es útil para saber si con los datos
45
almacenados en el segmento donde se encuentra el sensor, es posible identificar las
máquinas en el tiempo.
46
Figura 21: Interfaz administradora de tablas.
Al crear una tabla para almacenar los datos de los paquetes de flujos IP en la base de
datos se crea una tabla con los campos predefinidos en la figura 22.
47
3.4.6 Consultas
Las consultas son sentencias SQL utilizadas para analizar la información proveniente
de las Tablas de flujos IP. Adicionalmente es posible hacer cruces con la información de los
sensores, tablas de importación de datos (Listas) y resultados generados por otras
consultas.
Las consultas generadas por el usuario general son visibles por todos los usuarios,
estas son útiles para copiar su sintaxis y ocuparla en consultas propias.
En el caso de mostrar gráficamente las consultas, estas deben cumplir dos requisitos,
el primero es que la segunda columna sea un valor numérico y además que la consulta
tenga como mínimo 2 columnas de resultado.
48
Figura 24: Interfaz de nueva consulta
49
3.4.6.4 Mostrar Consulta
Al ejecutar consultas estas se visualizan en la interfaz de la figura 26. Además de
mostrar el resultado es posible almacenar este resultado sin la necesidad de volver a
ejecutar la consulta. El resultado es almacenado en una tabla especial y esta puede ser
usada para visualizar el resultado o ser parte de una nueva consulta.
50
Figura 27: Interfaz de gráficos para consulta.
La sintaxis utilizada por los filtros es la sintaxis utilizada por Nfdump. En la interfaz
para la creación y modificación de filtros, se encuentra las especificaciones de la sintaxis.
51
Figura 29: Interfaz administradora de tablas de importación.
52
Figura 31: Interfaz para la inserción de flujos IP a tabla Netflow.
• Fecha inicial: especificar una fecha inicial para el rango de los flujos.
• Fecha de término: especificar una fecha final para el rango de los flujos.
• Filtro rápido: si se quisiera agregar un filtro rápido hay que seleccionar el checkbox
de “Filtro rápido” y escribir el filtro.
• Tabla para llenar: se selecciona la tabla donde se almacenara los flujos IP.
53
Figura 32: Interfaz de administración de resultados.
• Stats: Contiene la las consultas (sentencias SQL) utilizadas para el análisis del
flujo IP.
• Results: Contiene las tablas que almacenan los resultados de las consultas
calculadas.
55
3.5 Lenguaje y Medio Ambiente
El sistema funciona en ambiente Linux por ser un sistema operativo de código
abierto, utiliza apache como servidor web y MySQL como base de datos. El sistema Web
está desarrollado ocupando HTML, PHP y Javascript.
Las pruebas realizadas y los valores obtenidos son solo estimaciones debido a que
las topologías de red y los usuarios que generan tráfico IP son diferentes para cada red.
Adicionalmente las consultas realizadas a los datos pueden ser muy variadas en tiempo de
procesamiento y en espacio temporal en disco.
56
Fecha Número de paquetes IP Número de flujos
24/05/2008 124029 16009
25/05/2008 209825 16791
26/05/2008 170642 23092
27/05/2008 150768 23527
28/05/2008 180422 23361
29/05/2008 149723 23241
30/05/2008 199918 22090
31/05/2008 112640 14834
01/06/2008 94566 14601
02/06/2008 141566 20481
Total 1534099 198027
Tabla 3: Registro de 10 días de almacenamiento de Netflow.
Los datos anteriores se utilizaron para simular tráfico proveniente de 1 hora (90.000
registros) y 1 mes (62.351.698 registros) de tráfico.
Tipo Valor
Numero de Paquetes 19802,7
Memoria en Disco 1,06 MB
Memoria en BD 1,64 MB
Memoria índice en BD 0,2 MB
Memoria total en BD 1,83 MB
Tiempo de inserción 8,5 segundos
Tabla 4: Información promedio para un día de almacenamiento (ambiente 1).
57
La tabla 5 muestra la proyección de los valores de la tabla 4 para 365 días.
Tipo Valor
Numero de Paquetes 7227985,5
Memoria en Disco 386,9 MB
Memoria en BD 598,6 MB
Memoria índice en BD 73 MB
Memoria total en BD 667,95 MB
Tiempo de inserción 51 minutos
Tabla 5: Información para 365 días de almacenamiento (ambiente 1).
• Para ambiente 2:
58
Tipo Tamaño
Datos 4,979 GB
Índice 2,603 GB
Total 7,583 GB
Tabla 6: Tamaño en disco (ambiente 2).
Acción Tiempo
Inserción 90.000 registros 2 min 46.02 sec
Inserción 62.351.698 registros 1 hora 40 min 30 sec
Tabla 7: Medición Tiempo de inserción de registros.
Esta consulta agrupa los flujos por dirección IP de destino, a cada dirección de
destino contabiliza el total de puertos distintos accedidos, con la restricción de que el total
de puertos accedidos sea mayor a 10.
Acción Tiempo
Consulta 90.000 3 min 51.17 sec
Consulta 62.351.698 Sin resultados (Time out)
Tabla 8: Medición de tiempo de consulta nivel medio.
59
“Select srcip,dstip,sum(npack) from packets_TestAllData group by srcip,dstip”
Esta consulta agrupa los flujos por dirección IP de origen y dirección IP de destino,
además contabiliza el total de paquetes por cada grupo.
Acción Tiempo
Consulta 90.000 0.705 segundos
Consulta a 62.351.698 44 min 25.11
Tabla 9: Medición de tiempo de inserción datos en base de datos.
3.6.4 Discusión
La tabla 6 muestra que 62.351.698 registros equivalentes a aproximadamente 5 GB
de información de tráfico IP. Además, la información de tráfico del gráfico de la figura 34
para un año utiliza 5 GB de información en 16 redes. Al unir estos dos datos se concluye que
los 62.351.698 registros equivalen a un total de 16 redes para un año. Cada una de las redes
con un nivel de tráfico similar a la red del ambiente 1.
El tiempo de procesamiento para las consultas, indica que para un nivel de 16 redes
similares el tiempo utilizado es razonable y es factible obtener estadísticas vía consultas a la
base de datos.
60
4 Consultas para la detección de malware
En esta sección se describen consultas pertenecientes a las técnicas utilizadas para la
detección de anomalías en flujos IP, presentadas en el capítulo de antecedentes.
4.2.3 NAT
Es un mecanismo utilizado por los router para hacer que máquinas internas en
redes privadas puedan comunicarse con el exterior. Para esto traduce paquetes internos a
externos o vice versa. En el caso donde se tengan sensores en un segmento y se utilice NAT,
complica el análisis por el hecho de no saber la información de traducción utilizada por el
NAT. Este problema se describe más a fondo en la sección 7.
• Tiempo de vida flujo: sensores por defecto tienen un tiempo de vida del flujo
activo e inactivo generalmente de 15 segundos y 30 minutos
respectivamente.
• Tamaño del cache: si el cache se llena los sensores cortan los flujos y los
envían.
• Corte de flujo por flags FIN y RST: en conexiones realizadas por TCP, Si un
paquete perteneciente a un flujo vienen los flags FIN o RST, el flujo es cortado.
4.2.6 Conclusión
Los hechos mencionados son útiles para el conocimiento de las limitaciones al
analizar la información de los flujos IP en redes distribuidas. Sin embargo, aunque no se
63
pueda identificar absolutamente un flujo, en algunos casos, el hecho de saber que un grupo
de máquinas se encuentran comprometidas, ya ayuda a la detección de anomalías en la red.
Si estas cantidades superan las normales se sabe que la máquina posiblemente esté
infectada.
• Ranking de IP de origen con una mayor cantidad de bytes transferido por máquinas
pertenecientes a la red.
Esta información es útil para determinar las redes con más posibilidad de infectar o
ser infectadas por otras del sistema.
64
4.4.1 Calce de direcciones y puertos para el monitoreo de la red
• Paquetes que no tengan ni IP de origen ni IP de destino, máquinas pertenecientes al
mismo segmento de red del sensor.
Por ejemplo, botnet del tipo IRC ocupan generalmente el puerto 6667, monitorear
máquinas que envía paquetes a ese puerto puede ser un indicio.
Esta información ayuda a las otras redes a encontrar un canal con el cual estuviera
expuesta alguna red del sistema a la infección.
Esta información es útil para saber qué máquinas se intentan conectar a otras no
existentes, en algunos casos esta información indica un escaneo de puertos.
Indica que hay máquinas que intentan acceder por puertos cerrados a otras. Saber
qué máquinas reciben una gran cantidad de paquetes con flags ACK/RST podría
indicar las máquinas ya comprometidas.
Un nivel muy alto, indica que la red que envía está escaneando, por lo cual se podría
encontrar la red comprometida.
65
• Nivel de envíos de paquetes con solo el flag SYN y que hayan recibido paquetes de
vuelta con el flag ACK/RST.
Si el nivel es muy alto puede indicar que la primera red se encuentra comprometida
y la segunda tiene posibilidades de ya estar infectada.
Las máquinas que repentinamente realizan tráfico a un número bastante distinto del
normal, pueden estar comprometidas.
Las máquinas que tienen un número de intentos fuera de lo normal, indica las
máquinas posiblemente comprometidas.
66
5 Evaluación
La evaluación se resume en dos experimentos creados para evaluar el sistema en
cuanto a su eficiencia y eficacia para la seguridad informática.
5.1 Experimento 1
Este experimento principalmente evalúa la aplicación en una red artificial con tráfico
IP simulado. Se simularon 4 comportamientos del tráfico IP producto de malware. La
finalidad de la simulación fue probar la correctitud del sistema y la capacidad de este para
la detección de diferentes malware.
67
Este comportamiento es visto generalmente en casos donde:
• Máquina maliciosa, o red maliciosa busca máquinas para infectar. Los gusanos
generalmente hacen uso de esta técnica para esparcirse.
Figura 36: 1 a N.
5.1.1.1 Simulación
Se creó escenario, el cual consta de una red local con asignación de máquinas
192.168.2.2 hasta 192.168.2.30.
Las máquinas existentes en la red responden a esta máquina de vuelta, las cuales
dentro del rango 192.168.2.3-192.168.2.15 responden con el flag RST/ACK y la otra mitad
con ACK/SYN.
68
5.1.1.2 Metodología
69
La tabla 12 muestra el detalle de las máquinas posiblemente infectadas al responder
a la conexión.
IP de origen IP de destino
192.168.2.16 192.168.2.2
192.168.2.17 192.168.2.2
192.168.2.18 192.168.2.2
192.168.2.19 192.168.2.2
192.168.2.20 192.168.2.2
192.168.2.21 192.168.2.2
192.168.2.22 192.168.2.2
192.168.2.23 192.168.2.2
192.168.2.24 192.168.2.2
192.168.2.25 192.168.2.2
192.168.2.26 192.168.2.2
192.168.2.27 192.168.2.2
192.168.2.28 192.168.2.2
192.168.2.29 192.168.2.2
192.168.2.30 192.168.2.2
Tabla 12: Resultado 3
3) Una segunda pregunta interesante es para la misma máquina infectada saber cuántas y
cuales máquinas rechazaron la conexión. La tabla 13 muestra el número de máquinas
distintas que enviaron paquetes con los flags ACK, RST y sin el flag SYN. Los flujos se
agruparon por IP de destino.
70
La tabla 14 muestra el detalle de las máquinas que rechazaron la conexión para la IP
de destino igual a 192.168.2.2.
IP de origen IP de destino
192.168.2.10 192.168.2.2
192.168.2.11 192.168.2.2
192.168.2.12 192.168.2.2
192.168.2.13 192.168.2.2
192.168.2.14 192.168.2.2
192.168.2.15 192.168.2.2
192.168.2.3 192.168.2.2
192.168.2.4 192.168.2.2
192.168.2.5 192.168.2.2
192.168.2.6 192.168.2.2
192.168.2.7 192.168.2.2
192.168.2.8 192.168.2.2
192.168.2.9 192.168.2.2
Tabla 14: Resultado 5
Utilizando las técnicas calce de IP y TCP flags se obtuvieron las máquinas que
rechazaron las conexiones.
Mediante la primera consulta se logró determinar la máquina infectada luego con las
siguientes consultas se determinaron las máquinas afectadas.
71
5.1.2 Comportamiento 2: Tráfico N a 1
Este comportamiento se refiere al tráfico realizado por N máquinas hacia una
máquina en común. Al analizar el tráfico IP este comportamiento es visto como un grupo de
paquetes donde la IP de destino es la misma y la IP de origen es diferente para cada paquete
del grupo.
• Máquinas causando un DDoS, por inundación de paquetes: TCP con el flag SYN
activado, paquetes ICMP echo o paquetes DNS, dirigidos a la dirección B.
Figura 37: N a 1.
5.1.2.1 Simulación
Se creó escenario en una red local con asignación de máquinas 192.168.2.2 hasta
192.168.2.30.
72
5.1.2.2 Metodología
1) Este comportamiento puede ser detectado agrupando los paquetes por IP de destino y
contabilizando el número de IP’s de origen distintas para cada grupo. La tabla 15
muestra el resultado de la consulta propuesta.
73
La máquina 192.168.2.2 fue atacada durante 5 minutos, reportando una gran
cantidad de puertos distintos por cada minuto. Esto es un buen indicador y muestra la
existencia de un malware.
Figura 38: 1 a N a 1.
5.1.3.1 Simulación
La simulación muestra un ataque de DDoS hacia un servidor de DNS. En el ataque 15
máquinas son informadas para realizar un ataque dentro de 3 minutos, pero justo en ese
tiempo algunas máquinas dejan de funcionar, solo una porción de estas realiza el ataque
hacia el servidor de DNS.
Se tiene la dirección externa 244.2.2.3 enviando paquetes desde y hacia los puertos
6667 al rango de IP’s 192.168.2.16-192.168.2.30, solo las IP en el rango 192.168.2.21-
192.168.2.30 luego de 2 minutos envían paquetes DNS a la IP 211.2.2.4 y puerto 53.
5.1.3.2 Metodología
1) Una manera de detectar este comportamiento es contabilizar el número de máquinas
que han recibido paquetes desde una máquina en común y han enviado paquetes a una
máquina en común donde la máquina de origen y destino son distintas. La tabla 18
muestra el resultado del método de detección propuesto.
74
IP de origen máquina A Nº de máquinas distintas IP de destino máquina B
244.2.2.3 10 211.2.2.4
Tabla 18: Resultado 1.
5.1.4.1 Simulación
Se tiene un rango de máquinas bot (192.168.2.20-192.168.2.30) enviando paquetes
al mecanismo de control y comando de la botnet. Cada minuto el mecanismo de control y
comando cambia su dirección IP a una distinta (200.10.0.2, 200.10.1.2, 200.10.2.2 y
211.2.4.4). En el proceso hay máquinas desconectadas de la red, por lo cual el rango
disminuye. Esta técnica es conocida como fast-flux y es utilizada para dificultar la
mitigación de la botnet.
75
5.1.4.2 Metodología
Este comportamiento es detectado luego de realizar las siguientes 3 consultas:
3) En base al resultado anterior es útil saber la cantidad de repeticiones del número total
de IP’s de destino distintas (tabla 22)
76
Luego de las 3 consultas creadas para este comportamiento se deduce que hay 7
máquinas que han tenido tráfico con las IP 200.10.0.2, 200.10.1.2, 200.10.2.2, 211.2.4.4, o
sea las direcciones utilizadas por el C&C.
Una mejora a estas consultas es utilizar rangos de tiempo, para tener una mayor
precisión. Para esta simulación no es de gran importancia ver su desarrollo, debido a que
toda la información de tráfico correspondía a la simulación del comportamiento, por ende
sólo se debió consultar toda la información, y no segmentada en el tiempo.
5.2 Experimento 2
Este experimento evalúa el sistema como medio de detección de malware en tráfico
IP real. Se realizaron dos experimentos, el primero basado en el comportamiento 1 a N y el
segundo en el comportamiento 1 a N a 1. Se almacenó información de tráfico real de 2
semanas.
5.2.1 Simulación 1
La máquina con IP 172.17.67.2 se encuentra infectada con un bot el cual realiza un
escaneo de máquinas para reclutar nuevas máquinas a la botnet. La máquina bot realiza un
escaneo a dos rangos 172.17.0.2-172.17.0.50 y 172.17.67.10-172.17.67.100, El escaneo se
basa en el envió de paquetes TCP con el flag SYN desde el puerto 2039 hacia el puerto 2040
en el rango de máquinas descrito.
Las máquinas existentes en la red responden a esta máquina de vuelta, las cuales
dentro del rango 172.17.67.3-172.17.67.27 responden con el flag RST/ACK y la otra mitad
con ACK/SYN.
77
5.2.1.1 Metodología
1) Se tomó 2 semanas de tráfico y por cada hora se contabilizaron las máquinas que hayan
enviado, a más de 13 máquinas distintas, paquetes TCP. El número 13 fue estimado
mediante pruebas con otros números buscando mostrar una cantidad razonable de
máquina en la red.
El resultado mostrado en la tabla 23 indica que para el primero de junio del 2008 a
las 19 horas, 120 máquinas distintas recibieron paquetes IP desde un mismo origen.
Posiblemente hay un gusano escaneando la red para esparcirse.
Mejoras
78
La reducción de la información por horas y minutos mostrada en la tabla 24 indica
claramente que al primero de junio del 2008 a las 19:59 horas existió comunicación con
120 máquinas distintas, esto muestra que algo extraño está pasando en la red.
La tabla 25 muestra claramente que por segundos existió tráfico sobre 30 máquinas.
Esto indica que la máquina presenta posiblemente problemas.
79
Se observa en la tabla 26 un comportamiento de 1 a N con un gran número de
paquetes queriendo iniciar un gran número de conexiones, determinando un posible
escaneo de IP.
d. Se contabilizó por hora y se agregó la restricción sobre los flag TCP RST y ACK
activados y no activado el flag SYN.
La tabla 27 muestra el número de IP’s que recibieron paquetes con flags RST y ACK.
Ósea no se les permitió realizar la conexión. El número de direcciones IP’s de destino
distintas no muestra ningún valor fuera de lo normal, por lo tanto es difícil sacar
conclusiones por medio de esta información.
2) Por cada hora se contabilizó las máquinas que recibieron paquetes TCP provenientes de
7 máquinas distintas. El número 7 fue estimado mediante pruebas con otros números
buscando mostrar una cantidad razonable del número de direcciones IP de origen
distintas.
80
Mejoras
81
c. Además de contabilizar por fecha se agregó la restricción de flujos con el flag
RST y ACK activado y desactivado los flags SYN, lo cual indicaría que son flujos de
desconexión.
82
5.2.2 Simulación 2
Para el mismo tráfico real se insertó el comportamiento de la máquina 244.2.2.3
generando tráfico hacia el rango de IP 172.17.67.1-172.17.61.61 y luego el rango de
máquinas envía paquetes IP a la dirección 211.2.2.4.
5.2.2.1 Metodología
Se agrupó la información proveniente del sensor por fecha, hora, dirección IP de
origen y dirección IP de destino. La información resultante se cruzó con la misma
información con las siguientes restricciones.
La tabla 33 muestra los resultados de la consulta creada sin la inserción del tráfico
simulado.
83
2) Tráfico con simulación.
Para esta simulación se logro mostrar la efectividad de las consultas creadas para la
seguridad informática en cuanto a la detección de anomalías en tráfico IP.
84
6 Extensiones: Análisis de flujo en redes con NAT
Un problema que aparece cuando se analiza flujos de paquetes IP, es el análisis entre
dos segmentos de red distintos. Las redes más comunes utilizadas en organizaciones
reciben una IP externa asignada por el ISP de forma estática o dinámica. Las organizaciones
para mantener una mayor cantidad de máquinas conectadas a internet utilizan un router y
una red privada interna. El router asigna a las máquinas de la organización una IP especial.
Además el router por medio del NAT mantiene la comunicación entre Internet y las
máquinas. Para lograrlo los paquetes que pasan a través del router son modificados y
redirigidos.
Si se quisiera identificar una máquina maliciosa que causó un problema en una red
donde la máquina maliciosa no pertenezca a la red, la solución no es tan directa. Esto se
debe principalmente por las modificaciones realizadas a los paquetes (NAT), pérdida de
paquetes y fragmentación entre otros.
Este problema no está dentro de los objetivos iniciales de la memoria. Sin embargo
se realizó un experimento para clarificar el problema y buscar consultas útiles para el
problema de NAT en dos segmentos diferentes de red.
El experimento busca para dos redes con un sensor de flujos IP por red y un colector
de flujos, encontrar consultas apropiadas para identificar de forma precisa la máquina
emisora de flujos IP. Por medio de la información de tráfico propia de cada red.
Los resultados toman el rol de ser una primera exploración al problema, y en ningún
caso un estudio definitivo del problema.
86
dirección IP de origen y el puerto de origen no corresponde a los del PC 1. El número de
paquetes a veces no calza debido a la pérdida de paquetes en la red. Como tampoco el
número de Bytes en casos donde exista fragmentación.
6.4.1 Heurística 1
La primera heurística supone que los flujos IP entre las dos redes siguen las
siguientes relaciones:
• El puerto de destino del flujo IP asociado al sensor S1 y el puerto de destino del flujo
IP asociado al sensor S2 son iguales.
• El tiempo de inicio del flujo en el sensor S1 y el tiempo de inicio del flujo en el sensor
S2 no tiene más de 20 segundos de diferencia.
• El valor de la suma total de bytes para los flujos IP asociados a los sensores S1 y S2
son iguales.
• El número de paquetes totales para los flujos IP asociados a los sensores S1 y S2 son
iguales.
• Los flags TCP ACK, SYN, FIN y RST para los flujos IP asociados a los sensores S1 y S2
son iguales. En caso de no ser Flujos asociados a paquetes TCP los flags son
marcados con 0.
Sensor S1 Sensor S2
Información de Información de Información de Información de
origen destino origen destino
192.168.1.4:48168 190.160.228.185:22 190.21.80.166:19101 192.168.1.2:22
192.168.1.4:52664 190.160.228.185:12345 190.21.80.166:19104 192.168.1.2:12345
192.168.1.4:57723 190.160.228.185:12346 190.21.80.166:20722 192.168.1.2:12346
Tabla 37: Resultado de utilizar heurística 1
Una manera para probar consultas en donde no se tenga un ambiente tan bueno, es
relajando las condiciones en el ambiente construido, esto es quitando condiciones a la
consulta.
88
6.4.2 Heurística 2:
Utilizando el mismo ambiente y datos de prueba se relaja la condición sobre el total
de bytes por flujo en los sensores S1 y S2. La idea principal de esta heurística es ver la
influencia del número de bytes por flujos en la consulta.
Sensor S1 Sensor S2
Información de Información de Información de Información
origen destino origen de destino
192.168.1.4:34294 192.168.1.1:53 192.168.1.2:43696 192.168.1.1:53
192.168.1.4:34568 192.168.1.1:53 192.168.1.2:33148 192.168.1.1:53
192.168.1.4:34795 192.168.1.1:53 192.168.1.2:50411 192.168.1.1:53
192.168.1.4:35331 192.168.1.1:53 192.168.1.2:60417 192.168.1.1:53
192.168.1.4:36312 192.168.1.1:53 192.168.1.2:58490 192.168.1.1:53
192.168.1.4:37784 192.168.1.1:53 192.168.1.2:37604 192.168.1.1:53
192.168.1.4:37784 192.168.1.1:53 192.168.1.2:47851 192.168.1.1:53
192.168.1.4:37784 192.168.1.1:53 192.168.1.2:60098 192.168.1.1:53
192.168.1.4:38632 192.168.1.1:53 192.168.1.2:38417 192.168.1.1:53
192.168.1.4:39027 192.168.1.1:53 192.168.1.2:47016 192.168.1.1:53
192.168.1.4:39622 192.168.1.1:53 192.168.1.2:32888 192.168.1.1:53
192.168.1.4:41993 192.168.1.1:53 192.168.1.2:49266 192.168.1.1:53
….. ….. ….. …..
Tabla 38: Resultado de utilizar heurística 2
Al relajar la restricción sobre el tamaño de los flujos se observó una gran cantidad de
relaciones entre los flujos. Esta fue superior a 600 relaciones. Como se sabe que entre las
redes solo hubo 3 puertos por los que se relacionaban. Las relaciones de la tabla 38 no
aportan con información válida.
89
6.4.3 Heurística 3:
La segunda heurística mostró que al solo quitar la restricción sobre los bytes de los
flujos IP, se pierden las relaciones verdaderas.
La condición sobre el total de bytes es bastante fuerte. Una manera para no usar la
condición sobre el total de bytes por flujo de forma directa, es considerando los bytes por
paquete IP promedio no así los bytes por flujos. Esta condición busca encontrar una mayor
cantidad de relaciones correctas para un ambiente donde existan pérdidas de paquetes y
los servicios del ambiente que generen tráfico utilicen un tamaño de bytes por paquete
constante. Para esto se tomó el total de bytes por flujo y se dividió por el total de paquetes.
Con esto se obtiene el número de bytes promedio posibilitando obtener las relaciones que
hayan sufrido pérdida de paquetes.
Sensor S1 Sensor S2
Información de Información de Información de Información de
origen destino origen destino
192.168.1.4:48168 190.160.228.185:22 190.21.80.166:19101 192.168.1.2:22
192.168.1.4:52664 190.160.228.185:12345 190.21.80.166:19104 192.168.1.2:12345
192.168.1.4:57723 190.160.228.185:12346 190.21.80.166:20722 192.168.1.2:12346
Tabla 39: Resultado de utilizar heurística 3
Los resultados de la tabla 39 muestran que esta consulta, para un ambiente bueno,
obtiene relaciones verdaderas. Esta consulta aunque considera los casos donde exista
pérdida de paquetes necesita un supuesto bastante fuerte, como es el que los paquetes del
servicio deban tener el mismo tamaño.
Una buena pregunta es saber cuan probable es que los paquetes enviados por un
programa tengan el mismo tamaño. Si se piensa bien como primera aproximación se podría
decir que va a depender del tipo de programa. Por ejemplo si el programa fuera de
transferencia de datos, lo más probable es que la mayoría de los paquetes tengan valores
constantes debido a que el programa tendrá que fragmentar el archivo para enviar la
información.
90
6.4.4 Heurística 4:
Esta heurística, en vista de los resultados anteriores, en particular de la heurística 2,
se basó en una nueva condición para relacionar los flujos. Los flujos por sensor en que los
primeros 3 octetos de la dirección IP de destino es distinta de los primeros 3 octetos de la
dirección IP de origen del mismo flujo. Esta nueva condición junto a la condición sobre la
diferencia de los tiempos de inicio del flujo para los sensores, la igualdad de flags TCP e
igualdad de puertos de destino, entregan los resultados mostrados en la tabla 40.
Sensor S1 Sensor S2
Información de Información de Información de Información de
origen destino origen destino
192.168.1.4:33675 74.125.45.17:80 192.168.1.2:34733 77.247.176.134:80
192.168.1.4:48168 190.160.228.185:22 190.21.80.166:19101 192.168.1.2:22
192.168.1.4:52664 190.160.228.185:12345 190.21.80.166:19104 192.168.1.2:12345
192.168.1.4:57722 190.160.228.185:12346 190.21.80.166:20719 192.168.1.2:12346
192.168.1.4:57722 190.160.228.185:12346 190.21.80.166:20722 192.168.1.2:12346
192.168.1.4:57723 190.160.228.185:12346 190.21.80.166:20719 192.168.1.2:12346
192.168.1.4:57723 190.160.228.185:12346 190.21.80.166:20722 192.168.1.2:12346
192.168.1.4:57723 190.160.228.185:12346 190.21.80.166:20724 192.168.1.2:12346
192.168.1.4:57724 190.160.228.185:12346 190.21.80.166:20719 192.168.1.2:12346
192.168.1.4:57724 190.160.228.185:12346 190.21.80.166:20722 192.168.1.2:12346
192.168.1.4:57724 190.160.228.185:12346 190.21.80.166:20724 192.168.1.2:12346
192.168.1.4:59848 74.125.45.19:80 192.168.1.2:32884 77.247.176.134:80
Tabla 40: Resultado de utilizar heurística 4
Aunque se vea que esta condición funciona bastante bien, se cree que necesita
muchas más pruebas para asegurar su efectividad. Una de las razones principales para
pensar esto, es que en rango de tiempos mayores la cantidad de datos aumenta. Y al ser
mayor la cantidad de datos, el número de cruces verdaderos o falsos aumentara
considerablemente, sin poder distinguir los flujos reales de los falsos.
91
6.4.5 Heurística 5:
Luego de los casos vistos anteriormente aparece una nueva pregunta interesante,
¿Que pasaría si no se conocieran los servicios expuestos por la red B? . Para responder a
esta pregunta se tomaron las restricciones sobre la igualdad de flags, la igualdad sobre el
tamaño en bytes por paquete, el filtrado de los 3 primeros octetos y se condicionó la
diferencia de tiempo entre los flujos de los sensores a valores entre 14 y 16 segundos. Por
medio de pruebas se fue acotando las restricciones sobre el tiempo entre los flujos. Estos
valores fueron producto de la búsqueda de una cantidad razonable de relaciones.
Sensor S1 Sensor S2
Información de origen Información de Información de Información de destino
destino origen
190.160.228.185:12346 192.168.1.4:57722 192.168.1.2:12346 190.21.80.166:20719
190.160.228.185:12346 192.168.1.4:57723 190.21.80.166:20722 192.168.1.2:12346
190.160.228.185:12346 192.168.1.4:57723 192.168.1.2:12346 190.21.80.166:20722
190.160.228.185:22 192.168.1.4:48168 192.168.1.2:22 190.21.80.166:19101
192.168.1.4:48168 190.160.228.185:22 190.21.80.166:19101 192.168.1.2:22
192.168.1.4:57722 190.160.228.185:12346 192.168.1.2:12346 190.21.80.166:20719
192.168.1.4:57723 190.160.228.185:12346 190.21.80.166:20722 192.168.1.2:12346
192.168.1.4:57723 190.160.228.185:12346 192.168.1.2:12346 190.21.80.166:20722
Tabla 41: Resultado de utilizar heurística 5
92
6.4.6 Heurística 6:
Utilizando los resultados obtenidos en las heurísticas 1, 3, 4 y 5, se unieron las
relaciones resultantes en una tabla y luego se agruparon los flujos resultantes por la
información de origen y destino para los dos sensores. La información mostrada en la tabla
42 corresponde al número de relaciones repetidas dentro de las heuristicas 1, 3, 4 y 5.
93
6.4.7 Heurística 7:
Para hacer las consultas anteriores sobre los datos de los dos sensores se utilizaron
tablas por separado con la información de cada sensor. La información se consultaba de
algún modo sabiendo que las tablas contenían la información de cada sensor. Esta
heurística intenta ver qué pasa si re-agrupara la información de los sensores en una sola
tabla y se ejecutara la consulta.
Sensor S1 Sensor S2
Información de origen Información de destino Información de origen Información de destino
190.160.228.185:12346 192.168.1.4:57722 192.168.1.2:12346 190.21.80.166:20719
190.160.228.185:12346 192.168.1.4:57723 190.21.80.166:20722 192.168.1.2:12346
190.160.228.185:12346 192.168.1.4:57723 192.168.1.2:12346 190.21.80.166:20722
190.160.228.185:22 192.168.1.4:48168 192.168.1.2:22 190.21.80.166:19101
…. …. …. ….
Tabla 43: Resultado de utilizar heurística 7
94
6.4.8 Heurística 8:
Esta heurística utiliza la consulta para la heurística 6 principalmente, pero en vez de
utilizar dos tablas como fuente de datos considera una sola tabla con toda la información. La
idea es probar que de alguna forma es posible hacer consultas a la información de los flujos
proveniente de los sensores S1 y S2 sin tener que distinguir entre los flujos pertenecientes a
cada sensor.
95
7 Trabajos Futuros
Dado lo realizado en la memoria se pueden mencionar varias líneas de trabajo:
• Problema de NAT
En la sección 6 se dieron los primeros pasos sobre este problema. Los experimentos
desarrollados necesariamente necesitan una mirada más crítica, con más casos de prueba,
diferentes ambientes, una muestra de datos mayor, etc.
• Mejoras a sistema
Luego del diseño del sistema y utilizarlo para las evaluación se llegaron a varios
puntos que podrían ser útiles en una segunda iteración del desarrollo del sistema
implementado.
o Usuarios
El sistema actualmente permite tener usuarios distintos y con estos ingresar a las
redes definidas por el administrador. Se plantea como mejora agregar roles a los usuarios
limitándolos a distintas secciones del sistema. Por ejemplo, rol desarrollador podría
encargarse de crear consultas de seguridad. Rol Cliente, este solo puede ver resultados de
consultas hechas por el desarrollador.
o On-line
Otra idea que se plantea es el crear un módulo que permita categorizar las consultas.
Pudiendo asociarlas a malware o a problemas específicos, de forma fácil.
o Conocimiento de la red
97
8 Conclusiones
En cuanto al trabajo realizado se logra concluir principalmente que el sistema es una
ayuda para la seguridad informática, aumentando y complementando la seguridad
computacional en las organizaciones.
Primero se debió diseñar el sistema para monitorear redes IP. Este consistió
en un sistema que utilizaba la información flujos de paquetes IP (flujos Netflow). Para
enfocarse en la creación del sistema de monitoreo se ocupó una herramienta de código
abierto para recibir, almacenar y analizar flujos IP (Nfdump). Esta herramienta fue
seleccionada por cumplir con los requisitos más importantes y al mismo tiempo ser
adaptable.
Se midió para una red normal el total de flujo IP almacenados por 10 días. Con esta
información se proyectó la cantidad total de información almacenada en un año. Luego se
hicieron pruebas con información artificial. Con estas pruebas se concluyó que para 16
redes parecidas y en un periodo de tiempo cercano a 1 año, se ocuparían 5 GB de datos
aproximadamente.
98
La segmentación por tipo de protocolo resulta ser muy importante a la hora de
consultar la información de flujo, la omisión de esta información puede entregar
información falsa del tráfico de la red. Por ejemplo, en algunos casos puede haber mucho
tráfico de paquetes para una máquina. Sin embargo, estos pueden corresponder a mensajes
ICMP normales y no a tráfico malicioso entre máquinas.
Hay que tener cuidado al construir consultas con respecto a la dirección del tráfico y
al protocolo. Por ejemplo, para UDP no se sabe si corresponde a información de conexión o
de respuesta a alguna conexión. En el caso de TCP, los flag TCP ayudan a este conocimiento.
99
9 Referencias y Bibliografía
[1] Acquisition and Analysis of Large Scale Network Data, John McHugh,
http://users.cs.dal.ca/~mchugh/netanalysis/slides/
http://www.apricot2007.net/presentation/tutorial/ryan-network-forensics-tut.pdf
[3] Sets, Bags, and Rock and Roll?, Analyzing| Large Data Sets of Network Data , John,
McHugh.
http://www.cert.org/netsa/publications/Esorics2004-mchugh-sets.pdf
[4] Watch your Flows whit NfSen and Nfdump, Peter Haag,
http://www.ripe.net/ripe/meetings/ripe-50/presentations/ripe50-plenary-tue-nfsen-
nfdump.pdf
http://www.cisco.com/en/US/products/ps6601/products_white_paper0900aecd8040623
2.shtml
http://www.securityfocus.com/print/infocus/1796
http://www.securityfocus.com/print/infocus/1802
http://www.alcancelibre.org/staticpages/index.php/introduccion-tcp-ip/print
http://www.prolexic.com/news/20070514-alert.php
http://www.arcert.gov.ar/webs/tips/botnets_200710_v1.pdf
http://www.vsantivirus.com/nugache-p2p-botnet.htm
100
10 Glosario
Protocolo Internet (IP): Este protocolo permite la transmisión de datos a través y entre
redes de área local, los datos viajan sobre una red basada en paquetes IP.
Se utiliza para detectar que servicios comunes está ofreciendo la máquina. También
puede ser usado por usuarios malintencionados que intentan comprometer la seguridad de
una máquina.
Ataque de DoS (Denial of Service): Ataque a un sistema de computadores o red que causa
que un servicio o recurso sea inaccesible a los usuarios legítimos.
Estos se componen de: sensores los cuales generan eventos de seguridad, una
consola para monitorear eventos, alertas y controlar los sensores, y un motor central que
almacena la información proveniente de los sensores en una base de datos y utiliza un
sistema de reglas para generar alertas de seguridad.
NAT (Network Address Translation): Mecanismo utilizado por routers para intercambiar
paquetes entre dos redes con direcciones incompatibles. Los router’s convierten en tiempo
real las direcciones utilizadas en los paquetes IP.
101
Anexos
Anexo A: Consultas SQL para evaluaciones del capítulo 5
Experimento 1:
Comportamiento N a 1
1)
select
srcip,count(distinct dstip),sum(npack)
from packets_acto1
group by srcip
2)
select
dstip,count(distinct srcip)
from packets_acto1
where dstip like '192.168.2.2'
and R=0
and S=1
and A=1
group by dstip
3)
select
srcip ,dstip
from packets_acto1
where dstip like '192.168.2.2'
and R=0
and S=1
and A=1
group by srcip ,dstip,R,A,S
order by srcip
102
4)
select
srcip ,dstip
from packets_acto1
where dstip like '192.168.2.2'
and R=1
and S=0
and A=1
group by srcip ,dstip,R,A,S
order by srcip
5)
select
dstip,count(distinct srcip)
from packets_acto1
where dstip like '192.168.2.2'
and R=1
and S=0
and A=1
group by dstip
Comportamiento 1 a N
1)
select
dstip,count(distinct srcip)
from packets_acto2
group by dstip having count(distinct srcip)>10
2)
select
dstip,count(distinct dstport)
from packets_acto2
group by dstip having count(distinct dstport)>10
103
3)
select
dstip,concat(DATE(startTime),’ ’,HOUR(startTime),’:’,MINUTE(startTime)) as fecha
,count(distinct dstport)
from packets_acto2
group by dstip ,
DATE(startTime),
HOUR(startTime),
MINUTE(startTime) having count(distinct dstport)>10
Comportamiento 1 a N a 1
1)
select
aa , count(distinct aabb), bb
from
(
select
a.srcip as aa ,a.dstip as aabb ,b.dstip as bb
from
(
select
*
from packets_acto3
)
a join (select * from packets_acto3) b on a.dstip = b.srcip
where a.srcip <> b.dstip
)
temp
group by aa, bb
2)
select
aa , count(distinct aabb), bb
from
(
select
a.srcip as aa ,a.dstip as aabb ,b.dstip as bb,a.d1,a.d2
from
(
select
srcip,dstip, DATE(startTime) as d1,HOUR(startTime) as d2
104
from packets_acto3
group by srcip,dstip, DATE(startTime),HOUR(startTime),MINUTE(startTime)
)
a join
(
select
srcip,dstip, DATE(startTime) as d1,HOUR(startTime) as d2
from packets_acto3
group by srcip,dstip, DATE(startTime),HOUR(startTime),MINUTE(startTime)
)
b on a.dstip = b.srcip
and a.d1=b.d1
and a.d2= b.d2
where a.srcip <> b.dstip
)
temp
group by aa, bb
1)
SELECT
dstip,count(distinct srcip)
FROM `packets_acto4`
group by dstip having count(distinct srcip) > 5
2)
select
srcip, count( distinct dstip) as total
from packets_acto4
where dstip in
(
SELECT
dstip
FROM `packets_acto4`
group by dstip having count(distinct srcip) > 5
)
group by srcip
105
3)
select
total,count(*)
from
(
select
srcip, count( distinct dstip) as total
from packets_acto4
where dstip in
(
SELECT
dstip
FROM `packets_acto4`
group by dstip having count(distinct srcip) > 5
)
group by srcip
)
d
group by total
Experimento 2:
Simulación 1
1)
select
concat(date(startTime),' ', hour(startTime)) fecha ,
srcip,
count(distinct dstip)
from packets_TestAllData
where protocol = 'TCP'
group by date(startTime),
hour(startTime),
srcip having count(distinct dstip) > 13
106
a.
select
concat(date(startTime),' ', hour(startTime),':',minute(startTime)) fecha ,
srcip,
count(distinct dstip)
from packets_TestAllData
where protocol = 'TCP'
group by date(startTime),
hour(startTime),
minute(startTime) ,
srcip having count(distinct dstip) > 5
b.
Select
concat(date(startTime),' ', hour(startTime) ,':', minute(startTime) ,':',second(startTime))
fecha ,
srcip,
count(distinct dstip)
from packets_TestAllData
where protocol = 'TCP'
group by date(startTime),
hour(startTime),
minute(startTime),
second(startTime) ,
srcip having count(distinct dstip) > 2
c.
select
concat(date(startTime),' ', hour(startTime) ,':',minute(startTime) ,':',second(startTime))
fecha ,
srcip,
count(distinct dstip)
from packets_TestAllData
where S=1
and R=0
and A=0
and protocol = 'TCP'
group by date(startTime),
hour(startTime),
minute(startTime),
second(startTime) ,
srcip having count(distinct dstip) > 2 fecha srcip count(distinct dstip)
107
d.
select
concat(date(startTime),' ', hour(startTime)) fecha ,
srcip,
count(distinct dstip)
from packets_TestAllData
where S=0
and R=1
and A=1
and protocol = 'TCP'
group by date(startTime), hour(startTime),srcip having count(distinct dstip) > 2
2)
select
concat(date(startTime),' ', hour(startTime)) fecha ,
dstip,
count(distinct srcip)
from packets_TestAllData
where protocol = 'TCP'
group by date(startTime),
hour(startTime),
dstip having count(distinct srcip) > 6
a.
select
concat(date(startTime),' ', hour(startTime),':',minute(startTime)) fecha ,
dstip,
count(distinct srcip)
from packets_TestAllData
where protocol = 'TCP'
group by date(startTime),
hour(startTime),
minute(startTime) ,
dstip having count(distinct srcip) > 2 fecha dstip count(distinct srcip)
108
b.
select
concat(date(startTime),' ', hour(startTime),':',minute(startTime),':',second(startTime))
fecha ,
dstip,
count(distinct srcip)
from packets_TestAllData
where protocol = 'TCP'
group by date(startTime),
hour(startTime),
minute(startTime),
second(startTime) ,
dstip having count(distinct srcip) > 2
c.
select
date(startTime),dstip,count(distinct srcip)
from packets_TestAllData
where protocol = 'TCP'
and R=1
and A=1
group by date(startTime),dstip having count(distinct srcip) >2
d.
select
concat(date(startTime),' ', hour(startTime),':',minute(startTime)) fecha ,
dstip,
count(distinct srcip)
from packets_TestAllData
where protocol = 'TCP'
and R=1
and A=1
and S=0
group by date(startTime),
hour(startTime),
minute(startTime),
dstip having count(distinct srcip) >1
109
Simulación 2
1)
select
date,hour,aa,bb,count(distinct aabb)
from
(
select
a.date ,a.hour, a.srcip as aa ,a.dstip as aabb ,b.dstip as bb
from
(
select
srcip,dstip, date(startTime) as date , hour(startTime) as hour
from packets_TestAllData
group by date(startTime) , hour(startTime),srcip,dstip
)
a join
(
select
srcip,dstip ,date(startTime) as date, hour(startTime) as hour
from packets_TestAllData
group by date(startTime) , hour(startTime),srcip,dstip
)
b on a.dstip = b.srcip
where a.date=b.date
and a.hour = b.hour
and a.srcip <> b.dstip
)
d
group by date , hour, aa, bb having count(distinct aabb) >10
110
Extensiones: Análisis de flujo en redes con NAT:
Heuristica 1:
select
srcA,dstA,srcB,dstB,sum(npack),sum(nbyte)
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB
from
(
select
*
from packets_colector12345mb
)
a join
(
select
*
from packets_colector12348mb
)
b using(npack,nbyte,dstport,A,S,R,F)
where abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 20
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
Heuristica 2:
select
srcA,dstA,srcB,dstB,sum(npack),sum(nbyte)
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
111
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB
from
(
select
*
from packets_colector12345mb
)
a join
(
select
*
from packets_colector12348mb
)
b using(npack,dstport,A,S,R,F)
where abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 20
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
Heuristica 3:
select
srcA,dstA,srcB,dstB,sum(npack),sum(nbyte)
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB
from
(
select
*
from packets_colector12345mb
)
a join
(
select
*
112
from packets_colector12348mb
)
b using(dstport,A,S,R,F)
where abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 20
and (a.nbyte/a.npack) = (b.nbyte/b.npack)
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
Heuristica 4:
select
srcA,
dstA,
srcB,
dstB
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB ,
a.npack npackA,
b.nbyte nbyteB,
b.npack npackB ,
a.nbyte nbyteA
from
(
select
*
from packets_colector12345mb
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
a join
(
select
*
from packets_colector12348mb
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
113
)
b using(dstport,A,S,R,F)
where abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 20
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
Heuristica 5:
select
srcA,
dstA,
srcB,
dstB
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB ,
a.npack npackA,
b.nbyte nbyteB,
b.npack npackB ,
a.nbyte nbyteA
from
(
select
*
from packets_colector12345mb
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
a join
(
select
*
from packets_colector12348mb
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
b using(A,S,R,F)
where abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 17
114
and abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) > 13
and (a.nbyte/a.npack) = (b.nbyte/b.npack)
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
Heuristica 6:
select
dstA,srcB,count(*)
from
(
(
select
srcA,
dstA,
srcB,
dstB,
((sum(npackA) + sum(npackB))/2) avgnpack,
((sum(nbyteA) + sum(nbyteB))/2) avgnbyte
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB ,
a.npack npackA,
b.nbyte nbyteB,
b.npack npackB ,
a.nbyte nbyteA
from
(
select
*
from packets_colector12345mb
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
a join
(
select
*
115
from packets_colector12348mb
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
b using(A,S,R,F)
where abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 17
and abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) > 13
and (a.nbyte/a.npack) = (b.nbyte/b.npack)
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
)
union
(
select
srcA,dstA,srcB,dstB,sum(npack) as avgnpack,sum(nbyte) as avgnbyte
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB ,
a.npack ,
b.nbyte
from
(
select
*
from packets_colector12345mb
)
a join
(
select
*
from packets_colector12348mb
)
b using(npack,dstport,A,S,R,F)
where abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 20
and (a.nbyte/a.npack) = (b.nbyte/b.npack)
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
116
)
union
(
select
srcA,
dstA,
srcB,
dstB,
((sum(npackA) + sum(npackB))/2) avgnpack,
((sum(nbyteA) + sum(nbyteB))/2) avgnbyte
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB ,
a.npack npackA,
b.nbyte nbyteB,
b.npack npackB ,
a.nbyte nbyteA
from
(
select
*
from packets_colector12345mb
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
a join
(
select
*
from packets_colector12348mb
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
b using(dstport,A,S,R,F)
where abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 20
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
)
union
(
117
select
srcA,
dstA,
srcB,
dstB,
((sum(npackA) + sum(npackB))/2) avgnpack,
((sum(nbyteA) + sum(nbyteB))/2) avgnbyte
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB ,
a.npack npackA,
b.nbyte nbyteB,
b.npack npackB ,
a.nbyte nbyteA
from
(
select
*
from packets_colector12345mb
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
a join
(
select
*
from packets_colector12348mb
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
b using(A,S,R,F)
where abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 17
and abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) > 13
and (a.nbyte/a.npack) = (b.nbyte/b.npack)
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
)
)
aux
group by dstA,srcB having count(*)>1
118
Heuristica 7:
select
srcA,
dstA,
srcB,
dstB,
((sum(npackA) + sum(npackB))/2) avgnpack,
((sum(nbyteA) + sum(nbyteB))/2) avgnbyte
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB ,
a.npack npackA,
b.nbyte nbyteB,
b.npack npackB ,
a.nbyte nbyteA
from
(
select
*
from packets_total
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
a join
(
select
*
from packets_total
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
b using(A,S,R,F)
where a.netflow_router_id <> b.netflow_router_id
and abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 17
and abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) > 13
and (a.nbyte/a.npack) = (b.nbyte/b.npack)
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
119
Heuristica 8:
select
dstA,srcB,count(*)
from
(
(
select
srcA,
dstA,
srcB,
dstB,
((sum(npackA) + sum(npackB))/2) avgnpack,
((sum(nbyteA) + sum(nbyteB))/2) avgnbyte
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB ,
a.npack npackA,
b.nbyte nbyteB,
b.npack npackB ,
a.nbyte nbyteA
from
(
select
*
from packets_total
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
a join
(
select
*
from packets_total
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
b using(A,S,R,F)
where a.netflow_router_id <> b.netflow_router_id
and abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 17
and abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) > 13
and (a.nbyte/a.npack) = (b.nbyte/b.npack)
120
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
)
union
(
select
srcA,dstA,srcB,dstB,sum(npack) as avgnpack,sum(nbyte) as avgnbyte
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB ,
a.npack ,
b.nbyte
from
(
select
*
from packets_total
)
a join (select * from packets_total ) b using(npack,dstport,A,S,R,F)
where a.netflow_router_id <> b.netflow_router_id
and abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 20
and (a.nbyte/a.npack) = (b.nbyte/b.npack)
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
)
union
(
select
srcA,
dstA,
srcB,
dstB,
((sum(npackA) + sum(npackB))/2) avgnpack,
((sum(nbyteA) + sum(nbyteB))/2) avgnbyte
from
(
121
select
concat(a.srcip,':',a.srcport) as srcA,
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB ,
a.npack npackA,
b.nbyte nbyteB,
b.npack npackB ,
a.nbyte nbyteA
from
(
select
*
from packets_total
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
a join
(
select
*
from packets_total
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
b using(dstport,A,S,R,F)
where a.netflow_router_id <> b.netflow_router_id
and abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 20
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
)
union
(
select
srcA,
dstA,
srcB,
dstB,
((sum(npackA) + sum(npackB))/2) avgnpack,
((sum(nbyteA) + sum(nbyteB))/2) avgnbyte
from
(
select
concat(a.srcip,':',a.srcport) as srcA,
122
concat(a.dstip,':',a.dstport) as dstA,
concat(b.srcip,':',b.srcport) srcB,
concat(b.dstip,':',b.dstport) as dstB,
a.startTime stA,
b.startTime stB ,
a.npack npackA,
b.nbyte nbyteB,
b.npack npackB ,
a.nbyte nbyteA
from
(
select
*
from packets_total
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
a join
(
select
*
from packets_total
where SUBSTRING_INDEX(srcip,'.',3) <> SUBSTRING_INDEX(dstip,'.',3)
)
b using(A,S,R,F)
where a.netflow_router_id <> b.netflow_router_id
and abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) < 17
and abs(time_to_sec(a.startTime) - time_to_sec(b.startTime)) > 13
and (a.nbyte/a.npack) = (b.nbyte/b.npack)
order by 1,2,3,4
)
a
group by srcA,dstA,srcB,dstB
)
)
aux
group by dstA,srcB having count(*)>1
123