GCP - Compute Enum

HackTricksをサポートする

GCP VPC & Networking

これがどのように機能するかを学ぶ:

GCP - VPC & Networking

Enumeration

# 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 を使用して、オープンなファイアウォールルールを持つ compute instances を簡単に見つけることができます。

Compute instances

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

GCP - Compute Instances

Enumeration

# 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>

詳細については、インスタンスのSSHまたはメタデータの変更による権限昇格について、このページを参照してください:

GCP - local privilege escalation ssh pivoting

権限昇格

次のページでは、compute permissionsを悪用して権限を昇格させる方法を確認できます:

GCP - Compute Privesc

認証なしの列挙

GCP - Compute Unauthenticated Enum

ポストエクスプロイト

GCP - Compute Post Exploitation

永続化

GCP - Compute Persistence

シリアルコンソールログ

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

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

これらのログは、通常低権限のユーザーが見ることができないシステムログからの機密情報を露出する可能性がありますが、適切なIAM権限があればそれらを読むことができます。

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

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

Startup Scripts output

VMを実行しているスタートアップスクリプトの出力を確認することができます:

sudo journalctl -u google-startup-scripts.service

OS Configuration Manager

OS 構成管理サービスを使用して、VM インスタンス (VM) の一貫した構成 (望ましい状態とソフトウェア) をデプロイ、クエリ、および維持できます。Compute Engine では、VM 上の一貫したソフトウェア構成を維持するために guest policies を使用する必要があります。

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

これにより、IAM 権限を介してインスタンスにログインすることも可能になるため、privesc および pivoting に非常に役立ちます

プロジェクト全体またはインスタンスで os-config を有効にするには、目的のレベルで metadata キー enable-oslogintrue に設定するだけです。 さらに、metadata enable-oslogin-2fatrue に設定して 2fa を有効にすることもできます。

インスタンスを作成する際にこれを有効にすると、metadata キーが自動的に設定されます。

OS-config の 2fa について詳しく説明すると、ユーザーがユーザーである場合にのみ適用されます。SA (compute SA など) の場合は追加の要件はありません。

Enumeration

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>

Images

Custom Images

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

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

Enumeration

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

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

次に、任意のイメージから複数のフォーマットで仮想ディスクエクスポートできます。以下のコマンドは、qcow2フォーマットでイメージtest-imageをエクスポートし、ファイルをダウンロードしてローカルで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

Privilege Escalation

Compute Instances privilege escalation セクションを確認してください。

Custom Instance Templates

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

# List the available templates
gcloud compute instance-templates list

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

新しいイメージがどのディスクを使用しているかを知ることは興味深いかもしれませんが、これらのテンプレートには通常、機密情報は含まれていません。

Snapshots

snapshotsはディスクのバックアップです。これはディスクのクローン作成(別の利用可能な機能)とは異なることに注意してください。 snapshotは、取得元のディスクと同じ暗号化を使用します。

Enumeration

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

Privilege Escalation

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

References

HackTricks をサポートする

Last updated