DNS 정보 모델은 DNS 서버 또는 DNS 보안 시스템에서 보고하는 이벤트를 설명하는 데 사용되며 Microsoft Sentinel 소스 독립적 분석을 사용하도록 설정하는 데 사용됩니다.
자세한 내용은 정규화 및 ASIM(고급 보안 정보 모델)을 참조하세요.
스키마 개요
ASIM DNS 스키마는 DNS 프로토콜 작업을 나타냅니다. DNS 서버와 DNS 서버 로그 DNS 활동에 DNS 요청을 보내는 디바이스 둘 다. DNS 프로토콜 활동에는 DNS 쿼리, DNS 서버 업데이트 및 DNS 대량 데이터 전송이 포함됩니다. 스키마는 프로토콜 활동을 나타내므로 RFC 및 공식적으로 할당된 매개 변수 목록이 제어되며, 적절한 경우 이 문서에서 참조됩니다. DNS 스키마는 DNS 서버 감사 이벤트를 나타내지 않습니다.
DNS 서버에서 보고하는 가장 중요한 활동은 필드가 로 설정된 QueryDNS 쿼리 EventType 입니다.
DNS 이벤트에서 가장 중요한 필드는 다음과 같습니다.
쿼리가 실행된 도메인 이름을 보고하는 DnsQuery입니다.
요청이 생성된 IP 주소를 나타내는 SrcIpAddr ( IpAddr에 별칭 지정)입니다. DNS 서버는 일반적으로 SrcIpAddr 필드를 제공하지만 DNS 클라이언트는 이 필드를 제공하지 않고 SrcHostname 필드만 제공하는 경우가 있습니다.
EventResultDetails는 요청이 성공했는지 여부와 그렇지 않은 경우 그 이유를 보고합니다.
사용 가능한 경우 서버에서 쿼리에 제공한 답변을 보유하는 DnsResponseName입니다. ASIM은 응답을 구문 분석할 필요가 없으며 해당 형식은 원본마다 다릅니다.
원본에 구애받지 않은 콘텐츠에서 이 필드를 사용하려면 또는
contains연산자를 사용하여 콘텐츠를has검색합니다.
클라이언트 디바이스에서 수집된 DNS 이벤트에는 사용자 및 프로세스 정보도 포함될 수 있습니다.
DNS 이벤트 수집에 대한 지침
DNS는 많은 수의 컴퓨터를 교차할 수 있다는 고유한 프로토콜입니다. 또한 DNS는 UDP를 사용하므로 요청 및 응답은 결합 해제되며 서로 직접 관련이 없습니다.
다음 이미지는 4개의 세그먼트를 포함하여 간소화된 DNS 요청 흐름을 보여 줍니다. 실제 요청은 더 많은 세그먼트가 관련되어 있는 더 복잡할 수 있습니다.
요청 및 응답 세그먼트는 DNS 요청 흐름에서 서로 직접 연결되지 않으므로 전체 로깅으로 인해 상당한 중복이 발생할 수 있습니다.
기록할 가장 중요한 세그먼트는 클라이언트에 대한 응답입니다. 응답은 도메인 이름 쿼리, 조회 결과 및 클라이언트의 IP 주소를 제공합니다. 많은 DNS 시스템에서 이 세그먼트만 기록하지만 다른 부분을 로깅하는 데는 값이 있습니다. 예를 들어 DNS 캐시 중독 공격은 종종 업스트림 서버의 가짜 응답을 활용합니다.
데이터 원본이 전체 DNS 로깅을 지원하고 여러 세그먼트를 기록하도록 선택한 경우 쿼리를 조정하여 Microsoft Sentinel 데이터 중복을 방지합니다.
예를 들어 다음 정규화를 사용하여 쿼리를 수정할 수 있습니다.
_Im_Dns | where SrcIpAddr != "127.0.0.1" and EventSubType == "response"
파서
ASIM 파서에 대한 자세한 내용은 ASIM 파서 개요를 참조하세요.
기본 제공 파서
모든 ASIM 기본 파서를 통합하는 파서를 사용하고 구성된 모든 원본에서 분석이 실행되도록 하려면 통합 파서를 _Im_Dns 쿼리의 테이블 이름으로 사용합니다.
기본 제공 Microsoft Sentinel DNS 파서 목록은 ASIM 파서 목록을 참조하세요.
정규화된 자체 파서 추가
Dns 정보 모델에 대한 사용자 지정 파서를 구현할 때 형식 vimDns<vendor><Product>을 사용하여 KQL 함수의 이름을 지정합니다. DNS 통합 파서에 사용자 지정 파서를 추가하는 방법을 알아보려면 ASIM 파서 관리 문서를 참조하세요.
파서 매개 변수 필터링
DNS 파서는 필터링 매개 변수를 지원합니다. 이러한 매개 변수는 선택 사항이지만 쿼리 성능을 향상시킬 수 있습니다.
다음 필터링 매개 변수를 사용할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| Starttime | datetime | 이 시간 이후에 실행된 DNS 쿼리만 필터링합니다. 이 매개 변수는 TimeGenerated EventStartTime 및 EventEndTime 필드의 파서별 매핑에 관계없이 이벤트 시간의 표준 지정자인 필드를 필터링합니다. |
| Endtime | datetime | 이 시간 또는 그 이전에 실행이 완료된 DNS 쿼리만 필터링합니다. 이 매개 변수는 TimeGenerated EventStartTime 및 EventEndTime 필드의 파서별 매핑에 관계없이 이벤트 시간의 표준 지정자인 필드를 필터링합니다. |
| srcipaddr | 문자열 | 이 원본 IP 주소에서 DNS 쿼리만 필터링합니다. |
| domain_has_any | 동적/문자열 | (또는 query)에 domain 이벤트 도메인의 일부를 포함하여 나열된 도메인 이름이 있는 DNS 쿼리만 필터링합니다. 목록의 길이는 10,000개 항목으로 제한됩니다. |
| responsecodename | 문자열 | 응답 코드 이름이 제공된 값과 일치하는 DNS 쿼리만 필터링합니다. 예: NXDOMAIN |
| response_has_ipv4 | 문자열 | 응답 필드에 제공된 IP 주소 또는 IP 주소 접두사를 포함하는 DNS 쿼리만 필터링합니다. 단일 IP 주소 또는 접두사를 필터링하려는 경우 이 매개 변수를 사용합니다. 응답을 제공하지 않는 원본에 대한 결과는 반환되지 않습니다. |
| response_has_any_prefix | 동적 | 응답 필드에 나열된 IP 주소 또는 IP 주소 접두사를 포함하는 DNS 쿼리만 필터링합니다. 접두사는 로 .끝나야 합니다(예: 10.0.). IP 주소 또는 접두사 목록을 필터링하려는 경우 이 매개 변수를 사용합니다. 응답을 제공하지 않는 원본에 대한 결과는 반환되지 않습니다. 목록의 길이는 10,000개 항목으로 제한됩니다. |
| eventtype | 문자열 | 지정된 형식의 DNS 쿼리만 필터링합니다. 값을 지정하지 않으면 조회 쿼리만 반환됩니다. |
예를 들어 도메인 이름을 resolve 못한 마지막 날의 DNS 쿼리만 필터링하려면 다음을 사용합니다.
_Im_Dns (responsecodename = 'NXDOMAIN', starttime = ago(1d), endtime=now())
지정된 도메인 이름 목록에 대한 DNS 쿼리만 필터링하려면 다음을 사용합니다.
let torProxies=dynamic(["tor2web.org", "tor2web.com", "torlink.co"]);
_Im_Dns (domain_has_any = torProxies)
일부 매개 변수는 형식 dynamic 의 값 목록 또는 단일 문자열 값을 모두 허용할 수 있습니다. 동적 값이 필요한 매개 변수에 리터럴 목록을 전달하려면 동적 리터럴을 명시적으로 사용합니다. 예: dynamic(['192.168.','10.'])
정규화된 콘텐츠
정규화된 DNS 이벤트를 사용하는 분석 규칙의 전체 목록은 DNS 쿼리 보안 콘텐츠를 참조하세요.
스키마 세부 정보
DNS 정보 모델은 OSSEM DNS 엔터티 스키마와 정렬됩니다.
자세한 내용은 IANA(인터넷 할당 번호 기관) DNS 매개 변수 참조를 참조하세요.
일반 ASIM 필드
중요
모든 스키마에 공통된 필드는 ASIM 공통 필드 문서에서 자세히 설명합니다.
특정 지침이 있는 공통 필드
다음 목록에서는 DNS 이벤트에 대한 특정 지침이 있는 필드를 설명합니다.
| 필드 | 클래스 | 유형 | 설명 |
|---|---|---|---|
| EventType | 필수 | 열거 | 레코드에서 보고한 작업을 나타냅니다. DNS 레코드의 경우 이 값은 DNS 작업 코드입니다. 예: Query |
| EventSubType | 옵션 | 열거 | 또는 request 입니다 response. 대부분의 원본에서는 응답만 기록되므로 값이 응답인 경우가 많습니다. |
| EventResultDetails | 필수 | 열거 | DNS 이벤트의 경우 이 필드는 DNS 응답 코드를 제공합니다. 참고: - IANA는 값의 대/소문자를 정의하지 않으므로 분석에서 사례를 정규화해야 합니다. - 소스가 응답 코드 이름이 아닌 숫자 응답 코드만 제공하는 경우 파서는 이 값으로 보강할 조회 테이블을 포함해야 합니다. - 이 레코드가 응답이 아닌 요청을 나타내는 경우 NA로 설정합니다. 예: NXDOMAIN |
| EventSchemaVersion | 필수 | SchemaVersion(문자열) | 여기에 설명된 스키마 버전은 0.1.7입니다. |
| EventSchema | 필수 | 열거 | 여기에 설명된 스키마의 이름은 Dns입니다. |
| Dvc 필드 | - | - | DNS 이벤트의 경우 디바이스 필드는 DNS 이벤트를 보고하는 시스템을 참조합니다. |
모든 공통 필드
아래 표에 표시되는 필드는 모든 ASIM 스키마에 공통적으로 적용됩니다. 위에 지정된 모든 지침은 필드에 대한 일반 지침을 재정의합니다. 예를 들어 필드는 일반적으로 선택 사항이지만 특정 스키마에는 필수일 수 있습니다. 각 필드에 대한 자세한 내용은 ASIM 공통 필드 문서를 참조하세요.
| 클래스 | 필드 |
|---|---|
| 필수 |
-
EventCount - EventStartTime - EventEndTime - EventType - EventResult - EventProduct - EventVendor - EventSchema - EventSchemaVersion - Dvc |
| 권장 |
-
EventResultDetails - EventSeverity - EventUid - DvcIpAddr - DvcHostname - DvcDomain - DvcDomainType - DvcFQDN - DvcId - DvcIdType - DvcAction |
| 옵션 |
-
EventMessage - EventSubType - EventOriginalUid - EventOriginalType - EventOriginalSubType - EventOriginalResultDetails - EventOriginalSeverity - EventProductVersion - EventReportUrl - EventOwner - DvcZone - DvcMacAddr - DvcOs - DvcOsVersion - DvcOriginalAction - DvcInterface - AdditionalFields - DvcDescription - DvcScopeId - DvcScope |
원본 시스템 필드
| 필드 | 클래스 | 유형 | 설명 |
|---|---|---|---|
| Src | 별칭 | String | 원본 디바이스의 고유 식별자입니다. 이 필드는 SrcDvcId, SrcHostname 또는 SrcIpAddr 필드의 별칭을 지정할 수 있습니다. 예: 192.168.12.1 |
| SrcIpAddr | 권장 | IP 주소 | DNS 요청을 보낸 클라이언트의 IP 주소입니다. 재귀 DNS 요청의 경우 이 값은 일반적으로 보고 디바이스이며 대부분의 경우 로 127.0.0.1설정됩니다. 예: 192.168.12.1 |
| SrcPortNumber | 옵션 | 정수 | DNS 쿼리의 원본 포트입니다. 예: 54312 |
| IpAddr | 별칭 | SrcIpAddr에 대한 별칭 | |
| SrcGeoCountry | 옵션 | 국가 | 원본 IP 주소와 연결된 국가/지역입니다. 예: USA |
| SrcGeoRegion | 옵션 | 지역 | 원본 IP 주소와 연결된 지역입니다. 예: Vermont |
| SrcGeoCity | 선택 | 구/군/시 | 원본 IP 주소와 연결된 도시입니다. 예: Burlington |
| SrcGeoLatitude | 옵션 | 위도 | 원본 IP 주소와 연결된 지리적 좌표의 위도입니다. 예: 44.475833 |
| SrcGeoLongitude | 옵션 | 경도 | 원본 IP 주소와 연결된 지리적 좌표의 경도입니다. 예: 73.211944 |
| SrcRiskLevel | 옵션 | 정수 | 원본과 연결된 위험 수준입니다. 값은 의 범위 0100로 조정되어야 하며 0 , 무해하고 100 위험이 높은 경우 로 조정해야 합니다.예: 90 |
| SrcOriginalRiskLevel | 옵션 | String | 보고 디바이스에서 보고한 원본과 관련된 위험 수준입니다. 예: Suspicious |
| SrcHostname | 권장 | 호스트 이름(문자열) | 도메인 정보를 제외한 원본 디바이스 호스트 이름입니다. 예: DESKTOP-1282V4D |
| 호스트 이름 | 별칭 | SrcHostname에 대한 별칭 | |
| SrcDomain | 권장 | 도메인(문자열) | 원본 디바이스의 도메인입니다. 예: Contoso |
| SrcDomainType | 조건부 | 열거 |
알려진 경우 SrcDomain의 형식입니다. 가능한 값은 다음과 같습니다. - Windows (예: contoso)- FQDN (예: microsoft.com)SrcDomain을 사용하는 경우 필요합니다. |
| SrcFQDN | 옵션 | FQDN(문자열) | 사용 가능한 경우 도메인 정보를 포함하는 원본 디바이스 호스트 이름입니다. 참고: 이 필드는 기존 FQDN 형식과 Windows 도메인\호스트 이름 형식을 모두 지원합니다. SrcDomainType 필드는 사용된 형식을 반영합니다. 예: Contoso\DESKTOP-1282V4D |
| SrcDvcId | 옵션 | String | 레코드에 보고된 원본 디바이스의 ID입니다. 예: ac7e9755-8eae-4ffc-8a02-50ed7a2216c3 |
| SrcDvcScopeId | 옵션 | String | 디바이스가 속한 클라우드 플랫폼 scope ID입니다. SrcDvcScopeId는 Azure 구독 ID 및 AWS의 계정 ID에 매핑됩니다. |
| SrcDvcScope | 옵션 | String | 디바이스가 속한 클라우드 플랫폼 scope. SrcDvcScope는 Azure 구독 ID 및 AWS의 계정 ID에 매핑됩니다. |
| SrcDvcIdType | 조건부 | 열거 |
알려진 경우 SrcDvcId의 형식입니다. 가능한 값은 다음과 같습니다. - AzureResourceId- MDEid여러 ID를 사용할 수 있는 경우 목록의 첫 번째 ID를 사용하고 다른 ID를 각각 SrcDvcAzureResourceId 및 SrcDvcMDEid에 저장합니다. 참고: SrcDvcId 를 사용하는 경우 이 필드가 필요합니다. |
| SrcDeviceType | 옵션 | 열거 | 원본 디바이스의 형식입니다. 가능한 값은 다음과 같습니다. - Computer- Mobile Device- IOT Device- Other |
| SrcDescription | 옵션 | String | 디바이스와 연결된 설명 텍스트입니다. 예: Primary Domain Controller |
원본 사용자 필드
| 필드 | 클래스 | 유형 | 설명 |
|---|---|---|---|
| SrcUserId | 옵션 | String | 컴퓨터에서 읽을 수 있는 영숫자이며 원본 사용자의 고유한 표현입니다. 자세한 내용 및 추가 ID에 대한 대체 필드에 대한 자세한 내용은 사용자 엔터티를 참조하세요. 예: S-1-12-1-4141952679-1282074057-627758481-2916039507 |
| SrcUserScope | 옵션 | String | SrcUserId 및 SrcUsername이 정의된 Microsoft Entra 테넌트와 같은 scope. 또는 허용되는 값의 자세한 내용과 목록은 스키마 개요 문서의UserScope를 참조하세요. |
| SrcUserScopeId | 옵션 | String | SrcUserId 및 SrcUsername이 정의된 Microsoft Entra 디렉터리 ID와 같은 scope ID입니다. 자세한 내용 및 허용되는 값 목록은 스키마 개요 문서의UserScopeId를 참조하세요. |
| SrcUserIdType | 조건부 | UserIdType | SrcUserId 필드에 저장된 ID의 형식입니다. 허용되는 값에 대한 자세한 내용과 목록은 스키마 개요 문서의UserIdType을 참조하세요. |
| SrcUsername | 옵션 | 사용자 이름(문자열) | 사용 가능한 경우 도메인 정보를 포함하는 원본 사용자 이름입니다. 자세한 내용은 사용자 엔터티를 참조하세요. 예: AlbertE |
| SrcUsernameType | 조건부 | UsernameType |
SrcUsername 필드에 저장된 사용자 이름의 형식을 지정합니다. 자세한 내용과 허용되는 값 목록은 스키마 개요 문서의UsernameType을 참조하세요. 예: Windows |
| 사용자 | 별칭 | 별칭에서 SrcUsername으로 | |
| SrcUserType | 옵션 | UserType | 원본 사용자의 형식입니다. 자세한 내용 및 허용되는 값 목록은 스키마 개요 문서의UserType을 참조하세요. 예: Guest |
| SrcUserSessionId | 옵션 | String | 행위자의 로그인 세션의 고유 ID입니다. 예: 102pTUgC3p8RIqHvzxLCHnFlg |
| SrcOriginalUserType | 옵션 | String | 원본에서 제공하는 경우 원래 원본 사용자 유형입니다. |
원본 프로세스 필드
| 필드 | 클래스 | 유형 | 설명 |
|---|---|---|---|
| SrcProcessName | 옵션 | String | DNS 요청을 시작한 프로세스의 파일 이름입니다. 이 이름은 일반적으로 프로세스 이름으로 간주됩니다. 예: C:\Windows\explorer.exe |
| 프로세스 | 별칭 |
SrcProcessName에 대한 별칭 예: C:\Windows\System32\rundll32.exe |
|
| SrcProcessId | 옵션 | String | DNS 요청을 시작한 프로세스의 PID(프로세스 ID)입니다. 예: 48610176 참고: 형식은 다양한 시스템을 지원하기 위해 문자열로 정의되지만 Windows 및 Linux 이 값은 숫자여야 합니다. Windows 또는 Linux 컴퓨터를 사용하고 다른 형식을 사용하는 경우 값을 변환해야 합니다. 예를 들어 16진수 값을 사용한 경우 10진수 값으로 변환합니다. |
| SrcProcessGuid | 옵션 | GUID(문자열) | DNS 요청을 시작한 프로세스의 생성된 GUID(고유 식별자)입니다. 예: EF3BD0BD-2B74-60C5-AF5C-010000001E00 |
대상 시스템 필드
| 필드 | 클래스 | 유형 | 설명 |
|---|---|---|---|
| Dst | 별칭 | String | DNS 요청을 받은 서버의 고유 식별자입니다. 이 필드는 DstDvcId, DstHostname 또는 DstIpAddr 필드의 별칭을 지정할 수 있습니다. 예: 192.168.12.1 |
| DstIpAddr | 옵션 | IP 주소 | DNS 요청을 받은 서버의 IP 주소입니다. 일반 DNS 요청의 경우 이 값은 일반적으로 보고 디바이스이며 대부분의 경우 로 설정 127.0.0.1됩니다.예: 127.0.0.1 |
| DstGeoCountry | 옵션 | 국가 | 대상 IP 주소와 연결된 국가/지역입니다. 자세한 내용은 논리 형식을 참조하세요. 예: USA |
| DstGeoRegion | 옵션 | 지역 | 대상 IP 주소와 연결된 지역 또는 상태입니다. 자세한 내용은 논리 형식을 참조하세요. 예: Vermont |
| DstGeoCity | 선택 | 구/군/시 | 대상 IP 주소와 연결된 도시입니다. 자세한 내용은 논리 형식을 참조하세요. 예: Burlington |
| DstGeoLatitude | 옵션 | 위도 | 대상 IP 주소와 연결된 지리적 좌표의 위도입니다. 자세한 내용은 논리 형식을 참조하세요. 예: 44.475833 |
| DstGeoLongitude | 옵션 | 경도 | 대상 IP 주소와 연결된 지리적 좌표의 경도입니다. 자세한 내용은 논리 형식을 참조하세요. 예: 73.211944 |
| DstRiskLevel | 옵션 | 정수 | 대상과 연결된 위험 수준입니다. 값은 0에서 100까지의 범위로 조정되어야 하며, 0은 양성이고 100은 고위험입니다. 예: 90 |
| DstOriginalRiskLevel | 옵션 | String | 보고 디바이스에서 보고한 대상과 관련된 위험 수준입니다. 예: Malicious |
| DstPortNumber | 옵션 | 정수 | 대상 포트 번호입니다. 예: 53 |
| DstHostname | 옵션 | 호스트 이름(문자열) | 도메인 정보를 제외한 대상 디바이스 호스트 이름입니다. 사용할 수 있는 디바이스 이름이 없는 경우 이 필드에 관련 IP 주소를 저장합니다. 예: DESKTOP-1282V4D참고: DstIpAddr 가 지정된 경우 이 값은 필수입니다. |
| DstDomain | 옵션 | 도메인(문자열) | 대상 디바이스의 도메인입니다. 예: Contoso |
| DstDomainType | 조건부 | 열거 |
알려진 경우 DstDomain의 형식입니다. 가능한 값은 다음과 같습니다. - Windows (contoso\mypc)- FQDN (learn.microsoft.com)DstDomain을 사용하는 경우 필요합니다. |
| DstFQDN | 옵션 | FQDN(문자열) | 사용 가능한 경우 도메인 정보를 포함하는 대상 디바이스 호스트 이름입니다. 예: Contoso\DESKTOP-1282V4D 참고: 이 필드는 기존 FQDN 형식과 Windows 도메인\호스트 이름 형식을 모두 지원합니다. DstDomainType은 사용된 형식을 반영합니다. |
| DstDvcId | 옵션 | String | 레코드에 보고된 대상 디바이스의 ID입니다. 예: ac7e9755-8eae-4ffc-8a02-50ed7a2216c3 |
| DstDvcScopeId | 옵션 | String | 디바이스가 속한 클라우드 플랫폼 scope ID입니다. DstDvcScopeId는 Azure 구독 ID 및 AWS의 계정 ID에 매핑됩니다. |
| DstDvcScope | 옵션 | String | 디바이스가 속한 클라우드 플랫폼 scope. DstDvcScope는 Azure 구독 ID 및 AWS의 계정 ID에 매핑됩니다. |
| DstDvcIdType | 조건부 | 열거 |
알려진 경우 DstDvcId의 형식입니다. 가능한 값은 다음과 같습니다. - AzureResourceId- MDEidIf여러 ID를 사용할 수 있는 경우 위의 목록에서 첫 번째 ID를 사용하고 다른 ID를 각각 DstDvcAzureResourceId 또는 DstDvcMDEid 필드에 저장합니다. DstDeviceId를 사용하는 경우 필요합니다. |
| DstDeviceType | 옵션 | 열거 | 대상 디바이스의 유형입니다. 가능한 값은 다음과 같습니다. - Computer- Mobile Device- IOT Device- Other |
| DstDescription | 옵션 | String | 디바이스와 연결된 설명 텍스트입니다. 예: Primary Domain Controller |
DNS 특정 필드
| 필드 | 클래스 | 유형 | 설명 |
|---|---|---|---|
| DnsQuery | 필수 | String | 요청이 resolve 도메인입니다. 참고: - 일부 원본은 다른 형식으로 유효한 FQDN 쿼리를 보냅니다. 예를 들어 DNS 프로토콜 자체에서 쿼리는 끝에 점(.)을 포함하며 이를 제거해야 합니다. - DNS 프로토콜은 이 필드의 값 형식을 FQDN으로 제한하지만 대부분의 DNS 서버는 모든 값을 허용하므로 이 필드는 FQDN 값으로만 제한되지 않습니다. 특히 DNS 터널링 공격은 쿼리 필드에서 잘못된 FQDN 값을 사용할 수 있습니다. - DNS 프로토콜은 단일 요청에서 여러 쿼리를 허용하지만 이 시나리오가 전혀 없는 경우는 드뭅니다. 요청에 여러 쿼리가 있는 경우 이 필드에 첫 번째 쿼리를 저장한 다음 필요에 따라 AdditionalFields 필드에 나머지를 유지합니다. 예: www.malicious.com |
| 도메인 | 별칭 | DnsQuery에 대한 별칭입니다. | |
| DnsQueryType | 옵션 | 정수 |
DNS 리소스 레코드 형식 코드입니다. 예: 28 |
| DnsQueryTypeName | 권장 | 열거 |
DNS 리소스 레코드 형식 이름입니다. 참고: - IANA는 값의 대/소문자를 정의하지 않으므로 분석에서 필요에 따라 사례를 정규화해야 합니다. - 응답 코드 255에 대해 값 ANY 이 지원됩니다.- 값 TYPExxxx 은 매핑되지 않은 응답 코드에 대해 지원됩니다. 여기서 xxxx 는 BIND DNS 서버에서 보고한 응답 코드의 숫자 값입니다.-원본이 쿼리 형식 이름이 아닌 숫자 쿼리 형식 코드만 제공하는 경우 파서에 이 값으로 보강할 조회 테이블이 포함되어야 합니다. 예: AAAA |
| DnsResponseName | 옵션 | String | 레코드에 포함된 응답의 내용입니다. DNS 응답 데이터는 보고 디바이스 간에 일관되지 않으며 구문 분석이 복잡하며 원본에 구애받지 않는 분석에 대한 값이 적습니다. 따라서 정보 모델에는 구문 분석 및 정규화가 필요하지 않으며 Microsoft Sentinel 보조 함수를 사용하여 응답 정보를 제공합니다. 자세한 내용은 DNS 응답 처리를 참조하세요. |
| DnsResponseCodeName | 별칭 | EventResultDetails에 대한 별칭 | |
| DnsResponseCode | 옵션 | 정수 |
DNS 숫자 응답 코드입니다. 예: 3 |
| TransactionIdHex | 권장 | 16진수(문자열) | DNS 클라이언트에서 할당한 DNS 쿼리 고유 ID(16진수 형식)입니다. 이 값은 DNS 프로토콜의 일부이며 일반적으로 보고 디바이스에서 할당하는 네트워크 계층 세션 ID인 DnsSessionId와 다릅니다. |
| NetworkProtocol | 옵션 | 열거 | 네트워크 확인 이벤트에서 사용하는 전송 프로토콜입니다. 값은 UDP 또는 TCP일 수 있으며 가장 일반적으로 DNS용 UDP 로 설정됩니다. 예: UDP |
| NetworkProtocolVersion | 옵션 | 열거 |
NetworkProtocol의 버전입니다. IP 버전을 구분하는 데 사용하는 경우 및 값을 IPv4IPv6사용합니다. |
| DnsQueryClass | 옵션 | 정수 |
DNS 클래스 ID입니다. 실제로 는 IN 클래스(ID 1)만 사용되므로 이 필드는 가치가 떨어집니다. |
| DnsQueryClassName | 권장 | DnsQueryClassName(문자열) |
DNS 클래스 이름입니다. 실제로 는 IN 클래스(ID 1)만 사용되므로 이 필드는 가치가 떨어집니다. 예: IN |
| DnsFlags | 옵션 | String | 보고 디바이스에서 제공하는 플래그 필드입니다. 플래그 정보가 여러 필드에 제공된 경우 구분 기호로 쉼표와 연결합니다. DNS 플래그는 구문 분석이 복잡하며 분석에서 덜 자주 사용되므로 구문 분석 및 정규화가 필요하지 않습니다. Microsoft Sentinel 보조 함수를 사용하여 플래그 정보를 제공할 수 있습니다. 자세한 내용은 DNS 응답 처리를 참조하세요. 예: ["DR"] |
| DnsNetworkDuration | 옵션 | 정수 | DNS 요청이 완료되는 데 걸리는 시간(밀리초)입니다. 예: 1500 |
| 기간 | 별칭 | DnsNetworkDuration에 대한 별칭 | |
| DnsFlagsAuthenticated | 옵션 | 부울 | DNSSEC와 관련된 DNS AD 플래그는 응답에서 응답의 응답 및 기관 섹션에 포함된 모든 데이터가 해당 서버의 정책에 따라 서버에서 확인되었음을 나타냅니다. 자세한 내용은 RFC 3655 섹션 6.1 을 참조하세요. |
| DnsFlagsAuthoritative | 옵션 | 부울 | DNS AA 플래그는 서버의 응답이 신뢰할 수 있는지 여부를 나타냅니다. |
| DnsFlagsCheckingDisabled | 옵션 | 부울 | DNSSEC와 관련된 DNS CD 플래그는 쿼리에서 확인되지 않은 데이터가 쿼리를 보내는 시스템에서 허용됨을 나타냅니다. 자세한 내용은 RFC 3655 섹션 6.1 을 참조하세요. |
| DnsFlagsRecursionAvailable | 옵션 | 부울 | DNS RA 플래그는 응답에서 서버가 재귀 쿼리를 지원한다는 것을 나타냅니다. |
| DnsFlagsRecursionDesired | 옵션 | 부울 | DNS RD 플래그는 요청에서 클라이언트가 서버에서 재귀 쿼리를 사용하려고 했음을 나타냅니다. |
| DnsFlagsTruncated | 옵션 | 부울 | DNS TC 플래그는 응답이 최대 응답 크기를 초과할 때 잘렸했음을 나타냅니다. |
| DnsFlagsZ | 옵션 | 부울 | DNS Z 플래그는 이전 DNS 시스템에서 보고할 수 있는 사용되지 않는 DNS 플래그입니다. |
| DnsSessionId | 옵션 | 문자열 | 보고 디바이스에서 보고한 DNS 세션 식별자입니다. 이 값은 DNS 클라이언트에서 할당한 DNS 쿼리 고유 ID인 TransactionIdHex와 다릅니다. 예: EB4BFA28-2EAD-4EF7-BC8A-51DF4FDF5B55 |
| SessionId | 별칭 | DnsSessionId에 대한 별칭 | |
| DnsResponseIpCountry | 옵션 | 국가 | DNS 응답의 IP 주소 중 하나와 연결된 국가/지역입니다. 자세한 내용은 논리 형식을 참조하세요. 예: USA |
| DnsResponseIpRegion | 옵션 | 지역 | DNS 응답의 IP 주소 중 하나와 연결된 지역 또는 상태입니다. 자세한 내용은 논리 형식을 참조하세요. 예: Vermont |
| DnsResponseIpCity | 선택 | 구/군/시 | DNS 응답의 IP 주소 중 하나와 연결된 도시입니다. 자세한 내용은 논리 형식을 참조하세요. 예: Burlington |
| DnsResponseIpLatitude | 옵션 | 위도 | DNS 응답의 IP 주소 중 하나와 연결된 지리적 좌표의 위도입니다. 자세한 내용은 논리 형식을 참조하세요. 예: 44.475833 |
| DnsResponseIpLongitude | 옵션 | 경도 | DNS 응답의 IP 주소 중 하나와 연결된 지리적 좌표의 경도입니다. 자세한 내용은 논리 형식을 참조하세요. 예: 73.211944 |
검사 필드
다음 필드는 DNS 보안 디바이스가 수행한 검사를 나타내는 데 사용됩니다. 위협 관련 필드는 원본 주소, 대상 주소, 응답의 IP 주소 중 하나 또는 DNS 쿼리 도메인과 연결된 단일 위협을 나타냅니다. 둘 이상의 위협이 위협으로 식별된 경우 다른 IP 주소에 대한 정보를 필드에 AdditionalFields저장할 수 있습니다.
| 필드 | 클래스 | 유형 | 설명 |
|---|---|---|---|
| UrlCategory | 옵션 | String | DNS 이벤트 원본은 요청된 도메인의 범주를 조회할 수도 있습니다. 필드는 Microsoft Sentinel 네트워크 스키마에 맞게 UrlCategory라고 합니다. DomainCategory 는 DNS에 적합한 별칭으로 추가됩니다. 예: Educational \\ Phishing |
| DomainCategory | 별칭 | UrlCategory에 대한 별칭입니다. | |
| RuleName | 옵션 | String | 위협을 식별한 규칙의 이름 또는 ID입니다. 예: AnyAnyDrop |
| RuleNumber | 옵션 | 정수 | 위협을 식별한 규칙의 수입니다. 예: 23 |
| 규칙 | 별칭 | String | RuleName 값 또는 RuleNumber 값입니다. RuleNumber 값을 사용하는 경우 형식을 문자열로 변환해야 합니다. |
| RuleNumber | 옵션 | int | 경고와 연결된 규칙의 수입니다. 예. 123456 |
| RuleName | 옵션 | 문자열 | 경고와 연결된 규칙의 이름 또는 ID입니다. 예. Server PSEXEC Execution via Remote Access |
| ThreatId | 옵션 | String | 네트워크 세션에서 식별된 위협 또는 맬웨어의 ID입니다. 예: Tr.124 |
| ThreatCategory | 옵션 | String | DNS 이벤트 원본도 DNS 보안을 제공하는 경우 DNS 이벤트를 평가할 수도 있습니다. 예를 들어 위협 인텔리전스 데이터베이스에서 IP 주소 또는 도메인을 검색하고 위협 범주를 사용하여 도메인 또는 IP 주소를 할당할 수 있습니다. |
| ThreatIpAddr | 옵션 | IP 주소 | 위협이 식별된 IP 주소입니다. ThreatField 필드에는 ThreatIpAddr가 나타내는 필드의 이름이 포함됩니다. 도메인 필드에서 위협이 식별되면 이 필드는 비어 있어야 합니다. |
| ThreatField | 조건부 | 열거 | 위협이 식별된 필드입니다. 값은 , , DstIpAddrDomain또는 DnsResponseName입니다SrcIpAddr. |
| ThreatName | 옵션 | String | 보고 디바이스에서 보고한 대로 식별된 위협의 이름입니다. |
| ThreatConfidence | 옵션 | ConfidenceLevel(정수) | 식별된 위협의 신뢰 수준이며 0에서 100 사이의 값으로 정규화됩니다. |
| ThreatOriginalConfidence | 옵션 | String | 보고 디바이스에서 보고한 대로 식별된 위협의 원래 신뢰 수준입니다. |
| ThreatRiskLevel | 옵션 | RiskLevel(정수) | 식별된 위협과 관련된 위험 수준이며 0에서 100 사이의 값으로 정규화됩니다. |
| ThreatOriginalRiskLevel | 옵션 | String | 보고 디바이스에서 보고한 대로 식별된 위협과 관련된 원래 위험 수준입니다. |
| ThreatIsActive | 옵션 | 부울 | True이면 식별된 위협이 활성 위협으로 간주됩니다. |
| ThreatFirstReportedTime | 옵션 | datetime | IP 주소 또는 도메인이 처음으로 위협으로 식별된 경우 |
| ThreatLastReportedTime | 옵션 | datetime | IP 주소 또는 도메인이 마지막으로 위협으로 식별된 시간입니다. |
사용되지 않는 별칭 및 필드
다음 필드는 이전 버전과의 호환성을 위해 유지 관리되는 별칭입니다. 2021년 12월 31일에 스키마에서 제거되었습니다.
-
Query(별칭:DnsQuery) -
QueryType(별칭:DnsQueryType) -
QueryTypeName(별칭:DnsQueryTypeName) -
ResponseName(별칭:DnsResponseName) -
ResponseCodeName(별칭:DnsResponseCodeName) -
ResponseCode(별칭:DnsResponseCode) -
QueryClass(별칭:DnsQueryClass) -
QueryClassName(별칭:DnsQueryClassName) -
Flags(별칭:DnsFlags) SrcUserDomain
스키마 업데이트
스키마 버전 0.1.2의 변경 내용은 다음과 같습니다.
- 필드를
EventSchema추가했습니다. - 결합된 Flags 필드를 보강하는 전용 플래그 필드
DnsFlagsAuthoritative( , ,DnsFlagsRecursionAvailableDnsFlagsCheckingDisabled,DnsFlagsRecursionDesired,DnsFlagsTruncated및DnsFlagsZ)가 추가되었습니다.
스키마 버전 0.1.3의 변경 내용은 다음과 같습니다.
- 이제 스키마는 ,
Dst*및Process*User*필드를 명시적으로 문서화Src*합니다. - 최신 공통 필드 정의와 일치하도록 더 많은
Dvc*필드가 추가되었습니다. - 및 를 원본 및
Dst대상 시스템의 선행 식별자에 별칭으로 추가Src했습니다. - 선택적
DnsNetworkDuration및Duration가 추가되었습니다. 별칭이 추가되었습니다. - 선택적 지리적 위치 및 위험 수준 필드가 추가되었습니다.
스키마 버전 0.1.4의 변경 내용은 다음과 같습니다.
- 선택적 필드
ThreatIpAddr, ,ThreatField,ThreatName,ThreatConfidence,ThreatOriginalConfidence,ThreatOriginalRiskLevel,ThreatIsActive,ThreatFirstReportedTime및ThreatLastReportedTime를 추가했습니다.
스키마 버전 0.1.5의 변경 내용은 다음과 같습니다.
- , ,
SrcUserSessionId,SrcDvcScopeId,SrcDvcScope,DstDvcScopeId,DstDvcScope및DvcScope필드SrcUserScope가DvcScopeId추가되었습니다.
스키마 버전 0.1.6의 변경 내용은 다음과 같습니다.
- , ,
DnsResponseIpRegion,DnsResponseIpLatitudeDnsResponseIpCity및DnsResponseIpLongitude필드DnsResponseIpCountry가 추가되었습니다.
스키마 버전 0.1.7의 변경 내용은 다음과 같습니다.
- , ,
SrcOriginalRiskLevel,DstDescription,DstOriginalRiskLevel,SrcUserScopeId,NetworkProtocolVersion,Rule,RuleName및ThreatId필드SrcDescription가RuleNumber추가되었습니다.
원본별 불일치
정규화의 목표는 모든 원본이 일관된 원격 분석을 제공하도록 하는 것입니다. 필수 스키마 필드와 같은 필수 원격 분석을 제공하지 않는 원본은 정규화할 수 없습니다. 그러나 일부 불일치가 있더라도 일반적으로 필요한 모든 원격 분석을 제공하는 원본을 정규화할 수 있습니다. 불일치는 쿼리 결과의 완전성에 영향을 줄 수 있습니다.
다음 표에서는 알려진 불일치를 나열합니다.
| 원본 | 불일치 |
|---|---|
| DNS 커넥터 및 Log Analytics 에이전트를 사용하여 수집된 Microsoft DNS 서버 | 커넥터는 원래 이벤트 ID 264에 대한 필수 DnsQuery 필드를 제공하지 않습니다(동적 업데이트에 대한 응답). 데이터는 원본에서 사용할 수 있지만 커넥터에서 전달하지는 않습니다. |
| Corelight Zeek | Corelight Zeek은 필수 DnsQuery 필드를 제공하지 않을 수 있습니다. DNS 응답 코드 이름이 NXDOMAIN인 특정 경우 이러한 동작을 관찰했습니다. |
DNS 응답 처리
대부분의 경우 기록된 DNS 이벤트에는 크고 상세할 수 있는 응답 정보가 포함되지 않습니다. 레코드에 더 많은 응답 정보가 포함된 경우 레코드에 표시되는 대로 ResponseName 필드에 저장합니다.
또한 라는 추가 KQL 함수를 제공할 수도 있습니다. 이 함수 _imDNS<vendor>Response_는 분석되지 않은 응답을 입력으로 사용하고 다음 구조로 동적 값을 반환합니다.
[
{
"part": "answer"
"query": "yahoo.com."
"TTL": 1782
"Class": "IN"
"Type": "A"
"Response": "74.6.231.21"
}
{
"part": "authority"
"query": "yahoo.com."
"TTL": 113066
"Class": "IN"
"Type": "NS"
"Response": "ns5.yahoo.com"
}
...
]
동적 값의 각 사전에 있는 필드는 각 DNS 응답의 필드에 해당합니다. 항목에는 part , authority또는 additional 가 포함되어answer야 하며, 사전이 속한 응답에 파트를 반영해야 합니다.
팁
최적의 성능을 보장하려면 필요한 경우에만 함수를 imDNS<vendor>Response 호출하고 초기 필터링 후에만 호출하여 성능을 향상합니다.
DNS 플래그 처리
플래그 데이터에는 구문 분석 및 정규화가 필요하지 않습니다. 대신 보고 디바이스에서 제공하는 플래그 데이터를 Flags 필드에 저장합니다. 개별 플래그의 값을 결정하는 것이 직선인 경우 전용 플래그 필드를 사용할 수도 있습니다.
매개 변수가 없는 응답 또는 전용 플래그 필드를 입력으로 사용하고 다음 순서로 각 플래그를 나타내는 부울 값을 사용하여 동적 목록을 반환하는 라는 _imDNS<vendor>Flags_추가 KQL 함수를 제공할 수도 있습니다.
- 인증됨(AD)
- 신뢰할 수 있는(AA)
- 사용 안 함 확인(CD)
- RA(재귀 사용 가능)
- RECURSION Desired(RD)
- 잘림(TC)
- Z
다음 단계
자세한 내용은 다음을 참조하세요.