GCP - Compute Instances

Reading time: 9 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本情報

Google Cloud Compute Instancesは、Googleのクラウドインフラストラクチャ上のカスタマイズ可能な仮想マシンであり、さまざまなアプリケーション向けにスケーラブルでオンデマンドのコンピューティングパワーを提供します。これらは、グローバル展開、永続ストレージ、柔軟なOSの選択、強力なネットワーキングおよびセキュリティ統合などの機能を提供し、ウェブサイトのホスティング、データ処理、アプリケーションの効率的な実行において多用途な選択肢となります。

機密VM

機密VMは、最新世代のAMD EPYCプロセッサが提供するハードウェアベースのセキュリティ機能を使用しており、メモリ暗号化や安全な暗号化仮想化が含まれています。これらの機能により、VMはホストオペレーティングシステムやハイパーバイザーから処理および保存されたデータを保護できます。

機密VMを実行するには、マシンのタイプ、ネットワークインターフェースブートディスクイメージなどを変更する必要がある場合があります。

ディスクとディスク暗号化

使用するディスクを選択するか、新しいディスクを作成することが可能です。新しいディスクを選択した場合、次のことができます:

  • ディスクのサイズを選択
  • OSを選択
  • インスタンスが削除されたときにディスクを削除するかどうかを指定
  • 暗号化デフォルトGoogle管理キーが使用されますが、KMSからキーを選択するか、使用する生のキーを指定することもできます。

コンテナのデプロイ

仮想マシン内にコンテナをデプロイすることが可能です。
使用するイメージを設定し、内部で実行するコマンド引数ボリュームをマウントし、環境変数(機密情報?)を設定し、このコンテナのために特権として実行する、stdinおよび擬似TTYなどのいくつかのオプションを構成できます。

サービスアカウント

デフォルトでは、Compute Engineのデフォルトサービスアカウントが使用されます。このSAのメールは次のようになります:<proj-num>-compute@developer.gserviceaccount.com
このサービスアカウントは、**プロジェクト全体に対するエディターロール(高い権限)**を持っています。

そして、デフォルトのアクセススコープは次のとおりです:

ただし、クリック一つでcloud-platformを付与するか、カスタムのものを指定することも可能です。

ファイアウォール

HTTPおよびHTTPSトラフィックを許可することが可能です。

ネットワーキング

  • IP転送:インスタンスの作成時にIP転送を有効にすることが可能です。
  • ホスト名:インスタンスに永続的なホスト名を付けることが可能です。
  • インターフェース:ネットワークインターフェースを追加することが可能です。

追加のセキュリティ

これらのオプションは、VMのセキュリティを向上させ、推奨されます:

  • セキュアブート:セキュアブートは、VMインスタンスをブートレベルおよびカーネルレベルのマルウェアやルートキットから保護します。
  • vTPMを有効にする:仮想トラステッドプラットフォームモジュール(vTPM)は、ゲストVMのプレブートおよびブートの整合性を検証し、キーの生成と保護を提供します。
  • 整合性監視:整合性監視により、Stackdriverレポートを使用してシールドされたVMインスタンスのランタイムブート整合性を監視および検証できます。vTPMを有効にする必要があります。

VMアクセス

VMへのアクセスを有効にする一般的な方法は、特定のSSH公開鍵をVMにアクセスできるようにすることです。
ただし、IAMを使用してos-configサービス経由でVMへのアクセスを有効にすることも可能です。さらに、このサービスを使用してVMへのアクセスに2FAを有効にすることも可能です。
このサービス有効になると、SSHキーによるアクセスは無効になります。

メタデータ

自動化(AWSのuserdata)を定義することが可能で、これはシェルコマンドであり、マシンが起動または再起動するたびに実行されます。

また、メタデータエンドポイントからアクセス可能な追加のメタデータキー-バリュー追加することも可能です。この情報は、環境変数やスタートアップ/シャットダウンスクリプトに一般的に使用されます。これは、列挙セクションのコマンドからの**describeメソッド**を使用して取得できますが、インスタンス内からメタデータエンドポイントにアクセスして取得することもできます。

bash
# view project metadata
curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

# view instance metadata
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

さらに、添付されたサービスアカウントの認証トークンインスタンス、ネットワーク、プロジェクトに関する一般情報メタデータエンドポイントから取得できます。詳細については、以下を確認してください:

Cloud SSRF - HackTricks

暗号化

デフォルトではGoogle管理の暗号化キーが使用されますが、顧客管理の暗号化キー(CMEK)を設定することもできます。また、使用されているCMEKが取り消された場合の処理を設定することもできます:VMをシャットダウンするか、何もしないかです。

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする