VMware Carbon Black Enterprise EDR

Versión de integración: 6.0

Casos prácticos de productos

  1. Realiza acciones de investigación: obtén datos de CB Enterprise EDR como parte de un análisis de alertas en Google Security Operations.
  2. Realizar acciones de configuración: configurar feeds o listas de seguimiento de CB Enterprise EDR desde Google SecOps.

Permiso de producto

Conceptos necesarios para acceder a las APIs de Carbon Black Enterprise EDR (ThreatHunter):

  1. Nombre de host del servicio
  2. Claves de API
  3. RBAC
  4. Claves de organización

Nombres de host de servicio

Hay dos nombres de host de Carbon Black Cloud:

  • https://defense-<environment>.conferdeploy.net/
  • https://api-<environment>.conferdeploy.net/

Además, tenemos varios entornos, como los siguientes (no es una lista completa):

  • prod02
  • prod04
  • prod05

Para la API de Carbon Black Enterprise EDR (ThreatHunter), se usarán los siguientes nombres de host: https://defense-<environment>.conferdeploy.net/

Claves de API

Las APIs y los servicios de Carbon Black Enterprise EDR (ThreatHunter) se autentican mediante claves de API. Los usuarios pueden ver la configuración de las claves de API en la consola de Carbon Black Cloud, en Settings (Configuración) > API Keys (Claves de API).

Las claves de API constan de dos partes:

  • Clave secreta de la API (antes, clave de API).
  • ID de API (antes, ID de conector).

La autenticación se transmite a la API a través del encabezado HTTP X-Auth-Token.

  1. Para generar el encabezado adecuado, concatena la clave secreta de la API con el ID de la API y añade una barra diagonal entre ambos.
  2. Por ejemplo, si la clave secreta de la API es ABCD y el ID de la API es 1234, el encabezado HTTP X-Auth-Token correspondiente será: X-Auth-Token: ABCD/1234.

Todas las solicitudes a la API deben autenticarse mediante una clave secreta de API y un ID de API. Las solicitudes no autenticadas devuelven un error HTTP 401.

Cómo obtener una clave secreta de API y un ID de API

  1. Inicia sesión en tu organización de Carbon Black Cloud.
  2. Ve a Settings (Configuración) > API Keys (Claves de API).
  3. Haz clic en Añadir clave de API.
  4. Configurar el nombre, el nivel de acceso, etc.
  5. Obtén tu par de clave secreta de API e ID de API.

De esta forma, el administrador de una organización puede definir una clave de API y obtener acceso a la clave secreta de la API y al ID de la API, que se necesitarán para autenticar la solicitud de la API. Además, los administradores pueden restringir el uso de esta clave de API a un conjunto específico de direcciones IP por motivos de seguridad.

Niveles de acceso de la clave de API

Actualmente, hay cuatro niveles de acceso principales para las claves de API disponibles en la página API Keys. Cada nivel de acceso proporciona diferentes niveles de acceso a las rutas de la API:

  1. Nivel de acceso de clave personalizado: proporciona una autorización personalizable.

    • Las claves de API personalizadas son el resultado de nuestros esfuerzos por implementar el control de acceso basado en roles (RBAC).
    • Permite a los clientes aplicar controles de acceso y crear claves de API con los mínimos privilegios.
    • A las claves de API personalizadas se les pueden asignar roles de usuario o niveles de acceso.
  2. Nivel de acceso de clave de API: proporciona acceso a todas las APIs, excepto a la API Notifications y a la API Live Response.

  3. Nivel de acceso de clave de SIEM: proporciona acceso a la API Notifications.

  4. Nivel de acceso de clave de respuesta activa: proporciona acceso a todas las APIs disponibles en (1) más la API Live Response.

Servicio Carbon Black Enterprise EDR (ThreatHunter) a nivel de acceso a la API Correlación La API de la plataforma está en negrita

