Encontrar IP de Origen Detrás de CDN
Encontrar IP de Origen Detrás de CDN

Cómo Encontrar la IP de Origen Detrás de las CDN

¿Cómo encuentra la IP de origen detrás de una CDN que usa Akamai, Cloudflare y Fastly? Mucha gente diría que no puedes. Los propios CDN dirían que no hay forma de encontrar la IP de origen, y los otros CDN dirían que su CDN es diferente y ni siquiera puedes encontrar su IP de origen. No puede encontrar la IP de origen debido a las múltiples capas de CDN y al hecho de que todas usan las mismas direcciones IP. Esto es parcialmente cierto. Un proxy web no podrá encontrar la IP de origen detrás de una CDN, pero un proxy web no es la respuesta que estamos buscando. Esta publicación llega gracias a @HolyBugx.

¿Qué es una CDN?

Una CDN (Red de Distribución de Contenido) permite la transferencia rápida de activos necesarios para cargar contenido de Internet, incluidas páginas HTML, archivos JavaScript, Hojas de Estilo / CSS, imágenes y vídeos. La popularidad de los servicios CDN sigue creciendo y, en la actualidad, la mayor parte del tráfico web se realiza a través de CDN, incluido el tráfico de sitios importantes como Facebook, Netflix y Amazon.

Una CDN o Content Delivery Network
Una CDN o Content Delivery Network

¿Por qué los sitios web necesitan un CDN?

Uso de una CDN
Uso de una CDN

El rendimiento es importante. Si un sitio web no utiliza un CDN, todos sus usuarios deben enviar sus peticiones a un solo servidor, ya que esto pondrá muchas cargas en el servidor, el rendimiento del sitio web se reduce. Hoy en día la mayoría de los sitios web utilizan una CDN, ya que les ayudará a tener una mejor velocidad de carga, reduciendo los costes de ancho de banda, mejorando la seguridad, etc.

Las CDNs también ofrecen muchos beneficios específicos a diferentes tipos de negocios y organizaciones, tales como:

  • Comercio electrónico
  • Gobierno
  • Finanzas
  • Medios de comunicación/publicaciones
  • Aplicaciones móviles
  • Tecnología y SaaS

¿Cuáles son las ventajas de utilizar una CDN?

Beneficios de una CDN
Beneficios de una CDN
  1. Mejora de la velocidad del sitio web y los tiempos de carga.
  2. Reducción de los costos de ancho de banda.
  3. Mejora de la seguridad del sitio web.
  4. Ventajas SEO
  5. Picos de tráfico y escalabilidad
  6. Mejores tasas de conversión
  7. Fiabilidad

etc.

Por lo tanto, si deseas tener un sitio web confiable con un buen rendimiento, debes considerar el uso de una CDN.

Funcionamiento de CDN
Funcionamiento de CDN

Después de utilizar una CDN todos los usuarios que soliciten los contenidos del sitio web obtendrán una versión en caché del servidor CDN más cercano, por lo que los contenidos se cargarán mucho más rápido, y el rendimiento del sitio web mejora.

Proxy inverso CDN

Proxy inverso CDN
Proxy inverso de CDN

Un proxy inverso es un servidor que toma una petición del cliente y la reenvía al servidor de origen. Es un servidor intermediario entre el cliente y el propio servidor de origen. Un proxy inverso de la CDN lleva este concepto un paso más allá al almacenar en caché las respuestas del servidor de origen que están en camino de vuelta al cliente. Así, los servidores de la CDN son capaces de entregar más rápidamente los activos a los visitantes cercanos. Este método también es deseable por razones como:

  • Equilibrio de carga y escalabilidad
  • Aumento de la seguridad del sitio web

Seguridad CDN y WAF

Seguridad con WAF
Seguridad con WAF

Las CDNs por sí mismas no pueden bloquear a los bots malos para que no infecten un sitio web, las CDNs son vulnerables por sí mismas, por lo que es necesario utilizar un WAF.

Un WAF o Web Application Firewall ayuda a proteger las aplicaciones web filtrando y monitorizando el tráfico HTTP entre una aplicación web e Internet.

Suele proteger las aplicaciones web de ataques como Cross-Site Scripting (XSS), inclusión de archivos y SQL Injection, entre otros.

IP de origen de sitios web

IP de origen de un determinado sitio web
IP de origen de un determinado sitio web

