Compartilhar via


Agregar dados do Microsoft Sentinel com as regras de resumo (versão prévia)

Use as regras de resumo no Microsoft Sentinel para agregar grandes conjuntos de dados em segundo plano para uma experiência de operações de segurança mais tranquila em todas as camadas de log. Os dados de resumo são pré-compilados em tabelas de log personalizadas e fornecem um desempenho de consulta rápido, incluindo consultas executadas em dados derivados de camadas de log de baixo custo. As regras de resumo podem ajudar a otimizar seus dados para:

  • Análise e relatórios, especialmente em conjuntos de dados grandes e intervalos de tempo, conforme necessário para análise de segurança e incidentes, relatórios comerciais mensais ou anuais etc.
  • Economia de custos em logs detalhados, que você pode manter pelo tempo que precisar em uma tabela de log básica econômica e enviar os dados resumidos para uma tabela do Analytics para análise e relatórios.
  • Segurança e privacidade de dados, removendo ou ocultando detalhes de privacidade em dados compartilháveis ​​resumidos e limitando o acesso a tabelas com dados brutos.

Acesse os resultados de regras de resumo por meio do KQL (Linguagem de Consulta Kusto) em atividades de detecção, investigação, busca e relatórios. Use os resultados da regra de resumo por mais tempo em investigações históricas, busca e atividades de conformidade.

Os resultados das regras de resumo são armazenados em tabelas separadas no plano de dados de Análise e são cobrados de acordo. Para obter mais informações sobre os planos de dados e custos de armazenamento, confira Selecionar um plano de tabela com base em padrões de uso em um workspace do Log Analytics

Importante

No momento, as regras de resumo estão em VERSÃO PRÉVIA. Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para termos legais adicionais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

O Microsoft Sentinel agora está disponível para todos na plataforma de operações de segurança unificada da Microsoft no portal Microsoft Defender. Para saber mais, confira Microsoft Sentinel no portal do Microsoft Defender.

Pré-requisitos

Para criar as regras de resumo no Microsoft Sentinel:

Recomendamos que você experimente a consulta de regra de resumo na página Logs antes de criar sua regra. Verifique se a consulta não atinge ou se aproxima do limite de consulta e se ela produz o esquema pretendido e os resultados esperados. Se a consulta estiver perto dos limites de consulta, considere o uso de um binSize menor para processar menos dados por compartimento. Você também pode modificar a consulta para retornar menos registros ou remover campos com um volume maior.

Criar uma regra de resumo

Crie uma nova regra de resumo para agregar um grande conjunto específico de dados em uma tabela dinâmica. Configure a frequência da sua regra para determinar com que frequência seu conjunto de dados agregados é atualizado a partir dos dados brutos.

  1. No portal do Azure, no menu de navegação do Microsoft Sentinel, em Configuração, selecione Regras de resumo (Versão prévia). No portal do Defender, selecione Microsoft Sentinel > Configuração > Regras de resumo (Versão prévia). Por exemplo:

    Captura de tela da página de Regras de resumo no portal do Azure.

  2. Selecione + Criar e insira os seguintes detalhes:

    • Nome.. Insira um nome relevante para sua regra.

    • Descrição. Insira uma descrição opcional.

    • Tabela de destino. Defina a tabela de log personalizada onde os dados são agregados:

      • Se você selecionar a Tabela de log personalizada existente, selecione a tabela que deseja usar.

      • Se você selecionar Nova tabela de log personalizada, insira um nome significativo para sua tabela. O nome da tabela completa usa a seguinte sintaxe: <tableName>_CL.

  3. Recomendamos que você habilite as configurações de diagnóstico do SummaryLogs em seu workspace para obter visibilidade de execuções e falhas históricas. Se as configurações de diagnóstico de SummaryLogs não estiverem habilitadas, você será solicitado a habilitá-las na área de Configurações de diagnóstico.

    Se as configurações de diagnóstico do SummaryLogs já estiverem habilitadas, mas se você quiser modificar as configurações, selecione Definir as configurações avançadas de diagnóstico. Ao retornar à página do Assistente de regras de resumo, certifique-se de selecionar Atualizar para atualizar os detalhes da sua configuração.

    Importante

    As configurações de diagnóstico do SummaryLogs têm custos adicionais. Para obter mais informações, consulte as configurações de diagnóstico no Azure Monitor.

  4. Selecione Avançar: Definir a lógica de resumo > para continuar.

  5. Na página Definir a lógica de resumo, insira sua consulta de resumo. Por exemplo, para extrair conteúdo do Google Cloud Platform, você pode inserir:

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

    Para obter mais informações, confira Cenários de regras de resumo de exemplo e KQL (Linguagem de Consulta Kusto) no Azure Monitor.

  6. Selecione Resultados da versão prévia para mostrar um exemplo dos dados que você coletaria com a consulta configurada.

  7. Na área Agendamento de consultas, defina os seguintes detalhes:

    • Com que frequência você deseja que a regra seja executada
    • Se você deseja que a regra seja executada com qualquer tipo de atraso, em minutos
    • Quando você deseja que a regra comece a ser executada

    Os horários definidos no agendamento são baseados na coluna timegenerated em seus dados

  8. Selecione Avançar: Revisar + criar >>Salvar para concluir a regra de resumo.

