Container Threat Detection のコンセプトの概要

このページでは、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 スクリプトを検出します。

Container Threat Detection の仕組み

Container Threat Detection 検出インストルメンテーションは、ゲストカーネルの低レベルの動作と bash スクリプトを実行します。イベントが検出された場合の実行パスは次のとおりです。

  1. Container Threat Detection は、イベント情報とコンテナを識別する情報を、ユーザーモードの DaemonSet を介して検出サービスに受け渡し、分析にまわします。Container Threat Detection を有効にすると、イベント収集が自動的に構成されます。

    監視用の DaemonSet は、コンテナ情報の受け渡しをベスト エフォート方式で行います。Kubernetes とコンテナ ランタイムが対応するコンテナ情報を時間内に提供できない場合は、報告された情報からコンテナ情報を削除できます。

  2. 検出サービスは、イベントを分析して、イベントがインシデントかどうかを判断します。bash スクリプトの内容は NLP で分析され、実行されたスクリプトに悪意があるかどうかを確認します。

  3. 検出サービスがインシデントを識別する場合、インシデントは Security Command Center に検出結果として書き込まれ、必要に応じて Cloud Logging に書き込まれます。

    • 検出サービスがインシデントを識別しない場合、検出結果は保存されません。
    • カーネルと検出サービスのデータはすべて一時的なものであり、永続的には保存されません。

検出結果の詳細は Security Command Center のダッシュボードで確認できます。ここでは、検出結果の情報を調べることができます。検出結果を表示または編集できるかどうかは、付与されているロールによって決まります。Security Command Center のロールの詳細については、アクセス制御をご覧ください。

Container Threat Detection 検出機能

Container Threat Detection には、次の検出機能が含まれています。

検出機能 説明 検出のための入力
追加されたバイナリの実行

元のコンテナ イメージの一部でなかったバイナリが実行されました。

追加されたバイナリが攻撃者によって実行された場合は、攻撃者がワークロードを制御し、任意のコマンドを実行している可能性があります。

この検出機能では、元のコンテナ イメージの一部ではなかった、または元のコンテナ イメージから変更された実行中のバイナリを検索します。
追加されたライブラリの読み込み

元のコンテナ イメージに含まれていないライブラリが読み込まれました。

追加されたライブラリが読み込まれると、攻撃者がワークロードを制御し、任意のコードを実行している可能性があります。

この検出機能では、元のコンテナ イメージの一部ではなかった、または元のコンテナ イメージから変更された読み込み中のライブラリを検索します。
実行: 追加された悪意のあるバイナリの実行

次の条件を満たすバイナリが実行されました。

  • 脅威インテリジェンスに基づいて悪意があると特定された
  • 元のコンテナ イメージの一部ではない

追加された悪意のあるバイナリが実行された場合、それは攻撃者がワークロードを制御し、悪意のあるソフトウェアを実行していることを示す強力なサインです。

この検出機能では、元のコンテナ イメージの一部ではなく、脅威インテリジェンスに基づいて悪意があると特定されたバイナリが実行されていないかどうかを調べます。
実行: 追加された悪意のあるライブラリの読み込み

次の条件を満たすライブラリが読み込まれました。

  • 脅威インテリジェンスに基づいて悪意があると特定された
  • 元のコンテナ イメージの一部ではない

追加された悪意のあるライブラリが読み込まれた場合、それは攻撃者がワークロードを制御し、悪意のあるソフトウェアを実行していることを示す強力なサインです。

この検出機能では、元のコンテナ イメージの一部ではなく、脅威インテリジェンスに基づいて悪意があると特定されたライブラリが読み込まれていないかどうかを調べます。
実行: 組み込まれた悪意のあるバイナリの実行

次の条件を満たすバイナリが実行されました。

  • 脅威インテリジェンスに基づいて悪意があると特定された
  • 元のコンテナ イメージに含まれている

組み込みの悪意のあるバイナリが実行された場合、それは攻撃者が悪意のあるコンテナをデプロイしていることを示します。正規のイメージ リポジトリやコンテナビルド パイプラインを制御し、悪意のあるバイナリをコンテナ イメージに注入している可能性があります。

この検出機能では、元のコンテナ イメージに含まれており、脅威インテリジェンスに基づいて悪意があるものと特定されたバイナリが実行されていないかどうかを調べます。
実行: 変更された悪意のあるバイナリの実行

次の条件を満たすバイナリが実行されました。

  • 脅威インテリジェンスに基づいて悪意があると特定された
  • 元のコンテナ イメージに含まれている
  • 実行時に元のコンテナ イメージから変更される
  • 変更された悪意のあるバイナリが実行された場合、それは攻撃者がワークロードを制御し、悪意のあるソフトウェアを実行していることを示す強力なサインです。

    この検出機能では、コンテナ イメージに元々含まれていたバイナリが実行時に変更され、脅威インテリジェンスに基づいて悪意があるものとして特定されたバイナリが実行されていないかどうかを調べます。
    実行: 変更された悪意のあるライブラリの読み込み

    次の条件を満たすライブラリが読み込まれました。

  • 脅威インテリジェンスに基づいて悪意があると特定された
  • 元のコンテナ イメージに含まれている
  • 実行時に元のコンテナ イメージから変更される
  • 変更された悪意のあるライブラリが読み込まれた場合、それは攻撃者がワークロードを制御し、悪意のあるソフトウェアを実行していることを示す強力なサインです。

    この検出機能では、コンテナ イメージに元々含まれていたライブラリが実行時に変更され、脅威インテリジェンスに基づいて悪意があるものとして特定されたライブラリが実行されていないかどうかを調べます。
    悪意のあるスクリプトの実行 機械学習モデルが、実行された bash スクリプトを悪意があるものとして識別しました。攻撃者は、bash スクリプトを使用して、外部システムから不正使用の環境にツールなどのファイルを転送し、バイナリなしでコマンドを実行できます。 検出機能は NLP のテクノロジーを使用して、実行された bash スクリプトの内容を評価します。このアプローチは、署名に基づいていないため、検出機能によって既知の不正なスクリプトや未知の不正なスクリプトを識別できます。
    悪意のある URL の観測 Container Threat Detection が、実行中のプロセスの引数リストに悪意のある URL を検出しました。 この検出では、Google のセーフ ブラウジング サービスによって管理されている、安全でないウェブリソースのリストと、実行中のプロセスの引数リストで観測された URL が照合されます。URL が誤ってフィッシングまたはマルウェアに分類されている場合は、間違ったデータの報告でセーフ ブラウジングに報告します。
    リバースシェル

    リモート接続ソケットへのストリーム リダイレクトで始まるプロセス。

    リバースシェルを使用すると、攻撃者は不正使用されたワークロードから攻撃者の制御マシンに通信を可能にできます。攻撃者は、たとえばボットネットの一部として、目的の操作を実行するワークロード コマンドと制御を実行できます。

    この検出機能は、リモート ソケットにバインドされている stdin のように機能します。
    予期しない子シェル

    通常はシェルを起動しないプロセスが、シェルプロセスを生成します。

    検出機能はすべてのプロセスの実行をモニタリングします。シェルが呼び出されたときに、親プロセスが通常はシェルを呼び出さないことが判明している場合、検出機能によって検出結果が生成されます。

    次のステップ