Muchos sitios web utilizan las protecciones mencionadas anteriormente para ocultar su IP de origen para evitar los ataques DDoS y otras cosas maliciosas que los atacantes pueden hacer.

Estos sitios web utilizan en su mayoría seguridad basada en la nube, proxy o servicios basados en DNS, lo que hace que sea un poco difícil encontrar la IP de origen.

¿Para qué necesitamos la IP de origen de un sitio web?

IP de origen como objetivo
IP de origen como objetivo

La respuesta es bastante fácil y breve; una vez que se tiene la IP de origen de un sitio web se pueden saltar todas las protecciones que proporciona una CDN.

Métodos para encontrar la IP de origen de un sitio web

Hay un par de maneras de tratar de encontrar la IP de origen detrás de un CDN/WAF. Vamos a discutir varios métodos que podemos utilizar como un atacante.

Métodos para encontrar IP de origen
Métodos para encontrar IP de origen by @HolyBugx

Ingeniería Inversa

Siempre que quieras evitar algo, ponte en el lugar de tu adversario y haz ingeniería inversa de su proceso de pensamiento, piensa como un miembro del equipo azul e intenta averiguar su implementación de seguridad.

Realizar Ingeniería Inversa
Realizar Ingeniería Inversa

Protecciones que proporcionan los Blue Teamers

Protección de Blue Teamers
Protección de Blue Teamers

Esta es la lista común de cosas que los proveedores de CDNs/equipos azules hacen para ocultar la IP de origen de su sitio web:

  • Mantener todos sus subdominios en la misma CDN

Al usar otros subdominios en comparación con el dominio raíz, tienen una mayor probabilidad de éxito, ya que podrían entregar archivos que podrían conducir a vulnerabilidades de divulgación de información y, por lo tanto, filtrar la IP de origen.

  • No iniciar una conexión saliente basada en la acción del usuario

Si podemos hacer que el servidor web se conecte a una dirección arbitraria, revelaremos la IP de origen. Las funciones como “cargar desde URL” que permiten al usuario cargar una foto desde una URL determinada deben configurarse de modo que el servidor que realiza la descarga no sea el servidor de origen del sitio web. Esto es importante porque si un atacante puede elegir la URL ingresada, puede configurar un sitio web específicamente para monitorear quién se conecta a él, o usar un servicio público que monitorea las IP que contactan URL únicas.

  • Cambiar su IP de origen mientras configura CDN

Los registros DNS son muchos lugares donde se archivan los registros históricos. Estos registros DNS históricos contendrán la IP de origen del sitio web mediante CDN.

  • Restricción del acceso directo al sitio web mediante la dirección IP

Otra opción interesante que tienen los defensores es restringir a los usuarios que intentan acceder al sitio web utilizando una dirección IP, por lo que el sitio web solo se carga cuando se proporciona el nombre de dominio. Exploremos cómo podemos hacer esto en Nginx

Para deshabilitar / bloquear el acceso directo a IP para el puerto 80 creamos una nueva configuración de servidor de la siguiente manera:

server {
 listen 80 default_server;
 server_name _;
 return 404;
}

Para deshabilitar / bloquear el acceso directo a IP para el puerto 443 usamos lo siguiente en uno de nuestros bloques de configuración de servidor:

if ($host != "ejemplo.com") {
 return 404;
}

Ejemplo:

server {
 listen 443 ssl;
 server_name esgeeks.com
 
 ssl_certificate /etc/nginx/ssl/esgeeks.com.crt;
 ssl_certificate_key /etc/nginx/ssl/esgeeks.com.key;

 if ($host != "esgeeks.com") {
  return 404;
 }
}

esto bloqueará todo el tráfico a https: // TU_IP

Vamos a discutir cómo evitar esta limitación utilizando un método interesante.

  • Lista blanca

Una posible solución para permitir solo solicitudes de la CDN es simplemente incluir la CDN en la lista blanca, ya que este método puede parecer prometedor y suficiente para que los defensores oculten su servidor de origen, esto es bastante desafiante en la práctica ya que solo tienen 3 métodos, y solo uno de ellos pueden funcionar:

Opción A: Listas blancas de direcciones IP

El problema con las direcciones IP de la lista blanca es que deben tener las direcciones IP de todos sus servidores de borde CDN que pueden acceder a su origen.

Esto es algo problemático. Muchas CDN no dan la lista de sus direcciones IP, e incluso si lo hacen, pueden agregar una dirección IP o incluso cambiarla y olvidarse de notificarles. Estas listas blancas deben actualizarse periódicamente para no dañar el sitio.

Opción B: Incluir en la lista blanca un identificador único en una solicitud

La idea es muy simple. La CDN enviará un identificador único en sus solicitudes al servidor de origen que pueden usar en el origen para identificar la CDN y permitir sus solicitudes. Sin embargo, este método no es del todo infalible. Los atacantes también pueden configurar libremente la solicitud. Eso es si conocemos el proveedor de CDN que utilizan y si también sabemos cómo se identifica el proveedor de CDN con el servidor de origen. Los atacantes pueden falsificar fácilmente la solicitud si tienen esta información.

Opción C: Nombre de host de origen imposible de adivinar

Esta es probablemente la solución más confiable para los defensores, ya que, si los atacantes intentan llegar al servidor web, no podrán localizarlo. Los defensores crean un conjunto largo y aleatorio de caracteres alfanuméricos y los utilizan como subdominio. Por ejemplo, si su nombre de dominio es “HolyBugx.com”, entonces establecen un nombre de subdominio como “2547d0jeid15ma.HolyBugx.com”.

Entonces, este nombre de host solo lo conocerán ellos y su proveedor de CDN, y pueden incluir en la lista blanca las solicitudes que tengan este nombre de host.

Volver al lado del atacante

Visión de atacante

Solo hemos obtenido una comprensión básica del punto de vista del defensor que intenta proteger su sitio web de origen, conociendo esta información, tenemos un mapa mental de lo que vamos a hacer, en nuestro proceso de pensamiento mientras intentamos eludir estas limitaciones y encontrar la IP de origen del servidor web.

Mapa Mental del Atacante
Mapa Mental del Atacante

Arriba hay un mapa mental simple sobre las cosas que deberíamos probar mientras probamos la fuga de IP de origen de un sitio web. Profundicemos en eso.

Reconnaissance

La parte más importante es hacer un reconocimiento básico para obtener la mayor cantidad de información posible. Nuestra idea es encontrar información útil como:

  • Rangos de IP / CIDR
  • Información relacionada con el host
  • DNS Records
  • Servidores web
  • Vhosts
  • Servidores alojados en el mismo servidor que el servidor web (por ejemplo, servidores de correo)
  • Vulnerabilidades de divulgación de información

Todo sobre los registros DNS

Registros DNS

Los registros DNS son muchos lugares donde se archivan los registros históricos. Es probable que estos registros DNS históricos contengan la IP de origen del sitio web mediante CDN.

Como mencioné antes, existe la posibilidad de que algunos sitios web tengan registros DNS mal configurados de los cuales podemos recopilar información útil.

1- SecurityTrails

SecurityTrails

SecurityTrails te permite explorar los datos actuales e históricos completos de cualquier activo de Internet. Historial de IP y DNS, dominio, SSL e inteligencia de puertos abiertos.

Vamos a hacer una simple consulta en nuestro objetivo para ver sus datos históricos, especialmente para los registros DNS, ya que le permite encontrar los datos actuales e históricos de los registros A, AAAA, MX, NS, SOA y TXT.

Esto puede ser útil para averiguar la IP real del servidor cuando el sitio web se ejecuta directamente en la IP del servidor y más tarde se trasladó a CDN.

Buscar dominio
Buscar dominio

Luego, haremos clic en “Historical Data” y veremos información útil sobre nuestro objetivo.

Datos históricos
Datos históricos

Ninguno de los registros DNS debe contener ninguna mención de la IP de origen. Observa de cerca los registros SPF y TXT para asegurarte de que contengan información sobre el origen.

Simplemente, un registro A, AAA, CNAME o MX apuntado al servidor de origen expondrá la IP de origen.

2- Dig

Puedes usar dig para hacer algunas consultas simples por ti y también averiguar si el objetivo está usando proveedores famosos como Cloudflare.

Uso del comando Dig

Ese es el rango de IP de Cloudflare, para confirmar podemos usar Whois en la dirección IP del registro A que encontramos:

Uso de whois

Además, hay otro método para averiguar si el objetivo está detrás de Cloudflare o no, y es usando curl:

Uso de Curl
Uso de Curl

Todo sobre los registros MX

Los registros MX son uno de los métodos más favorecidos, por lo fácil que puede ser a veces encontrar la IP de origen. Si el servidor de correo está alojado en la misma IP que el servidor web, un atacante podría encontrar la dirección IP a partir de un correo electrónico saliente.

1- Cabeceras de correo y restablecimiento de la contraseña

Cabeceras de correo
Cabeceras de correo

Si el servidor de correo está alojado en la misma IP que el servidor web, otra opción interesante que tenemos es utilizar la funcionalidad de “Reset Password“, de manera que simplemente podemos crear una cuenta en el sitio web de destino, y utilizar el Reset Password, el correo recibido, probablemente revelará la IP del servidor de origen.

Método Reset Password

Ten en cuenta que debes reunir todas las direcciones IP que puedas ver en el correo electrónico recibido, y probarlas manualmente para ver si es la IP de origen del servidor. Por ejemplo, a veces el valor de Return-Path puede ser útil.

2- Correo electrónico saliente

Correo Saliente
Correo Saliente

Hay otro método interesante que puede utilizar, enviar un correo electrónico a una dirección de correo electrónico inexistente a “no-existente@objetivo.com” provocará un rebote; como el usuario no existe, la entrega fallará, y debería recibir de vuelta una notificación que contenga la IP de origen del servidor que te envió ese correo.

Descubrimiento de hosts virtuales

Descubrir hosts virtuales
Descubrir hosts virtuales

Una vez que encuentres los Servidores Web, tienes una lista de Servidores Web y sus direcciones IP, debes averiguar si el dominio al que te diriges está configurado en esos servidores como un Host Virtual.

Para el descubrimiento de Vhosts sugiero Pentest-Tools si te gusta la GUI, y si te gustan las herramientas CLI como yo, sugiero estas herramientas:

Usando estas herramientas puedes encontrar Vhosts, y si tu objetivo está configurado como Vhost, entonces tienes la oportunidad de encontrar la IP de origen.

Configuraciones incorrectas de seguridad

Configuración incorrecta de seguridad
Configuración incorrecta de seguridad

Una mala configuración puede ser considerada fácil de explotar, por ejemplo, la URL de los contenidos a cargar está apuntando a una IP que no es parte de una CDN que pueda conectarse a usted, como la IP real del servidor.

  • P: Pero uno podría montar un servidor sólo con un archivo CSS y nada más (por ejemplo), ¿Cómo puedes decir que esa IP es la IP real que estamos buscando?
  • R: Bueno, en realidad no estamos buscando ninguna IP real del servidor detrás de la CDN. Estamos buscando información para validar, y sólo después de eso, haremos nuestras conclusiones.

Básicamente, estamos buscando IPs que no formen parte de CDNs.

Motores de búsqueda IoT

Motor de búsqueda IoT
Motor de búsqueda IoT

Los buscadores IoT son nuestros mejores amigos cuando queremos hacer un reconocimiento básico sobre nuestro objetivo y sus activos. Hay algunos motores de búsqueda IoT que podemos consultar para obtener información útil sobre nuestro objetivo.

1- Censys

Logo de Censys
Logo de Censys

Censys es una plataforma que ayuda a los profesionales de la seguridad de la información a descubrir, dispositivos accesibles desde Internet. Con la ayuda de Censys, se puede encontrar información valiosa como

  • Dirección IP
  • Puertos abiertos
  • Certificados SSL
  • Proveedores de alojamiento
  • etc.

La consulta para el tema de nuestro artículo es bastante sencilla, simplemente podemos consultar el propio dominio y ver si hay alguna fuga de IP.

Consultar fugas de IP
Consultar fugas de IP

El otro método que se puede utilizar es la búsqueda por medio de Certificates, simplemente selecciona Certificates en la barra azul, y busca tu objetivo.

Buscar Certificados
Buscar Certificados

Ahora abra cada resultado para mostrar los detalles y, en el menú “Explore” de la derecha, elige “IPv4 Hosts“:

Explorar Hosts IPv4
Explorar Hosts IPv4

Simplemente analiza tu objetivo, para ver si hay alguna fuga de IP, e intenta llegar a tus objetivos usando su IP.
Para mostrarte como Censys puede a veces llevar a la fuga completa de IP del objetivo, ahora te mostraré un objetivo en el que estuve trabajando recientemente, y con la simple Consulta IPv4 me di cuenta de la IP detrás de CDN:

Fuga IP de origen
Fuga IP de origen

Como puedes ver arriba, hay una IP que exploré y me di cuenta de que es la IP de origen del sitio web.

2- Shodan

Logo de Shodan
Logo de Shodan

Shodan es otro motor de búsqueda de IoT, puede ser útil para los investigadores de seguridad para encontrar información útil sobre el objetivo al que se están acercando.

Hay mucho que buscar en Shodan, te recomiendo que consultes la Guía de Filtros de Shodan, Para el caso de este artículo, podemos simplemente consultar el dominio y buscar IPs.

Consulta simple Shodan

Usando Shodan puedes consultar otros filtros interesantes:

  • Organizaciones
  • ASNs
  • Hashes de Favicon
  • Certificados SSL
  • etc.

3- Zoomeye

Página de Zoomeye
Página de Zoomeye

ZoomEye es otro motor de búsqueda IoT y se puede utilizar para descubrir:

  • Servidor web
  • IP y Puertos
  • Cabeceras y códigos de estado
  • Vulnerabilidades
  • etc.

Acceso directo al sitio web mediante la dirección IP

Acceso directo al sitio web
Acceso directo al sitio web

Como mencioné anteriormente sobre este método:

Otra opción interesante que tienen los defensores, es restringir a los usuarios que intentan llegar al sitio web usando una dirección IP, de esta manera el sitio web sólo se carga cuando se proporciona el nombre de dominio.

Vamos a hablar de cómo saltarse esta limitación utilizando un método interesante.

Pensemos fuera de la caja. ¿Qué pasa si escaneamos el rango de IP de nuestro proveedor de CDN objetivo, y luego hacemos algunas cosas mágicas de Curl?

Para encontrar el Rango de IP podemos hacer DNS Bruteforcing, por lo tanto, encontrar el Rango de IP, y luego podemos continuar usando el comando de abajo:

Fuerza bruta de DNS
Fuerza bruta de DNS

Como puedes ver, estamos escaneando el rango de IP de nuestro objetivo. Luego estamos encontrando las vivas usando Httpx. Luego estamos usando curl para proporcionar un encabezado de Host que contenga nuestro dominio de destino, por lo tanto saltándonos todas las limitaciones.

Es hora de ser creativo: Favicon Hashes

Los favicons son a veces bastante útiles para encontrar información interesante sobre ciertas tecnologías que el sitio web utiliza.

Shodan permite buscar el hash del favicon a través de http.favicon.hash. El hash se refiere al MurmurHash3 del contenido del archivo de favicons en base64.

Script de Python3 para generar el hash (ver aquí):

import mmh3
import requests
import codecs

response = requests.get('https://<website>/<favicon path>')
favicon = codecs.encode(response.content, 'base64')
hash = mmh3.hash(favicon)
print(hash)

Consulta el siguiente Blogpost para profundizar en el tema: Asm0d3us — Favicon hashes

Otra herramienta útil que puedes utilizar es Fav-Up de pielco11. Usando esta herramienta puedes buscar una IP real a partir del icono del favicon y usando Shodan.

Ejemplo con Fav-Up
Ejemplo con Fav-Up
Resultado Fav-Up y Shodan
Resultado Fav-Up y Shodan

Pingback XML-RPC

Pingback XML-RPC

El XML-RPC permite a los administradores gestionar su sitio web de WordPress de forma remota utilizando peticiones XML.

Un pingback es la respuesta de un ping. Un ping se realiza cuando el sitio A enlaza con el sitio B, entonces el sitio B notifica al sitio A que está al tanto de la mención. Esto es el pingback.

Puedes comprobar fácilmente si está activado llamando a

https://www.objetivo.com/xmlrpc.php

Deberías obtener lo siguiente:

XML-RPC server accepts POST requests only.
Resultado XML-RPC server accepts POST requests only
Resultado

También puedes utilizar el Validador XML-RPC.

De acuerdo con la API de WordPress XML-RPC Pingback, las funciones toman 2 parámetros sourceUri y targetUri. Así es como se ve en Burp Suite:

Muestra en Burp Suite
Muestra en Burp Suite

Palabras finales

¡Ustedes se merecen Amor! He hecho todo lo posible para escribir un artículo que pueda ayudar a entender el proceso completo de cómo funciona la CDN, el punto de vista de los Blue Teamers, y las opciones de los atacantes para tratar de encontrar la IP de origen del servidor web.

Si tienes alguna pregunta o comentario relacionado, no dudes en enviarme un mensaje por Twitter.

Más artículos
Cómo grabar y editar GIF con peek en Linux