Pablo Zavala · Evaluación de seguridad de IA · Ingeniería de investigación

Detección de anomalías de ciberseguridad

Un proyecto de analítica de seguridad de Carnegie Mellon que ajusta un Isolation Forest sobre tráfico de kernel de Linux exclusivamente benigno, tomado del conjunto de datos honeypot BETH, y luego lo puntúa bajo un umbral congelado. En un holdout de 18.000 eventos con una prevalencia simulada de ataque del 1%, el detector captura el 90% de las intrusiones (162 de 180) con una tasa de falsos positivos de 1,94%, con ROC AUC de 0,9714. La entrada audita su propia cifra principal: la precisión se sitúa en 0,3189, de modo que aproximadamente una de cada tres alertas señala un ataque real, y tres variables dominantes le entregan a un atacante un manual de suplantación, lo cual mantiene al detector como una sola capa dentro de la defensa en profundidad.

Precisión de la afirmación

Lo que demuestra la evidencia
Holdout de umbral congelado: exhaustividad de 0,9000 (162 de 180 ataques; IC del 95% de 0,85 a 0,94) con FPR de 0,0194, ROC AUC de 0,9714, a partir de un Isolation Forest ajustado sobre tráfico exclusivamente benigno
Frontera de capacidad y evidencia
La precisión en el umbral elegido es de 0,3189 con una prevalencia simulada del 1%, la clase maliciosa contiene una única campaña de preparación de botnet en un solo host honeypot, y tres variables dominantes dejan al detector vulnerable a la suplantación.

Repositorio público reproducible + notebook ejecutado

Rol: Autor único: ingeniería de variables, análisis de separabilidad, ajuste del detector exclusivamente benigno, gobernanza de umbrales, análisis de errores, y el paquete público de reproducción.

Tarjeta de evaluación

Desempeño de detección

Muestra
Holdout de 18.000 eventos con una prevalencia simulada del 1%, umbral congelado después de la validación
Evaluador
Exhaustividad, FPR, precisión, ROC AUC y PR AUC, con IC del 95% por bootstrap a partir de 400 remuestreos del holdout
Resultado
Exhaustividad de 0,9000 (162 de 180 ataques; IC de 0,85 a 0,94) con FPR de 0,0194 (346 de 17.820 eventos benignos); ROC AUC de 0,9714; PR AUC de 0,2972; precisión de 0,3189 (IC de 0,28 a 0,36); presupuesto de alertas de 2.822 por cada 100k eventos.
Alcance de verificación
Una sola campaña de ataque y un solo entorno honeypot; las métricas puntúan este conjunto de datos y no tráfico de producción.

Análisis de errores

Muestra
Los 346 falsos positivos que el umbral congelado señala en el holdout
Evaluador
Taxonomía de procesos y eventos sobre el tráfico benigno señalado
Resultado
Los procesos systemd concentran el 86% del volumen de falsos positivos, y la enumeración de directorios getdents64 se dispara a 37 veces su línea base benigna, de modo que una alerta de getdents64 proveniente de systemd merece una regla de revisión rápida antes de notificar a una persona.
Alcance de verificación
La guía de triage se deriva de la línea base benigna de un solo entorno.

Nivel de evidencia

Muestra
Repositorio público: notebook ejecutado con salidas incrustadas, nueve figuras confirmadas, dependencias fijadas y un script de reconstrucción de datos
Evaluador
Reejecución con RANDOM_STATE=42 más aserciones de conteo en el script de reconstrucción
Resultado
La reejecución reprodujo exactamente cada métrica principal, con 14 de 15 celdas de código idénticas byte a byte (una diferencia cosmética en una etiqueta de dtype de pandas); el script de reconstrucción verifica los tres conteos de filas que lo definen; el código está cubierto por la licencia MIT y el conjunto de datos utiliza CC0 1,0.
Alcance de verificación
El subconjunto de 95 MB permanece fuera del control de versiones, de modo que una reconstrucción completa requiere una cuenta de Kaggle; se incluye una muestra estratificada de 500 filas para la inspección del esquema.

Afiliación

Muestra
Trabajo de curso de Carnegie Mellon University, otoño de 2024, revisado en febrero de 2025
Evaluador
Atribución del README del repositorio
Resultado
Trabajo de curso individual de analítica de seguridad, elevado a un repositorio público reproducible.
Alcance de verificación
Los materiales del curso, las consignas y el contexto de calificación permanecen privados.

