{" . "}

{ 02 }

< . >

La ciberdelincuencia innova continuamente en sus TTP (Tácticas, Técnicas y Procedimientos) para superar los sistemas de detección y contención. En la actualidad los criminales ya utilizan las últimas tecnologías de IA para generar todo tipo de malware, contenido dañino o artefactos para vulnerar nuestra seguridad. En este reto proponemos aplicar técnicas de aprendizaje automático (ML) para mejorar la defensa de nuestras organizaciones, y así anticiparnos en la detección de nuevas formas de ataque. Para ello, hemos recopilado logs de actividad de diferentes usuarios de una organización, que reflejan su actividad diaria normal durante varios días. Por otro lado, hemos seleccionado diferentes tipos de ataques cibernéticos que hemos introducido, de manera controlada, en algunos de estos registros en un día concreto. 

Nuestra hipótesis es que es posible detectar automáticamente estos ataques por cambios inusuales en el comportamiento de la actividad de un usuario. De este modo, podríamos identificar ataques en sus primeras etapas, antes de que causen daños mayores. Además, al observar y analizar estas alteraciones en el comportamiento de un usuario o de varios, también se puede obtener información valiosa sobre los diferentes tipos de ataques detectados, ayudándonos a desarrollar defensas más específicas y eficaces y compartiendo la inteligencia obtenida para que otras organizaciones puedan protegerse ante ataques similares. 

Los resultados obtenidos en este estudio nos van a permitir profundizar en las diferentes capacidades de detección de ciberataques y enriquecer nuestras estrategias actuales, garantizando así un entorno digital más seguro para una organización.

 
{ 01 }

< . >

Este conjunto de datos contiene logs de actividad de computadores de diferentes usuarios, utilizando el servicio System Monitor (Sysmon) del sistema operativo Windows, tanto con actividades legítimas, como con ataques inyectados.

{ 03 }

< . >

  • train.csv: Logs con actividad normal recogidos de 5 usuarios diferentes.
  • validation.csv: Logs de esos 5 usuarios con un ataque inyectado.
  • test.csv: Logs de esos mismos 5 usuarios con diferentes ataques inyectados, de diferentes tipos.
{ 04 }

