Modificar o conteúdo para usar o ASIM (Advanced Security Information Model) (visualização pública)
O conteúdo de segurança normalizado no Microsoft Sentinel inclui regras de análise, consultas de caça e pastas de trabalho que funcionam com analisadores de normalização unificadores.
Você pode encontrar conteúdo normalizado e pronto para uso nas galerias e soluções do Microsoft Sentinel, criar seu próprio conteúdo normalizado ou modificar conteúdo personalizado existente para usar dados normalizados.
Este artigo explica como converter regras de análise existentes do Microsoft Sentinel para usar dados normalizados com o ASIM (Advanced Security Information Model).
Para entender como o conteúdo normalizado se encaixa na arquitetura ASIM, consulte o diagrama de arquitetura ASIM.
Gorjeta
Assista também ao webinar Deep Dive sobre a normalização de analisadores e conteúdo normalizado do Microsoft Sentinel ou revise os slides. Para obter mais informações, veja Passos seguintes.
Importante
ASIM está atualmente em pré-visualização. Os Termos Suplementares do Azure Preview incluem termos legais adicionais que se aplicam a funcionalidades do Azure que estão em versão beta, pré-visualização ou ainda não disponibilizadas para disponibilidade geral.
Modificar conteúdo personalizado para usar a normalização
Para permitir que seu conteúdo personalizado do Microsoft Sentinel use a normalização:
Modifique suas consultas para usar quaisquer analisadores unificadores relevantes para a consulta.
Modifique os nomes de campo em sua consulta para usar os nomes de campo de esquema normalizado.
Quando aplicável, altere as condições para usar os valores normalizados dos campos em sua consulta.
Exemplo de normalização para regras de análise
Por exemplo, considere o cliente Rare observado com alta regra analítica de DNS de contagem reversa de DNS, que funciona em eventos DNS enviados por servidores DNS 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
O código a seguir é a versão agnóstica de origem, que usa normalização para fornecer a mesma deteção para qualquer fonte que forneça eventos de consulta DNS. O exemplo a seguir usa analisadores ASIM internos:
_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 analisadores ASIM implantados no espaço de trabalho, substitua a primeira linha pelo seguinte código:
imDns(responsecodename='NXDOMAIN')
Diferenças entre analisadores internos e implantados no espaço de trabalho
As duas opções no exemplo acima são funcionalmente idênticas. A versão normalizada, independente da fonte, tem as seguintes diferenças:
Os
_Im_Dns
analisadores normalizados ouimDns
normalizados são usados em vez do analisador Infoblox.Os analisadores normalizados buscam apenas eventos de consulta DNS, portanto, não há necessidade de verificar o tipo de evento, conforme executado pelo
where ProcessName =~ "named" and Log_Type =~ "client"
na versão Infoblox.O
SrcIpAddr
campo é usado em vez deClient_IP
.A filtragem de parâmetros do analisador é usada para ResponseCodeName, eliminando a necessidade de cláusulas explícitas
where
.
Nota
Além de suportar qualquer fonte de DNS normalizada, a versão normalizada é mais curta e fácil de entender.
Se o esquema ou os analisadores não oferecerem suporte a parâmetros de filtragem, as alterações serão semelhantes, exceto que as condições de filtragem serão mantidas da consulta original. Por exemplo:
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
Veja mais informações sobre os seguintes itens usados nos exemplos anteriores, na documentação do Kusto:
- deixar declaração
- em que operador
- Operador de extensão
- Junte-se ao operador
- Operador de resumo
- função isnotempty()
- função de agregação count()
Para obter mais informações sobre o KQL, consulte Visão geral da Kusto Query Language (KQL).
Outros recursos:
Próximos passos
Este artigo discute o conteúdo do ASIM (Advanced Security Information Model).
Para obter mais informações, consulte:
- Assista ao webinar Deep Dive sobre a normalização de analisadores e conteúdo normalizado do Microsoft Sentinel ou revise os slides
- Visão geral do ASIM (Advanced Security Information Model, modelo avançado de informações de segurança)
- Analisadores ASIM (Advanced Security Information Model)
- Esquemas ASIM (Advanced Security Information Model)
- Conteúdo do modelo avançado de informações de segurança (ASIM)