Página actualizada

Muestra
Julio de 2026
Evaluador
Registro de contenido del sitio
Resultado
Entrada redactada el 10 de julio de 2026 a partir del repositorio público: su README, documentación de datos y salidas del notebook ejecutado.
Alcance de verificación
Las cifras citan el notebook ejecutado confirmado y su reejecución documentada, y no una ejecución nueva sobre tráfico fresco.
Ejes de evaluación con muestra, evaluador, resultado y alcance de verificación.
EjeMuestraEvaluadorResultadoAlcance de verificación
Desempeño de detecciónHoldout de 18.000 eventos con una prevalencia simulada del 1%, umbral congelado después de la validaciónExhaustividad, FPR, precisión, ROC AUC y PR AUC, con IC del 95% por bootstrap a partir de 400 remuestreos del holdoutExhaustividad de 0,9000 (162 de 180 ataques; IC de 0,85 a 0,94) con FPR de 0,0194 (346 de 17.820 eventos benignos); ROC AUC de 0,9714; PR AUC de 0,2972; precisión de 0,3189 (IC de 0,28 a 0,36); presupuesto de alertas de 2.822 por cada 100k eventos.Una sola campaña de ataque y un solo entorno honeypot; las métricas puntúan este conjunto de datos y no tráfico de producción.
Análisis de erroresLos 346 falsos positivos que el umbral congelado señala en el holdoutTaxonomía de procesos y eventos sobre el tráfico benigno señaladoLos procesos systemd concentran el 86% del volumen de falsos positivos, y la enumeración de directorios getdents64 se dispara a 37 veces su línea base benigna, de modo que una alerta de getdents64 proveniente de systemd merece una regla de revisión rápida antes de notificar a una persona.La guía de triage se deriva de la línea base benigna de un solo entorno.
Nivel de evidenciaRepositorio público: notebook ejecutado con salidas incrustadas, nueve figuras confirmadas, dependencias fijadas y un script de reconstrucción de datosReejecución con RANDOM_STATE=42 más aserciones de conteo en el script de reconstrucciónLa reejecución reprodujo exactamente cada métrica principal, con 14 de 15 celdas de código idénticas byte a byte (una diferencia cosmética en una etiqueta de dtype de pandas); el script de reconstrucción verifica los tres conteos de filas que lo definen; el código está cubierto por la licencia MIT y el conjunto de datos utiliza CC0 1,0.El subconjunto de 95 MB permanece fuera del control de versiones, de modo que una reconstrucción completa requiere una cuenta de Kaggle; se incluye una muestra estratificada de 500 filas para la inspección del esquema.
AfiliaciónTrabajo de curso de Carnegie Mellon University, otoño de 2024, revisado en febrero de 2025Atribución del README del repositorioTrabajo de curso individual de analítica de seguridad, elevado a un repositorio público reproducible.Los materiales del curso, las consignas y el contexto de calificación permanecen privados.
Página actualizadaJulio de 2026Registro de contenido del sitioEntrada redactada el 10 de julio de 2026 a partir del repositorio público: su README, documentación de datos y salidas del notebook ejecutado.Las cifras citan el notebook ejecutado confirmado y su reejecución documentada, y no una ejecución nueva sobre tráfico fresco.

Cómo inspeccionar este trabajo

Gobernanza de umbrales

Cada número principal proviene de un único diseño de evaluación: una muestra de 60.000 eventos con una prevalencia de ataque simulada del 1% se divide 52,5/17,5/30 en ajuste, validación y holdout, estratificada según la etiqueta, y el umbral de alerta (0,6892, el óptimo de F2 sobre la curva de precisión-exhaustividad de validación) se congela antes de que se puntúe el holdout de 18.000 eventos. La exhaustividad y la tasa de falsos positivos reportadas miden, por lo tanto, una regla de decisión gobernada, y no una curva buscada a posteriori.

Qué tocan las etiquetas

La llamada a fit() del Isolation Forest recibe únicamente variables, y su conjunto de entrenamiento de 31.185 eventos contiene cero filas de ataque. Las etiquetas entran en exactamente tres puntos: filtrar la partición de ajuste para dejar solo tráfico benigno, elegir el umbral de validación, y puntuar el holdout congelado, la forma estándar de un despliegue de detección de novedades.

Verificación para el lector

