Изменение содержимого для использования расширенной информационной модели безопасности (ASIM)

Нормализованное содержимое безопасности в Microsoft Sentinel включает правила аналитики, запросы охоты и книги, которые работают с унифицировывающим анализатором нормализации.

Вы можете найти нормализованное, стандартное содержимое в Microsoft Sentinel коллекциях и решениях, создать собственное нормализованное содержимое или изменить существующее пользовательское содержимое для использования нормализованных данных.

В этой статье объясняется, как преобразовать существующие правила аналитики Microsoft Sentinel для использования нормализованных данных с помощью расширенной информационной модели безопасности (ASIM).

Чтобы понять, как нормализованное содержимое вписывается в архитектуру ASIM, см. схему архитектуры ASIM.

Изменение пользовательского содержимого для использования нормализации

Чтобы включить нормализацию пользовательского содержимого Microsoft Sentinel, выполните следующие действия:

Пример нормализации для правил аналитики

Например, рассмотрим правило аналитики редкого клиента, наблюдаемого с высоким числом обратных запросов DNS , которое работает с событиями DNS, отправляемыми 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

Следующий код является версией, не зависящей от источника, которая использует нормализацию для обеспечения того же обнаружения для любого источника, предоставляющего события запроса DNS. В следующем примере используются встроенные средства синтаксического анализа ASIM:

_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

Нормализованная версия, не зависящая от источника, имеет следующие отличия:

  • imDnsВместо _Im_Dns средства синтаксического анализа Infoblox используются нормализованные средства синтаксического анализа.

  • Нормализованные средства синтаксического анализа извлекает только события запроса DNS, поэтому нет необходимости проверять тип события, как это выполняется where ProcessName =~ "named" and Log_Type =~ "client" в версии Infoblox.

  • Поле SrcIpAddr используется вместо Client_IP.

  • Фильтрация параметров средства синтаксического анализа используется для ResponseCodeName, что устраняет необходимость в явных where предложениях.

Примечание.

Помимо поддержки любого нормализованного источника DNS, нормализованная версия короче и проще для понимания.

Если схема или средства синтаксического анализа не поддерживают параметры фильтрации, изменения аналогичны, за исключением того, что условия фильтрации сохраняются в исходном запросе. Например, вы можете:

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

Дополнительные сведения о следующих элементах, используемых в предыдущих примерах, см. в документации kusto:

Дополнительные сведения о KQL см. в статье Общие сведения о язык запросов Kusto (KQL).

Другие ресурсы