El proveedor de servicios Akamai y otros servicios como Cloudflare ofrecen una protección anti-DDoS a sus clientes utilizando granjas de servidores en la nube que actúan como proxy entre los usuarios de las páginas web que protegen y los propios servidores finales que hospedan las páginas web. De este modo ante un posible ataque la granja de servidores actúa como un paraguas parando el ataque a través de balanceos de tráfico o restricciones temporales en las peticiones. Además estos servicios en algunos casos cachean la página web de sus clientes ofreciendo así una mayor velocidad de carga y una alta disponibilidad en el caso de que el servidor web origen se caiga.
Hay otros casos diferentes a realizar un ataque DDoS en los que nos puede interesar evadir estos mecanismos de protección. Por ejemplo si queremos indexar todo el contenido de una página web que esté bajo el paraguas de uno de estos servicios. Los crawlers o arañas suelen dar muchos problemas ante estos servicios. Este problema me lo encontré intentando indexar ciertos documentos de la filtración de Hacking Team desde el repositorio web al que se subió inicialmente (ht.transparencytoolkit.org). Dicho repositorio se encuentra detrás de Cloudflare y herramientas como Foca, el crawler de Acunetix o arañas propias desarrolladas en python con scrapy dieron muchos problemas. El redireccionamiento que hace el servicio de protección junto con la restricción temporal hace que funcionen incorrectamente y por ello surge la necesidad de conocer la dirección IP final para poder atacar directamente el servidor web origen.
La gente de securityidiots realizaron una completa guía dividida en 4 partes para realizar el bypass del servicio de Cloudflare. Desgraciadamente esta guía ya ha quedado obsoleta y algunas de las técnicas que describe ya no funcionan. Como información complementaria a esta guía voy a indicar un par de trucos más en los que se podría llegar a revelar la dirección IP del servidor web protegido. Estos métodos son efectivos siempre y cuando se haya realizado una configuración “por defecto” del servicio Akamai.
En primer lugar realizando un whois sobre el dominio del que se quiere obtener la dirección IP real se puede identificar el rango de direcciones IP asociadas con dicho dominio. A continuación se puede realizar en el rango anterior de direcciones IP una búsqueda a través de Google, Curl, etc. del banner del dominio o de algún texto identificativo de la página web.
Además Akamai identifica y asocia las direcciones IP de los clientes que tiene que proteger a través del atributo Origin en los DNS. Realizando una búsqueda masiva por el nombre del dominio o variantes del mismo en los DNS en el atributo Origin también se puede identificar la dirección IP real. En este último caso estamos hablando de un ataque de fuerza bruta en el que como he comentado anteriormente tendremos éxito ante una configuración “por defecto” del servicio. Una forma de bastionar el servicio para evitar este ataque es substituyendo el nombre del dominio del atributo Origin por un hash que identifique el dominio.
Gracias a Toni, por la información.