💡 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
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
Tendo como resultado
Caso você esteja sem sorte, e a chave seja inválida, o resultado será
An error occurred (InvalidAccessKeyId)...
An error occurred (SignatureDoesNotMatch)...
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
.
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 🤣).
Para iniciar os testes, eu gosto de executar run iam__enum_permissions
e depois run organizations__enum
Após isso, você pode digitar um whoami
trazendo mais informações do usuário:
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 👍.
Se as chaves já tiverem sido revogadas, ou forem inválidas, você deve ver uma mensagem como a seguinte:
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)