GCP - Compute Enum

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

GCP VPC & Networking

以下でこれがどのように機能するかについて学びます:

pageGCP - VPC & Networking

列挙

# List networks
gcloud compute networks list
gcloud compute networks describe <network>

# List subnetworks
gcloud compute networks subnets list
gcloud compute networks subnets get-iam-policy <name> --region <region>
gcloud compute networks subnets describe <name> --region <region>

# List FW rules in networks
gcloud compute firewall-rules list --format="table(
name,
network,
direction,
priority,
sourceRanges.list():label=SRC_RANGES,
destinationRanges.list():label=DEST_RANGES,
allowed[].map().firewall_rule().list():label=ALLOW,
denied[].map().firewall_rule().list():label=DENY,
sourceTags.list():label=SRC_TAGS,
sourceServiceAccounts.list():label=SRC_SVC_ACCT,
targetTags.list():label=TARGET_TAGS,
targetServiceAccounts.list():label=TARGET_SVC_ACCT,
disabled
)"

# List Hierarchical Firewalls
gcloud compute firewall-policies list  (--folder <value>| --organization <value>)
gcloud compute firewall-policies describe <fw_policy>
gcloud compute firewall-policies list-rules <fw_policy>

# Get Firewalls of each region
gcloud compute network-firewall-policies list
## Get final FWs applied in a region
gcloud compute network-firewall-policies get-effective-firewalls --network=<vpc_name> --region <region>

ファイアウォールルールが開いているコンピュートインスタンスを簡単に見つけることができます。https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

コンピュートインスタンス

これは、GCP内で仮想マシンを実行する方法です。詳細については、このページをチェックしてください:

pageGCP - Compute Instances

列挙

# Get list of zones
# It's interesting to know which zones are being used
gcloud compute regions list | grep -E "NAME|[^0]/"

# List compute instances & get info
gcloud compute instances list
gcloud compute instances describe <instance name>
gcloud compute instances get-iam-policy <instance> --zone=ZONE
gcloud compute instances get-screenshot <instance name> # Instace must have "Display Device" enabled
gcloud compute instances os-inventory list-instances # Get OS info of instances (OS Config agent is running on instances)


# Enumerate disks
gcloud compute disks list
gcloud compute disks describe <disk>
gcloud compute disks get-iam-policy <disk>

特権昇格

次のページでは、コンピュート権限を悪用して特権を昇格する方法を確認できます:

pageGCP - Compute Privesc

認証なしの列挙

pageGCP - Compute Unauthenticated Enum

ポストエクスプロイテーション

pageGCP - Compute Post Exploitation

永続性

pageGCP - Compute Persistence

シリアルコンソールログ

Compute Engineのシリアルコンソールログは、仮想マシンインスタンスのブートおよびオペレーティングシステムログを表示および診断する機能です。

シリアルコンソールログは、インスタンスのブートプロセスの低レベルビューを提供し、カーネルメッセージ、initスクリプト、およびブート中に発生するその他のシステムイベントを含みます。これは、ブートの問題のデバッグ、ミス構成やソフトウェアエラーの特定、ネットワーク接続のトラブルシューティングに役立ちます。

これらのログは、通常は低特権ユーザーが見ることができないシステムログから機密情報を公開する可能性がありますが、適切なIAM権限を持っていれば読むことができるかもしれません。

シリアルポートログをクエリするために、次のgcloudコマンドを使用できます(必要な権限は compute.instances.getSerialPortOutput です):

gcloud compute instances get-serial-port-output <instance-name>

OS構成マネージャー

OS構成管理サービスを使用して、VMインスタンス(VM)の一貫した構成(所望の状態およびソフトウェア)を展開、クエリ、および維持できます。Compute Engineでは、VM上のソフトウェア構成を一貫させるためにゲストポリシーを使用する必要があります。

OS構成管理機能を使用すると、インストールするべきソフトウェアパッケージ、有効にすべきサービス、およびVMに存在するべきファイルや構成を指定する構成ポリシーを定義できます。VMのソフトウェア構成を管理するために宣言的アプローチを使用でき、構成管理プロセスをより簡単に自動化およびスケーリングできます。

これにより、IAM権限を使用してインスタンスにログインすることも可能になり、権限昇格やピボットに非常に便利です。

プロジェクト全体またはインスタンスでos-configを有効にするには、所定のレベルで**enable-osloginメタデータキーをtrueに設定するだけです。 さらに、2要素認証を有効にするには、メタデータenable-oslogin-2fatrue**に設定できます。

インスタンス作成時に有効にすると、メタデータキーが自動的に設定されます。

OS-configの2要素認証について、ユーザーの場合のみ適用され、コンピュートSAなどのSAの場合は追加の設定は必要ありません。

列挙

gcloud compute os-config patch-deployments list
gcloud compute os-config patch-deployments describe <patch-deployment>

gcloud compute os-config patch-jobs list
gcloud compute os-config patch-jobs describe <patch-job>

イメージ

カスタムイメージ

カスタムコンピュートイメージには、機密情報や他の脆弱な構成が含まれている可能性があり、それらを悪用することができます。

イメージが作成されると、3種類の暗号化を選択できます: Googleが管理するキー(デフォルト)、KMSからのキー、またはクライアントから提供された生のキー

列挙

次のコマンドを使用して、プロジェクト内の非標準イメージのリストをクエリできます:

gcloud compute machine-images list
gcloud compute machine-images describe <name>
gcloud compute machine-images get-iam-policy <name>

次に、任意のイメージから仮想ディスクを複数の形式でエクスポートできます。次のコマンドは、イメージ test-image を qcow2 形式でエクスポートし、ファイルをダウンロードしてローカルで VM を構築してさらに調査することができます:

gcloud compute images export --image test-image \
--export-format qcow2 --destination-uri [BUCKET]

# Execute container inside a docker
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh

特権昇格

Compute Instancesの特権昇格セクションをチェックします。

カスタムインスタンステンプレート

インスタンステンプレート はインスタンスのプロパティを定義して一貫した構成を展開するのに役立ちます。これには、実行中のインスタンスのカスタムメタデータと同様のタイプの機密データが含まれる場合があります。次のコマンドを使用して調査できます:

# List the available templates
gcloud compute instance-templates list

# Get the details of a specific template
gcloud compute instance-templates describe [TEMPLATE NAME]

スナップショット

スナップショットはディスクのバックアップです。これはディスクのクローン(別の利用可能な機能)とは異なることに注意してください。 スナップショットは、それが取られたディスクと同じ暗号化を使用します。

列挙

gcloud compute snapshots list
gcloud compute snapshots describe <snapshot>
gcloud compute snapshots get-iam-policy <snapshot>

特権昇格

Compute Instancesの特権昇格セクションをチェックしてください。

参考文献

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

最終更新