予期しない子シェル

このドキュメントでは、Security Command Center の脅威の検出結果のタイプについて説明します。脅威の検出結果は、クラウド リソースで潜在的な脅威が検出されたときに、脅威検出機能によって生成されます。使用可能な脅威の検出結果の一覧については、脅威の検出結果のインデックスをご覧ください。

概要

Container Threat Detection が、子シェルプロセスを予期せず生成するプロセスを検出しました。このイベントは、攻撃者がシェルのコマンドとスクリプトを不正使用しようとしていることを示す場合があります。

対処方法

この検出結果に対応する手順は次のとおりです。

ステップ 1: 検出結果の詳細を確認する

  1. 検出結果の確認の説明に従って、Unexpected Child Shell の検出結果を開きます。検出結果の詳細パネルが開き、[概要] タブが表示されます。

  2. [概要] タブで、次のセクションの情報を確認します。

    • 検出された内容(特に次のフィールド):
      • 親プロセス: 子シェルプロセスが予期せず作成されたプロセス。
      • 子プロセス: 子シェルプロセス。
      • 引数: 子シェルのプロセス バイナリに渡される引数。
      • 環境変数: 子シェルのプロセス バイナリの環境変数。
      • コンテナ: コンテナの名前。
      • コンテナ URI: コンテナのイメージ URI。
      • Kubernetes Pod: Pod 名と Namespace。
    • 影響を受けているリソース(特に次のフィールド):
      • リソース表示名: 影響を受けるリソースの名前。
      • 完全なリソース名: クラスタの完全なリソース名。完全なリソース名には、次の情報が含まれます。
        • クラスタを含むプロジェクト(projects/PROJECT_ID
        • クラスタが配置されているロケーション(zone/ZONE または locations/LOCATION
        • クラスタの名前: projects/CLUSTER_NAME
    • 関連リンク(特に次のフィールド):
      • VirusTotal インジケーター: VirusTotal の分析ページへのリンク。
  3. [JSON] タブをクリックして、次のフィールドを確認します。

+processes: 検出結果に関連するすべてのプロセスを含む配列。この配列には、子シェルと親プロセスが含まれます。+resource: +project_display_name: アセットを含むプロジェクトの名前。+sourceProperties: +VM_Instance_Name: Pod が実行された GKE ノードの名前。

ステップ 2: クラスタとノードを確認する

  1. Google Cloud コンソールで [Kubernetes クラスタ] ページに移動します。

    [Kubernetes クラスタ] に移動

  2. Google Cloud コンソールのツールバーで、必要に応じて resource.project_display_name に表示されているプロジェクトを選択します。

  3. resource.name に表示されるクラスタを選択します。クラスタとそのオーナーに関するメタデータをメモします。

  4. [ノード] タブをクリックします。VM_Instance_Name に表示されているノードを選択します。

  5. [詳細] タブをクリックし、container.googleapis.com/instance_id アノテーションをメモします。

ステップ 3: Pod を確認する

  1. Google Cloud コンソールで [Kubernetes ワークロード] ページに移動します。

    Kubernetes ワークロードに移動

  2. 必要に応じて Google Cloud コンソールのツールバーで、検出結果の概要に含まれるクラスタの [リソースの完全な名前](resource.name)でメモしたプロジェクトを選択します。

  3. [システム ワークロードを表示] をクリックします。

  4. 検出結果の概要の [リソースの完全な名前](resource.name)でメモしたクラスタ名と、必要に応じてメモした Pod の [名前空間](kubernetes.pods.ns)で、ワークロードのリストをフィルタリングします。

  5. 前の検出結果の JSON でメモした VM_Instance_Name プロパティの値と一致するワークロード名をクリックします。[Pod の詳細] ページが開きます。

  6. [Pod の詳細] ページで、脅威の解決に役立つ Pod に関する情報をメモします。

ステップ 4: ログを確認する

  1. Google Cloud コンソールで、[ログ エクスプローラ] に移動します。

    [ログ エクスプローラ] に移動

  2. Google Cloud コンソールのツールバーで、resource.project_display_name に表示されているプロジェクトを選択します。

  3. [期間の選択] を目的の期間に設定します。

  4. 読み込まれたページで、次の操作を行います。

    1. 次のフィルタを使用して、Pod_Name の Pod ログを検索します。
      • resource.type="k8s_container"
      • resource.labels.project_id="resource.project_display_name"
      • resource.labels.location="location"
      • resource.labels.cluster_name="cluster_name"
      • resource.labels.namespace_name="Pod_Namespace"
      • resource.labels.pod_name="Pod_Name"
    2. 次のフィルタを使用して、クラスタの監査ログを検索します。
      • logName="projects/resource.project_display_name/logs/cloudaudit.googleapis.com%2Factivity"
      • resource.type="k8s_cluster"
      • resource.labels.project_id="resource.project_display_name"
      • resource.labels.location="location"
      • resource.labels.cluster_name="cluster_name"
      • Pod_Name
    3. 次のフィルタを使用して、GKE ノード コンソールのログを検索します。
      • resource.type="gce_instance"
      • resource.labels.instance_id="instance_id"

ステップ 5: 実行中のコンテナを調査する

コンテナがまだ実行中の場合は、コンテナ環境を直接調査できる場合があります。

  1. Google Cloud コンソールに移動します。

    Google Cloud コンソールを開く

  2. Google Cloud コンソールのツールバーで、resource.project_display_name に表示されているプロジェクトを選択します。

  3. [Cloud Shell をアクティブにする] をクリックします。

  4. 次のコマンドを実行して、クラスタの GKE 認証情報を取得します。

    ゾーンクラスタの場合は、次のコマンドを実行します。

      gcloud container clusters get-credentials cluster_name --zone location --project resource.project_display_name
    

    リージョン クラスタの場合は、次のコマンドを実行します。

      gcloud container clusters get-credentials cluster_name --region location --project resource.project_display_name
    
  5. コンテナ環境内でシェルを起動するには、次のコマンドを実行します。

      kubectl exec --namespace=Pod_Namespace -ti Pod_Name -c Container_Name -- /bin/sh
    

    このコマンドを実行するには、コンテナの /bin/sh にシェルがインストールされている必要があります。

    コンテナ内で実行中のすべてのプロセスを表示するには、コンテナシェルで次のコマンドを実行します。

      ps axjf
    

    このコマンドを実行するには、コンテナに /bin/ps がインストールされている必要があります。

ステップ 6: 攻撃とレスポンスの手法を調査する

  1. この検出結果タイプに対応する MITRE ATT&CK フレームワーク エントリ(Command and Scripting Interpreter: Unix Shell)を確認します。
  2. [VirusTotal インジケーター] でリンクをクリックして、VirusTotal で悪意があるというフラグが付いているバイナリの SHA-256 ハッシュ値を確認します。VirusTotal は、悪意のある可能性のあるファイル、URL、ドメイン、IP アドレスに関するコンテキストを提供する Alphabet 社のサービスです。
  3. 対応計画を策定するには、独自の調査結果と MITRE の調査、VirusTotal の分析を組み合わせる必要があります。

ステップ 7: レスポンスを実装する

次の対応計画は、この検出結果に適切な場合もありますが、運用に影響する可能性もあります。調査で収集した情報を慎重に評価して、検出結果を解決する最適な方法を判断してください。

  • コンテナが不正使用されているプロジェクトのオーナーに連絡します。
  • 不正使用されているコンテナを停止するか削除して、新しいコンテナに置き換えます。

次のステップ