GCP - Compute Enum

Support HackTricks

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 で簡単に見つけることができます。

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

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

列挙

# 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またはメタデータの変更を通じて権限を昇格させる方法については、次のページを確認してください:

権限昇格

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

認証されていない列挙

ポストエクスプロイト

永続性

シリアルコンソールログ

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

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

これらのログは、低権限のユーザーが通常は見ることができないシステムログから機密情報を露出する可能性がありますが、適切な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上の一貫したソフトウェア構成を維持するためにゲストポリシーを使用する必要があります。

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

これにより、IAM権限を介してインスタンスにログインできるため、権限昇格やピボットに非常に役立ちます

プロジェクト全体またはインスタンスでos-configを有効にするにはメタデータキー**enable-osloginを希望するレベルでtrueに設定するだけです。 さらに、メタデータenable-oslogin-2fatrue**に設定すると、2faが有効になります。

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

OS-configにおける2faについて、これはユーザーがユーザーである場合にのみ適用されます。サービスアカウント(コンピュート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>

次に、任意のイメージから仮想ディスクを複数のフォーマットでエクスポートできます。次のコマンドは、イメージ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の権限昇格セクションを確認してください。

参考文献

HackTricksをサポートする

Last updated