ASIM(고급 보안 정보 모델) DNS 정규화 스키마 참조(공개 미리 보기)
DNS 정보 모델은 DNS 서버 또는 DNS 보안 시스템에서 보고된 이벤트를 설명하는 데 사용되며 Microsoft Sentinel에서 원본 독립적 분석을 활성화하는 데 사용됩니다.
자세한 내용은 정규화 및 ASIM(고급 보안 정보 모델)을 참조하세요.
Important
DNS 정규화 스키마는 현재 미리 보기로 제공됩니다. 이 기능은 서비스 수준 계약 없이 제공되며 프로덕션 워크로드에는 권장되지 않습니다.
Azure Preview 추가 약관에는 베타, 미리 보기 또는 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 추가 법률 용어가 포함되어 있습니다.
스키마 개요
ASIM DNS 스키마는 DNS 프로토콜 작업을 나타냅니다. DNS 서버와 DNS 서버에 DNS 요청을 보내는 디바이스 모두 DNS 작업을 기록합니다. DNS 프로토콜 작업에는 DNS 쿼리, DNS 서버 업데이트 및 DNS 대량 데이터 전송이 포함됩니다. 스키마는 프로토콜 작업을 나타내기 때문에 RFC 및 공식적으로 할당된 매개 변수 목록에 의해 관리되며, 적절한 경우 이 문서에서 참조됩니다. DNS 스키마는 DNS 서버 감사 이벤트를 나타내지 않습니다.
DNS 서버에서 보고하는 가장 중요한 작업은 EventType
필드가 Query
로 설정된 DNS 쿼리입니다.
DNS 이벤트에서 가장 중요한 필드는 다음과 같습니다.
DnsQuery: 쿼리가 실행된 도메인 이름을 보고합니다.
SrcIpAddr(IpAddr에 대한 별칭): 요청이 생성된 IP 주소를 나타냅니다. DNS 서버는 일반적으로 SrcIpAddr 필드를 제공하지만 DNS 클라이언트는 경우에 따라 이 필드를 제공하지 않고 SrcHostname 필드만 제공합니다.
EventResultDetails: 요청이 성공했는지 여부와 성공하지 못한 이유를 보고합니다.
사용 가능한 경우 DnsResponseName은 쿼리에 대해 서버에서 제공한 답변을 보유합니다. ASIM은 응답을 구문 분석할 필요가 없으며 해당 형식은 원본마다 다릅니다.
원본에 구애받지 않는 콘텐츠에서 이 필드를 사용하려면
has
또는contains
연산자로 콘텐츠를 검색합니다.
클라이언트 디바이스에서 수집된 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 | 날짜/시간 | 이 시간 또는 그 이후에 실행된 DNS 쿼리만 필터링합니다. |
endtime | 날짜/시간 | 이 시간 또는 그 이전에 실행이 완료된 DNS 쿼리만 필터링합니다. |
srcipaddr | string | 이 원본 IP 주소의 DNS 쿼리만 필터링합니다. |
domain_has_any | 동적/문자열 | domain (또는 query )에 이벤트 도메인의 일부를 포함하여 나열된 도메인 이름이 있는 DNS 쿼리만 필터링합니다. 목록의 길이는 10,000개 항목으로 제한됩니다. |
responsecodename | string | 응답 코드 이름이 제공된 값과 일치하는 DNS 쿼리만 필터링합니다. 예: NXDOMAIN |
response_has_ipv4 | string | 응답 필드에 제공된 IP 주소 또는 IP 주소 접두사가 포함된 DNS 쿼리만 필터링합니다. 단일 IP 주소 또는 접두사를 필터링하려는 경우 이 매개 변수를 사용합니다. 응답을 제공하지 않는 원본에 대한 결과는 반환되지 않습니다. |
response_has_any_prefix | dynamic | 응답 필드에 나열된 IP 주소 또는 IP 주소 접두사가 포함된 DNS 쿼리만 필터링합니다. 접두사는 . 로 끝나야 합니다(예: 10.0. ). IP 주소 또는 접두사 목록을 필터링하려면 이 매개 변수를 사용합니다. 응답을 제공하지 않는 원본에 대한 결과는 반환되지 않습니다. 목록의 길이는 10,000개 항목으로 제한됩니다. |
eventtype | string | 지정된 형식의 DNS 쿼리만 필터링합니다. 값을 지정하지 않으면 조회 쿼리만 반환됩니다. |
예를 들어 도메인 이름을 확인하지 못한 마지막 날의 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 엔터티 스키마에 맞춰 정렬됩니다.
자세한 내용은 ANA(Internet Assigned Numbers Authority) DNS 매개 변수 참조를 확인합니다.
일반적인 ASIM 필드
Important
모든 스키마에 공통적인 필드는 ASIM 공통 필드 문서에 자세히 설명되어 있습니다.
특정 지침이 있는 공통 필드
다음 목록에는 DNS 이벤트에 대한 특정 지침이 있는 필드가 나와 있습니다.
필드 | 클래스 | Type | 설명 |
---|---|---|---|
EventType | 필수 | Enumerated | 레코드에서 보고한 작업을 나타냅니다. DNS 레코드의 경우 이 값은 DNS 작업 코드입니다. 예: Query |
EventSubType | 선택 사항 | Enumerated | request 또는 response 중 하나입니다. 대부분의 원본에서 응답만 기록되므로 값이 응답인 경우가 많습니다. |
EventResultDetails | 필수 | Enumerated | DNS 이벤트의 경우 이 필드는 DNS 응답 코드를 제공합니다. 참고: - IANA는 값의 대/소문자를 정의하지 않으므로 분석에서 대/소문자를 정규화해야 합니다. - 원본이 응답 코드 이름이 아닌 숫자 응답 코드만 제공하는 경우 파서는 이 값으로 보강할 조회 테이블을 포함해야 합니다. - 이 레코드가 응답이 아닌 요청을 나타내는 경우 NA로 설정합니다. 예: NXDOMAIN |
EventSchemaVersion | 필수 | 문자열 | 여기에 설명된 스키마 버전은 0.1.7입니다. |
EventSchema | 필수 | 문자열 | 여기에 설명된 스키마의 이름은 Dns입니다. |
Dvc 필드 | - | - | DNS 이벤트의 경우 디바이스 필드는 DNS 이벤트를 보고하는 시스템을 나타냅니다. |
모든 공통 필드
아래 표에 나열된 필드는 모든 ASIM 스키마에 공통적으로 적용됩니다. 위에 지정된 모든 지침은 필드에 대한 일반 지침을 재정의합니다. 예를 들어 필드가 일반적으로 선택 사항이지만 특정 스키마에서는 필수 사항일 수 있습니다. 각 필드에 대한 자세한 내용은 ASIM 공통 필드 문서를 참조하세요.
원본 시스템 필드
필드 | 클래스 | Type | 설명 |
---|---|---|---|
Src | Alias | 문자열 | 원본 디바이스의 고유 식별자입니다. 이 필드는 SrcDvcId, SrcHostname 또는 SrcIpAddr 필드의 별칭을 지정할 수 있습니다. 예: 192.168.12.1 |
SrcIpAddr | 권장 | IP 주소 | DNS 요청을 보낸 클라이언트의 IP 주소입니다. 재귀 DNS 요청의 경우 이 값은 일반적으로 보고 디바이스이며 대부분의 경우로 127.0.0.1 설정됩니다. 예: 192.168.12.1 |
SrcPortNumber | 선택 사항 | 정수 | DNS 쿼리의 원본 포트입니다. 예: 54312 |
IpAddr | Alias | SrcIpAddr에 대한 별칭 | |
SrcGeoCountry | 선택 사항 | 국가 | 원본 IP 주소와 연결된 국가/지역입니다. 예: USA |
SrcGeoRegion | 선택 사항 | 지역 | 원본 IP 주소와 연결된 지역입니다. 예: Vermont |
SrcGeoCity | 선택 사항 | City | 원본 IP 주소와 연결된 도시입니다. 예: Burlington |
SrcGeoLatitude | 선택 사항 | 위도 | 원본 IP 주소와 연결된 지리적 좌표의 위도입니다. 예: 44.475833 |
SrcGeoLongitude | 선택 사항 | 경도 | 원본 IP 주소와 연결된 지리적 좌표의 경도입니다. 예: 73.211944 |
SrcRiskLevel | 선택 사항 | 정수 | 원본과 관련된 위험 수준입니다. 값은 0 ~ 100 범위로 조정해야 하며, 0 은 무해함이고 100 은 고위험입니다.예: 90 |
SrcOriginalRiskLevel | 선택 사항 | 정수 | 보고 디바이스에서 보고한 원본과 연결된 위험 수준입니다. 예: Suspicious |
SrcHostname | 권장 | 문자열 | 도메인 정보를 제외한 원본 디바이스 호스트 이름입니다. 예: DESKTOP-1282V4D |
Hostname | Alias | SrcHostname에 대한 별칭 | |
SrcDomain | 권장 | 문자열 | 원본 디바이스의 도메인입니다. 예: Contoso |
SrcDomainType | 조건부 | Enumerated | 알려진 경우 SrcDomain의 형식입니다. 가능한 값에는 다음이 있습니다. - Windows (예: contoso )- FQDN (예: microsoft.com )SrcDomain을 사용하는 경우 필수입니다. |
SrcFQDN | 선택 사항 | 문자열 | 사용 가능한 경우 도메인 정보를 포함하는 원본 디바이스 호스트 이름입니다. 참고: 이 필드는 기존 FQDN 형식과 Windows 도메인\호스트 이름 형식을 모두 지원합니다. SrcDomainType 필드는 사용된 형식을 반영합니다. 예: Contoso\DESKTOP-1282V4D |
SrcDvcId | 선택 사항 | 문자열 | 레코드에 보고된 원본 디바이스의 ID입니다. 예: ac7e9755-8eae-4ffc-8a02-50ed7a2216c3 |
SrcDvcScopeId | 선택 사항 | 문자열 | 디바이스가 속한 클라우드 플랫폼 범위 ID입니다. SrcDvcScopeId 는 Azure의 구독 ID 및 AWS의 계정 ID에 매핑됩니다. |
SrcDvcScope | 선택 사항 | 문자열 | 디바이스가 속한 클라우드 플랫폼 범위입니다. SrcDvcScope는 Azure의 구독 ID 및 AWS의 계정 ID에 매핑됩니다. |
SrcDvcIdType | 조건부 | Enumerated | 알려진 경우 SrcDvcId의 형식입니다. 가능한 값에는 다음이 있습니다. - AzureResourceId - MDEid 여러 ID를 사용할 수 있는 경우 목록에서 첫 번째 ID를 사용하고 나머지는 각각 SrcDvcAzureResourceId 및 SrcDvcMDEid에 저장합니다. 참고: 이 필드는 SrcDvcId가 사용되는 경우 필수입니다. |
SrcDeviceType | 선택 사항 | Enumerated | 원본 디바이스의 형식입니다. 가능한 값에는 다음이 있습니다. - Computer - Mobile Device - IOT Device - Other |
SrcDescription | 선택 사항 | 문자열 | 디바이스와 관련된 설명 텍스트입니다. 예: Primary Domain Controller |
원본 사용자 필드
필드 | 클래스 | Type | 설명 |
---|---|---|---|
SrcUserId | 선택 사항 | 문자열 | 원본 사용자에 대한 컴퓨터 판독 가능한 영숫자 고유 표현입니다. 자세한 내용 및 추가 ID에 대한 대체 필드는 사용자 항목을 참조하세요. 예: S-1-12-1-4141952679-1282074057-627758481-2916039507 |
SrcUserScope | 선택 사항 | 문자열 | SrcUserId 및 SrcUsername이 정의된 Microsoft Entra 테넌트와 같은 범위입니다. 또는 허용되는 값에 대한 자세한 내용과 목록은 스키마 개요 문서의 UserScope를 참조하세요. |
SrcUserScopeId | 선택 사항 | 문자열 | SrcUserId 및 SrcUsername이 정의된 Microsoft Entra 디렉터리 ID와 같은 범위 ID입니다. 자세한 내용 및 허용되는 값 목록은 스키마 개요 문서의 UserScopeId를 참조하세요. |
SrcUserIdType | 조건부 | UserIdType | SrcUserId 필드에 저장된 ID 형식입니다. 자세한 내용 및 허용되는 값 목록은 스키마 개요 문서에서 UserIdType을 참조하세요. |
SrcUsername | 선택 사항 | 사용자 이름 | 사용 가능한 경우 도메인 정보를 포함한 원본 사용자 이름입니다. 자세한 내용은 사용자 엔터티를 참조하세요. 예: AlbertE |
SrcUsernameType | 조건부 | UsernameType | SrcUsername 필드에 저장된 사용자 이름의 형식을 지정합니다. 자세한 내용과 허용되는 값 목록은 스키마 개요 문서에서 UsernameType을 참조하세요. 예: Windows |
사용자 | Alias | SrcUsername에 대한 별칭 | |
SrcUserType | 선택 사항 | UserType | 원본 사용자의 형식입니다. 자세한 내용과 허용되는 값 목록은 스키마 개요 문서에서 UserType을 참조하세요. 예: Guest |
SrcUserSessionId | 선택 사항 | 문자열 | 행위자 로그인 세션의 고유 ID입니다. 예: 102pTUgC3p8RIqHvzxLCHnFlg |
SrcOriginalUserType | 선택 사항 | 문자열 | 원본에서 제공한 경우 원래 원본 사용자 유형입니다. |
원본 프로세스 필드
필드 | 클래스 | Type | 설명 |
---|---|---|---|
SrcProcessName | 선택 사항 | 문자열 | DNS 요청을 시작한 프로세스의 파일 이름입니다. 이 이름은 일반적으로 프로세스 이름으로 간주됩니다. 예: C:\Windows\explorer.exe |
처리 | Alias | SrcProcessName에 대한 별칭 예: C:\Windows\System32\rundll32.exe |
|
SrcProcessId | 선택 사항 | 문자열 | DNS 요청을 시작한 프로세스의 PID(프로세스 ID)입니다. 예: 48610176 참고: 형식은 다양한 시스템을 지원하기 위해 문자열로 정의되지만 Windows 및 Linux에서는 이 값이 숫자여야 합니다. Windows 또는 Linux 머신을 사용하고 다른 형식을 사용하는 경우에는 값을 변환해야 합니다. 예를 들어 16진수 값을 사용한 경우 10진수 값으로 변환합니다. |
SrcProcessGuid | 선택 사항 | 문자열 | DNS 요청을 시작한 프로세스의 생성된 GUID(고유 식별자)입니다. 예: EF3BD0BD-2B74-60C5-AF5C-010000001E00 |
대상 시스템 필드
필드 | 클래스 | Type | 설명 |
---|---|---|---|
Dst | Alias | 문자열 | 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 | 선택 사항 | City | 대상 IP 주소와 연결된 도시입니다. 자세한 내용은 논리적 형식을 참조하세요. 예: Burlington |
DstGeoLatitude | 선택 사항 | 위도 | 대상 IP 주소와 연결된 지리적 좌표의 위도입니다. 자세한 내용은 논리적 형식을 참조하세요. 예: 44.475833 |
DstGeoLongitude | 선택 사항 | 경도 | 대상 IP 주소와 연결된 지리적 좌표의 경도입니다. 자세한 내용은 논리적 형식을 참조하세요. 예: 73.211944 |
DstRiskLevel | 선택 사항 | 정수 | 대상과 관련된 위험 수준입니다. 값은 0 ~ 100 범위로 조정해야 하며, 0은 무해함이고 100은 높은 위험입니다. 예: 90 |
DstOriginalRiskLevel | 선택 사항 | 정수 | 보고 디바이스에서 보고한 대상과 연결된 위험 수준입니다. 예: Malicious |
DstPortNumber | 선택 사항 | 정수 | 대상 포트 번호입니다. 예: 53 |
DstHostname | 선택 사항 | 문자열 | 도메인 정보를 제외한 대상 디바이스 호스트 이름입니다. 사용 가능한 디바이스 이름이 없으면 이 필드에 관련 IP 주소를 저장합니다. 예: DESKTOP-1282V4D 참고: 이 값은 DstIpAddr이 지정된 경우 필수입니다. |
DstDomain | 선택 사항 | 문자열 | 대상 디바이스의 도메인입니다. 예: Contoso |
DstDomainType | 조건부 | Enumerated | 알려진 경우 DstDomain의 형식입니다. 가능한 값에는 다음이 있습니다. - Windows (contoso\mypc) - FQDN (learn.microsoft.com) DstDomain이 사용되는 경우 필수입니다. |
DstFQDN | 선택 사항 | 문자열 | 사용 가능한 경우 도메인 정보를 포함한 대상 디바이스 호스트 이름입니다. 예: Contoso\DESKTOP-1282V4D 참고: 이 필드는 기존 FQDN 형식과 Windows 도메인\호스트 이름 형식을 모두 지원합니다. DstDomainType은 사용된 형식을 반영합니다. |
DstDvcId | 선택 사항 | 문자열 | 레코드에 보고된 대상 디바이스의 ID입니다. 예: ac7e9755-8eae-4ffc-8a02-50ed7a2216c3 |
DstDvcScopeId | 선택 사항 | 문자열 | 디바이스가 속한 클라우드 플랫폼 범위 ID입니다. DstDvcScopeId 는 Azure의 구독 ID 및 AWS의 계정 ID에 매핑됩니다. |
DstDvcScope | 선택 사항 | 문자열 | 디바이스가 속한 클라우드 플랫폼 범위입니다. DstDvcScope는 Azure의 구독 ID 및 AWS의 계정 ID에 매핑됩니다. |
DstDvcIdType | 조건부 | Enumerated | 알려진 경우 DstDvcId의 형식입니다. 가능한 값에는 다음이 있습니다. - AzureResourceId - MDEidIf 여러 ID를 사용할 수 있는 경우 위 목록에서 첫 번째 ID를 사용하고 나머지는 각각 DstDvcAzureResourceId 또는 DstDvcMDEid 필드에 저장합니다. DstDeviceId가 사용되는 경우 필수입니다. |
DstDeviceType | 선택 사항 | Enumerated | 대상 디바이스의 형식입니다. 가능한 값에는 다음이 있습니다. - Computer - Mobile Device - IOT Device - Other |
DstDescription | 선택 사항 | 문자열 | 디바이스와 관련된 설명 텍스트입니다. 예: Primary Domain Controller |
DNS 특정 필드
필드 | 클래스 | Type | 설명 |
---|---|---|---|
DnsQuery | 필수 | 문자열 | 요청이 해결하려고 하는 도메인입니다. 참고: - 일부 원본은 유효한 FQDN 쿼리를 다른 형식으로 보냅니다. 예를 들어 DNS 프로토콜 자체에서 쿼리 끝에 점(.)이 있습니다. 이 점은 제거해야 합니다. - DNS 프로토콜은 이 필드의 값 형식을 FQDN으로 제한하지만 대부분의 DNS 서버는 모든 값을 허용하므로 이 필드는 FQDN 값으로만 제한되지 않습니다. 특히 DNS 터널링 공격은 쿼리 필드에 잘못된 FQDN 값을 사용할 수 있습니다. - DNS 프로토콜에서는 단일 요청을 통해 여러 개를 쿼리할 수 있지만, 이 시나리오는 거의 발생하지 않습니다. 요청에 여러 쿼리가 있는 경우 이 필드에 첫 번째 쿼리를 저장한 다음 필요에 따라 AdditionalFields 필드에 나머지를 유지합니다 . 예: www.malicious.com |
도메인 | Alias | DnsQuery에 대한 별칭입니다. | |
DnsQueryType | 선택 사항 | 정수 | DNS 리소스 레코드 형식 코드입니다. 예: 28 |
DnsQueryTypeName | 권장 | Enumerated | DNS 리소스 레코드 형식 이름입니다. 참고: - IANA는 값에 대한 대/소문자를 정의하지 않으므로 분석에서 필요에 따라 대/소문자를 정규화해야 합니다. - 응답 코드 255에 대해 ANY 값이 지원됩니다.- TYPExxxx 값은 매핑되지 않은 응답 코드에 지원됩니다. 여기서 xxxx 는 BIND DNS 서버에서 보고하는 응답 코드의 숫자 값입니다.- 원본이 쿼리 유형 이름이 아닌 숫자 쿼리 유형 코드만 제공하는 경우 파서는 이 값으로 보강할 조회 테이블을 포함해야 합니다. 예: AAAA |
DnsResponseName | 선택 사항 | 문자열 | 레코드에 포함된 응답의 내용입니다. DNS 응답 데이터는 보고 디바이스 간에 일관되지 않고 구문 분석이 복잡하므로 원본 독립적 분석의 가치가 낮습니다. 따라서 정보 모델에는 구문 분석 및 정규화가 필요하지 않으며 Microsoft Sentinel은 보조 기능을 사용하여 응답 정보를 제공합니다. 자세한 내용은 DNS 응답 처리를 참조하세요. |
DnsResponseCodeName | Alias | EventResultDetails에 대한 별칭 | |
DnsResponseCode | 선택 사항 | 정수 | DNS 숫자 응답 코드입니다. 예: 3 |
TransactionIdHex | 권장 | 문자열 | 16진수 형식의 DNS 클라이언트가 할당한 DNS 쿼리 고유 ID입니다. 이 값은 DNS 프로토콜의 일부이며 일반적으로 보고 디바이스에서 할당하는 네트워크 계층 세션 ID인 DnsSessionId와 다릅니다. |
NetworkProtocol | 선택 사항 | Enumerated | 네트워크 확인 이벤트에서 사용하는 전송 프로토콜입니다. 값은 UDP 또는 TCP일 수 있으며 가장 일반적으로 DNS용 UDP로 설정됩니다. 예: UDP |
NetworkProtocolVersion | 선택 사항 | Enumerated | NetworkProtocol의 버전입니다. 이를 사용하여 IP 버전을 구분할 때 IPv4 및 IPv6 값을 사용합니다. |
DnsQueryClass | 선택 사항 | 정수 | DNS 클래스 ID입니다. 실제로는 IN 클래스(ID 1)만 사용되므로 이 필드의 가치는 낮습니다. |
DnsQueryClassName | 선택 사항 | 문자열 | DNS 클래스 이름입니다. 실제로는 IN 클래스(ID 1)만 사용되므로 이 필드의 가치는 낮습니다. 예: IN |
DnsFlags | 선택 사항 | 문자열 | 보고 디바이스에서 제공하는 플래그 필드입니다. 플래그 정보가 여러 필드에 제공된 경우 쉼표와 구분 기호로 연결합니다. DNS 플래그는 구문 분석하기가 복잡하고 분석에서 자주 사용되지 않으므로 구문 분석 및 정규화가 필요하지 않습니다. Microsoft Sentinel은 보조 기능을 사용하여 플래그 정보를 제공할 수 있습니다. 자세한 내용은 DNS 응답 처리를 참조하세요. 예: ["DR"] |
DnsNetworkDuration | 선택 사항 | 정수 | DNS 요청을 완료하는 데 걸리는 시간(밀리초)입니다. 예: 1500 |
기간 | Alias | DnsNetworkDuration에 대한 별칭 | |
DnsFlagsAuthenticated | 선택 사항 | Boolean | DNSSEC와 관련된 DNS AD 플래그는 응답의 답변 및 권한 섹션에 포함된 모든 데이터가 해당 서버의 정책에 따라 서버에서 확인되었음을 응답에서 나타냅니다. 자세한 내용은 RFC 3655 섹션 6.1을 참조하세요. |
DnsFlagsAuthoritative | 선택 사항 | Boolean | DNS AA 플래그는 서버의 응답이 신뢰할 수 있는지 여부를 나타냅니다. |
DnsFlagsCheckingDisabled | 선택 사항 | Boolean | DNSSEC와 관련된 DNS CD 플래그는 쿼리를 보내는 시스템에서 확인되지 않은 데이터를 수락할 수 있음을 쿼리에서 나타냅니다. 자세한 내용은 RFC 3655 섹션 6.1을 참조하세요. |
DnsFlagsRecursionAvailable | 선택 사항 | Boolean | DNS RA 플래그는 응답에서 해당 서버가 재귀 쿼리를 지원함을 나타냅니다. |
DnsFlagsRecursionDesired | 선택 사항 | Boolean | DNS RD 플래그는 요청에서 해당 클라이언트가 서버에서 재귀 쿼리를 사용하기를 원한다는 것을 나타냅니다. |
DnsFlagsTruncated | 선택 사항 | Boolean | DNS TC 플래그는 최대 응답 크기를 초과하여 응답이 잘렸음을 나타냅니다. |
DnsFlagsZ | 선택 사항 | Boolean | DNS Z 플래그는 더 이상 사용되지 않는 DNS 플래그로, 이전 DNS 시스템에서 보고될 수 있습니다. |
DnsSessionId | 선택 사항 | string | 보고 디바이스에서 보고한 DNS 세션 식별자입니다. 이 값은 DNS 클라이언트에서 할당한 DNS 쿼리 고유 ID인 TransactionIdHex와 다릅니다. 예: EB4BFA28-2EAD-4EF7-BC8A-51DF4FDF5B55 |
SessionId | Alias | DnsSessionId에 대한 별칭 | |
DnsResponseIpCountry | 선택 사항 | 국가 | DNS 응답의 IP 주소 중 하나와 연결된 국가/지역입니다. 자세한 내용은 논리적 형식을 참조하세요. 예: USA |
DnsResponseIpRegion | 선택 사항 | 지역 | DNS 응답의 IP 주소 중 하나와 연결된 지역 또는 상태입니다. 자세한 내용은 논리적 형식을 참조하세요. 예: Vermont |
DnsResponseIpCity | 선택 사항 | City | DNS 응답의 IP 주소 중 하나와 연결된 도시입니다. 자세한 내용은 논리적 형식을 참조하세요. 예: Burlington |
DnsResponseIpLatitude | 선택 사항 | 위도 | DNS 응답의 IP 주소 중 하나와 연결된 지리적 좌표의 위도입니다. 자세한 내용은 논리적 형식을 참조하세요. 예: 44.475833 |
DnsResponseIpLongitude | 선택 사항 | 경도 | DNS 응답의 IP 주소 중 하나와 연결된 지리적 좌표의 경도입니다. 자세한 내용은 논리적 형식을 참조하세요. 예: 73.211944 |
검사 필드
다음 필드는 DNS 보안 디바이스에서 수행한 검사를 나타내는 데 사용됩니다. 위협 관련 필드는 원본 주소, 대상 주소, 응답의 IP 주소 중 하나 또는 DNS 쿼리 도메인과 연결된 단일 위협을 나타냅니다. 둘 이상의 위협이 위협으로 식별된 경우 다른 IP 주소에 대한 정보를 AdditionalFields
필드에 저장할 수 있습니다.
필드 | 클래스 | Type | 설명 |
---|---|---|---|
UrlCategory | 선택 사항 | 문자열 | DNS 이벤트 원본은 요청된 도메인의 범주를 조회할 수도 있습니다. 이 필드는 Microsoft Sentinel 네트워크 스키마에 맞게 UrlCategory라고 합니다. DomainCategory는 DNS에 맞는 별칭으로 추가됩니다. 예: Educational \\ Phishing |
DomainCategory | Alias | UrlCategory에 대한 별칭입니다. | |
NetworkRuleName | 선택 사항 | 문자열 | 위협을 식별한 규칙의 이름 또는 ID입니다. 예: AnyAnyDrop |
NetworkRuleNumber | 선택 사항 | 정수 | 위협을 식별한 규칙의 수입니다. 예: 23 |
규칙 | Alias | 문자열 | NetworkRuleName 값 또는 NetworkRuleNumber 값입니다. NetworkRuleNumber 값을 사용하는 경우 형식을 문자열로 변환해야 합니다. |
ThreatId | 선택 사항 | 문자열 | 네트워크 세션에서 식별된 위협 또는 맬웨어의 ID입니다. 예: Tr.124 |
ThreatCategory | 선택 사항 | 문자열 | DNS 이벤트 원본도 DNS 보안을 제공하는 경우 DNS 이벤트를 평가할 수도 있습니다. 예를 들어 위협 인텔리전스 데이터베이스에서 IP 주소 또는 도메인을 검색하고 위협 범주와 함께 도메인 또는 IP 주소를 할당할 수 있습니다. |
ThreatIpAddr | 선택 사항 | IP 주소 | 위협이 식별된 IP 주소입니다. ThreatField 필드에는 ThreatIpAddr에서 나타내는 필드의 이름이 포함됩니다. Domain 필드에서 위협이 식별되면 이 필드가 비어 있습니다. |
ThreatField | 조건부 | Enumerated | 위협이 식별된 필드입니다. 값은 SrcIpAddr , DstIpAddr , Domain 또는 DnsResponseName 입니다. |
ThreatName | 선택 사항 | 문자열 | 보고 디바이스에서 보고하는 식별된 위협의 이름입니다. |
ThreatConfidence | 선택 사항 | 정수 | 식별된 위협의 신뢰 수준이며, 0~100의 값으로 정규화됩니다. |
ThreatOriginalConfidence | 선택 사항 | 문자열 | 보고 디바이스에서 보고하는 식별된 위협의 원래 신뢰 수준입니다. |
ThreatRiskLevel | 선택 사항 | 정수 | 식별된 위협과 관련된 위험 수준이며, 0~100의 값으로 정규화됩니다. |
ThreatOriginalRiskLevel | 선택 사항 | 문자열 | 보고 디바이스에서 보고하는 식별된 위협과 관련된 원래 위험 수준입니다. |
ThreatIsActive | 선택 사항 | Boolean | True이면 식별된 위협이 활성 위협으로 간주됩니다. |
ThreatFirstReportedTime | 선택 사항 | 날짜/시간 | IP 주소 또는 도메인이 처음으로 위협으로 식별된 시간입니다. |
ThreatLastReportedTime | 선택 사항 | 날짜/시간 | IP 주소 또는 도메인이 마지막으로 위협으로 식별된 시간입니다. |
사용되지 않는 별칭 및 필드
다음 필드는 이전 버전과의 호환성을 위해 유지 관리되는 별칭입니다. 이러한 필드는 2021년 12월 31일에 스키마에서 제거되었습니다.
Query
(DnsQuery
에 대한 별칭)QueryType
(DnsQueryType
에 대한 별칭)QueryTypeName
(DnsQueryTypeName
에 대한 별칭)ResponseName
(DnsReasponseName
에 대한 별칭)ResponseCodeName
(DnsResponseCodeName
에 대한 별칭)ResponseCode
(DnsResponseCode
에 대한 별칭)QueryClass
(DnsQueryClass
에 대한 별칭)QueryClassName
(DnsQueryClassName
에 대한 별칭)Flags
(DnsFlags
에 대한 별칭)SrcUserDomain
스키마 업데이트
스키마 버전 0.1.2의 변경 내용은 다음과 같습니다.
EventSchema
필드를 추가했습니다.- 결합된 Flags 필드(
DnsFlagsAuthoritative
,DnsFlagsCheckingDisabled
,DnsFlagsRecursionAvailable
,DnsFlagsRecursionDesired
,DnsFlagsTruncated
및DnsFlagsZ
)를 보강하는 전용 플래그 필드가 추가되었습니다.
스키마 버전 0.1.3의 변경 내용은 다음과 같습니다.
- 이제 스키마가
Src*
,Dst*
,Process*
및User*
필드를 명시적으로 문서화합니다. - 최신 공통 필드 정의와 일치하도록 더 많은
Dvc*
필드를 추가했습니다. - 원본 및 대상 시스템의 선행 식별자에 별칭으로
Src
및Dst
를 추가했습니다. - 선택적
DnsNetworkDuration
및Duration
, 별칭을 추가했습니다. - 선택적 지리적 위치 및 위험 수준 필드를 추가했습니다.
스키마 버전 0.1.4의 변경 내용은 다음과 같습니다.
- 선택적 필드
ThreatIpAddr
, ,ThreatField
,ThreatName
ThreatConfidence
,ThreatOriginalConfidence
,ThreatOriginalRiskLevel
ThreatIsActive
,ThreatFirstReportedTime
및ThreatLastReportedTime
.를 추가했습니다.
스키마 버전 0.1.5의 변경 내용은 다음과 같습니다.
- 필드
SrcUserScope
, ,SrcUserSessionId
,SrcDvcScopeId
,SrcDvcScope
DstDvcScopeId
,DstDvcScope
DvcScopeId
및DvcScope
.를 추가했습니다.
스키마 버전 0.1.6의 변경 내용은 다음과 같습니다.
DnsResponseIpCountry
,DnsResponseIpRegion
,DnsResponseIpCity
,DnsResponseIpLatitude
및DnsResponseIpLongitude
필드를 추가했습니다.
스키마 버전 0.1.7의 변경 내용은 다음과 같습니다.
- 필드
SrcDescription
, ,SrcOriginalRiskLevel
,DstDescription
,SrcUserScopeId
DstOriginalRiskLevel
,NetworkProtocolVersion
,Rule
RuleName
,RuleNumber
및ThreatId
.
원본 관련 불일치
정규화의 목표는 모든 원본이 일관된 원격 분석을 제공하도록 하는 것입니다. 필수 스키마 필드와 같이 필수 원격 분석을 제공하지 않는 원본은 정규화할 수 없습니다. 그러나 일부 불일치가 있더라도 일반적으로 필요한 모든 원격 분석을 제공하는 원본을 정규화할 수 있습니다. 불일치는 쿼리 결과의 완전성에 영향을 줄 수 있습니다.
다음 표에는 알려진 불일치가 나열되어 있습니다.
Source | 불일치 |
---|---|
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
사전이 속한 응답에 파트를 반영하거나 additional
포함해야 answer
authority
합니다.
팁
최적의 성능을 보장하려면 필요한 경우에만 함수를 imDNS<vendor>Response
호출하고 초기 필터링 후에만 호출하여 성능을 향상합니다.
DNS 플래그 처리
플래그 데이터에는 구문 분석 및 정규화가 필요하지 않습니다. 대신, 보고 디바이스에서 제공한 플래그 데이터를 플래그 필드에 저장합니다. 개별 플래그의 값을 결정하는 것이 간단하다면 전용 플래그 필드를 사용할 수도 있습니다.
구문 분석되지 않은 응답 또는 전용 플래그 필드를 입력으로 사용하고 다음 순서로 각 플래그를 나타내는 부울 값과 함께 동적 목록을 반환하는 _imDNS<vendor>Flags_
이라는 추가 KQL 함수를 제공할 수도 있습니다.
- 인증됨(AD)
- 신뢰할 수 있는(AA)
- 사용 안 함 확인(CD)
- RA(재귀 사용 가능)
- RECURSION Desired(RD)
- 잘림(TC)
- Z
다음 단계
자세한 내용은 다음을 참조하세요.