Probar 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 Container Threat Detection, debe estar habilitada en la configuración de Servicios del 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. La ejecución del objeto binario es inesperada 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 diseñados para 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"
    

En este procedimiento de prueba, se debería crear un hallazgo ejecutado de objeto binario agregado que se puede ver en Security Command Center, y en Cloud Logging si configuraste Logging para Container Threat Detection.

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. La biblioteca cargada es inesperada 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"
    

En este procedimiento de prueba, se debería crear una biblioteca agregada cargada que puedes ver en Security Command Center y en Cloud Logging si configuraste Logging para Container Threat Detection.

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"
    

En este procedimiento de prueba, se debe crear una 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?