Container Threat Detection のテスト

>

検出器を意図的にトリガーして、検出結果を確認することで、Container Threat Detection が機能していることを検証します。Container Threat Detection は、Security Command Center のプレミアム ティアの組み込みサービスです。Container Threat Detection の検出結果を表示するには、Security Command Center のソースとサービスの設定で有効にする必要があります。

始める前に

コンテナに対する潜在的な脅威を検出するには、クラスタがサポートされているバージョンの Google Kubernetes Engine(GKE)に存在していることを確認する必要があります。詳細については、サポートされている GKE バージョンの使用をご覧ください。

追加されたバイナリの実行

追加したバイナリの実行の検出をトリガーするには、コンテナでバイナリをドロップして実行します。この例では、最新の Ubuntu 18.04 イメージをデプロイし、/bin/ls を別の場所にコピーしてから実行します。イメージが Ubuntu 18.04 であってコンテナが不変である際でも、バイナリのコピーは元のコンテナ イメージの一部ではないため、これは予期しない状況です。

  1. Google Cloud Console に移動します。
    Google Cloud Console に移動
  2. テストに使用するコンテナが含まれているプロジェクトを選択します。
  3. [Cloud Shell をアクティブにする] をクリックします。
  4. Cloud Shell で、環境変数を設定します。

    1. サービス アカウントのメールアドレス

      export SERVICE_ACCOUNT_EMAIL=service-account-address@iam.gserviceaccount.com
      
    2. クラスタが配置されているゾーン

      export ZONE=cluster-zone
      
    3. コンテナが含まれているプロジェクト

      export CONSUMER_PROJECT=project-name
      
    4. クラスタ名

      export CLUSTER_NAME=cluster-name
      
  5. クラスタ コントロール プランにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $CONSUMER_PROJECT
    
  6. バイナリをドロップして実行します。

    tag="dropped-binary-$(date +%Y-%m-%d-%H-%M-%S)"
    kubectl run --restart=Never --rm=true --wait=true -i \
    --image marketplace.gcr.io/google/ubuntu1804:latest \
    $tag -- bash -c "cp /bin/ls /tmp/$tag; /tmp/$tag"
    

Container Threat Detection のロギングを構成している場合は、追加されたバイナリの実行が検出されます。これは、Security Command Center と Cloud Logging で確認できます。

追加されたライブラリの読み込み

追加されたライブラリの読み込みの検出をトリガーするには、コンテナにライブラリをドロップして読み込みます。この例では、最新の Ubuntu 18.04 イメージをデプロイし、/lib/x86_64-linux-gnu/libc.so.6 を別の場所にコピーしてから、ld を使用して読み込みます。イメージが Ubuntu 18.04 であってコンテナが不変である際でも、バイナリのコピーは元のコンテナ イメージの一部ではないため、これは予期しない状況です。

  1. Google Cloud Console に移動します。
    Google Cloud Console に移動
  2. テストに使用するコンテナが含まれているプロジェクトを選択します。
  3. [Cloud Shell をアクティブにする] をクリックします。
  4. Cloud Shell で、環境変数を設定します。

    1. サービス アカウントのメールアドレス

      export SERVICE_ACCOUNT_EMAIL=service-account-address@iam.gserviceaccount.com
      
    2. クラスタが配置されているゾーン

      export ZONE=cluster-zone
      
    3. コンテナが含まれているプロジェクト

      export CONSUMER_PROJECT=project-name
      
    4. クラスタ名

      export CLUSTER_NAME=cluster-name
      
  5. クラスタ コントロール プランにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $CONSUMER_PROJECT
    
  6. ライブラリをドロップして ld を使用して読み込みます。

    tag="dropped-library-$(date +%Y-%m-%d-%H-%M-%S)" \
    kubectl run --restart=Never --rm=true --wait=true -i \
    --image marketplace.gcr.io/google/ubuntu1804:latest \
    $tag -- bash -c "cp /lib/x86_64-linux-gnu/libc.so.6 /tmp/$tag; /lib64/ld-linux-x86-64.so.2 /tmp/$tag"
    

Container Threat Detection のロギングを構成している場合は、追加されたライブラリの読み込みが検出されます。これは、Security Command Center と Cloud Logging で確認できます。

リバースシェル

リバースシェルの検出をトリガーするには、TCP 接続されたソケットへの stdin リダイレクトを使用してバイナリを開始します。この例では、DNS ポート上の Google Public DNS8.8.8.8 へのリダイレクトで /bin/echo を開始します。この例を実行しても、何も出力されません。中間者(MITM)攻撃による外部コード インジェクションを防ぐため、この例では /bin/bash binary を使用しません。

  1. Google Cloud Console に移動します。
    Google Cloud Console に移動
  2. テストに使用するコンテナが含まれているプロジェクトを選択します。
  3. [Cloud Shell をアクティブにする] をクリックします。
  4. Cloud Shell で、環境変数を設定します。

    1. サービス アカウントのメールアドレス

      export SERVICE_ACCOUNT_EMAIL=service-account-address@iam.gserviceaccount.com
      
    2. クラスタが配置されているゾーン

      export ZONE=cluster-zone
      
    3. コンテナが含まれているプロジェクト

      export CONSUMER_PROJECT=project-name
      
    4. クラスタ名

      export CLUSTER_NAME=cluster-name
      
  5. クラスタ コントロール プランにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $CONSUMER_PROJECT
    
  6. Google Public DNS への /bin/echo リダイレクトでバイナリを開始します。

    tag="reverse-shell-$(date +%Y-%m-%d-%H-%M-%S)"
    kubectl run --restart=Never --rm=true --wait=true -i \
    --image marketplace.gcr.io/google/ubuntu1804:latest \
    $tag -- bash -c "/bin/echo >& /dev/tcp/8.8.8.8/53 0>&1"
    

これで、リバースシェルの検出結果が作成され、Security Command Center でこの検出結果が確認できます。また、Container Threat Detection のロギングを構成していた場合は、Cloud Logging でもこの検出結果を確認できます。

次のステップ