Evasión de balanceador
Un balanceador de carga es un dispositivo o servicio que recibe todo el tráfico entrante (DNS, TCP o HTTP) y lo distribuye entre varios servidores backend para evitar saturación; al escanearlo con nmap verás únicamente los puertos que expone el balanceador, no los de los servidores reales.
Identificar si hay balanceador o no
lbd netflix.com
Podemos ver que tiene un balanceo de carga de DNS por que el dominio (netflix.com) apunta a 3 IPs distintas que se distribuyen la carga de tráfico.
Tus peticiones HTTP se reparten entre varios servidores/proxies gracias a un balanceador HTTP (se ve por las diferencias en los headers).

Evasión
Para buscar entre todas las direcciones IP para conseguir la real vamos a utilizar dos herramientas además de hacer reconocimiento como buscar en shodan,etc. Normalmente si esta bien configurado, no encontramos la dirección IP de el servidor web real y las que vemos son solo balanceadores que empantallan la IP real.
dig
dig +short netflix.com
dig +short netflix.com | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort -u >> ip_balanceador.txt

halberd
git clone https://github.com/jmbr/halberd.git
sudo python2 setup.py install
halberd netflix.com | grep "real server"
halberd netflix.com | grep "real server" | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort -u >> ip_balanceador.txt

lbd
lbd netflix.com

Buscando en el certificado TLS/SNI
echo | openssl s_client -connect netflix.com:443 -servername netflix.com 2>/dev/null | openssl x509 -noout -text | sed -n '/Subject Alternative Name:/,$p' | tr ',' '\n' | sed -e 's/ *DNS://g' -e 's/ *IP Address://g' | while read entry; do dig +short "$entry"; done | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort -u >> ip_balanceador.txt
Comprobar que IPs no son balanceadores
for ip in $(cat ip_balanceador.txt); do curl -skI --max-time 5 https://$ip -H "Host: netflix.com" | grep -qiE 'via:|x-forwarded|cloudflare|envoy|akamai' || echo "💥 Posible backend real: $ip"; done
Última actualización