Recopila registros de Microsoft Sentinel
Descripción general
Este analizador extrae campos de los registros JSON de Microsoft Sentinel, realiza transformaciones como la extracción de direcciones IP y la manipulación de cadenas, y asigna los datos extraídos a la UDM, incluidos los campos principal, objetivo, security_result y metadatos. También controla varios tipos de datos y combina las entidades extraídas en la estructura de la UDM.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Acceso a Microsoft Sentinel
Configura un feed en Google SecOps para transferir los registros de Microsoft Sentinel
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de Microsoft Sentinel).
- Selecciona Webhook como el Tipo de origen.
- Selecciona Microsoft Sentinel como el Tipo de registro.
- Haz clic en Siguiente.
- Opcional: Especifica valores para los siguientes parámetros de entrada:
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
\n
. - Espacio de nombres de activos: Espacio de nombres de activos.
- Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
- Haz clic en Siguiente.
- Revisa la configuración de tu nuevo feed en la pantalla Finalizar y, luego, haz clic en Enviar.
- Haz clic en Generate Secret Key para generar una clave secreta que autentique este feed.
- Copia y almacena la clave secreta, ya que no podrás volver a verla. Puedes volver a generar una clave secreta nueva, pero la regeneración de la clave secreta hace que la clave secreta anterior quede obsoleta.
- En la pestaña Detalles, copia la URL del extremo del feed del campo Información del extremo. Debes especificar esta URL de extremo en tu aplicación cliente.
- Haz clic en Listo.
Crea una clave de API para el feed de webhook
Ve a consola de Google Cloud > Credenciales.
Haz clic en Crear credenciales y selecciona Clave de API.
Restringe el acceso de la clave de API a la API de Google Security Operations.
Especifica la URL del extremo
- En tu aplicación cliente, especifica la URL del extremo HTTPS que se proporciona en el feed de webhook.
Para habilitar la autenticación, especifica la clave de API y la clave secreta como parte del encabezado personalizado en el siguiente formato:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Recomendación: Especifica la clave de API como un encabezado en lugar de hacerlo en la URL. Si tu cliente de webhook no admite encabezados personalizados, puedes especificar la clave de API y la clave secreta con parámetros de consulta en el siguiente formato:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Reemplaza lo siguiente:
ENDPOINT_URL
: Es la URL del extremo del feed.API_KEY
: Es la clave de API para autenticarse en Google Security Operations.SECRET
: Es la clave secreta que generaste para autenticar el feed.
Configura una app de lógica para incidentes de Microsoft Sentinel
Para configurar la app de lógica para incidentes de Microsoft Sentinel, sigue estos pasos:
- Accede al portal de Azure.
- Haz clic en Crear un recurso.
- Busca la app de lógica.
- Haz clic en Crear para iniciar el proceso de creación.
- Especifica valores para los siguientes parámetros de entrada:
- Suscripción: Selecciona la suscripción.
- Grupo de recursos: Selecciona el grupo de recursos.
- Nombre: Ingresa un nombre para la app de lógica.
- Región: Selecciona la región.
- Lugar de trabajo de estadísticas de registros: Selecciona el lugar de trabajo de estadísticas de registros.
- Haz clic en Revisar + crear.
- Haz clic en Crear.
- Después de crear la app de lógica, haz clic en Ir al recurso.
- Haz clic en Herramientas de desarrollo > Diseño de apps lógicas.
- Haz clic en Agregar activador.
- Busca Microsoft Sentinel.
- Selecciona Incidente de Microsoft Sentinel como activador.
- Si aún no creaste una conexión a Microsoft Sentinel, deberás hacerlo ahora. Haz clic en Crear y sigue las indicaciones para autenticarte.
- Haz clic en Insertar un paso nuevo.
- Haz clic en Agregar una acción.
- Busca y selecciona HTTP como la acción.
- Especifica valores para los siguientes parámetros de entrada:
- URI: Es la URL del extremo del feed.
- Método: POST
- Encabezados: Agrega los siguientes encabezados:
- Content-Type: application/json
- X-goog-api-key: Es la clave de API para autenticarse en Google Security Operations.
- X-Webhook-Access-Key: Es la clave secreta que generaste para autenticar el feed.
Configura una app de lógica para las alertas de Microsoft Sentinel
Para configurar la app de lógica para alertas de Microsoft Sentinel, sigue estos pasos:
- Ve a la página principal del portal de Azure.
- Haz clic en Crear un recurso.
- Busca la app de lógica.
- Haz clic en Crear para iniciar el proceso de creación.
- Especifica valores para los siguientes parámetros de entrada:
- Suscripción: Selecciona la suscripción.
- Grupo de recursos: Selecciona el grupo de recursos.
- Nombre: Ingresa un nombre para la app de lógica.
- Región: Selecciona la región.
- Lugar de trabajo de estadísticas de registros: Selecciona el lugar de trabajo de estadísticas de registros.
- Haz clic en Revisar + crear.
- Haz clic en Crear.
- Después de crear la app de lógica, haz clic en Ir al recurso.
- Haz clic en Herramientas de desarrollo > Logic App Designer.
- Haz clic en Agregar activador.
- Busca Microsoft Sentinel.
- Selecciona Alerta de Microsoft Sentinel como activador.
- Si aún no creaste una conexión a Microsoft Sentinel, deberás hacerlo ahora. Haz clic en Crear y sigue las instrucciones para autenticarte.
- Haz clic en Insertar un paso nuevo.
- Haz clic en Agregar una acción.
- Busca y selecciona HTTP como la acción.
- Especifica valores para los siguientes parámetros de entrada:
- URI: Es la URL del extremo del feed.
- Método: POST
- Encabezados: Agrega los siguientes encabezados:
- Content-Type: application/json
- X-goog-api-key: Es la clave de API para autenticarse en Google Security Operations.
- X-Webhook-Access-Key: Es la clave secreta que generaste para autenticar el feed.
Configura reglas de automatización para Microsoft Sentinel
Para configurar las reglas de automatización de Microsoft Sentinel, sigue estos pasos:
- Ve a tu espacio de trabajo de Microsoft Sentinel.
- Haz clic en Configuración > Automatización.
- Haz clic en Crear.
- Selecciona Regla de automatización.
- Especifica valores para los siguientes parámetros de entrada:
- Nombre: Ingresa un nombre para la regla de automatización.
- Activador: Selecciona Cuando se crea un incidente.
- Acciones: Selecciona Ejecutar libro de jugadas > App lógica creada para incidentes.
- Haz clic en Aplicar.
- Haz clic en Crear.
- Selecciona Regla de automatización.
- Especifica valores para los siguientes parámetros de entrada:
- Nombre: Ingresa un nombre para la regla de automatización.
- Activador: Selecciona Cuando se actualiza el incidente.
- Condición: Haz clic en Agregar > Condición (Y) > Estado > Cambió.
- Acciones: Selecciona Ejecutar libro de jugadas > App lógica creada para incidentes.
- Haz clic en Aplicar.
- Haz clic en Crear.
- Selecciona Regla de automatización.
- Especifica valores para los siguientes parámetros de entrada:
- Nombre: Ingresa un nombre para la regla de automatización.
- Activador: Selecciona Cuando se crea la alerta.
- Acciones: Selecciona Ejecutar libro de jugadas > App lógica creada para alertas.
- Haz clic en Aplicar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
AlertGenerationStatus |
security_result.detection_fields.AlertGenerationStatus |
Se asigna directamente desde el campo ExtendedProperties después del análisis de JSON. |
AlertLink |
principal.labels.AlertLink |
Se asignan directamente. |
AlertName |
security_result.rule_name |
Se asignan directamente. |
AlertSeverity |
security_result.severity |
Se asignan directamente y se convierten a mayúsculas. Si el valor es HIGH, MEDIUM, LOW, CRITICAL o UNKNOWN_SEVERITY, se asigna a security_result.severity . De lo contrario, se asigna a security_result.severity_details . |
AlertType |
security_result.threat_name |
Se asignan directamente. |
Category |
security_result.detection_fields.Category |
Se asigna directamente desde el campo ExtendedProperties después del análisis de JSON. |
CompromisedEntity |
principal.resource.attribute.labels.CompromisedEntity |
Se asignan directamente. |
CompromisedEntityId |
security_result.detection_fields.CompromisedEntityId |
Se asigna directamente desde el campo ExtendedProperties después del análisis de JSON. |
ConfidenceLevel |
security_result.confidence_details |
Se asignan directamente. |
ConfidenceScore |
security_result.detection_fields.ConfidenceScore |
Se asignan directamente. |
cribl_pipe |
additional.fields.cribl_pipe |
Se asignan directamente. |
Description |
security_result.description |
Se asignan directamente. |
DestinationDevice |
security_result.detection_fields.DestinationDevice O target.ip |
Se asigna desde el campo ExtendedProperties después del análisis de JSON. Si el valor es una dirección IP válida, se asigna a target.ip . De lo contrario, se asigna como un campo de detección. |
DestinationDeviceAddress |
target.ip |
Se asigna desde el campo ExtendedProperties después del análisis de JSON, solo si es una dirección IP válida. |
DeviceId |
security_result.detection_fields.DeviceId |
Se asigna directamente desde el campo ExtendedProperties después del análisis de JSON. |
DisplayName |
security_result.summary |
Se asignan directamente. |
EndTime |
about.labels.EndTime |
Se asignan directamente. |
Entities.Address |
principal.asset.ip |
Se extrae del array Entities después del análisis de JSON. Solo se asignan direcciones IP. |
Entities.HostName |
principal.asset.hostname O principal.asset.ip |
Se extrae del array Entities después del análisis de JSON. Si el valor es una dirección IP válida, se asigna a principal.asset.ip . De lo contrario, se asigna a principal.asset.hostname . |
Entities.IoTDevice.DeviceId |
security_result.detection_fields.IoTDeviceID |
Se extrae del array Entities después del análisis de JSON. |
Entities.IoTDevice.DeviceType |
security_result.detection_fields.IoTDeviceType |
Se extrae del array Entities después del análisis de JSON. |
Entities.IoTDevice.DeviceTypeId |
security_result.detection_fields.IoTDeviceTypeId |
Se extrae del array Entities después del análisis de JSON. |
Entities.IoTDevice.Importance |
security_result.detection_fields.IoTDeviceImportance |
Se extrae del array Entities después del análisis de JSON. |
Entities.IoTDevice.IoTSecurityAgentId |
security_result.detection_fields.IoTSecurityAgentId |
Se extrae del array Entities después del análisis de JSON. |
Entities.IoTDevice.Manufacturer |
security_result.detection_fields.IoT Manufacturer |
Se extrae del array Entities después del análisis de JSON. |
Entities.IoTDevice.OperatingSystem |
principal.asset.platform_software.platform_version |
Se extrae del array Entities después del análisis de JSON y se quitan los espacios finales. |
Entities.IoTDevice.PurdueLayer |
security_result.detection_fields.IoT PurdueLayer |
Se extrae del array Entities después del análisis de JSON. |
Entities.IoTDevice.Sensor |
security_result.detection_fields.IoT Sensor |
Se extrae del array Entities después del análisis de JSON. |
ExtendedProperties.Protocol |
security_result.detection_fields.Protocol |
Se asigna directamente desde el campo ExtendedProperties después del análisis de JSON. |
ExtendedProperties.SensorId |
security_result.detection_fields.SensorId |
Se asigna directamente desde el campo ExtendedProperties después del análisis de JSON. |
ExtendedProperties.SourceDevice |
principal.ip O security_result.detection_fields.SourceDevice |
Se asigna desde el campo ExtendedProperties después del análisis de JSON. Si el valor es una dirección IP válida, se asigna a principal.ip . De lo contrario, se asigna como un campo de detección. |
ExtendedProperties.SourceDeviceAddress |
principal.ip |
Se asigna desde el campo ExtendedProperties después del análisis de JSON, solo si es una dirección IP válida. |
IsIncident |
security_result.detection_fields.IsIncident |
Se asignan directamente y se convierten en cadenas. |
ProcessingEndTime |
about.labels.ProcessingEndTime |
Se asignan directamente. |
ProductComponentName |
principal.resource.attribute.labels.ProductComponentName |
Se asignan directamente. |
ProductName |
principal.resource.attribute.labels.ProductName |
Se asignan directamente. |
ProviderName |
principal.resource.attribute.labels.ProviderName |
Se asignan directamente. |
ResourceId |
principal.resource.product_object_id , target.resource.name |
Se asignan directamente. |
SourceComputerId |
principal.asset.asset_id |
Se asignan directamente y tienen el prefijo "SourceComputerId:". |
SourceSystem |
security_result.detection_fields.SourceSystem |
Se asignan directamente. |
StartTime |
about.labels.StartTime |
Se asignan directamente. |
Status |
security_result.detection_fields.Status |
Se asignan directamente. |
SystemAlertId |
metadata.product_log_id |
Se asignan directamente. |
Tactics |
security_result.attack_details.tactics.name |
Se extrae del campo Tactics después del análisis de JSON y la eliminación de la barra invertida. |
Techniques |
security_result.attack_details.techniques.id |
Se extrae del campo Techniques después del análisis de JSON y la eliminación de la barra invertida. |
TenantId |
additional.fields.TenantId |
Se asignan directamente. |
TimeGenerated |
about.labels.TimeGenerated |
Se asignan directamente. |
timestamp |
metadata.event_timestamp , events.timestamp |
Se asignan directamente. |
VendorName |
metadata.vendor_name |
Se asignan directamente. |
VendorOriginalId |
additional.fields.VendorOriginalId |
Se asignan directamente. |
_time |
metadata.event_timestamp , events.timestamp |
Se analiza como una marca de tiempo con el formato UNIX o UNIX_MS. |
(lógica del analizador) | metadata.event_type |
Se establece en "USER_RESOURCE_ACCESS" si están presentes el principal, el destino y el ResourceId. De lo contrario, configúralo como "GENERIC_EVENT". |
(lógica del analizador) | metadata.log_type |
Se establece en "MICROSOFT_SENTINEL". |
(lógica del analizador) | metadata.product_name |
Se establece en "MICROSOFT_SENTINEL". |
Cambios
2023-11-03
- Se asignó “ResourceId” a “target.resource.name”.
- Cuando "ResourceId" no sea nulo y el evento tenga uno de "principal" o "target" como no nulo, asigna "metadata.event_type" a "USER_RESOURCE_ACCESS".
2023-08-31
- Sin embargo, el analizador se creó recientemente.