GCP - Cloud Shell Persistence
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
For more information check:
GCP - Cloud Shell EnumGoogle Cloud Shell zapewnia dostęp do zasobów chmurowych za pomocą wiersza poleceń bezpośrednio z przeglądarki bez żadnych związanych kosztów.
Możesz uzyskać dostęp do Cloud Shell Google'a z konsoli internetowej lub uruchamiając gcloud cloud-shell ssh
.
Ta konsola ma kilka interesujących możliwości dla atakujących:
Każdy użytkownik Google z dostępem do Google Cloud ma dostęp do w pełni uwierzytelnionej instancji Cloud Shell (Konta serwisowe mogą, nawet będąc właścicielami organizacji).
Wspomniana instancja zachowa swój katalog domowy przez co najmniej 120 dni, jeśli nie zajdzie żadna aktywność.
Nie ma możliwości dla organizacji monitorowania aktywności tej instancji.
Oznacza to zasadniczo, że atakujący może umieścić tylne drzwi w katalogu domowym użytkownika, a tak długo, jak użytkownik łączy się z GC Shell co 120 dni przynajmniej, tylne drzwi przetrwają, a atakujący uzyska powłokę za każdym razem, gdy zostanie uruchomiona, po prostu wykonując:
W folderze domowym znajduje się inny plik o nazwie .customize_environment
, który, jeśli istnieje, będzie wykonywany za każdym razem, gdy użytkownik uzyskuje dostęp do cloud shell (jak w poprzedniej technice). Wystarczy wstawić poprzedni backdoor lub jeden podobny do poniższego, aby utrzymać persistencję tak długo, jak użytkownik "często" korzysta z cloud shell:
Ważne jest, aby zauważyć, że za pierwszym razem, gdy wykonywana jest akcja wymagająca uwierzytelnienia, w przeglądarce użytkownika pojawia się okno autoryzacji. To okno musi zostać zaakceptowane, zanim polecenie będzie mogło zostać wykonane. Jeśli pojawi się niespodziewane okno, może to budzić podejrzenia i potencjalnie zagrozić metodzie utrzymania, która jest używana.
To jest okno pop-up z wykonania gcloud projects list
z cloud shell (jako atakujący) widziane w sesji użytkownika w przeglądarce:
Jednakże, jeśli użytkownik aktywnie korzystał z cloudshell, okno pop-up się nie pojawi i możesz zbierać tokeny użytkownika za pomocą:
W zasadzie używane są te 3 wywołania API:
https://content-cloudshell.googleapis.com/v1/users/me/environments/default:addPublicKey [POST] (spowoduje dodanie klucza publicznego, który utworzyłeś lokalnie)
https://content-cloudshell.googleapis.com/v1/users/me/environments/default:start [POST] (spowoduje uruchomienie instancji)
https://content-cloudshell.googleapis.com/v1/users/me/environments/default [GET] (poinformuje cię o adresie IP google cloud shell)
Ale możesz znaleźć więcej informacji w https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)