< . >

  • UtcTime: Fecha y hora en formato UTC del evento registrado.
  • EventID: Identificador único del tipo de evento registrado.
  • Version: Versión de Sysmon que generó el evento.
  • Level: Nivel de severidad del evento.
  • Task: Identificador de tarea asociado al evento.
  • Opcode: Código de operación asociado al evento.
  • Keywords: Palabras clave relacionadas con el evento.
  • TimeCreated: Fecha y hora de creación del registro del evento.
  • EventRecordID: Identificador único del registro del evento.
  • Execution_ProcessID: ID del proceso que generó el evento.
  • Execution_ThreadID: ID del hilo que generó el evento.
  • Channel: Canal por el cual se registró el evento.
  • Computer: Nombre del equipo donde se generó el evento.
  • Security: Información de seguridad asociada al evento.
  • RuleName: Nombre de la regla que desencadenó el evento.
  • ProcessGuid: Identificador único global del proceso.
  • ProcessId: ID del proceso.
  • QueryName: Nombre de la consulta asociada al evento (por ejemplo, en eventos DNS).
  • QueryStatus: Estado de la consulta realizada.
  • QueryResults: Resultados de la consulta realizada.
  • Image: Ruta del ejecutable o imagen del proceso.
  • User: Usuario asociado al evento.
  • Protocol: Protocolo involucrado en el evento (por ejemplo, TCP, UDP).
  • Initiated: Si la acción fue iniciada (ejemplo, conexión de red).
    SourceIsIpv6: Indica si la dirección IP de origen es IPv6.
  • SourceIp: Dirección IP de origen.
  • SourceHostname: Nombre de host de origen.
  • SourcePort: Puerto de origen.
  • SourcePortName: Nombre del puerto de origen.
  • DestinationIsIpv6: Indica si la dirección IP de destino es IPv6.
  • DestinationIp: Dirección IP de destino.
  • DestinationHostname: Nombre de host de destino.
  • DestinationPort: Puerto de destino.
  • EventID: Identificador único del tipo de evento registrado.
  • Description: Descripción del archivo o evento.
  • Product: Producto asociado al archivo o evento.
  • Company: Empresa asociada al archivo o evento.
  • OriginalFileName: Nombre original del archivo.
  • CommandLine: Línea de comando utilizada para iniciar el proceso.
  • CurrentDirectory: Directorio actual en el momento del evento.
  • LogonGuid: Identificador único global del inicio de sesión.
  • LogonId: ID de inicio de sesión.
  • TerminalSessionId: ID de la sesión terminal asociada.
  • IntegrityLevel: Nivel de integridad del proceso o evento.
  • Hashes: Hashes asociados al archivo o proceso.
  • ParentProcessGuid: Identificador único global del proceso padre.
  • ParentProcessId: ID del proceso padre.
  • ParentImage: Imagen o ejecutable del proceso padre.
  • ParentCommandLine: Línea de comando del proceso padre.
  • TargetFilename: Nombre de archivo de destino en eventos de archivo.
  • CreationUtcTime: Fecha y hora de creación en UTC del archivo o recurso.
  • PreviousCreationUtcTime: Fecha y hora de creación anterior en UTC.
  • ID: Identificador genérico, dependiendo del contexto.
  • State: Estado del recurso o proceso.
  • SchemaVersion: Versión del esquema utilizado.
  • ImageLoaded: Indica si una imagen fue cargada.
  • Signed: Indica si el archivo o recurso está firmado.
  • Signature: Firma asociada al archivo o recurso.
  • SignatureStatus: Estado de la firma.
  • Hash: Valor hash específico del recurso.
  • Contents: Contenidos asociados al evento.
  • EventType: Tipo específico de evento.
  • TargetObject: Objeto de destino en eventos de registro o similar.
  • Details: Detalles adicionales relacionados con el evento.
  • Collection_node_id: Identificación de cada usuario (EndPoint).
  • Attack: Contiene diferentes etiquetas según el tipo de ataque inyectado {0: sin ataque, 1: ataque tipo 1, 2: ataque tipo 2

Información de los diferentes tipos de EventID en Sysmon:

{ 05 }

< . >

  • Detección de anomalías: Utilizando los conjuntos de datos proporcionados aplicar diferentes técnicas de ML para identificar registros de logs que difieren significativamente de la actividad normal, pudiendo ser indicativos de un ataque.
  • Extracción de IoCs (Indicators of Compromise): la compartición de IoC es el actual mecanismo de compartición de inteligencia para que otras organizaciones puedan protegerse ante posibles eventos en la infraestructura. Una vez identificadas las anomalías, los participantes deberán intentar determinar la naturaleza de la anomalía y extraer información (IoCs) que permita comprender la causa y el método del ataque.
{ 06 }

< . >

Análisis exploratorio y preprocesado .

  • Familiarización y comprensión de los datos normales, tipos de datos, diseño de resolución del problema (ej.: utilizar todos los datos de todos los usuarios en conjunto o cada usuario por separado, qué algoritmos se van a utilizar, etc.). 
  • Preprocesado, selección de características más relevantes, creación de características nuevas, feature engineering.

Detección de ataques .

  • Utilizando el archivo “train.csv”, entrenar un algoritmo de IA para detectar anomalías.
  • Validar el modelo entrenado y ajustar sus parámetros utilizando el archivo “validation.csv”.  
  • Aplicar el modelo entrenado a los datos contenidos en “test.csv” para identificar los posibles ataques.

Extracción de inteligencia .

  • Tras identificar los registros anómalos, analizar sus características para extraer IoCs relevantes.
  • Comparar y analizar los diferentes ataques detectados para determinar si son similares o tienen características diferentes.

Criterios de Evaluación .

  • Comprensión y análisis de los datos. Se valorará la capacidad de los participantes para realizar un análisis exploratorio profundo. Esto incluye la identificación de patrones, características relevantes, visualizaciones, estadísticas descriptivas y otros métodos que ayuden a ilustrar y respaldar la toma de decisiones.
  • Precisión en la detección de los ataques. Se espera la identificación de la mayor cantidad de ataques inyectados en el conjunto de datos sin comprometer la calidad general del modelo.
  • Baja tasa de falsos positivos. Es fundamental que el modelo no solo identifique ataques correctamente, sino que también minimice la cantidad de eventos etiquetados incorrectamente como ataques. Una alta tasa de falsos positivos dificulta la aplicación del modelo en un entorno real por la alta cantidad de alertas innecesarias generadas.
  • Calidad de los IoCs extraídos: Los IoCs presentados deben ser relevantes, útiles y específicos. Se espera que los IoCs estén bien justificados y se explique su relevancia.

Descarga de datasets .

Los datasets pueden ser descargados en este enlace