実行: リモート コマンド実行の可能性の検出

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

概要

ネットワーク ソケット経由で一般的な UNIX コマンドを生成するプロセスが検出されました。リバース シェルをエミュレートしている可能性があります。この動作は、システムへの不正なリモート アクセスを確立しようとする試みを示しています。これにより、攻撃者は不正使用されたマシンを直接操作しているかのように任意のコマンドを実行できるようになります。攻撃者は、ファイアウォールの制限を回避し、標的を継続的に制御するために、リバース シェルを頻繁に使用します。ソケットを介して開始されたコマンド実行の検出は、データ漏洩、ラテラル ムーブメント、さらなるエクスプロイトなど、広範囲にわたる悪意のあるアクティビティを可能にするため、重大なセキュリティ リスクを示します。これは、接続のソースと実行されたアクションを特定するために直ちに調査を必要とする重要な検出結果です。

顧客への対処方法

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

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

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

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

    • 検出された内容(特に次のフィールド):
      • プログラム バイナリ: 変更されたバイナリの絶対パス。
      • 引数: バイナリ実行時に渡される引数。
    • 影響を受けているリソース(特に次のフィールド):
      • リソースの完全な名前: プロジェクト番号、ロケーション、クラスタ名を含むクラスタの完全なリソース名
  3. 検出結果の詳細ビューで、[JSON] タブをクリックします。

  4. [JSON] で、次のフィールドを確認します。

    • resource:
      • project_display_name: クラスタを含むプロジェクトの名前。
    • finding:
      • processes:
      • binary:
        • path: 実行されたバイナリのフルパス。
      • args: バイナリの実行時に提供された引数。
    • sourceProperties:
      • Pod_Namespace: Pod の Kubernetes Namespace の名前。
      • Pod_Name: GKE Pod の名前。
      • Container_Name: 影響を受けるコンテナの名前。
      • Container_Image_Uri: デプロイされているコンテナ イメージの名前。
      • VM_Instance_Name: Pod が実行された GKE ノードの名前。
  5. このコンテナで同様のタイミングで発生した他の検出結果を特定します。関連する検出結果は、このアクティビティがベスト プラクティスに従っていないのではなく、悪意のあるものであることを示している可能性があります。

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

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

    Kubernetes クラスタに移動

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

  3. 検出結果の詳細の [概要] タブにある [リソースの完全な名前] 行のクラスタを選択します。クラスタとそのオーナーに関するメタデータをメモします。

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

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

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

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

    Kubernetes ワークロードに移動

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

  3. 必要に応じて、検出結果の詳細の [概要] タブにある [リソースの完全な名前] 行のクラスタと、[Pod_Namespace] に表示されている Pod の名前空間でフィルタリングします。

  4. Pod_Name に表示されている 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 PROJECT_NAME
    

    リージョン クラスタの場合:

    gcloud container clusters get-credentials CLUSTER_NAME \
          --region LOCATION \
          --project PROJECT_NAME
    

    次のように置き換えます。

    • CLUSTER_NAME: resource.labels.cluster_name に表示されているクラスタ
    • LOCATION: resource.labels.location に表示されているロケーション
    • PROJECT_NAME: resource.project_display_name に表示されているプロジェクト名
  5. 実行されたバイナリを取得します。

    kubectl cp \
          POD_NAMESPACE/POD_NAME:PROCESS_BINARY_FULLPATH \
          -c CONTAINER_NAME \
          LOCAL_FILE
    

    local_file は、追加されたバイナリを格納するローカル ファイルのパスに置き換えます。

  6. 次のコマンドを実行して、コンテナ環境に接続します。

    kubectl exec \
          --namespace=POD_NAMESPACE \
          -ti POD_NAME \
          -c CONTAINER_NAME \
          -- /bin/sh
    

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

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

  1. この検出結果タイプに対応する MITRE ATT&CK フレームワーク エントリ(Command and Scripting Interpreter)を確認します。
  2. 対応計画を策定するには、独自の調査結果と MITRE の調査を組み合わせる必要があります。

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

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

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

次のステップ