Taken
Toma de subdominios usando IPs elásticas colgantes de AWS y ten un POC funcional para la Toma de Subdominios.
Todo lo que puedes hacer con la Toma de Subdominios -
- Robo de cookies, si las cookies están configuradas con el atributo de dominio establecido en el subdominio secuestrado.
- Solicitud CORS, si Access-Control-Allow-Origin está configurado en el subdominio secuestrado.
- Redirección OAuth para obtener código de autorización, si el subdominio secuestrado está en la lista blanca.
- Políticas CSP para XSS, si la política CSP incluye este subdominio en la lista blanca.
- ClickJacking, si X-Frame-Options incluye este subdominio en la lista blanca.
- Correos falsos, si el registro SPF incluye este subdominio en la lista blanca.
La idea de automatización es la siguiente:
- Obtener subdominios.
- Realizar búsquedas inversas para guardar solo IPs de AWS.
- Reiniciar la instancia EC2 cada minuto y la IP pública se rota en cada reinicio. Coincídela con tu lista existente de IPs de subdominios y tendrás un POC funcional de toma de subdominios.
- Notificar por correo electrónico tan pronto como tomes un subdominio.
Cita
Por favor, cite si usa este software en sus trabajos de investigación, artículos, etc.
@software{Agrawal_Taken_AWS_Subdomain_2020,
author = {Agrawal, Vaibhav},
month = oct,
title = {{Taken: AWS Subdomain TakeOver at Scale}},
url = {https://github.com/In3tinct/Taken},
version = {1.0},
year = {2020}
}
Requisitos previos
- Cuenta de AWS
- Conocimiento de Linux y script Bash
Tecnología/framework utilizado
Construido con
Características
- Recopilar subdominios y realizar búsqueda inversa para apuntar solo a IPs de AWS.
- Rotar IPs reiniciando la instancia EC2 hasta que coincida con una de las IPs en la lista.
- En una coincidencia, esa IP/host se agrega a un archivo de lista blanca, para que no se rote nuevamente y se envía una notificación por correo electrónico.
Pasos detallados para usar
- Crear una instancia t2.medium (máquina de ataque), gratuita 24*365.
- Crear 5-10 instancias con tipo de instancia t3a.nano, probablemente las más baratas (cuanto más alto el número, mejores posibilidades pero más costos alrededor de $60/mes por 10 máquinas) en una o más regiones, toma 5 minutos, tener el Grupo de Seguridad abierto solo a tu IP pública.
- Crear claves API de AWS para detener/iniciar instancias.
- Conéctate por SSH a tu máquina de ataque.
- Instalar la utilidad de notificación por correo SSMTP.
https://www.digitalocean.com/community/questions/how-to-send-emails-from-a-bash-script-using-ssmtp
- Instalar las herramientas subfinder y sublist3r.py para recopilar subdominios. (O cualquier otra herramienta que quieras, pero eso requeriría agregarla en el script de recolección de subdominios)
Sigue los pasos para configurarlos
https://github.com/aboul3la/Sublist3r
https://github.com/projectdiscovery/subfinder
- Clonar el repositorio de Taken y abrir una sesión de screen para ejecutar el script de recolección de subdominios.
Si no sabes cómo usar screen session - https://linuxize.com/post/how-to-use-linux-screen/
- Crear un archivo de texto con todos los dominios que deseas atacar, guárdalo como "alldomains" en el mismo directorio y luego ejecuta el script de recolección de subdominios. Este script utiliza subfinder y sublist3r.py. Esto generará una lista de todos los subdominios para uno o más dominios en el formato "subdominio:IP" en cada línea. Que luego se usará para coincidir y notificar.
- Abrir otra sesión de screen y exportar las credenciales de AWS en esa sesión.
Exportando claves de AWS.
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE La clave de acceso para tu cuenta de AWS.
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY La clave de acceso secreta para tu cuenta de AWS.
Ejecutar el script de toma en una sesión de screen diferente. También puedes ejecutar para cada región en una sesión de screen diferente (mira la captura de pantalla abajo).
- Cada región en AWS tiene subredes IP asociadas diferentes. Para apuntar a empresas ubicadas en EE. UU., hay altas probabilidades de que estén ejecutando en cualquiera de las regiones de EE. UU., pero también pueden tener activos en otras regiones como Irlanda, Fráncfort, etc. Así que en lugar de ejecutar 10 activos en una región, intenta ejecutar 5 activos en la región donde se encuentra la sede de la empresa y otros 5 en diferentes regiones.
Ejemplo de sesión de screen-
Notificación por correo electrónico -

Tomé un subdominio, ¿qué sigue? -
Conéctate por SSH a ese host, crea un archivo HTML simple e inicia un servidor python y tendrás un POC en funcionamiento.
(Planeo automatizar esto también en la próxima versión)
Ejecución a gran escala
Recorrí todos los programas públicos en HackerOne y Bugcrowd y las 500 principales empresas SaaS Forbes/SaaS, recopilé sus subdominios y empecé a atacar. En 24 horas pude tomar 3 subdominios. Instancias en ejecución total 10 en 3 regiones diferentes. La tasa de éxito depende en gran medida del número de instancias en ejecución. Ya que con el script cambias alrededor de 1440 IPs en 24 horas, eso haría alrededor de 14400 IPs con 10 instancias en 24 horas.
Referencia
Herramientas utilizadas para recopilar subdominios.
https://github.com/projectdiscovery/subfinder
https://github.com/aboul3la/Sublist3r
Contribuir
- Reportar errores.
- Sugerencias para mejorar.
- Sugerencias para futuras extensiones.
Extensiones futuras
- Crear instancias EC2 usando el mismo script.
- Agregar despliegue automático del servicio HTTP usando AWS Beanstalk.
Licencia
GNUV3 © [In3tinct]