El repositorio se reejecuta de principio a fin: el script de reconstrucción de datos verifica los tres conteos de filas que lo definen, las dependencias permanecen fijadas, y una reejecución con RANDOM_STATE=42 reprodujo exactamente cada métrica principal, con 14 de 15 celdas de código idénticas byte a byte a las originales y la diferencia restante limitada a una etiqueta cosmética de dtype en pandas.

Estudio de caso

Problema

La telemetría de seguridad a nivel de kernel llega más rápido de lo que nadie puede etiquetarla, de modo que un detector desplegable debe aprender el comportamiento benigno por sí solo y aun así detectar ataques que nunca ha visto; la evaluación, además, debe mantener la cifra principal honesta a tasas de ataque realistas.

Contexto

El subconjunto contiene 347.399 eventos de procesos del kernel con 16 campos distribuidos en 5 hosts honeypot, extraídos del corpus BETH de 8.004.918 eventos (Highnam et al. 2021): la partición de validación completa y etiquetada, más los 158.432 eventos confirmados como maliciosos de un host atacado, lo cual enriquece la tasa de maliciosidad al 45,6% para el análisis exploratorio. Ambos conjuntos de etiquetas fueron anotados manualmente por los autores del conjunto de datos, y los modelos de detección remuestrean a una prevalencia realista del 1%.

Método

Dieciséis campos crudos se destilan en 7 variables diseñadas siguiendo las indicaciones del artículo de BETH; una proyección UMAP confirma que el espacio de variables separa las clases antes de que se entrene ningún modelo, y un Isolation Forest con 300 árboles se ajusta sobre 31.185 eventos exclusivamente benignos. Una muestra de 60.000 eventos con una prevalencia simulada del 1% se divide 52,5/17,5/30 en ajuste, validación y holdout; el umbral de alerta maximiza F2 sobre la validación y se congela antes de puntuar el holdout, con IC por bootstrap a partir de 400 remuestreos.

Resultado

El umbral congelado detecta 162 de 180 ataques del holdout (exhaustividad de 0,9000; IC del 95% de 0,85 a 0,94) mientras señala 346 de 17.820 eventos benignos (FPR de 0,0194), con ROC AUC de 0,9714, PR AUC de 0,2972 y un presupuesto de alertas de 2.822 por cada 100k eventos. La precisión se sitúa en 0,3189: con una prevalencia del 1%, aproximadamente una de cada tres alertas señala un ataque real, el precio deliberado de ponderar la exhaustividad por encima de la precisión.

Alcance de verificación

La clase maliciosa contiene una única campaña de preparación de botnet en un solo host, todo el tráfico proviene de un mismo entorno honeypot, y el subconjunto enriquece la maliciosidad al 45,6%, mientras que solo la prevalencia remuestreada del 1% refleja la producción; la demostración temprana dentro de muestra del notebook (exhaustividad de 1,0 con precisión de 0,034, en el límite de decisión predeterminado) ilustra únicamente el comportamiento del puntaje y queda fuera de la cifra principal.

Evidencia

El repositorio público incluye el notebook ejecutado con salidas incrustadas, nueve figuras confirmadas, dependencias fijadas, un script de reconstrucción de datos que verifica los conteos de filas que lo definen, y una reejecución documentada con RANDOM_STATE=42 que reprodujo exactamente cada métrica principal.

Resultados clave

  • Exhaustividad de 0,9000 (162 de 180 ataques; IC del 95% de 0,85 a 0,94) con una tasa de falsos positivos de 1,94% en el holdout de umbral congelado, con ROC AUC de 0,9714
  • El Isolation Forest se ajusta sobre 31.185 eventos exclusivamente benignos, y las etiquetas entran en exactamente tres puntos: el filtro de ajuste benigno, la elección del umbral de validación, y la puntuación del holdout
  • Precisión de 0,3189 en el holdout de umbral congelado con una prevalencia simulada del 1% y un presupuesto de alertas de 2.822 por cada 100k eventos: aproximadamente una de cada tres alertas señala un ataque real, indicado así en la página
  • La taxonomía de errores convierte los falsos positivos en guía de triage: systemd concentra el 86% del volumen y getdents64 se dispara a 37 veces su línea base benigna
  • Una reejecución con RANDOM_STATE=42 reprodujo exactamente cada métrica principal, con 14 de 15 celdas de código idénticas byte a byte a las originales

Métodos

  • Isolation Forest
  • UMAP
  • Gobernanza de umbrales
  • Intervalos de confianza bootstrap
  • Detección de anomalías no supervisada