Tema
- Concepto de grafos
- Representación de grafos
- Aplicaciones de grafos
Instrucciones
Contexto:
En ciberseguridad, los sistemas complejos están compuestos por múltiples recursos interconectados, a los que los usuarios acceden siguiendo rutas determinadas por sus tareas. Estas rutas, si se analizan adecuadamente, pueden revelar comportamientos anómalos, accesos inusuales o rutas de alto riesgo. En este reto, utilizarás teoría de grafos para modelar la red de recursos, simular movimientos de usuarios y detectar patrones potencialmente sospechosos.
Pregunta esencial:
¿Cómo modelar los movimientos de los usuarios dentro de una red como rutas sobre un grafo para identificar patrones de comportamiento sospechosos o rutas críticas de riesgo?
Objetivo:
Construir un grafo completo que represente una red organizacional, simular trayectorias de usuarios como caminos en esa red, analizar métricas topológicas de los caminos y detectar rutas anómalas basadas en su estructura y frecuencia.
Indicaciones:
- Construcción del grafo de la red organizacional:
- Define un grafo dirigido completo con al menos 10 nodos.
- El grafo representa los distintos recursos, servicios o áreas de una red digital.
- Incluye como nodos clave obligatorios:
- "login"
- "db"
- "root_fs"
- "correo"
- "web"
- "api"
- Agrega al menos 4 nodos adicionales definidos por ti para llegar a un total de 10 nodos.
- Representa este grafo utilizando networkx y visualízalo como grafo base de la red.
- Simulación de movimientos de usuarios:
- Simula trayectorias (caminos) de al menos 500 usuarios dentro del grafo.
- Cada trayectoria es una lista ordenada de nodos visitados que:
- Inicia siempre en "login".
- Tiene una longitud variable entre 4 y 20 pasos.
- No puede regresar a "login".
- Cada camino representa un recorrido hecho por el usuario en la red durante una sesión.
- Almacena todas las trayectorias en una estructura adecuada.
- Análisis de cada trayectoria:
- Construye un subgrafo dirigido con los nodos y aristas visitadas.
- Calcula las siguientes métricas usando networkx:
- Longitud del camino.
- Número de nodos distintos visitados.
- Número de ciclos.
- Frecuencia de visitas por nodo.
- Frecuencia de uso de cada arista.
- Conectividad del grafo generado.
- Grado de cada nodo.
- Almacena estas métricas en una tabla (DataFrame) y realiza un análisis estadístico global:
- Distribución de longitudes.
- Promedio y desviación estándar de la frecuencia de cada nodo y cada arista.
- Promedio y desviación estándar del número de ciclos.
- Promedio y desviación estándar del grado de cada nodo.
- Detecta 5 trayectorias sospechosas (que se desvíen del promedio en alguna métrica), visualízalas y analiza si pueden corresponder a ingresos riesgosos.
- Construcción del grafo ponderado por frecuencia:
- Calcula la frecuencia total de uso de cada arista a partir de todas las trayectorias.
- Asigna estas frecuencias como pesos al grafo base.
- Visualiza el grafo con aristas más gruesas o colores más intensos según su peso.
- Analiza:
- ¿Qué rutas son más concurridas?
- ¿Hay rutas críticas con uso excesivo?
- ¿Cuáles serían candidatas a restricciones o monitoreo?
- Producto por entregar:
- Un único archivo IPYNB (Jupyter Notebook) que contenga:
- Introducción.
- Construcción del grafo de red.
- Simulación de movimientos.
- Análisis de trayectorias.
- Detección de trayectorias sospechosas.
- Grafo ponderado.
- Conclusiones.
- El notebook debe estar correctamente estructurado, comentado y ejecutarse sin errores.
- Video explicativo de máximo 5 minutos que presente cada sección del archivo IPYNB, junto con explicaciones.
- Un único archivo IPYNB (Jupyter Notebook) que contenga: