Compartir a través de


Modificación del contenido para usar el Modelo avanzado de información de seguridad (ASIM) (versión preliminar pública)

El contenido de seguridad normalizado de Microsoft Sentinel incluye reglas de análisis, consultas de búsqueda y libros que funcionan con analizadores de normalización unificados.

Puede encontrar contenido original normalizado en las galerías y soluciones de Microsoft Sentinel, crear su propio contenido normalizado o modificar el contenido personalizado existente para usar datos normalizados.

En este artículo se explica cómo convertir las reglas de análisis de Microsoft Sentinel existentes para usar datos normalizados con el Modelo avanzado de información de seguridad (ASIM).

Para entender cómo encaja el contenido normalizado en la arquitectura de ASIM, consulte el diagrama de arquitectura de ASIM.

Importante

ASIM está actualmente en versión preliminar. En la página Términos de uso complementarios para las Versiones preliminares de Microsoft Azure se incluyen términos legales adicionales que se aplican a las características de Azure que se encuentran en versión beta, versión preliminar o que todavía no se han publicado para su disponibilidad general.

Modifique el contenido personalizado para usar la normalización

Para permitir que su contenido personalizado de Microsoft Sentinel use la normalización:

  • Modifique sus consultas para usar cualquier analizador unificado pertinente para la consulta.

  • Modifique los nombres de campo de la consulta para usar los nombres de campo de esquema normalizados.

  • Si procede, cambie las condiciones para usar los valores normalizados de los campos en la consulta.

Normalización de ejemplo para reglas de análisis

Por ejemplo, considere la regla de análisis de DNS Rare client observed with high reverse DNS lookup count, que funciona en eventos de DNS enviados por servidores DNS de Infoblox:

let threshold = 200;
InfobloxNIOS
| where ProcessName =~ "named" and Log_Type =~ "client"
| where isnotempty(ResponseCode)
| where ResponseCode =~ "NXDOMAIN"
| summarize count() by Client_IP, bin(TimeGenerated,15m)
| where count_ > threshold
| join kind=inner (InfobloxNIOS
    | where ProcessName =~ "named" and Log_Type =~ "client"
    | where isnotempty(ResponseCode)
    | where ResponseCode =~ "NXDOMAIN"
    ) on Client_IP
| extend timestamp = TimeGenerated, IPCustomEntity = Client_IP

El código siguiente es la versión independiente de origen, que usa la normalización para proporcionar la misma detección para cualquier origen que proporcione eventos de consulta de DNS. En el ejemplo siguiente se usan analizadores de ASIM integrados:

_Im_Dns(responsecodename='NXDOMAIN')
| summarize count() by SrcIpAddr, bin(TimeGenerated,15m)
| where count_ > threshold
| join kind=inner (imDns(responsecodename='NXDOMAIN')) on SrcIpAddr
| extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr

Para usar analizadores de ASIM implementados en el área de trabajo, reemplace la primera línea por el código siguiente:

imDns(responsecodename='NXDOMAIN')

Diferencias entre los analizadores integrados y los implementados en el área de trabajo

Las dos opciones del ejemplo anterior son funcionalmente idénticas. La versión independiente de origen normalizada tiene las siguientes diferencias:

  • Se usa el analizador normalizado _Im_Dns o imDns en lugar del analizador de Infoblox.

  • Los analizadores normalizados solo capturan eventos de consulta de DNS, por lo que no es necesario comprobar el tipo de evento, tal y como hace where ProcessName =~ "named" and Log_Type =~ "client" en la versión de Infoblox.

  • El campo SrcIpAddr se usa en lugar de Client_IP.

  • El filtrado de parámetros del analizador se usa para ResponseCodeName, lo que elimina la necesidad de cláusulas where explícitas.

Nota

Además de admitir cualquier origen DNS normalizado, la versión normalizada es más corta y fácil de entender.

Si el esquema o los analizadores no admiten parámetros de filtrado, los cambios son similares, salvo que las condiciones de filtrado se quitan de la consulta original. Por ejemplo:

let threshold = 200;
imDns
| where isnotempty(ResponseCodeName)
| where ResponseCodeName =~ "NXDOMAIN"
| summarize count() by SrcIpAddr, bin(TimeGenerated,15m)
| where count_ > threshold
| join kind=inner (imDns
    | where isnotempty(ResponseCodeName)
    | where ResponseCodeName =~ "NXDOMAIN"
    ) on SrcIpAddr
| extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr

Pasos siguientes

En este artículo se aborda el contenido del Modelo avanzado de información de seguridad (ASIM).

Para más información, consulte: