
Primera iteración de WAF de retroalimentación basado en ML
NGWAF es creado por @yupengfei, @zhangbosen, @matthewng y @elizabethlim.
Un agradecimiento especial a @ruinahkoh por sus contribuciones en las etapas iniciales de NGWAF.
NGWAF es una prueba de concepto experimental y no está listo para su uso en producción en su estado actual.
Contenido
Los Componentes | Los Engranajes de NGWAF
El Cerebro: WAF basado en Aprendizaje Automático
El Espejo: Entorno de Cuarentena Interactivo Escalable
La Biblioteca: Secuencia de Reentrenamiento para Reforzar el Cerebro
Con el crecimiento explosivo de las aplicaciones web desde principios de los años 2000, los ataques basados en la web se han vuelto progresivamente más desenfrenados. Una solución común es el Cortafuegos de Aplicaciones Web (WAF). Sin embargo, ajustar las reglas de los WAF actuales para mejorar los mecanismos de detección puede ser complejo y difícil. NGWAF busca abordar estos inconvenientes con una novedosa arquitectura basada en aprendizaje automático y cuarentena hacia honeypots.
Inspirado en puntos débiles reales de la operación de WAF, NGWAF pretende simplificar y reinventar las operaciones de WAF a través de los siguientes procesos:
| Punto débil | Característica de NGWAF |
|---|---|
| El mantenimiento de los mecanismos de detección y las reglas puede ser complejo | Aprovechar el aprendizaje automático para automatizar el proceso de creación y actualización de mecanismos de detección |
| El bloqueo inmediato del tráfico malicioso reduce las oportunidades de aprender del comportamiento de los actores de amenazas para futuras mejoras del WAF | Eliminación de amenazas mediante cuarentena redirigida en lugar del descarte y bloqueo convencional del tráfico malicioso |
Para simplificar y hacer portátil el despliegue, hemos contenerizado los diferentes componentes de la arquitectura usando Docker y los hemos configurado en un archivo docker-compose. Esto permite ejecutarlo en una instalación nueva de forma rápida y sencilla, ya que las dependencias son manejadas automáticamente por Docker. El despliegue se puede ampliar para implementarse en un clúster de Kubernetes local o en la nube, lo que lo hace escalable ya que los usuarios pueden aumentar el número de nodos/pods para manejar grandes volúmenes de tráfico.
El despliegue se ha probado en macOS (Docker Desktop) y Linux (Ubuntu).
NGWAF funciona de fábrica con tres componentes clave, estos componentes, como se mencionó anteriormente, están todos contenerizados y son escalables según el uso deseado. El recurso protegido se puede personalizar realizando un cambio de despliegue dentro de la configuración.
Arquitectura de alto nivel de NGWAF con los flujos de tráfico esperados de diferentes partes
NGWAF fue diseñado teniendo en cuenta los siguientes beneficios clave para el usuario:
NGWAF reemplaza los conjuntos de reglas tradicionales con modelos de aprendizaje profundo para reducir la complejidad de gestionar y actualizar las reglas. En lugar de editar reglas manualmente, el aprendizaje automático de NGWAF automatiza el proceso de aprendizaje de patrones a partir de datos maliciosos. Los datos recopilados del entorno de cuarentena se depuran y agrupan automáticamente, lo que permite reentrenarlos en nuestro modelo de detección si se desea.
NGWAF adopta una arquitectura novedosa que consiste en un entorno interactivo y de cuarentena diseñado para aislar a posibles atacantes hostiles. A diferencia de los WAF convencionales que bloquean al detectar, NGWAF desvía a los actores de amenazas hacia sistemas emulados, atrapándolos para mitigar el impacto de sus acciones maliciosas. El entorno también actúa como un sumidero para recopilar métodos de ataque actuales, permitiendo la observación y recolección de datos maliciosos. Estos datos se pueden utilizar para mejorar aún más la capacidad de detección de NGWAF.
NGWAF en acción: al detectar una inyección SQL, NGWAF redirige a nuestro entorno de cuarentena, en lugar de descartar o bloquear el intento.
El principio rector detrás de la creación de NGWAF es protegerse contra los riesgos destacados en el documento de concienciación estándar del Proyecto de Seguridad de Aplicaciones Web Abierto: The OWASP Top 10 2021.
Los datos de entrenamiento y las comprobaciones de cumplimiento para NGWAF se recopilan y realizan según este requisito.
¿Quién necesita manual cuando podemos ir a lo NEURONAL?
En lugar de conjuntos de reglas tradicionales que requieren que los analistas identifiquen y agreguen reglas manualmente con el tiempo, NGWAF aprovecha tuberías de aprendizaje automático de extremo a extremo para el mecanismo de detección, lo que reduce enormemente la complejidad en la gestión de reglas WAF, especialmente para detectar cargas útiles complejas.
Para hacerlo, primero necesitábamos crear un modelo base y una arquitectura que los usuarios puedan usar inicialmente, antes de que luego utilicen datos recopilados de sus propias aplicaciones para reentrenamiento y ajuste fino:
La arquitectura general del modelo base es una RNN simple con un módulo LSTM bidireccional como el siguiente:
Imagen tomada de Tensorflow (enlace)
Al usar esta arquitectura RNN, pudimos lograr mejoras de rendimiento sobre modelos más simples:
Aunque hemos incluido registros de varias aplicaciones para mejorar la generalización del modelo base, será importante realizar un mantenimiento y reentrenamiento adicionales del modelo para:
Para abordar esto, los usuarios de NGWAF se benefician de nuestra tubería de reentrenamiento de modelos empaquetada de extremo a extremo, y pueden activar fácilmente el mantenimiento del modelo con unos pocos pasos simples sin tener que profundizar en los detalles técnicos. (Consulte la Sección 3 a continuación).
No los dejes ir, ¡DETÉNELOS!
Contrario a los WAF tradicionales donde el tráfico malicioso se bloquea o descarta de inmediato, NGWAF adopta un enfoque más flexible. Redirige y retiene a los actores maliciosos dentro de un entorno de cuarentena. Este entorno consta de varios honeypots interactivos emulados para intentar recopilar más métodos/datos de ataque; estos datos se utilizarán potencialmente para mejorar la tasa de detección de NGWAF de ataques más modernos y complejos.
Actualmente, el entorno de cuarentena de NGWAF reenvía todos los datos enviados por el atacante atrapado a nuestra pila ELK para su análisis y visualización. Los datos se autodepuran en diferentes componentes de la solicitud HTTP, luego se empaquetan internamente en el backend del entorno en formato JSON antes de reenviarlos. Esto ayuda a reducir el costo de mano de obra necesario para limpiar e indexar los datos cuando iniciamos el proceso de reentrenamiento.
NGWAF actualmente permite a los usuarios realizar cambios en la apariencia del front-end de nuestros honeypots dentro del entorno de cuarentena (basado en una versión personalizada de drupot). Los usuarios simplemente tienen que reemplazar la carpeta de activos dentro del volumen de docker con los activos de front-end de su elección.
NGWAF también es adaptable para usuarios que deseen vincular sus propios honeypots como parte del entorno de cuarentena. Los usuarios solo tienen que reenviar las solicitudes HTTP del honeypot al servidor backend del entorno (los procesos del backend depurarán y reenviarán automáticamente los datos al panel de análisis - pila ELK).
Inteligente no es realmente inteligente hasta que puedas seguir aprendiendo
A medida que surgen nuevas cargas útiles y vectores de ataque, es importante mejorar las capacidades de detección para garantizar la seguridad. Por lo tanto, se incorporó una función de reentrenamiento en NGWAF para asegurar que los defensores puedan entrenar el modelo de aprendizaje automático para detectar esas nuevas cargas útiles. Los usuarios que no estén familiarizados con la ciencia de datos o las redes neuronales aún podrán ajustar los modelos con esta interfaz simple, ya que los pasos complejos se manejan por ellos.
Los usuarios solo necesitan cargar una pequeña muestra de datos etiquetados de su propio sistema en vivo (por ejemplo, en el orden de unos pocos miles), que se utilizará para ajustar el modelo existente en el backend:
Cuando el entrenamiento esté completo, también se proporcionarán a los usuarios algunos diagnósticos breves del modelo (por ejemplo, rendimiento en el conjunto de prueba y en varios umbrales de puntuación) para que evalúen el nuevo modelo.
Para activar el proceso de reentrenamiento, diríjase al panel de control y siga estos pasos:
payload [str]: debe ser la carga útil de su sistema, o algunos ejemplos basados en cadenas (por ejemplo, ejemplos de inyección SQL)label [int]: debe ser 0 para ejemplos no maliciosos y 1 para ejemplos maliciososis_url [bool]: debe ser VERDADERO si la carga útil proviene de su sistema (es decir, incluye otra información del sistema como ruta y dispositivo), y FALSO si es un ejemplo basado en cadenas (por ejemplo, "1==1")http://localhost:8088 para ver el panel de administración de NGWAF.
NGWAF utiliza la pila ELK para capturar registros de datos de red que pasan a través de NGWAF, lo que permite a los usuarios monitorear el tráfico que pasa por NGWAF para su posterior análisis.
NGWAF también viene con notificaciones en vivo de Telegram, para informar a los propietarios sobre amenazas maliciosas en vivo detectadas por NGWAF.
Sistemas Operativos Probados
Con Docker en ejecución, ejecute el siguiente archivo usando el comando a continuación:
./run.sh
Para reemplazar los destinos, apunte las variables dest_server y honey_pot_server a los destinos correctos en el archivo /waf/WafApp/waf.py
# Reemplázame
dest_server = "dvwa"
honey_pot_server = "drupot:5000"
Una vez que el contenedor Docker esté activo, puede visitar su localhost, donde estos puertos ejecutan estos servicios:
Configure también lo siguiente en un archivo waf-secrets.env
# ENDPOINT DE API DEL MODELO ML
API_ENDPOINT="https://xxxxx.xxx"
API_KEY="******************"
# CONFIGURACIÓN DE TELEGRAM
TELEGRAM_CHAT_ID="-57893457893457345"
TELEGRAM_TOKEN="******************"
Configure también lo siguiente en un archivo waf-admin-secrets.env
# ENDPOINT DE API DEL MODELO ML
API_ENDPOINT="https://xxxxxx.xxx"
API_KEY="******************"
BUCKET_NAME="******************"
ACCESS_KEY_ID="******************"
SECRET_ACCESS_KEY="******************"
SQL_USERNAME="******************"
SQL_PASSWORD="******************"
SQL_SERVER="******************"
SQL_DATABASE_NAME="******************"
NGWAF es un proyecto de código abierto en desarrollo; las funciones y características pueden cambiar de parche a parche. Si está interesado en contribuir, no dude en crear un issue o pull request.
| Arquitectura del modelo | Precisión | Puntuación F1 |
|---|
| Nuestro modelo final | 0.995 | 0.993 |
| Red neuronal sin módulo LSTM | 0.956 | 0.891 |
| Árbol de decisión | 0.878 | 0.840 |
| Regresión logística | 0.946 | 0.914 |
| Puerto | Servicio | Observaciones | Credenciales (si aplica) |
|---|
| 8080 | DVWA | Donde reside el WAF | admin:password |
| 5601 | Elasticsearch | Para ver registros | elastic:changeme |
| 8088 | Panel de Admin | Panel para gestionar el modelo WAF | |
| 5001 | Drupot | Honeypot |