Compartir vía


Agregar datos de Microsoft Sentinel con reglas de resumen (versión preliminar)

Use las reglas de resumen en Microsoft Sentinel para agregar grandes conjuntos de datos en segundo plano para lograr una experiencia más fluida de las operaciones de seguridad en todos los niveles de registro. Los datos de resumen se precompilan en tablas de registro personalizadas y proporcionan un rendimiento rápido de las consultas, incluidas las consultas que se ejecutan en datos derivados de niveles de registro de bajo costo. Las reglas de resumen pueden ayudar a optimizar los datos con los siguientes fines:

  • Análisis e informes, especialmente sobre grandes conjuntos de datos y intervalos de tiempo, según sea necesario para el análisis de seguridad e incidentes, informes empresariales mensuales o anuales, etc.
  • Ahorro de costos en registros detallados, que puede conservar durante el tiempo que necesite en una tabla de registro básica más barata, y enviar datos resumidos solo a una tabla de Analytics para análisis e informes.
  • Seguridad y privacidad de datos mediante la eliminación u ofuscación de los detalles de privacidad en los datos que se pueden compartir resumidos y la limitación del acceso a las tablas con datos sin procesar.

Acceda a los resultados de las reglas de resumen mediante el Lenguaje de consulta Kusto (KQL) en las actividades de detección, investigación, búsqueda y creación de informes. Utilice los resultados resumidos de las normas para periodos más largos en investigaciones históricas, caza y actividades de cumplimiento.

Los resultados de la regla de resumen se almacenan en tablas independientes en el plan de datos de Analytics y se cobran en consecuencia. Para más información sobre los planes de datos y los costos de almacenamiento, consulte Selección de un plan de tabla basado en patrones de uso en un área de trabajo de Log Analytics.

Importante

Las reglas de resumen se encuentran actualmente en VERSIÓN PRELIMINAR. Consulte Términos de uso complementarios para las Versiones preliminares de Microsoft Azure para conocer los términos legales adicionales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

Microsoft Sentinel está disponible de forma general dentro de la plataforma unificada de operaciones de seguridad de Microsoft en el portal de Microsoft Defender. Para la versión preliminar, Microsoft Sentinel está disponible en el portal de Microsoft Defender sin Microsoft Defender XDR ni una licencia E5. Para obtener más información, consulte Microsoft Sentinel en el portal de Microsoft Defender.

Requisitos previos

Para crear reglas de resumen en Microsoft Sentinel:

Se recomienda que experimente con la consulta de la regla de resumen en la página Registros antes de crear la regla. Compruebe que la consulta no alcanza ni está cerca del límite de consulta y que la consulta genera el esquema previsto y los resultados esperados. Si la consulta está cerca de los límites de consulta, considere la posibilidad de usar un binSize de menos tamaño para procesar menos datos por rango. También puede modificar la consulta para devolver menos registros o quitar campos con un volumen superior.

Creación de una regla de resumen