As regras de resumo existentes são listadas na página Regras de resumo (Versão prévia) onde você pode revisar o status da sua regra. Para cada regra, selecione o menu de opções no final da linha para executar uma das seguintes ações:

  • Exiba os dados atuais da regra na página Logs, como se você fosse executar a consulta imediatamente
  • Exiba o histórico de execução da regra selecionada
  • Desabilite ou habilite a regra.
  • Edite a configuração da regra

Para excluir uma regra, selecione a linha de regra e, em seguida, selecione Excluir na barra de ferramentas na parte superior da página.

Observação

O Azure Monitor também dá suporte à criação de regras de resumo por meio da API ou de um modelo do ARM (Azure Resource Monitor). Para obter mais informações, confira Criar ou atualizar uma regra de resumo.

Cenários de regra de resumo de exemplo

Essa seção analisa os cenários comuns para criar regras de resumo no Microsoft Sentinel e nossas recomendações sobre como configurar cada regra. Para obter mais informações e exemplos, confira Usar as regras de resumo com os logs auxiliares (processo de exemplo) e Fontes de log a serem usadas para ingestão de Logs Auxiliares.

Localize rapidamente um endereço IP mal-intencionado no tráfego

Cenário: você busca ameaças e uma das metas da sua equipe é identificar todas as instâncias de quando um endereço IP mal-intencionado interagiu nos logs de tráfego de um incidente ativo, nos últimos 90 dias.

Desafio: no momento, o Microsoft Sentinel ingere vários terabytes de logs de rede por dia. Você precisa passar por eles rapidamente para encontrar correspondências para o endereço IP mal-intencionado.

