GCP - Cloud Shell Persistence
Cloud Shell
Para mais informações, confira:
GCP - Cloud Shell EnumBackdoor Persistente
Google Cloud Shell fornece acesso à linha de comando aos seus recursos de nuvem diretamente do seu navegador sem nenhum custo associado.
Você pode acessar o Cloud Shell do Google pela console web ou executando gcloud cloud-shell ssh
.
Esta console tem algumas capacidades interessantes para atacantes:
Qualquer usuário do Google com acesso ao Google Cloud tem acesso a uma instância do Cloud Shell totalmente autenticada (Contas de Serviço podem, mesmo sendo Proprietários da organização).
Dita instância manterá seu diretório home por pelo menos 120 dias se nenhuma atividade ocorrer.
Não há capacidades para uma organização monitorar a atividade dessa instância.
Isso basicamente significa que um atacante pode colocar uma backdoor no diretório home do usuário e, desde que o usuário se conecte ao GC Shell a cada 120 dias pelo menos, a backdoor sobreviverá e o atacante obterá um shell toda vez que for executado apenas fazendo:
Há outro arquivo na pasta inicial chamado .customize_environment
que, se existir, será executado toda vez que o usuário acessar o cloud shell (como na técnica anterior). Basta inserir o backdoor anterior ou um como o seguinte para manter a persistência enquanto o usuário usar "frequentemente" o cloud shell:
É importante notar que a primeira vez que uma ação que requer autenticação é realizada, uma janela de autorização pop-up aparece no navegador do usuário. Esta janela deve ser aceita antes que o comando possa ser executado. Se um pop-up inesperado aparecer, isso pode levantar suspeitas e potencialmente comprometer o método de persistência sendo utilizado.
Esta é a janela pop-up da execução de gcloud projects list
a partir do cloud shell (como atacante) vista na sessão do usuário do navegador:
No entanto, se o usuário tiver usado ativamente o cloudshell, o pop-up não aparecerá e você pode coletar tokens do usuário com:
Como a conexão SSH é estabelecida
Basicamente, essas 3 chamadas de API são usadas:
https://content-cloudshell.googleapis.com/v1/users/me/environments/default:addPublicKey [POST] (fará você adicionar sua chave pública que você criou localmente)
https://content-cloudshell.googleapis.com/v1/users/me/environments/default:start [POST] (fará você iniciar a instância)
https://content-cloudshell.googleapis.com/v1/users/me/environments/default [GET] (informará o IP do google cloud shell)
Mas você pode encontrar mais informações em https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key
Referências
Last updated