GCP - Non-svc Persistance
Diese Techniken sind nützlich, sobald Sie auf irgendeine Weise einige GCP-Anmeldeinformationen oder eine Maschine in einer GCP-Umgebung kompromittiert haben.
Token-Hijacking
Authentifizierte Benutzertoken
Um das aktuelle Token eines Benutzers zu erhalten, können Sie Folgendes ausführen:
Überprüfen Sie auf dieser Seite, wie Sie diesen Token direkt mit gcloud verwenden können:
Um die Details zum Generieren eines neuen Zugriffstokens zu erhalten, führen Sie aus:
Es ist auch möglich, Auffrischungstoken in $HOME/.config/gcloud/application_default_credentials.json
und in $HOME/.config/gcloud/legacy_credentials/*/adc.json
zu finden.
Um ein neues aktualisiertes Zugriffstoken mit dem Auffrischungstoken, der Client-ID und dem Client-Geheimnis zu erhalten, führen Sie aus:
Die Gültigkeit der Auffrischungstoken kann in Admin > Sicherheit > Google Cloud-Sitzungssteuerung verwaltet werden, und standardmäßig ist sie auf 16 Stunden eingestellt, obwohl sie auf "Nie ablaufen" gesetzt werden kann:
Authentifizierungsfluss
Der Authentifizierungsfluss bei der Verwendung von etwas wie gcloud auth login
öffnet einen Dialog im Browser und nachdem alle Berechtigungen akzeptiert wurden, sendet der Browser eine Anfrage wie diese an den vom Tool geöffneten HTTP-Port:
Dann wird gcloud den Zustand und den Code mit einem fest codierten client_id
(32555940559.apps.googleusercontent.com
) und client_secret
(ZmssLNjJy2998hD4CTg2ejr2
) verwenden, um die endgültigen Aktualisierungs-Token-Daten zu erhalten.
Beachten Sie, dass die Kommunikation mit localhost über HTTP erfolgt, sodass es möglich ist, die Daten abzufangen, um ein Aktualisierungs-Token zu erhalten. Diese Daten sind jedoch nur einmal gültig, daher wäre dies nutzlos. Es ist einfacher, das Aktualisierungs-Token einfach aus der Datei zu lesen.
OAuth-Berechtigungen
Sie können alle Google-Berechtigungen unter https://developers.google.com/identity/protocols/oauth2/scopes finden oder sie ausführen:
Es ist möglich zu sehen, welche Bereiche die Anwendung, die gcloud
zur Authentifizierung verwendet, mit diesem Skript unterstützen kann:
Nach der Ausführung wurde überprüft, dass diese App diese Bereiche unterstützt:
Dienstkonten
Genau wie bei authentifizierten Benutzern, wenn es Ihnen gelingt, die private Schlüsseldatei eines Dienstkontos zu kompromittieren, werden Sie in der Regel solange darauf zugreifen können, wie Sie möchten. Wenn Sie jedoch das OAuth-Token eines Dienstkontos stehlen, kann dies noch interessanter sein, denn auch wenn diese Tokens standardmäßig nur eine Stunde lang nützlich sind, bleibt das OAuth-Token gültig, bis es abläuft, selbst wenn das Opfer den privaten API-Schlüssel löscht.
Metadaten
Offensichtlich können Sie solange Sie sich in einer Maschine innerhalb der GCP-Umgebung befinden, auf das Dienstkonto zugreifen, das mit dieser Maschine verbunden ist, indem Sie den Metadaten-Endpunkt kontaktieren (beachten Sie, dass die OAuth-Tokens, auf die Sie über diesen Endpunkt zugreifen können, normalerweise durch Berechtigungen eingeschränkt sind).
Abhilfemaßnahmen
Einige Abhilfemaßnahmen für diese Techniken werden in https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2 erläutert
Referenzen
Last updated