🛣️

Security Command Center の攻撃パス シミュレーションを検証してみる

2023/12/21に公開

この記事は Google Cloud Japan Advent Calendar 2023 (通常版) の 20 日目の記事です。

Google Cloud Japan で Customer Engineer をしている水野です。
最近は 12 月なのにやたらと暖かい日があったりして、着る服に困ってしまいますね。体調を崩さないようにお気をつけください!

本記事では、Google Cloud 内のアプリケーションやリソースの脆弱性・脅威情報を一元的に監視するサービスである Security Command Center (以下、SCC) とその一部の機能について取り上げていきます。
https://cloud.google.com/security-command-center/docs/concepts-security-command-center-overview?hl=ja

Security Command Center (SCC) とは?

SSC は、組み込みの脅威検出機能や統合された Google Cloud セキュリティサービス、サードパーティセキュリティサービスなどの情報を収集・分析し、ユーザーの Google Cloud 環境に存在する設定ミスや脅威、脆弱性などのリスクをダッシュボードとして可視化するサービスです。

SCC に組み込まれた脅威検出機能としては、以下の「脅威検出サービス」ならびに「脅威防止サービス」が挙げられます。これらによって検知・可視化した脅威へ対応するために、他の Google Cloud サービスや SIEM/SOAR と連携することもできます。

ユニークな機能として、Event Threat Detection と VM Threat Detection で検出可能な脅威の一つにクリプト(暗号資産)マイニング攻撃があります。クリプトマイニング攻撃とは、攻撃者が大量のコンピューティングリソースを不正使用することにより、ユーザーのクラウド環境に多大な損害を与える攻撃のことです。
https://cloud.google.com/security-command-center/docs/cryptomining-detection-best-practices?hl=ja

SCC では、このクリプトマイニング攻撃を検出するために仮想マシンのメモリをスキャンしてマルウェアを特定しますが、なんとこの機能はエージェントレスで利用できます!

クラウドネイティブな技術によって仮想マシンへのエージェントインストールの手間が割愛され、またエージェントの稼働による仮想マシンのパフォーマンス低下のリスクも回避することができます。

さらに、2023/12/20 時点で Google Cloud では特定条件下におけるクリプトマイニング保護プログラムを提供しており、もし SCC で防げなかった場合でも最大 100 万ドルまでクレジットを請求することができます。SCC の検出機能に自信を持っているからこそ実施できるプログラムですね!
https://cloud.google.com/blog/ja/products/identity-security/google-cloud-offers-customers-financial-help-for-cryptomining-attacks

攻撃パス シミュレーションとは?

ここからが今回の記事の本題です。2023/8/15に、SCC の攻撃パス シミュレーション機能が GA されました。

この機能は、SCC で既に検出されている脆弱性や構成ミスの情報を利用してクラウド環境に侵入しようとする攻撃者の様々な手法をシミュレートし、攻撃者がユーザー価値の高いリソースにどのようにアクセスするのかという情報を図として可視化します。

また、実際に攻撃が発生する可能性と、リソースの重要度からスコアを生成します。このスコアは、数字が高ければ高いほど、攻撃が成功する可能性が高くかつ価値の高い資産へ到達出来る可能性があることを示します。

攻撃スコアの値によって、どの修正作業を優先すべきなのかを把握できるため、結果として Google Cloud 環境のセキュリティリスク改善に貢献します。

https://cloud.google.com/blog/ja/products/identity-security/security-command-center-adds-attack-path-simulation-to-stay-ahead-of-cyber-risks

注意点として、攻撃パス シミュレーションは SCC のプレミアムティアかつ Google Cloud の組織で有効化している場合のみご利用いただける機能となります。スタンダードティアあるいはプロジェクトレベルで有効化いただいている場合はご利用いただくことができません。

また、現状は以下のGoogle Cloud リソースのみシミュレーションに対応しています。

  • BigQuery
  • Cloud Functions
  • Cloud Key Management Service
  • Cloud Load Balancing
  • Cloud NAT
  • Cloud Router
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Identity and Access Management
  • Google Kubernetes Engine
  • Virtual Private Cloud(サブネットとファイアウォール構成を含む)
  • Resource Manager

攻撃パス シミュレーションを検証してみる

ここからは、実際の環境を使ってわざと脆弱性を持つようなリソースを作成し、SCC で検出結果を生成させた上で攻撃パス シミュレーションでどのような結果を得られるのか検証してみようと思います。

高価値リソースセットを設定する

SCC のコンソールの [設定] ページへアクセスし、[攻撃パス シミュレーション] を選択します。もし表示されない場合は、画面左上で組織ではなくプロジェクトを指定している可能性があるため、確認してみてください。

この画面では Google Cloud 環境の特定のリソースを高価値リソースセットとして設定することができます。高価値リソースセットを定義しないと、攻撃パス シミュレーションにおけるセキュリティの優先度が正確に反映されません。検証のため、今回は GCE インスタンスを高価値リソースセットに設定してみましょう。

最初に設定画面から [新しい構成を作成する] を選択し、[名前] には任意の値を、[リソースタイプを選択] では [compute.googleapis.com/Instance] を、[Assign resource value] には [高] を選択し、最後に [保存] を選択します。

GCE インスタンスを作成する

次に、SCC にわざと検出されるような設定を持つ GCE インスタンスを作成していきます。インターネットアクセス可能な VPC ネットワークが既に存在することを前提に、手順を書いていきます。

GCE コンソールへアクセスし、[インスタンスを作成] を選択します。

[名前] では任意の値を入力し [リージョン] では [asia-northeast1] を選択します。下にスクロールし [ファイアウォール] で [HTTP トラフィックを許可する] にチェックを入れます。

[詳細オプション] を開いた後に [ネットワーキング] を開き、[ネットワーク インターフェース] にてインターネットと疎通可能な VPC ネットワークならびにサブネットワークを選択します。その後 [完了] を選択し最後に [作成] を選択すれば、80 番ポートが空いている GCE インスタンスが作成されます。

攻撃パス シミュレーションの結果を確認する

早速 SCC のコンソールから攻撃パス シミュレーションの結果を確認したいところですが、シミュレーションは 6 時間に 1 回実施される仕様となっているため、時間を見計らってから以下の作業に進みましょう!

攻撃パス シミュレーションの結果を確認するために、事前にコンソールの左上でプロジェクトが指定されている場合は組織に切り替えておきましょう。その後 SCC コンソールへアクセスし、左のメニューから [検出結果] を選択すると、検出結果の一覧を確認できるページに遷移します。[クエリを編集] を選択し、以下のクエリをコピペし [適用] を選択します。

state="ACTIVE"
AND NOT mute="MUTED"
AND category="PUBLIC_IP_ADDRESS"

[検出結果クエリの結果] にカテゴリが "Public IP address" である検出結果が表示されるので、その結果のAttack exposure score のリンクを選択します(この数字が攻撃スコアの値です)。もし結果が複数存在する場合は、リソースの表示名がインスタンス名と同じである検出結果を選びましょう。

そうすると、以下のように攻撃パス シミュレーションのグラフが表示されるはずです。このグラフは、インターネットから 3 通りの方法で GCE インスタンスに到達可能であることを示しています。

また、main-allow-httpinstance-1 に赤い「!」マークが付いていますが、これは各リソースに関連する SCC の検出結果が生成されていることを意味しています。前者は "Open firewall" と "Open HTTP port" の検出結果が生成されていますし、後者は "Public IP address" の検出結果が生成されていますね。

なお、セキュリティリスクが上がってしまうために本記事には手順を記載していませんが、今回私が検証環境として利用した Google アカウントの組織では 2 段階認証が強制されていないため、以下の画像のように MFA が有効でない場合の攻撃経路もシミュレーションされています。

最後に、左上の [AI サマリー] を選択することで、今回の攻撃パス シミュレーションの概要を Security に特化した LLM が生成してくれます。残念ながら現状は英語のみ対応となっていますが、今後の日本語対応を楽しみにお待ちください!

まとめ

本記事では、SCC の概要ならびに攻撃パス シミュレーションの機能について紹介しました。今回紹介した機能のほとんどはプレミアムティアでのみ使うことができますが、スタンダードティアについては機能が限られるものの無料で使うことができます。組織でスタンダードティアを有効化しつつ特定のプロジェクトのみプレミアムティアを有効化するような使い方も可能なので、ぜひ一度お試しいただけると幸いです!

Google Cloud Japan

Discussion