Taken
Assuma subdomínios usando IPs elásticos pendentes da AWS e tenha um POC funcional para Tomada de Subdomínio.
O que você pode fazer com a Tomada de Subdomínio -
- Roubo de cookies, se os cookies forem definidos com o atributo de domínio apontando para o subdomínio sequestrado.
- Requisição CORS, se Access-Control-Allow-Origin for definido para o subdomínio sequestrado.
- Redirecionamento OAuth para obter código de autorização, se o subdomínio sequestrado estiver na lista branca.
- Políticas CSP para XSS, se a política CSP incluir este subdomínio na lista branca.
- ClickJacking, se X-Frame-Options incluir este subdomínio na lista branca.
- Spoof de e-mails, se o registro SPF incluir este subdomínio na lista branca.
A ideia de automatização é a seguinte:
- Obter subdomínios.
- Fazer consultas reversas para salvar apenas IPs da AWS.
- Reiniciar a instância EC2 a cada minuto; o IP público é rotacionado a cada reinicialização. Combine-o com sua lista existente de IPs de subdomínios e você terá um POC funcional de tomada de subdomínio.
- Notificar por e-mail assim que você assumir um subdomínio.
Citação
Por favor, cite se você usar este software em seus artigos de pesquisa, 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}
}
Pré-requisitos
- Conta AWS
- Conhecimento de Linux e script Bash
Tecnologia/framework utilizados
Construído com
Funcionalidades
- Coletar subdomínios e fazer consulta reversa para focar apenas em IPs da AWS.
- Rotacionar IPs reiniciando a instância EC2 até que coincida com um dos IPs na lista.
- Ao encontrar uma correspondência, esse IP/host é adicionado a um arquivo de lista branca, para que não seja rotacionado novamente, e envia uma notificação por e-mail.
Passos detalhados para usar
- Crie uma instância t2.medium (máquina de ataque), gratuita 24 horas por dia, 365 dias por ano.
- Crie de 5 a 10 instâncias com tipo de instância t3a.nano, provavelmente as mais baratas (quanto maior o número, melhores as chances, mas mais caro, cerca de $60/mês para 10 máquinas) em uma ou mais regiões. Leva 5 minutos. Configure o Grupo de Segurança para abrir apenas para seu IP público.
- Crie chaves de API AWS para parar/iniciar instâncias.
- Conecte-se via SSH à sua máquina de ataque.
- Instale o utilitário de notificação por e-mail SSMTP.
https://www.digitalocean.com/community/questions/how-to-send-emails-from-a-bash-script-using-ssmtp
- Instale as ferramentas subfinder e sublist3r.py para coletar subdomínios. (Ou qualquer outra ferramenta que desejar, mas isso exigiria adicioná-la ao script de coleta de subdomínios.)
Siga os passos para configurá-las:
https://github.com/aboul3la/Sublist3r
https://github.com/projectdiscovery/subfinder
- Clone o repositório Taken e abra uma sessão screen para executar o script de coleta de subdomínios.
Se você não sabe usar sessão screen - https://linuxize.com/post/how-to-use-linux-screen/
- Crie um arquivo de texto com todos os domínios que deseja visar, salve-o como "alldomains" no mesmo diretório e execute o script de coleta de subdomínios. Este script usa subfinder e sublist3r.py. Isso gerará uma lista de todos os subdomínios para um ou mais domínios no formato "subdomínio:IP" em cada linha. Isso será usado posteriormente para correspondência e notificação.
- Abra outra sessão screen e exporte as credenciais AWS nessa sessão.
Exportando chaves AWS.
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE A chave de acesso para sua conta AWS.
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY A chave secreta de acesso para sua conta AWS.
Execute o script de tomada em uma sessão screen diferente. Você também pode executar para cada região em uma sessão screen diferente (veja a captura de tela abaixo).
- Cada região da AWS possui sub-redes IP associadas diferentes. Para mirar empresas localizadas nos EUA, há grandes chances de estarem rodando em qualquer região dos EUA, mas podem ter ativos em outras regiões como Irlanda, Frankfurt, etc. Então, em vez de executar 10 ativos em uma região, tente executar 5 ativos na região onde a sede da empresa está localizada e os outros 5 em regiões diferentes.
Exemplo de sessão screen -
Notificação por e-mail -

Assumi um subdomínio, e agora? -
Conecte-se via SSH a esse host, crie um arquivo HTML simples e inicie um servidor Python; você terá um POC funcional.
(Planejo automatizar isso também na próxima versão.)
Executando em lote
Eu pesquisei todos os programas públicos no HackerOne e Bugcrowd e as 500 principais empresas SaaS da Forbes/SaaS, coletei seus subdomínios e comecei a atacar.
Em 24 horas, consegui assumir 3 subdomínios. Total de instâncias em execução: 10 em 3 regiões diferentes. A taxa de sucesso depende muito do número de instâncias em execução.
Como o script altera cerca de 1440 IPs em 24 horas, isso totalizaria cerca de 14400 IPs com 10 instâncias em 24 horas.
Referência
Ferramentas usadas para coletar subdomínios.
https://github.com/projectdiscovery/subfinder
https://github.com/aboul3la/Sublist3r
Contribua
- Reporte bugs.
- Sugestões de melhoria.
- Sugestões para extensões futuras.
Extensões futuras
- Criação de instâncias EC2 usando o mesmo script.
- Adição de implantação automática do serviço HTTP usando AWS Beanstalk.
Licença
GNUV3 © [In3tinct]