Prueba la detección de amenazas de contenedores

Verifica que la detección de amenazas a contenedores funcione. Para ello, activa de forma intencional los detectores y verifica de los resultados. La detección de amenazas a contenedores es un servicio integrado para el nivel Premium de Security Command Center. Para ver los resultados de la detección de amenazas a contenedores, debe estar habilitada en la configuración de fuentes y servicios de Security Command Center.

Antes de comenzar

Para detectar amenazas potenciales a tus contenedores, debes asegurarte de que tus clústeres estén en una versión compatible de Google Kubernetes Engine (GKE). Para obtener más información, consulta Usa una versión de GKE compatible.

Se ejecutó el objeto binario añadido

Para activar un resultado binario agregado, descarta un objeto binario en tu contenedor y ejecútalo. En este ejemplo, se implementa la última imagen de Ubuntu 18.04, copia /bin/ls en otra ubicación y, luego, la ejecuta. Esto es inesperado porque la copia del objeto binario no era parte de la imagen del contenedor original, incluso cuando esa imagen está en Ubuntu 18.04 y los contenedores están destinados a ser inmutables.

  1. Ve a Google Cloud Console.
    Ir a Google Cloud Console
  2. Selecciona el proyecto que contiene el contenedor que deseas usar para probar.
  3. Haz clic en Activate Cloud Shell (Activar Cloud Shell).
  4. En Cloud Shell, configura las variables de entorno:

    1. El correo electrónico de tu cuenta de servicio:

      export SERVICE_ACCOUNT_EMAIL=service-account-address@iam.gserviceaccount.com
      
    2. La zona en la que se encuentra tu clúster:

      export ZONE=cluster-zone
      
    3. El proyecto en el que se encuentra tu contenedor:

      export CONSUMER_PROJECT=project-name
      
    4. El nombre del clúster:

      export CLUSTER_NAME=cluster-name
      
  5. Accede al plan de control del clúster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $CONSUMER_PROJECT
    
  6. Suelta un objeto binario y ejecútalo:

    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"
    

Esto debería crear un resultado binario agregado que se puede ver en Security Command Center, y en Cloud Logging si configuraste Logging para la detección de amenazas a contenedores.

Se cargó la biblioteca agregada

Para activar un resultado de carga de la biblioteca agregada, descarta una biblioteca en tu contenedor y, luego, cárgala. En este ejemplo, se implementa la última imagen de Ubuntu 18.04, copia /lib/x86_64-linux-gnu/libc.so.6 en otra ubicación y, luego, se carga con ld. Esto es inesperado porque la copia de la biblioteca no formaba parte de la imagen del contenedor original, incluso si esa imagen está en Ubuntu 18.04, y los contenedores están destinados a ser inmutables.

  1. Ve a Google Cloud Console.
    Ir a Google Cloud Console
  2. Selecciona el proyecto que contiene el contenedor que deseas usar para probar.
  3. Haz clic en Activate Cloud Shell (Activar Cloud Shell).
  4. En Cloud Shell, configura las variables de entorno:

    1. El correo electrónico de tu cuenta de servicio:

      export SERVICE_ACCOUNT_EMAIL=service-account-address@iam.gserviceaccount.com
      
    2. La zona en la que se encuentra tu clúster:

      export ZONE=cluster-zone
      
    3. El proyecto en el que se encuentra tu contenedor:

      export CONSUMER_PROJECT=project-name
      
    4. El nombre del clúster:

      export CLUSTER_NAME=cluster-name
      
  5. Accede al plan de control del clúster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $CONSUMER_PROJECT
    
  6. Descarta una biblioteca y usa ld para cargarla:

    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"
    

Esto debería crear un resultado de carga de biblioteca agregada que puedes ver en Security Command Center y en Cloud Logging si configuraste Logging para la detección de amenazas a contenedores.

Shells inversas

Para activar un resultado de shell inverso, inicia un objeto binario con redireccionamiento stdin a un socket conectado a TCP. En este ejemplo, se inicia /bin/echo con redireccionamiento al DNS público de Google 8.8.8.8 en el puerto DNS. No se imprime nada cuando ejecutas este ejemplo. Para evitar cualquier inyección de código externo a través de un ataque de intermediarios (MITM), este ejemplo no usa el /bin/bash binary.

  1. Ve a Google Cloud Console.
    Ir a Google Cloud Console
  2. Selecciona el proyecto que contiene el contenedor que deseas usar para probar.
  3. Haz clic en Activate Cloud Shell (Activar Cloud Shell).
  4. En Cloud Shell, configura las variables de entorno:

    1. El correo electrónico de tu cuenta de servicio:

      export SERVICE_ACCOUNT_EMAIL=service-account-address@iam.gserviceaccount.com
      
    2. La zona en la que se encuentra tu clúster:

      export ZONE=cluster-zone
      
    3. El proyecto en el que se encuentra tu contenedor:

      export CONSUMER_PROJECT=project-name
      
    4. El nombre del clúster:

      export CLUSTER_NAME=cluster-name
      
  5. Accede al plan de control del clúster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $CONSUMER_PROJECT
    
  6. Inicia un objeto binario con el redireccionamiento /bin/echo para el DNS público de Google:

    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"
    

Esto debería crear una búsqueda de shell inversa que puedes ver en Security Command Center y en Cloud Logging si configuraste Logging para la detección de amenazas a contenedores.

¿Qué sigue?