Cree una nueva regla de resumen para agregar un conjunto de datos grande específico a una tabla dinámica. Configure la frecuencia de regla para determinar con qué frecuencia se actualiza el conjunto de datos agregado a partir de los datos sin procesar.

  1. En Azure Portal, en el menú de navegación de Microsoft Sentinel, en Configuración, seleccione Reglas de resumen (versión preliminar). En el portal de Defender, seleccione Microsoft Sentinel > Configuración > Reglas de resumen (versión preliminar). Por ejemplo:

    Captura de pantalla de la página Reglas de resumen de Azure Portal.

  2. Seleccione + Crear y especifique los detalles siguientes:

    • Nombre. Escriba un nombre significativo para la regla.

    • Description. Escriba una descripción opcional.

    • Tabla de destino. Defina la tabla de registro personalizada en la que se agregan los datos:

      • Si selecciona Tabla de registro personalizada existente, seleccione la tabla que desea usar.

      • Si selecciona Nueva tabla de registro personalizada, escriba un nombre descriptivo para la tabla. El nombre completo de la tabla usa la sintaxis siguiente: <tableName>_CL.

  3. Se recomienda habilitar la configuración de diagnóstico SummaryLogs en el área de trabajo para obtener visibilidad del historial de errores. Si la configuración de diagnóstico SummaryLogs no está habilitada, se le pedirá que la habilite en el área Configuración de diagnóstico.

    Si la configuración de diagnóstico SummaryLogs ya está habilitada, pero quiere modificarla, seleccione Configurar opciones de diagnóstico avanzadas. Cuando vuelva a la página del asistente para reglas de resumen, asegúrese de que selecciona Actualizar para actualizar los detalles de la configuración.

    Importante

    La configuración de diagnóstico SummaryLogs tiene costos adicionales. Para más información, consulte Configuración de diagnóstico en Azure Monitor.

  4. Seleccione Siguiente: Establecer lógica de resumen > para continuar.

  5. En la página Establecer lógica de resumen, escriba la consulta de resumen. Por ejemplo, para extraer contenido de Google Cloud Platform, es posible que desee escribir:

    GCPAuditLogs
    | where ServiceName == 'pubsub.googleapis.com'
    | summarize count() by Severity
    

    Para más información, consulte Escenarios de reglas de resumen de ejemplo y Lenguaje de consulta Kusto (KQL) en Azure Monitor.

  6. Seleccione Obtener una vista previa de los resultados para mostrar un ejemplo de los datos que recopilaría con la consulta configurada.

  7. En el área Programación de consultas, defina los detalles siguientes:

    • Frecuencia con la que desea que se ejecute la regla
    • Si desea que la regla se ejecute con algún tipo de retraso, en minutos
    • Cuándo desea que la regla empiece a ejecutarse

    Las horas definidas en la programación se basan en la columna timegenerated de los datos

  8. Seleccione Siguiente: Revisar y crear >>Guardar para completar la regla de resumen.

Las reglas de resumen existentes aparecen en la página Reglas de resumen (versión preliminar), en la que puede revisar el estado de la regla. Para cada regla, seleccione el menú de opciones al final de la fila para realizar cualquiera de las acciones siguientes:

  • Ver los datos actuales de la regla en la página Registros, como si fuera a ejecutar la consulta inmediatamente
  • Ver el historial de ejecución de la regla seleccionada
  • Deshabilitar o habilitar la regla
  • Editar la configuración de la regla

Para eliminar una regla, seleccione la fila correspondiente a esta y, a continuación, seleccione Eliminar en la barra de herramientas de la parte superior de la página.

Nota:

Azure Monitor también admite la creación de reglas de resumen a través de la API o una plantilla de Azure Resource Manager (ARM). Para más información, consulte Creación o actualización de una regla de resumen.

Escenarios de reglas de resumen de ejemplo

En esta sección se revisan escenarios comunes para crear reglas de resumen en Microsoft Sentinel y nuestras recomendaciones sobre cómo configurar cada regla. Para obtener más información y ejemplos, consulte Uso de reglas de resumen con registros auxiliares (proceso de ejemplo) y Orígenes de registro que se usarán para la ingesta de registros auxiliares.

Búsqueda rápida de una dirección IP malintencionada en el tráfico de red

Escenario: es un cazador de amenazas, y uno de los objetivos de su equipo es identificar todos los casos en los que una dirección IP malintencionada interactuó en los registros de tráfico de red de un incidente activo, en los últimos 90 días.

Desafío: Microsoft Sentinel ingiere actualmente varios terabytes de registros de red al día. Debe revisarlos rápidamente para encontrar coincidencias con la dirección IP malintencionada.

Solución: se recomienda usar reglas de resumen para hacer lo siguiente:

  1. Crear un conjunto de datos de resumen para cada dirección IP relacionada con el incidente, por ejemplo SourceIP, DestinationIP, MaliciousIP, RemoteIP, cada una de ellas mostrando los atributos importantes, como IPType, FirstTimeSeen y LastTimeSeen.

    El conjunto de datos de resumen le permite buscar rápidamente una dirección IP específica y restringir el intervalo de tiempo en el que se encuentra la dirección IP. Puede hacerlo incluso si los eventos buscados se produjeron hace más de 90 días, lo que supera su período de retención del área de trabajo.

    En este ejemplo, configure el resumen para que se ejecute diariamente, de modo que la consulta agregue registros de resumen nuevos todos los días hasta que expire.

  2. Crear una regla de análisis que se ejecuta durante menos de dos minutos en el conjunto de datos de resumen, profundizando rápidamente en el intervalo de tiempo concreto en el que la dirección IP malintencionada interactuó con la red de la empresa.

    Asegúrese de configurar intervalos de ejecución de hasta cinco minutos como mínimo para dar cabida a diferentes tamaños de carga de resumen. Esto garantiza que no haya ninguna pérdida incluso aunque se produzca un retraso en la ingesta de eventos.

    Por ejemplo:

    let csl_columnmatch=(column_name: string) {
    summarized_CommonSecurityLog
    | where isnotempty(column_name)
    | extend
        Date = format_datetime(TimeGenerated, "yyyy-MM-dd"),
        IPaddress = column_ifexists(column_name, ""),
        FieldName = column_name
    | extend IPType = iff(ipv4_is_private(IPaddress) == true, "Private", "Public")
    | where isnotempty(IPaddress)
    | project Date, TimeGenerated, IPaddress, FieldName, IPType, DeviceVendor
    | summarize count(), FirstTimeSeen = min(TimeGenerated), LastTimeSeen = min(TimeGenerated) by Date, IPaddress, FieldName, IPType, DeviceVendor
    };
    union csl_columnmatch("SourceIP")
        , csl_columnmatch("DestinationIP") 
        , csl_columnmatch("MaliciousIP")
        , csl_columnmatch("RemoteIP")
    // Further summarization can be done per IPaddress to remove duplicates per day on larger timeframe for the first run
    | summarize make_set(FieldName), make_set(DeviceVendor) by IPType, IPaddress
    
  3. Ejecutar una búsqueda o correlación posterior con otros datos para completar la historia de ataque.

Generación de alertas sobre coincidencias de inteligencia sobre amenazas en datos de red

Genere alertas sobre coincidencias de inteligencia sobre amenazas en datos de red con mucho ruido, gran volumen y valor de seguridad bajo.

Escenario: debe crear una regla de análisis para que los registros de firewall comparen los nombres de dominio del sistema que han sido visitados con una lista de nombres de dominio de inteligencia sobre amenazas.

La mayoría de los orígenes de datos son registros sin procesar que son ruidosos y tienen un gran volumen, pero tienen un valor de seguridad menor, incluidas las direcciones IP, el tráfico de Azure Firewall, el tráfico de Fortigate, etc. Hay un volumen total de aproximadamente 1 TB al día.

Desafío: la creación de reglas independientes requiere varias aplicaciones lógicas, lo que conlleva gastos adicionales de configuración y mantenimiento.

Solución: se recomienda usar reglas de resumen para hacer lo siguiente:

  1. Crear una regla de resumen:

    1. Amplíe la consulta para extraer campos clave, como la dirección de origen, la dirección de destino y el puerto de destino de la tabla de CommonSecurityLog_CL, que es el CommonSecurityLog con el plan auxiliar.

    2. Realice una búsqueda interna con los indicadores activos de inteligencia sobre amenazas para identificar las coincidencias con nuestra dirección de origen. Esto le permite hacer referencia cruzada a los datos con amenazas conocidas.

    3. Información relevante del proyecto, incluida la hora generada, el tipo de actividad y las direcciones IP de origen malintencionadas, junto con los detalles de destino. Establezca la frecuencia con la que desea que se ejecute la consulta y la tabla de destino, como MaliciousIPDetection. Los resultados de esta tabla se encuentran en el nivel analítico y se cobran en consecuencia.

  2. Crear una alerta:

    Crear una regla de análisis en Microsoft Sentinel que alerte en función de los resultados de la tabla MaliciousIPDetection. Este paso es fundamental para la detección proactiva de amenazas y la respuesta a incidentes.

Regla de resumen de ejemplo:

CommonSecurityLog_CL​
| extend sourceAddress = tostring(parse_json(Message).sourceAddress), destinationAddress = tostring(parse_json(Message).destinationAddress), destinationPort = tostring(parse_json(Message).destinationPort)​
| lookup kind=inner (ThreatIntelligenceIndicator | where Active == true ) on $left.sourceAddress == $right.NetworkIP​
| project TimeGenerated, Activity, Message, DeviceVendor, DeviceProduct, sourceMaliciousIP =sourceAddress, destinationAddress, destinationPort

