domingo, 30 de octubre de 2016

Fundamentals: WAF ( Web Application Firewall )



Autor: @txambe


Hoy vamos a ver un tema muy interesante (por lo menos a mí me lo parece) y son las distintas técnicas para realizar un fingerprint de los firewall de aplicaciones web o más conocidos como WAF.

Bueno pues empecemos por el principio ¿Que es un firewall?  es un sistema de seguridad que controla el tráfico de una red, servidor o una aplicación, los puede haber tanto hardware como software.

Se pueden diferenciar dos tipos de firewall :

·         Los firewalls de capa de red funciona a nivel de red (capa 3 del modelo OSI, capa 2 del stack de protocolos TCP/IP) como filtro de paquetes IP. A este nivel se pueden realizar filtros según los distintos campos de los paquetes IP: dirección IP origen, dirección IP destino. En este tipo de firewall se permiten filtrados según campos de nivel de transporte (capa 3 TCP/IP, capa 4 Modelo OSI), como el puerto origen y destino, o a nivel de enlace de datos (no existe en TCP/IP, capa 2 Modelo OSI) como la dirección MAC.

·         Los firewall de aplicaciones web, trabaja en el nivel de aplicación (capa 7 del modelo OSI), de manera que los filtrados se pueden adaptar a características propias de los protocolos de este nivel. Por ejemplo, si se trata de tráfico HTTP, se pueden realizar filtrados según la URL a la que se está intentando acceder.

Un cortafuegos a nivel 7 de tráfico HTTP suele denominarse proxy, y permite que los pc de una organización  entren a Internet de una forma controlada. Un proxy oculta de manera eficaz las verdaderas direcciones de red.

Los WAF funcionan en los siguientes modos::

·         Negative Model (Blacklist based) 
·         Positive Model (Whitelist based) 
·         Mixed/Hybrid Model (Blacklist & whitelist model)


Las formas en que podemos implementar un WAF son:

·         Reverse proxy 
·         Inline 
·        Connected to a Switch (SPAN>Port Mirroring)


Métodos de identificación de WAF

Los métodos mas conocidos que podemos encontrar, se encuetrarn:

·         Drop Action  → Envia un paquete FIN / RST 
·         Reglas Pre-Built  → Cada WAF tiene sus propias  Negative Secutity Signatures  
·         Ataques  Side-Channel  → Basados en Timing behavior


Herramientas de Detección de WAF

Hay muchas herramientas y scripts que pueden detectar la presencia y la huella digital del WAF :

·         imperva detect.py

Realiza un un primer test de base y luego realiza otros 5 test adicionales , sus resultados son muy rápidos.



·         Paradox WAF detection 
·         F5 Cookie Decoder Burp extension 
·         FatCat SQL Injector


  
NMAP scripts

Los scripts de nmap pueden detectar varios productos  IDS, IPS, y WAF. Como los siguientes , BarracudaWAF, PHPIDS, dotDefender, Imperva , Web Firewall, Blue Coat SG 400.

Detectando  WAF usando  NMAP

nmap -p80 --script http-waf-detect


Fingerprinting  de WAF usando NMAP

nmap -p80 --script http-waf-fingerprint

Wafw00f.py

Wafw00f puede identificar los patrones mas comunes de mas de 25 tipos de WAF

Fingerprinting  de WAF usando WAFw00f
wafw00f.py

Un problema que nos podemos encontrar a la hora de la detección es que los WAF oculten su identidad   a partir de los valores de las cookies y así como las respuestas HTTP  de tipo 200 ,  así que será necesario realizar  test adicionales ,  por ejemplo con imperva-detect.py.
 El siguiente enlace es un resumen de las distintas herramientas que hay disponibles para la detección de WAF



Un tema importante a tratar , son las reglas que se implementan ,  ya que tienen un impacto en el funcionamiento de la aplicación web que esta detrás del WAF.

Una mala configuración  puede darnos problemas tales como:
           
            • Bloquear peticiones legitimas  (falsos positivos) 
            • El conjunto de reglas necesita ser revisado.


Y un conjunto de reglas muy laxa sin excepciones puede :

·         Pueda darnos  (falsos negativos) 
·         El atacante eluda el  WAF y por lo tanto haga un exploit de la aplicación.
  
Continuara ….


Happy Hacking.


No hay comentarios:

Publicar un comentario