DEV Community

Bolha Sec
Bolha Sec

Posted on

Achei chaves da AWS, como testá-las e avisar os donos?

💡 DISCLAIMER: é uma boa ideia avisar os donos das credenciais quando vc descobrir quem são. Detalhes como descobrir para chaves da AWS abaixo

Muitas vezes acabamos nos deparando com chaves da AWS perdidas/esquecidas por aí. Se você viu esse post Kubernetes Exposed: One Yaml away from Disaster ou esse post abaixo do Twitter, já deve ter percebido que existem várias por aí.

Normalmente, é simples reconhecer que uma sequencia de caracteres é uma chave da AWS. Primeiro porque há um sufixo nos Access Key Ids. Eles sempre começam com AKIA como mostrado abaixo (fonte). Segundo, o Access Key Id possui 20 caracteres alpha-numéricos

AWS Keys

Esse post lista algumas das técnicas que eu uso para checar se chaves da AWS que achei por aí 👀 ainda estão funcionando, descobrir quem é o dono, os recursos acessíveis, etc.

1️⃣ Teste simples

Esse teste é simplesmente para descobrir se a chave ainda funciona e vai bem na linha de uma checagem manual. Você só precisa ter o CLI (Command Line Interface) da AWS instalado (link).

AWS_ACCESS_KEY_ID=AKIA... AWS_SECRET_ACCESS_KEY=Gy... aws sts get-caller-identity
Enter fullscreen mode Exit fullscreen mode

Tendo como resultado

AWS Cli

Caso você esteja sem sorte, e a chave seja inválida, o resultado será

An error occurred (InvalidAccessKeyId)...
An error occurred (SignatureDoesNotMatch)...
Enter fullscreen mode Exit fullscreen mode

O que o comando acima faz? Não tem muito mistério. O comando usa as credenciais passadas para chamar a função get-caller-identity do Security Token Service (STS).

O Security Token Service (STS) permite que você solicite credenciais temporárias com privilégios limitados para usuários (link).

O get-caller-identity mostra informações sobre a identidade do IAM usada para autenticar a solicitação (link).

Essa técnica pode dar uma dica de quem é o dono da chave, mas o retorno é apenas o username da conta. Geralmente não é o suficiente pra achar a pessoa.

2️⃣ Teste mais completo

Esse é o teste que normalmente faço, utilizando a ferramenta Pacu.
Fazer esse teste é menos simples no começo, mas os resultados são bem completos.

Primeira coisa é executar o Pacu e dar um novo nome a sessão. Aqui estou usando o nome teste01.

pacu1

Após isso, é exibido o help do pacu.
Em seguida, executo o comando set_keys passando as credenciais que quero testar (Sim, dessa imagem pra baixo, estou usando outro terminal 🤣).

pacu2

Para iniciar os testes, eu gosto de executar run iam__enum_permissions e depois run organizations__enum

pacu3

Após isso, você pode digitar um whoami trazendo mais informações do usuário:

pacu4

E usar o comando data que vai trazer mais informações sobre a conta da AWS, incluindo um email de contato para avisar os responsáveis 👍.

pacu5

Se as chaves já tiverem sido revogadas, ou forem inválidas, você deve ver uma mensagem como a seguinte:

pacu6

3️⃣ Teste deprecado

Anteriormente, eu utilizava a ferramenta enumerate-iam para enumerar as permissões das credenciais achadas. Porém, muitas vezes a execução desse script travava. Por fim, ao invés de usá-lo, passei a usar o Pacu.

Conclusão

Diversas grandes empresas provedoras de serviços online, como AWS e o Github, monitoram ativamente chaves vazadas e informam os proprietários. No entanto, nem sempre isso é possível. Muitas vezes as chaves estão expostas, mas é necssário um pouco de exploração da aplicação. Como nesse caso aqui ⬇️

Ajude a fazer da internet um ambiente mais seguro e caso encontre esse tipo de credenciais por aí 👀. Avise os responsáveis da aplicação e/ou o provider.

DISCLAIMER: Esse é um conteúdo educativo sobre cibersegurança e sobre os riscos de não conhecê-la 🤣. Se voce tomar qualquer ação baseada nas informações desse post, tome por sua própria conta e risco. Abusar de vulnerabilidades pode trazer graves consequências legais.

Top comments (0)