domingo, noviembre 11, 2018

Hacking Web Technologies: Port Discovery con ZAP

Un Proxy HTTP/S es una herramienta de uso obligado en cualquier proceso de Hacking Web Technologies que se precie. Herramientas como Burp o ZAP suelen ser las más populares en en Ethical Hacking de estas características, sin olvidar ciertas extensiones para navegadores, como por ejemplo Tamper Data para Firefox, que permiten visualizar y manipular los parámetros enviados en las peticiones HTTP/S.

Figura 1: Hacking Web Technologies: Port Discovery con ZAP

Puede parecer extraño que un Proxy HTTP/S ofrezca también la posibilidad de realizar descubrimiento de puertos TCP en un servidor. Es por ello que, en este artículo, se mostrará cómo realizar port-discovery con ZAP sobre puertos TCP, y qué mejoras podrían introducirse a la hora de integrar en una misma herramienta el análisis de puertos TCP.

Port-Scanner de ZAP

ZAP incorpora un complemento para el análisis de puertos TCP. Para usarlo basta ir al menú superior y seleccionar “Ver > Show Tab > Escaneo de puertos Tab”.

Figura 2: Complemento para el escaneo de puertos con ZAP

El siguiente paso es seleccionar el sitio sobre el que se quiere realizar el descubrimiento de puertos TCP. Para ello es necesario activar el escaneo de puertos sobre el sitio, tal y como se muestra en la siguiente imagen:

Figura 3: Descubrimiento de puertos TCP sobre el sitio indicado

Analizando el tráfico de red que se genera durante el escaneo de puertos, se determina que ZAP, para descubrir el estado de un puerto TCP, ha de completar el establecimiento de la conexión TCP (SYN, SYN+ACK, ACK) para todos los puertos TCP escaneados, con el consiguiente ruido que esto genera en el servidor.

Figura 4: Escaneo TCP con la conexión en tres fases (SYN, SYN+ACK, ACK) completa

Además, si se analizan las opciones de configuración del escáner de puertos dentro del contexto TCP, se observa que no brinda la posibilidad de enviar únicamamente el flag SYN para realizar un escaneo sigiloso en los puertos TCP del servidor.

Figura 5: Opciones de configuración del escáner de puertos de ZAP

Tampoco ofrece la posibilidad de enviar únicamente el flag ACK para poder inferir la existencia de un Firewall que proteja los servicios de la máquina de determinado tipo de conexiones o escaneos.

Figura 6: Sin Firewall el servidor devuelve el bit de reset (RST) a 1
Figura 7: Con Firewall el servidor no devuelve un RST ni tampoco devuelve un SYN+ACK

También se comprueba que el escáner de puertos ofrece la posibilidad de fijar una cota superior en el número de puertos TCP a analizar, pero no brinda la posibilidad de fijar un único puerto TCP o un intervalo específico de análisis.

Conclusiones

De las pruebas anteriores se determina que:
- Las conexiones TCP realizadas para el análisis de los puertos TCP han de ser completas (3 fases) para poder determinar cuál es el estado del puerto. Para generar menos ruido en el servidor, sería bueno que el escáner de puertos de ZAP incorporase nueva funcionalidad para poder realizar escaneos TCP de tipo SYN (sigilosos) y ACK (poder inferir la existencia de un firewall).
- En caso de querer obtener el estado de un puerto, por ejemplo el 80/TCP, se tiene que realizar un análisis TCP de todos los puertos que le preceden.
Figura 8: Escaneo de todos los puertos TCP que preceden al puerto objetivo del análisis
Sería bueno que el escáner brindara la oportunidad de realizar el escaneo de un único puerto TCP, de un intervalo concreto o de los puertos introducidos por el auditor en caso de que estos no sean contiguos.
Para finalizar, podría contemplarse la opción de realizar también análisis de los puertos UDP, ya que una mala práctica es no tenerles en cuenta durante el proceso de auditoría.

Autor: Amador Aparicio de la Fuente (@amadapa) escritor del libor "Hacking de tecnologías Web"

No hay comentarios:

Publicar un comentario