
Elimina las IPs elásticas huérfanas realizando un análisis de tus recursos en todas tus cuentas de AWS.
Elimina IPs elásticas colgantes realizando análisis de tus recursos en todas tus cuentas de AWS.
Ghostbuster obtiene todos los registros DNS presentes en todas tus cuentas de AWS (Route53) y opcionalmente puede recibir registros mediante entrada CSV o desde Cloudflare.
Después de recolectar estos registros, Ghostbuster itera sobre todas tus IPs elásticas de AWS y las IPs públicas de interfaces de red y recolecta estos datos.
Al tener una imagen completa de los registros DNS (desde Route53, archivo de entrada o Cloudflare) y una imagen completa de las IPs de AWS que posee tu organización, esta herramienta puede detectar subdominios que apuntan a IPs elásticas colgantes (IPs que ya no posees).
Cuando despliegas infraestructura en AWS, puedes crear instancias EC2 que tienen una IP asociada. Cuando creas registros DNS que apuntan a estas IPs, pero olvidas eliminar los registros DNS después de que la instancia EC2 haya recibido una nueva IP o haya sido destruida, eres susceptible a ataques de secuestro de subdominios.
Se ha realizado una gran cantidad de investigación sobre secuestros de IPs elásticas, donde es posible que atacantes reclamen continuamente IPs elásticas hasta obtener una IP asociada con un subdominio de la empresa que están atacando.
Aunque AWS frecuentemente bloquea cuentas que intentan realizar este patrón de ataque, no se ha publicado una solución a largo plazo por parte de AWS.
El impacto de los ataques de secuestro de subdominios por IPs elásticas colgantes es más grave que un secuestro de subdominio típico donde solo puedes controlar el contenido que se sirve. Con los secuestros de IPs elásticas colgantes, es posible que un atacante haga lo siguiente:
*.domain.com.aws/configImportante:
Para que esta herramienta sea efectiva, debe tener una imagen completa de tu entorno AWS. Si no tiene una imagen completa, generará falsos positivos.
Instalar Ghostbuster es tan sencillo como ejecutar: pip install ghostbuster. La herramienta CLI será accesible mediante el comando ghostbuster.
Esto requiere un entorno Python 3.x.
❯ ghostbuster scan aws --help
Usage: ghostbuster scan aws [OPTIONS]
Scan for dangling elastic IPs inside your AWS accounts.
Options:
--profile TEXT Specify a specific AWS profile to run ghostbuster
on.
--skipascii Skip printing the ASCII art when starting up
Ghostbuster.
--json Only return a JSON object.
--slackwebhook TEXT Specify a Slack webhook URL to send notifications
about potential takeovers.
--records PATH Manually specify DNS records to check against.
Ghostbuster will check these IPs after checking
retrieved DNS records. See records.csv for an
example.
--cloudflaretoken TEXT Pull DNS records from Cloudflare, provide a CF API
token.
--allregions Run on all regions.
--exclude TEXT Comma delimited list of profile names to exclude.
--regions TEXT Comma delimited list of regions to run on.
--help Show this message and exit.
Comandos de ejemplo
Ejecuta Ghostbuster con acceso a registros DNS de Cloudflare, envía notificaciones a un webhook de Slack, itera a través de cada perfil de AWS configurado en .aws/config o .aws/credentials para todas las regiones de AWS
❯ ghostbuster scan aws --cloudflaretoken APIKEY --slackwebhook https://hooks.slack.com/services/KEY --allregions
Ejecuta Ghostbuster con una lista ingresada manualmente de registros A de subdominios (consulta records.csv en este repositorio para un archivo de ejemplo):
❯ ghostbuster scan aws --records records.csv
Puedes especificar regiones específicas usando --regions configurado con una lista separada por comas de regiones, p.ej. us-east-1,us-west-1.