Categoría de API o servicio Niveles de acceso permitidos de la clave de API
PSC /appservices/* Personalizado (con los permisos adecuados)
CB-TH /threathunter/* API personalizada (con los permisos adecuados)
CB-LO /livequery/* Personalizado (con los permisos adecuados)
CB-D /integrationServices/v3/notification/ SIEM
CB-D /integrationServices/* APILive Response

Claves de organización

Además de las claves de API, muchas APIs o servicios de Carbon Black Cloud requieren una clave org_key en la ruta de la solicitud de API. Esto se hace para ayudar a los clientes que gestionan varias organizaciones.

Puedes encontrar tu org_key en la consola de Carbon Black Cloud, en Settings > API Keys (Configuración > Claves de API).

Configurar el acceso a la API para la integración de Google SecOps de Carbon Black Enterprise EDR (ThreatHunter)

Para configurar el acceso a la API para la integración de Google SecOps de Carbon Black Enterprise EDR (ThreatHunter), debes seguir estos pasos:

  1. Inicia sesión en la consola de Carbon Black Cloud y ve a Settings (Configuración) > API Access (Acceso a la API).
  2. En la página Acceso a la API, ve a Niveles de acceso.
  3. En la página Niveles de acceso, haz clic en + Añadir nivel de acceso.
  4. En la ventana que se abre, indica un nombre y una descripción para el nuevo nivel de acceso y selecciona los permisos como en la captura de pantalla que aparece a continuación:

    Lista de permisos obligatorios

  5. Vuelve a la pestaña Acceso a la API.

  6. Haz clic en + Añadir clave de API para crear una.

  7. En la pestaña que se ha abierto, rellena el campo obligatorio y selecciona el nivel de acceso que has configurado en el paso 4:

    Editar la configuración de la clave de API

  8. Cuando hagas clic en Guardar, se mostrarán el ID de API y la clave secreta de API. Guarda esos valores, ya que solo se mostrarán una vez.

  9. Una vez que se hayan guardado el ID de API y la clave secreta de la API, se habrá completado el acceso a la API en Carbon Black Enterprise EDR (ThreatHunter).

Configurar la integración de VMware Carbon Black Enterprise EDR (Threat Hunter) en Google SecOps

Para obtener instrucciones detalladas sobre cómo configurar una integración en Google SecOps, consulta Configurar integraciones.

Parámetros de integración

Usa los siguientes parámetros para configurar la integración:

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Nombre de la instancia Cadena N/A No Nombre de la instancia para la que quiere configurar la integración.
Descripción Cadena N/A No Descripción de la instancia.
Raíz de la API Cadena N/A URL raíz de la API de VMware Carbon Black Cloud.
Clave de organización Cadena N/A Clave de organización de VMware Carbon Black Cloud.
ID de API Cadena N/A ID de la API de VMware Carbon Black Cloud (ID de clave de API personalizada).
Clave secreta de la API Cadena N/A Clave secreta de la API de VMware Carbon Black Cloud (clave secreta de API personalizada).
Ejecutar de forma remota Casilla N/A No Marca el campo para ejecutar la integración configurada de forma remota. Una vez marcada, aparece la opción para seleccionar al usuario remoto (agente).

Acciones

Ping

Descripción

Prueba la conectividad con VMware Carbon Black Enterprise EDR con los parámetros proporcionados en la página de configuración de la integración de la pestaña Google Security Operations Marketplace.

Parámetros

N/A

Ejemplos de casos prácticos de guías

Esta acción se usa para probar la conectividad en la página de configuración de la integración de la pestaña Marketplace de Google Security Operations. Se puede ejecutar como una acción manual, pero no se usa en guías.

Fecha de ejecución

Esta acción no se ejecuta en entidades ni tiene parámetros de entrada obligatorios.

Resultados de la acción

Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Panel de casos
Tipo de resultado Valor/Descripción Tipo
Mensaje de salida*

La acción no debe fallar ni detener la ejecución de una guía:

  • Si se ha completado correctamente, imprime el mensaje "Successfully connected to the VMware Carbon Black Enterprise EDR server with the provided connection parameters!" (Te has conectado correctamente al servidor de VMware Carbon Black Enterprise EDR con los parámetros de conexión proporcionados).

La acción debería fallar y detener la ejecución de la guía:

  • Si no se ha podido conectar, imprime el mensaje "Failed to connect to the VMware Carbon Black Enterprise EDR server! Error: {0}".format(exception.stacktrace)
General

Descripción

Busca información sobre la actividad de los procesos en el host con el sensor de CB en función de los parámetros de búsqueda proporcionados. La acción acepta entidades de Host Google SecOps.

Parámetros

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Consulta Cadena N/A No Consulta que se va a ejecutar en la búsqueda de procesos. Por ejemplo, process_name:svchost.exe para buscar por nombre de proceso o process_hash:9520a99e77d6196d0d09833146424113 para buscar por hash de proceso.
Periodo Entero 4 No Especifica un periodo en horas para obtener las alertas.
Límite de registros Entero 20 Especifica cuántos registros puede devolver la acción.
Ordenar por Cadena N/A No Especifica un parámetro para ordenar los datos.
Ordenar por DDL Ascendente No Orden.

Ejemplos de casos prácticos de guías

Busca eventos causados por procesos en función de los parámetros de búsqueda proporcionados.

Durante el análisis de una alerta relacionada con un host específico gestionado por la plataforma de CB, el usuario quiere investigar el host y buscar eventos concretos causados por procesos que se ejecutan en función de los parámetros de búsqueda proporcionados. Los usuarios pueden ejecutar esta acción para buscar amenazas de forma proactiva y comprobar si hay procesos o eventos sospechosos en el host en cuestión.

Fecha de ejecución

Esta acción se ejecuta en la entidad Host.

Resultados de la acción

Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
{
"results": [
    {
        "alert_id": [
            "null/WSD2CQMT"
        ],
        "backend_timestamp": "2020-03-04T21:42:45.080Z",
        "device_id": 3078944,
        "device_name": "qaam\\manticorewin864",
        "device_policy_id": 6525,
        "device_timestamp": "2020-03-04T21:39:33.180Z",
        "enriched": true,
        "enriched_event_type": "CREATE_PROCESS",
        "event_description": "The script \"<share><link hash=\"74fcbbb574bfd505cf0680575a1c025f6cead071fce78ee0cc2c7bac7dd24ce9\">C:\\programdata\\wmirepair.bat</link></share>\" invoked the application \"<share><link hash=\"7eadc73f8aa77148ca289d5ce5c2632f3a157d313079583454c0421bb97d5646\">C:\\windows\\syswow64\\regsvr32.exe</link></share>\". ",
        "event_id": "ecc6954f5e6011eaa0de89cc027330db",
        "event_type": "childproc",
        "ingress_time": 1583358118950,
        "legacy": true,
        "org_id": "7DESJ9GN",
        "parent_guid": "7DESJ9GN-002efb20-00001604-00000000-1d5f26cab1067fe",
        "parent_pid": 5636,
        "process_guid": "7DESJ9GN-002efb20-00000d58-00000000-1d5f26d6615c568",
        "process_hash": [
            "629ae017d28848b68485bd2aeede9129",
            "74fcbbb574bfd505cf0680575a1c025f6cead071fce78ee0cc2c7bac7dd24ce9"
        ],
        "process_name": "c:\\programdata\\wmirepair.bat",
        "process_pid": [
            3416
        ],
        "process_username": [
            "NT AUTHORITY\\SYSTEM"
        ]
    },
    ...
]  }
Panel de casos
Tipo de resultado Valor o descripción Tipo
Mensaje de salida*

La acción no debe fallar ni detener la ejecución de una guía:

  • Si se ha completado correctamente, imprime "Found process information for the following entities:\n {0}".format( entity.Identifiers list)
  • Si is_success=False para todas las entidades proporcionadas, imprime "No se ha devuelto ningún resultado de búsqueda".
  • Si is_success=False para algunas de las entidades proporcionadas porque no se encuentran resultados para los parámetros de búsqueda especificados, imprime "Action was not able to find process information for the following entities:\n {0}".format(entity.Identifiers list) ("No se ha podido encontrar información de proceso para las siguientes entidades:\n {0}".format(entity.Identifiers list)).
  • Si is_success=False en algunas de las entidades proporcionadas porque se ha producido un error al ejecutar la búsqueda (por ejemplo, un tiempo de espera agotado): print "Failed to get results because of the errors running search for the following entities:/n {0}".format(entity.identifiers list)

La acción debería fallar y detener la ejecución de la guía:

  • Si se produce un error grave, como credenciales incorrectas, no hay conexión con el servidor u otro: imprime "Failed to execute action! Error: {0}".format(exception.stacktrace)
Ambos
Tabla

Nombre de la tabla: Process search results for {entityIdentifier}

Columnas:

  • ID de evento (event_id)
  • Tipo de evento ("enriched_event_type")
  • Nombre de proceso (process_name)
  • GUID del proceso (process_guid)
  • PID del proceso (process_pid)
  • GUID del proceso superior (parent_guid)
  • PID del proceso superior (parent_pid)
  • Procesar hash de archivo (process_hash)
  • Proceso Ejecutar como ("process_username")
  • Hora de creación ("device_timestamp")
  • Descripción del evento (event_description)
  • Dirección IPv4 local (event_network_local_ipv4)
  • Protocolo de red (event_network_protocol)
  • Dirección IPv4 remota (event_network_remote_ipv4)
  • Puerto remoto (event_network_remote_port)
Entidad

Obtiene los eventos asociados a un proceso por su GUID.

Descripción

Obtén eventos asociados a procesos específicos en función de la información de VMware Carbon Black Enterprise EDR. Esta acción puede obtener resultados más detallados sobre la actividad de un proceso específico que la acción "Búsqueda de procesos". Nota: Para que la acción funcione, el artefacto procesado por Google SecOps que se le haya pasado debe ser de tipo GUID de proceso.

Parámetros

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Criterios de búsqueda Cadena N/A No Especifica un criterio de búsqueda para la solicitud. Actualmente, solo se aceptan valores de "event_type" como criterios de búsqueda. Por ejemplo, netconn. Se aceptan varios valores como una cadena separada por comas.
Consulta Buscar N/A Consulta que se va a ejecutar en la búsqueda de procesos. Por ejemplo, "netconn_action:ACTION_CONNECTION_CREATE OR netconn_action:ACTION_CONNECTION_ESTABLISHED".
Periodo Entero 4 No Especifica un periodo en horas para obtener las alertas.
Límite de registros Entero 20 No Especifica cuántos registros puede devolver la acción.
Ordenar por Cadena N/A No Especifica un parámetro para ordenar los datos.
Ordenar por DDL Ascendente No Ordenar por

Ejemplos de casos prácticos de guías

Investiga la actividad de un proceso específico.

Durante el análisis de una alerta relacionada con un host específico gestionado por la plataforma de CB, se ha descubierto que el host tiene un proceso sospechoso en ejecución. El usuario de Google SecOps necesita una acción que use la función EDR de CB Enterprise para obtener eventos asociados a un proceso determinado de Google SecOps.

Fecha de ejecución

Esta acción no se ejecuta en entidades.

Resultados de la acción

Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
{
    "results": [
        {
            "backend_timestamp": "2020-04-26T18:38:50.128Z",
            "created_timestamp": "2020-05-19T03:56:53.483Z",
            "event_guid": "ufzid3pPQs-yrRlPBe8-ww",
            "event_hash": "ce6a949bcd3879897c9eac258ec6a091",
            "event_timestamp": "2020-04-26T18:34:16.258Z",
            "event_type": "netconn",
            "legacy": false,
            "netconn_action": "ACTION_CONNECTION_CREATE",
            "netconn_inbound": true,
            "netconn_local_ipv6": "FF020000000000000000000000010003",
            "netconn_local_port": 5355,
            "netconn_protocol": "PROTO_UDP",
            "netconn_remote_ipv6": "FE800000000000000000000000000000",
            "netconn_remote_port": 58994,
            "process_guid": "7DESJ9GN-002efb20-000003ec-00000000-1d5fb6d63ba535c",
            "process_pid": 1004
        },
        ...
    ]
}
Panel de casos
Tipo de resultado Valor o descripción Tipo
Mensaje de salida*

La acción no debe fallar ni detener la ejecución de una guía:

  • Si se ha completado correctamente, imprime "Found events for the following process guids:\n {0}".format( process guid list)
  • Si is_success=False para todos los guids de proceso proporcionados, imprime "No se ha devuelto ningún resultado de búsqueda".
  • Si is_success=False para algunas de las entidades proporcionadas porque no se encuentra el GUID del proceso especificado, se mostrará el mensaje "Action was not able to find information for the following processes:\n {0}".format(process guids list).
  • Si is_success=False en algunas de las entidades proporcionadas porque se ha producido un error al ejecutar la búsqueda (por ejemplo, un tiempo de espera agotado): print "Failed to get results because of errors running search for the following process guids:/n {0}".format(entity.identifiers list)

La acción debería fallar y detener la ejecución de la guía:

  • Si se produce un error grave, como credenciales incorrectas, no hay conexión con el servidor u otro: imprime "Failed to execute action! Error: {0}".format(exception.stacktrace)
General
Tabla

Nombre de la tabla: Found events for process {process artifact identifier}

Columnas: se deben generar automáticamente en función de los resultados devueltos.

Entidad

Enrich Hash

Descripción

Enriquece la entidad de hash de archivo de Google SecOps basándose en la información de VMware Carbon Black Enterprise EDR.

Ejemplos de casos prácticos de guías

Enriquece la entidad de hash de archivo de Google SecOps con información de CB Enterprise EDR.

Durante el procesamiento de una posible alerta de infección de malware asociada a un host que tiene un sensor de la plataforma CB, el usuario debe tener datos de enriquecimiento de CB Enterprise EDR (parte de la plataforma) sobre determinados hashes de archivos asociados a la alerta en cuestión por motivos de investigación. Por ejemplo, como parte del enriquecimiento, el usuario puede obtener metadatos de hash de archivo relacionados, cuándo se detectó por primera vez este hash de archivo en la organización y en qué host.

Fecha de ejecución

Esta acción se ejecuta en la entidad Filehash en formato Sha256.

Resultados de la acción

Enriquecimiento de entidades
Nombre del campo de enriquecimiento Fuente (clave JSON) Lógica: cuándo aplicar
CB_ENT_EDR.sha256 sha256 siempre
CB_ENT_EDR.md5 md5 siempre
CB_ENT_EDR.architecture arquitectura siempre
CB_ENT_EDR.available_file_size available_file_size siempre
CB_ENT_EDR.charset_id charset_id siempre
CB_ENT_EDR.comments comentarios Si no es nulo
CB_ENT_EDR.company_name company_name siempre
CB_ENT_EDR.copyright derechos de autor siempre
CB_ENT_EDR.file_available file_available siempre
CB_ENT_EDR.file_description file_description siempre
CB_ENT_EDR.file_size file_size siempre
CB_ENT_EDR.file_version file_version siempre
CB_ENT_EDR.internal_name internal_name siempre
CB_ENT_EDR.lang_id lang_id Si no es nulo
CB_ENT_EDR.original_filename original_filename siempre
CB_ENT_EDR.os_type os_type siempre
CB_ENT_EDR.private_build private_build Si no es nulo
CB_ENT_EDR.product_description product_description Si no es nulo
CB_ENT_EDR.product_name product_name siempre
CB_ENT_EDR.product_version product_version siempre
CB_ENT_EDR.special_build special_build Si no es nulo
CB_ENT_EDR.trademark marca Si no es nulo
CB_ENT_EDR.found_times num_devices siempre
CB_ENT_EDR.first_seen_device_timestamp first_seen_device_timestamp siempre
CB_ENT_EDR.first_seen_device_id first_seen_device_id siempre
CB_ENT_EDR.first_seen_device_name first_seen_device_name siempre
CB_ENT_EDR.last_seen_device_timestamp last_seen_device_timestamp siempre
CB_ENT_EDR.last_seen_device_id last_seen_device_id siempre
CB_ENT_EDR.last_seen_device_name last_seen_device_name siempre
Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
{
    "sha256": "e24dd278cec867486b68418c9066ffa9bd4f394dac3ba94125d58415f677f0f4",
    "architecture": [
        "amd64"
    ],
    "available_file_size": 207800,
    "charset_id": 1200,
    "comments": null,
    "company_name": "Example Organization",
    "copyright": "Copyright  © 2019",
    "file_available": true,
    "file_description": "OpenJDK Platform binary",
    "file_size": 207800,
    "file_version": "8.0.2320.9",
    "internal_name": "java",
    "lang_id": null,
    "md5": "afede6f64ed8878bc0cac57e1831a3bc",
    "original_filename": "java.exe",
    "os_type": "WINDOWS",
    "private_build": null,
    "product_description": null,
    "product_name": "OpenJDK Platform 8",
    "product_version": "8.0.2320.9",
    "special_build": null,
    "trademark": null
}
Panel de casos
Tipo de resultado Valor o descripción Tipo
Mensaje de salida*

La acción no debe fallar ni detener la ejecución de una guía:

  • Si la solicitud se completa correctamente y se ha enriquecido al menos una de las entidades proporcionadas, imprime "Successfully enriched entities: {0}".format([entity.Identifier]).
  • Si no se puede enriquecer ninguna de las entidades proporcionadas, imprime "No se ha enriquecido ninguna entidad".
  • Si no se encuentran datos en VMware Carbon Black Enterprise EDR para enriquecer entidades específicas, imprime "Action was not able to find VMware Carbon Black Enterprise EDR info to enrich the following entities: {0}".format([entity.identifier])
  • Si no se puede ejecutar una de las consultas de enriquecimiento (por ejemplo, se produce un error 500 al obtener una respuesta), pero la otra se ejecuta correctamente, is_success debe ser False, pero la acción debe enriquecerse con los datos que ha obtenido de la otra respuesta e imprimir: "The following entities were partially enriched because of the errors getting entity data:/n {0}".format(entityIdentifier list) ("Las siguientes entidades se han enriquecido parcialmente debido a los errores al obtener los datos de la entidad:/n {0}".format(entityIdentifier list)).

La acción debería fallar y detener la ejecución de la guía:

  • Si se produce un error grave, como credenciales incorrectas, no hay conexión con el servidor u otro error, imprime "Failed to execute Enrich Entities action! Error: {0}".format(exception.stacktrace)
General