Microsoft Sentinel 정규화된 보안 콘텐츠에는 통합 정규화 파서와 함께 작동하는 분석 규칙, 헌팅 쿼리 및 통합 문서가 포함됩니다.
Microsoft Sentinel 갤러리 및 솔루션에서 정규화된 기본 제공 콘텐츠를 찾고, 사용자 고유의 정규화된 콘텐츠를 만들거나, 정규화된 데이터를 사용하도록 기존 사용자 지정 콘텐츠를 수정할 수 있습니다.
이 문서에서는 ASIM(고급 보안 정보 모델)과 함께 정규화된 데이터를 사용하도록 기존 Microsoft Sentinel 분석 규칙을 변환하는 방법을 설명합니다.
정규화된 콘텐츠가 ASIM 아키텍처 내에서 어떻게 적합한지 이해하려면 ASIM 아키텍처 다이어그램을 참조하세요.
팁
또한 파서 정규화 및 정규화된 콘텐츠 Microsoft Sentinel 심층 분석 웨비나를 시청하거나 슬라이드를 검토합니다. 자세한 내용은 다음 단계를 참조하세요.
정규화를 사용하도록 사용자 지정 콘텐츠 수정
사용자 지정 Microsoft Sentinel 콘텐츠가 정규화를 사용하도록 설정하려면 다음을 수행합니다.
쿼리와 관련된 모든 통합 파서를 사용하도록 쿼리를 수정합니다.
정규화된 스키마 필드 이름을 사용하도록 쿼리에서 필드 이름을 수정합니다.
해당하는 경우 조건을 변경하여 쿼리에 있는 필드의 정규화된 값을 사용합니다.
분석 규칙에 대한 샘플 정규화
예를 들어 Infoblox DNS 서버에서 보내는 DNS 이벤트에서 작동하는 높은 역방향 DNS 조회 수 DNS 분석 규칙으로 관찰되는 드문 클라이언트 를 고려합니다.
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
정규화된 소스 중립적 버전은 다음과 같은 차이점이 있습니다.
_Im_Dns또는imDns정규화된 파서는 Infoblox 파서 대신 사용됩니다.정규화된 파서는 DNS 쿼리 이벤트만 가져오므로 Infoblox 버전에서 에서 수행한
where ProcessName =~ "named" and Log_Type =~ "client"대로 이벤트 유형을 확인할 필요가 없습니다.SrcIpAddr필드는 대신Client_IP사용됩니다.Parser 매개 변수 필터링은 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) 개요를 참조하세요.
기타 리소스:
다음 단계
이 문서에서는 ASIM(고급 보안 정보 모델) 콘텐츠에 대해 설명합니다.
자세한 내용은 다음 항목을 참조하세요.