Solução: recomendamos usar as regras de resumo para fazer o seguinte:

  1. Crie um conjunto de dados de resumo para cada endereço IP relacionado ao incidente, incluindo os SourceIP, DestinationIP, MaliciousIP, RemoteIP, cada um listando atributos importantes, como IPType, FirstTimeSeen e LastTimeSeen.

    O conjunto de dados de resumo permite que você pesquise rapidamente um endereço IP específico e reduza o intervalo de tempo em que o endereço IP é encontrado. Você pode fazer isso mesmo quando os eventos pesquisados ocorreram há mais de 90 dias, o que está além do período de retenção do workspace.

    Nesse exemplo, configure o resumo para ser executado diariamente, de modo que a consulta adicione novos registros de resumo todos os dias até expirar.

  2. Crie uma regra de análise que seja executada em menos de dois minutos no conjunto de dados de resumo, detalhando rapidamente o intervalo de tempo específico quando o endereço IP mal-intencionado interagiu com a rede da empresa.

    Certifique-se de configurar intervalos de execução de até cinco minutos no mínimo, para acomodar diferentes tamanhos de conteúdo de resumo. Isso garante que não haja perdas, mesmo quando há um atraso na ingestão de eventos.

    Por exemplo:

    let csl_columnmatch=(column_name: string) {
    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. Execute uma pesquisa ou correlação subsequente com outros dados para concluir a história do ataque.

Gere alertas em correspondências de inteligência contra ameaças em relação aos dados de rede

Gere alertas em correspondências de inteligência contra dados de rede ruidosos, de alto volume e de baixo valor de segurança.

Cenário: você precisa criar uma regra de análise para logs de firewall para corresponder a nomes de domínio no sistema que foram visitados em relação a uma lista de nomes de domínio de inteligência contra ameaças.

A maioria das fontes de dados são logs brutos que são ruidosos e têm alto volume, mas têm menor valor de segurança, incluindo endereços IP, tráfego do Firewall do Azure, tráfego do Fortigate e assim por diante. Há um volume total de cerca de 1 TB por dia.

Desafio: a criação de regras separadas requer vários aplicativos lógicos, exigindo sobrecarga e custos extras de instalação e manutenção.

Solução: recomendamos usar as regras de resumo para fazer o seguinte:

  1. Resuma os logs de firewall do McAfee a cada 10 minutos, atualizando os dados na mesma tabela personalizada a cada execução. As funções do ASIM podem ser úteis na consulta de resumo ao interagir com os logs do McAfee.

  2. Crie uma regra de análise para disparar um alerta sempre que um nome de domínio nos dados de resumo corresponder a uma entrada na lista de inteligência contra ameaças. Por exemplo:

    //let timeRange = 5m;
    //let httpstrim = "https://";
    //let httptrim = "http://";
    let timeRangeStart = now (-10m);
    let timeRangeEnd = (timeRangeStart + 10m);
    //Take visited domains from McAfee proxy
    adx('https://adxfwlog01.northeurope.kusto.windows.net/nwlogs').MappedMcAfeeSyslog
    | where timestamp between (timeRangeStart .. timeRangeEnd)
    | where isnotempty(URL)
    | extend URLDomain = parse_url(URL).Host
    | extend URLDomain = iff(isempty(URLDomain),URL,URLDomain)
    | extend URLDomain = extract(@"([0-9a-zA-Z-]{1,}\.[0-9a-zA-Z-]{2,3}\.[0-9a-zA-Z-]{2,3}|[0-9a-zA-Z-]{1,}\.[0-9a-zA-Z-]{2,10})$", 0, URLDomain)
    | where isnotempty(URLDomain)
    | summarize by URLDomain
    //Match visited domains with TI DomainName list
    | join kind=inner (ThreatIntelligenceIndicator
        | where isnotempty(DomainName)
        | where Active == true
        | where ExpirationDateTime > now()
        | summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by DomainName
          ) on $left.URLDomain == $right.DomainName
    | extend LogicApp = "SOC-McAfee-ADX-DstDomainAgainstThreatIntelligence"
    | project LatestIndicatorTime, TI_Domain = DomainName, Description, ConfidenceScore, AdditionalInformation, LogicApp
    

Usar as regras de resumo com os logs auxiliares (processo de exemplo)

Este procedimento descreve um processo de exemplo para usar as regras de resumo com logs auxiliares, usando uma conexão personalizada criada por meio de um modelo do ARM para ingerir dados CEF do Logstash.

  1. Configure seu conector CEF personalizado do Logstash:

    1. Implante o seguinte modelo do ARM em seu workspace do Microsoft Sentinel para criar uma tabela personalizada com o DCR (regras de coleta de dados) e um DCE (ponto de extremidade de coleta de dados):

      Implantar no Azure

    2. Observe os seguintes detalhes da saída do modelo do ARM:

      • tenant_id
      • data_collection_endpoint
      • dcr_immutable_id
      • dcr_stream_name
    3. Crie um aplicativo do Microsoft Entra e anote a ID do cliente e o Segredo do aplicativo. Para obter mais informações, confira Tutorial: Enviar dados para os logs do Azure Monitor com a API de ingestão de logs (portal do Azure).

    4. Use nosso script de exemplo para atualizar o arquivo de configuração do Logstash. As atualizações configuram o Logstash para enviar logs CEF para a tabela personalizada criada pelo modelo do ARM, transformando os dados JSON no formato DCR. Nesse script, certifique-se de substituir os valores de espaço reservado pelos seus próprios valores para a tabela personalizada e o aplicativo do Microsoft Entra que você criou anteriormente.

  2. Verifique se os dados do CEF estão fluindo do Logstash conforme o esperado. Por exemplo, no Microsoft Sentinel, vá para a página Logs e execute a seguinte consulta:

    CefAux_CL
    | take 10
    
  3. Crie regras de resumo que agregam os dados do CEF. Por exemplo:

    • Pesquisar dados de IoC (dados de comprometimento): busque os IoCs específicos executando consultas de resumo agregadas para trazer ocorrências únicas e, em seguida, consulte apenas essas ocorrências para obter resultados mais rápidos. O exemplo a seguir mostra um exemplo de como trazer um feed exclusivo Source Ip junto com outros metadados, que podem ser usados em pesquisas do IoC:

      // 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 uma linha de base de resumo para detecções de anomalias. Em vez de executar suas consultas em grandes períodos históricos, como 30 ou 60 dias, recomendamos que você ingira dados em logs personalizados e, então, consulte apenas dados de linha base resumidos, como para detecções de anomalias de série temporal. Por exemplo:

      // 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