このページでは、Container Threat Detection のコンセプトと機能の概要を説明します。
Container Threat Detection とは
Container Threat Detection は、Container-Optimized OS ノードイメージの状態を継続的にモニタリングする Security Command Center の組み込みサービスです。このサービスはすべての変更とリモート アクセスの試行を評価して、ほぼリアルタイムでランタイム攻撃を検出します。
Container Threat Detection は最も一般的なコンテナ ランタイム攻撃を検出し、Security Command Center にアラートを表示します。必要であれば、Cloud Logging にアラートを表示することもできます。Container Threat Detection は、不審なバイナリやライブラリなどの検出機能を備えており、自然言語処理(NLP)を使用して悪意のある Bash コードと Python コードを検出します。
Container Threat Detection は、Security Command Center のプレミアム ティアまたはエンタープライズ ティアでのみ使用できます。
Container Threat Detection の仕組み
Container Threat Detection 検出計測は、ゲストカーネルと実行されたスクリプトの低レベルの動作を収集します。イベントが検出された場合の実行パスは次のとおりです。
Container Threat Detection は、イベント情報とコンテナを識別する情報を、ユーザーモードの DaemonSet を介して検出サービスに受け渡し、分析にまわします。Container Threat Detection を有効にすると、イベント エクスポートが自動的に構成されます。
監視用の DaemonSet は、コンテナ情報の受け渡しをベスト エフォート方式で行います。Kubernetes とコンテナ ランタイムが対応するコンテナ情報を時間内に提供できない場合は、報告された情報からコンテナ情報を削除できます。
検出サービスは、イベントを分析して、イベントがインシデントかどうかを判断します。Bash と Python は NLP で分析され、実行されたコードが悪意のあるものかどうかを判断します。
検出サービスがインシデントを識別する場合、インシデントは Security Command Center に検出として書き込まれ、必要に応じて Cloud Logging に書き込まれます。
- 検出サービスがインシデントを識別しない場合、検出情報は保存されません。
- カーネルと検出サービスのデータはすべて一時的なものであり、永続的には保存されません。
検出結果の詳細は、Security Command Center コンソールで確認できます。ここでは、検出結果の情報を調べることができます。検出結果を表示または編集できるかどうかは、付与されているロールによって決まります。Security Command Center ロールの詳細については、アクセス制御をご覧ください。
Container Threat Detection 検出器
Container Threat Detection には、次の検出器が含まれています。
検出項目 | 説明 | 検出のための入力 |
---|---|---|
追加されたバイナリの実行 |
元のコンテナ イメージの一部ではなかったバイナリが実行されました。 追加されたバイナリが攻撃者によって実行された場合は、攻撃者がワークロードを制御し、任意のコマンドを実行している可能性があります。 この検出機能はデフォルトで無効になっています。有効にする方法については、Container Threat Detection のテストをご覧ください。 |
この検出機能では、元のコンテナ イメージの一部ではなかった、または元のコンテナ イメージから変更された実行中のバイナリを検索します。 |
追加されたライブラリの読み込み |
元のコンテナ イメージに含まれていないライブラリが読み込まれました。 追加されたライブラリが読み込まれた場合は、攻撃者がワークロードを制御し、任意のコードを実行している可能性があります。 この検出機能はデフォルトで無効になっています。有効にする方法については、Container Threat Detection のテストをご覧ください。 |
この検出機能では、元のコンテナ イメージの一部ではなかった、または元のコンテナ イメージから変更された読み込み中のライブラリを検索します。 |
実行: 追加された悪意のあるバイナリが実行された |
次の条件を満たすバイナリが実行されました。
追加された悪意のあるバイナリが実行された場合、それは攻撃者がワークロードを制御し、悪意のあるソフトウェアを実行していることを示す強力なサインです。 |
この検出機能では、元のコンテナ イメージの一部ではなく、脅威インテリジェンスに基づいて悪意があると特定されたバイナリが実行されていないかどうかを調べます。 |
実行: 追加された悪意のあるライブラリが読み込まれた |
次の条件を満たすライブラリが読み込まれました。
追加された悪意のあるライブラリが読み込まれた場合、それは攻撃者がワークロードを制御し、悪意のあるソフトウェアを実行していることを示す強力なサインです。 |
この検出機能では、元のコンテナ イメージの一部ではなく、脅威インテリジェンスに基づいて悪意があると特定されたライブラリが読み込まれていないかどうかを調べます。 |
実行: 組み込まれた悪意のあるバイナリが実行された |
次の条件を満たすバイナリが実行されました。
組み込みの悪意のあるバイナリが実行された場合、それは攻撃者が悪意のあるコンテナをデプロイしていることを示します。正規のイメージ リポジトリやコンテナビルド パイプラインを制御し、悪意のあるバイナリをコンテナ イメージに注入している可能性があります。 |
この検出機能では、元のコンテナ イメージに含まれており、脅威インテリジェンスに基づいて悪意があるものと特定されたバイナリが実行されていないかどうかを調べます。 |
実行: コンテナ エスケープ |
コンテナ内でプロセスが実行され、コンテナの分離を破ろうとしたため、攻撃者がホストシステムにアクセスできる可能性があります。 コンテナ エスケープの試行が検出された場合は、攻撃者が脆弱性を悪用してコンテナから脱出しようとしている可能性があります。その結果、攻撃者はホストシステムまたはより広範なインフラストラクチャに不正にアクセスし、環境全体を侵害する可能性があります。 |
この検出機能は、既知のエスケープ手法またはバイナリを使用してコンテナ境界を悪用しようとするプロセスをモニタリングします。これらのプロセスは、基盤となるホストシステムを標的とする潜在的な攻撃として脅威インテリジェンスによってフラグが立てられます。 |
実行: Kubernetes 攻撃ツールの実行 |
Kubernetes 固有の攻撃ツールが環境内で実行されました。これは、攻撃者が Kubernetes クラスタ コンポーネントをターゲットにしていることを示している可能性があります。 攻撃ツールが Kubernetes 環境内で実行されている場合、攻撃者がクラスタにアクセスし、そのツールを使用して Kubernetes 固有の脆弱性や構成を悪用している可能性があります。 |
この検出機能は、インテリジェンス データに基づいて潜在的な脅威として識別された、実行中の Kubernetes 攻撃ツールを探します。検出機能は、クラスタの潜在的な侵害を軽減するためにアラートをトリガーします。 |
実行: ローカル偵察ツールの実行 |
通常はコンテナや環境に関連付けられていないローカル偵察ツールが実行されたため、内部システム情報の収集が試みられたことを示唆しています。 偵察ツールが実行されている場合は、攻撃者がインフラストラクチャのマッピング、脆弱性の特定、システム構成に関するデータの収集を試みている可能性があります。 |
この検出機能は、脅威インテリジェンスによって特定された、環境内で実行されている既知の偵察ツールをモニタリングします。これは、悪意のある活動の準備を示している可能性があります。 |
実行: 悪意のある Python が実行された(プレビュー) |
ML モデルが、指定された Python コードを悪意があるものとして識別しました。攻撃者は、Python を使用して、外部システムから不正使用の環境にツールなどのファイルを転送し、バイナリなしでコマンドを実行できます。 |
検出機能は NLP のテクノロジーを使用して、実行された Python コードの内容を評価します。このアプローチは、署名に基づいていないため、検出機能によって既知の新しい Python を識別できます。 |
実行: 変更された悪意のあるバイナリが実行された |
次の条件を満たすバイナリが実行されました。
変更された悪意のあるバイナリが実行された場合、それは攻撃者がワークロードを制御し、悪意のあるソフトウェアを実行していることを示す強力なサインです。 |
この検出機能では、コンテナ イメージに元々含まれていたバイナリが実行時に変更され、脅威インテリジェンスに基づいて悪意があるものとして特定されたバイナリが実行されていないかどうかを調べます。 |
実行: 変更された悪意のあるライブラリが読み込まれた |
次の条件を満たすライブラリが読み込まれました。
変更された悪意のあるライブラリが読み込まれた場合、それは攻撃者がワークロードを制御し、悪意のあるソフトウェアを実行していることを示す強力なサインです。 |
この検出機能では、コンテナ イメージに元々含まれていたライブラリが実行時に変更され、脅威インテリジェンスに基づいて悪意があるものとして特定されたライブラリが読み込まれていないかどうかを調べます。 |
悪意のあるスクリプトの実行 |
ML モデルが、指定された Bash コードを悪意があるものとして識別しました。攻撃者は、Bash を使用して、外部システムから不正使用の環境にツールなどのファイルを転送し、バイナリなしでコマンドを実行できます。 |
検出機能は NLP のテクノロジーを使用して、実行された Bash コードの内容を評価します。この方法は、署名に基づいていないため、検出機能によって既知および新規の悪意のある bash を識別できます。 |
悪意のある URL の観測 | Container Threat Detection が、実行中のプロセスの引数リストに悪意のある URL を検出しました。 | この検出機能では、Google のセーフ ブラウジング サービスによって管理されている、安全でないウェブリソースのリストと、実行中のプロセスの引数リストで観測された URL が照合されます。URL が誤ってフィッシングまたはマルウェアに分類されている場合は、 間違ったデータの報告で報告します。 |
リバースシェル |
リモート接続ソケットへのストリーム リダイレクトで始まるプロセス。 リバースシェルを使用すると、攻撃者は不正使用されたワークロードから攻撃者制御マシンに通信できます。攻撃者は、たとえばボットネットの一部として、ワークロードのコマンドと制御を行うことができます。 |
この検出項目ではリモート ソケットにバインドされている stdin を検索します。
|
予期しない子シェル | 通常はシェルを起動しないプロセスが、シェルプロセスを生成します。 | 検出機能はすべてのプロセスの実行をモニタリングします。シェルが呼び出されたときに、親プロセスが通常はシェルを呼び出さないことが判明している場合、検出機能によって検出結果が生成されます。 |
次のステップ
- Container Threat Detection の使用方法を学習する。
- Container Threat Detection のテスト方法を学習する。
- 脅威に対する対応計画の調査と開発の方法を学習する。
- Artifact Analysis と脆弱性スキャンについて学習する。