GCP - Non-svc Persistance
Dies sind nützliche Techniken, sobald du irgendwie einige GCP-Anmeldeinformationen oder eine Maschine, die in einer GCP-Umgebung läuft, kompromittiert hast.
Token Hijacking
Authentifizierte Benutzer-Token
Um das aktuelle Token eines Benutzers zu erhalten, kannst du folgendes ausführen:
Überprüfen Sie auf dieser Seite, wie Sie diesen Token direkt mit gcloud verwenden:
Um die Details zu erhalten, um einen neuen Zugriffstoken zu generieren, führen Sie aus:
Es ist auch möglich, Refresh Tokens in $HOME/.config/gcloud/application_default_credentials.json
und in $HOME/.config/gcloud/legacy_credentials/*/adc.json
zu finden.
Um ein neues aktualisiertes Access Token mit dem Refresh Token, der Client-ID und dem Client Secret zu erhalten, führen Sie aus:
Die Gültigkeit der Refresh-Tokens kann unter Admin > Security > Google Cloud session control verwaltet werden. Standardmäßig ist sie auf 16 Stunden eingestellt, kann jedoch so konfiguriert werden, dass sie nie abläuft:
Auth-Flow
Der Authentifizierungsablauf bei der Verwendung von gcloud auth login
öffnet eine Eingabeaufforderung im Browser. Nach dem Akzeptieren aller Scopes sendet der Browser eine Anfrage wie diese an den von dem Tool geöffneten HTTP-Port:
Dann wird gcloud den Status und Code mit einer fest codierten client_id
(32555940559.apps.googleusercontent.com
) und client_secret
(ZmssLNjJy2998hD4CTg2ejr2
) verwenden, um die endgültigen Refresh-Token-Daten zu erhalten.
Beachten Sie, dass die Kommunikation mit localhost über HTTP erfolgt, sodass es möglich ist, die Daten abzufangen, um ein Refresh-Token zu erhalten. Diese Daten sind jedoch nur einmal gültig, daher wäre dies nutzlos. Es ist einfacher, das Refresh-Token aus der Datei zu lesen.
OAuth-Scopes
Sie können alle Google-Scopes unter https://developers.google.com/identity/protocols/oauth2/scopes finden oder sie durch Ausführen des folgenden Befehls abrufen:
Es ist möglich zu sehen, welche Scopes die Anwendung, die gcloud
zur Authentifizierung verwendet, mit diesem Skript unterstützen kann:
es ist interessant zu sehen, wie diese App den drive
-Scope unterstützt, was einem Benutzer ermöglichen könnte, von GCP zu Workspace zu eskalieren, wenn ein Angreifer es schafft, den Benutzer zu zwingen, ein Token mit diesem Scope zu generieren.
Schauen Sie, wie Sie dies hier ausnutzen können.
Service Accounts
Genau wie bei authentifizierten Benutzern, wenn es Ihnen gelingt, die private Schlüsseldatei eines Service Accounts zu kompromittieren, können Sie in der Regel so lange darauf zugreifen, wie Sie möchten. Wenn Sie jedoch das OAuth-Token eines Service Accounts stehlen, kann dies noch interessanter sein, denn selbst wenn diese Tokens standardmäßig nur eine Stunde nützlich sind, wenn das Opfer den privaten API-Schlüssel löscht, bleibt das OAuth-Token bis zum Ablauf gültig.
Metadata
Offensichtlich, solange Sie sich in einer Maschine befinden, die in der GCP-Umgebung läuft, können Sie auf den Service Account zugreifen, der an diese Maschine angehängt ist, indem Sie den Metadata-Endpunkt kontaktieren (beachten Sie, dass die OAuth-Tokens, auf die Sie in diesem Endpunkt zugreifen können, normalerweise durch Scopes eingeschränkt sind).
Remediations
Einige Abhilfemaßnahmen für diese Techniken werden erklärt in https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
References
Last updated