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