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.
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.