Acceso inicial: Intento de compromiso de Log4j

En este documento, se describe un tipo de hallazgo de amenazas de Security Command Center. Los detectores de amenazas generan hallazgos de amenazas cuando identifican una posible amenaza en tus recursos de Cloud. Para obtener una lista completa de los hallazgos de amenazas disponibles, consulta el Índice de hallazgos de amenazas.

Descripción general

Este hallazgo se genera cuando se detectan las búsquedas de Java Naming and Directory Interface (JNDI) dentro de los encabezados o parámetros de URL. Estas búsquedas pueden indicar intentos de explotación de Log4Shell.

Event Threat Detection es la fuente de este hallazgo.

Cómo se debe responder

Para responder a este hallazgo, sigue los pasos que se indican a continuación:

Paso 1: Revisa los detalles del hallazgo

  1. Abre un hallazgo Initial Access: Log4j Compromise Attempt como se indica en Revisa detalles de hallazgos. Se abrirá el panel de detalles del hallazgo en la pestaña Resumen.

  2. En la pestaña Resumen, revisa la información de las secciones siguientes:

    • Qué se detectó
    • Recurso afectado
    • Vínculos relacionados, en especial, los campos siguientes:
      • URI de Cloud Logging: Es el vínculo a las entradas de Logging.
      • Método MITRE ATT&CK: Es el vínculo a la documentación de MITRE ATT&CK.
      • Hallazgos relacionados: Son los vínculos a los hallazgos relacionados.
    • En la vista de detalles del hallazgo, haz clic en la pestaña JSON.
    • En el archivo JSON, observa los campos que se indican a continuación.

    • properties

      • loadBalancerName: Es el nombre del balanceador de cargas que recibió la búsqueda de JNDI.
      • requestUrl: es la URL de la solicitud HTTP. Si está presente, contiene una búsqueda de JNDI.
      • requestUserAgent: El usuario-agente que envió la solicitud HTTP. Si está presente, contiene una búsqueda de JNDI.
      • refererUrl: La URL de la página que envió la solicitud HTTP. Si está presente, contiene una búsqueda de JNDI.

Paso 2: Revisa los registros

  1. En la consola de Google Cloud , accede al Explorador de registros y haz clic en el vínculo del campo URI de Cloud Logging del paso 1.
  2. En la página que se carga, verifica los campos httpRequest para tokens de cadena, como ${jndi:ldap://, que puedan indicar posibles intentos de explotación.

    Consulta CVE-2021-44228: Detecta explotaciones de Log4Shell en la documentación de Logging para ver las cadenas de ejemplo que se deben buscar y una consulta de ejemplo.

Paso 3: Investiga los métodos de ataque y respuesta

  1. Revisa la entrada del framework de MITRE ATT&CK para este tipo de resultado: Exploit Public-Facing Application.
  2. Haz clic en el vínculo de Hallazgos relacionados en la fila Hallazgos relacionados de la pestaña Resumen de los detalles del hallazgo para revisar los hallazgos relacionados. Los hallazgos relacionados son del mismo tipo y tienen la misma instancia y red.
  3. Para desarrollar un plan de respuesta, combina los resultados de la investigación con la investigación del MITRE.

Paso 4: Implementa la respuesta

El siguiente plan de respuesta podría ser adecuado para este hallazgo, pero también podría afectar las operaciones. Evalúa con cuidado la información que recopilas durante la investigación para determinar la mejor manera de resolver los hallazgos.

Ejemplo de JSON de hallazgo

A continuación, se muestra un ejemplo del JSON del hallazgo.

{
  "finding": {
    "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
    "resourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "state": "ACTIVE",
    "category": "Initial Access: Log4j Compromise Attempt",
    "sourceProperties": {
      "sourceId": {
        "projectNumber": "PROJECT_NUMBER",
        "customerOrganizationNumber": "ORGANIZATION_ID"
      },
      "detectionCategory": {
        "ruleName": "log4j_compromise_attempt"
      },
      "detectionPriority": "LOW",
      "affectedResources": [{
        "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
      }],
      "evidence": [{
        "sourceLogId": {
          "projectId": "PROJECT_ID",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": {
            "seconds": "1639690492",
            "nanos": 9.13836E8
          },
          "insertId": "INSERT_ID"
        }
      }],
      "properties": {
        "loadBalancerName": "LOAD_BALANCER_NAME",
        "requestUrl": "REQUEST_URL?${jndi:ldap://google.com}"
      },
      "findingId": "FINDING_ID",
      "contextUris": {
        "mitreUri": {
          "displayName": "MITRE Link",
          "url": "https://attack.mitre.org/techniques/T1190/"
        },
        "cloudLoggingQueryUri": [{
          "displayName": "Cloud Logging Query Link",
          "url": "https://console.cloud.google.com/logs/query;query\u003dtimestamp%3D%222021-12-16T21:34:52.913836Z%22%0AinsertId%3D%22INSERT_ID%22%0Aresource.labels.project_id%3D%22PROJECT_ID%22?project\u003dPROJECT_ID"
        }],
        "relatedFindingUri": {
        }
      }
    },
    "securityMarks": {
      "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks"
    },
    "eventTime": "2021-12-16T21:34:52.913Z",
    "createTime": "2021-12-16T21:34:55.022Z",
    "severity": "LOW",
    "workflowState": "NEW",
    "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/FINDING_ID",
    "mute": "UNDEFINED",
    "findingClass": "THREAT"
  },
  "resource": {
    "name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "projectName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "projectDisplayName": "PROJECT_ID",
    "parentName": "//cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER",
    "parentDisplayName": "FOLDER_DISPLAY_NAME",
    "type": "google.cloud.resourcemanager.Project",
    "folders": [{
      "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER",
      "resourceFolderDisplayName": "FOLDER_DISPLAY_NAME"
    }],
    "displayName": "PROJECT_ID"
  }
}

¿Qué sigue?