Uso de reglas de resumen con registros auxiliares (proceso de ejemplo)

En este procedimiento se describe un proceso de ejemplo de uso de reglas de resumen con registros auxiliares, mediante una conexión personalizada creada con una plantilla de ARM para ingerir datos de CEF desde Logstash.

  1. Configure el conector CEF personalizado en Logstash:

    1. Implemente la siguiente plantilla de ARM en el área de trabajo de Microsoft Sentinel para crear una tabla personalizada con reglas de recopilación de datos (DCR) y un punto de conexión de recopilación de datos (DCE):

      Implementación en Azure

    2. Tenga en cuenta los detalles siguientes de la salida de la plantilla de ARM:

      • tenant_id
      • data_collection_endpoint
      • dcr_immutable_id
      • dcr_stream_name
    3. Cree una aplicación de Microsoft Entra y anote el identificador de cliente y el secreto de la aplicación. Para más información, consulte Tutorial: envío de datos a registros de Azure Monitor con la API de ingesta de registros (Azure Portal).

    4. Use nuestro script de ejemplo para actualizar el archivo de configuración de Logstash. Las actualizaciones configuran Logstash para que envíe registros CEF a la tabla personalizada creada mediante la plantilla de ARM, transformando los datos JSON en formato DCR. En este script, asegúrese de que reemplaza los valores de marcador de posición por sus propios valores para la tabla personalizada y la aplicación Microsoft Entra que creó anteriormente.

  2. Compruebe que los datos CEF fluyen desde Logstash según lo previsto. Por ejemplo, en Microsoft Sentinel, vaya a la página Registros y ejecute la consulta siguiente:

    CefAux_CL
    | take 10
    
  3. Cree reglas de resumen que agreguen los datos CEF. Por ejemplo:

    • Búsqueda de datos de indicadores de peligro (IoC): busque indicadores específicos mediante la ejecución de consultas de resumen agregadas que aporten repeticiones únicas y, a continuación, consulte solo esas repeticiones para obtener resultados más rápido. En el ejemplo siguiente se muestra un ejemplo de cómo traer una fuente de Source Ip única junto con otros metadatos, los cuales se pueden usar posteriormente en búsquedas de indicadores de peligro:

      // Daily Network traffic trend Per Destination IP along with Data transfer stats 
      // Frequency - Daily - Maintain 30 day or 60 Day History. 
        Custom_CommonSecurityLog 
        | extend Day = format_datetime(TimeGenerated, "yyyy-MM-dd") 
        | summarize Count= count(), DistinctSourceIps = dcount(SourceIP), NoofByesTransferred = sum(SentBytes), NoofBytesReceived = sum(ReceivedBytes)  
        by Day,DestinationIp, DeviceVendor 
      
    • Consulte una línea de base de resumen para las detecciones de anomalías. En lugar de ejecutar las consultas en períodos históricos grandes, como 30 o 60 días, se recomienda ingerir los datos en registros personalizados y, a continuación, consultar solo los datos de la línea de base de resumen de las consultas como, por ejemplo, las detecciones de anomalías de series temporales. Por ejemplo:

      // Time series data for Firewall traffic logs 
      let starttime = 14d; 
      let endtime = 1d; 
      let timeframe = 1h; 
      let TimeSeriesData =  
      Custom_CommonSecurityLog 
        | where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime))) 
        | where isnotempty(DestinationIP) and isnotempty(SourceIP) 
        | where ipv4_is_private(DestinationIP) == false 
        | project TimeGenerated, SentBytes, DeviceVendor 
        | make-series TotalBytesSent=sum(SentBytes) on TimeGenerated from startofday(ago(starttime)) to startofday(ago(endtime)) step timeframe by DeviceVendor 
      

Vea más información sobre los siguientes elementos usados en los ejemplos anteriores, en la documentación de Kusto:

Para más información sobre KQL, consulte Introducción al Lenguaje de consulta Kusto (KQL).

Otros recursos: