Panther는 Microsoft Graph API에서 직접 로그를 가져오는 것을 지원합니다
개요
Panther는 다음을 쿼리하여 Microsoft Graph 로그를 가져올 수 있습니다 Microsoft Graph API 를 통해 다음 Microsoft 보안 제품에서 보안 알러트를 가져옵니다:
Azure Active Directory Identity Protection
Azure Information Protection
Microsoft 365 (Default, Cloud App Security, Custom Alerts)
Microsoft Defender for Cloud Apps
Microsoft Defender for Endpoint
Microsoft Defender for Identity
Microsoft Sentinel (formerly Azure Sentinel)
Microsoft Graph 로그를 Panther에 온보딩하는 방법
사전 요구 사항
Microsoft Defender for Endpoint 및 Identity 알러트는 알러트 이벤트를 Panther로 스트리밍하기 전에 추가 사용자 구성이 필요합니다. 다음을 참조하세요 Microsoft의 문서 를 참조하세요.
Microsoft Defender for Endpoint는 Microsoft Graph Security API에서 요구하는 것 외에 추가 사용자 역할이 필요합니다. Microsoft Defender for Endpoint 역할과 Microsoft Graph Security API 역할을 모두 가진 사용자만 Microsoft Defender for Endpoint 데이터에 액세스할 수 있습니다. 애플리케이션 전용 인증은 이 제한을 받지 않으므로, 애플리케이션 전용 인증 토큰을 사용하는 것을 권장합니다.
Microsoft Defender for Identity 알러트는 Microsoft Defender for Cloud Apps 통합을 통해 제공됩니다. 즉, Unified SecOps에 합류하고 Microsoft Defender for Identity를 Microsoft Defender for Cloud Apps에 연결한 경우에만 Microsoft Defender for Identity 알러트를 받게 됩니다.
1단계: Microsoft Entra ID 애플리케이션 만들기
에 로그인 Azure 포털 로 이동한 다음 Microsoft Entra ID 서비스를 찾습니다.
클릭하세요. 앱 등록 왼쪽 사이드바에서
클릭하세요. 새 등록.
필드를 입력합니다:
애플리케이션에 대한 설명이 포함된 이름을 입력합니다.
에 대해 지원되는 계정 유형를 선택하세요. 이 조직 디렉터리의 계정만.
클릭하세요. 등록.
왼쪽 사이드바에서 인증서 및 비밀.
클릭하세요. 새 클라이언트 비밀.
비밀에 대한 설명을 추가합니다(예: Panther 통합).
다음을 설정하세요. 만료 필드를 24개월.
클릭하세요. 추가.
클라이언트 비밀은 이 페이지를 벗어나면 숨겨집니다. 해당 Value 필드를 복사하여 안전한 위치에 저장하세요. 2단계에서 이를 클라이언트 시크릿 값으로 사용하게 됩니다.
왼쪽 사이드바에서 API 권한 그런 다음 권한 추가.
찾아서 클릭합니다. Microsoft Graph API.
클릭하세요. 위임된 권한 를 선택한 다음 SecurityEvents.Read.All 권한.
클릭하세요. 애플리케이션 권한 를 선택한 다음 SecurityEvents.Read.All 권한.
클릭하세요. 권한 추가 를 페이지 하단에서 선택합니다.
클릭하세요. 관리자 동의 부여 API 권한 페이지에서
동의가 부여되면 왼쪽 사이드바의 개요 탭을 클릭하여 애플리케이션(클라이언트) ID 및 디렉터리(테넌트) ID.
를 확인하세요. 다음 단계에서 이 정보를 Panther에 제공해야 합니다.
2단계: Panther에 새 Microsoft Graph 소스 만들기
Panther Console의 왼쪽 탐색 모음에서 구성 > Log Sources.
클릭하세요. 새로 만들기.
선택 Microsoft Graph 를 사용 가능한 로그 소스 목록에서 선택합니다.
클릭하세요. 설정 시작.
다음 화면에서 다음 필드를 입력합니다:
이름: 소스에 대한 설명이 있는 이름을 입력합니다. 예: 내 Microsoft Graph 로그.
The 이벤트가 처리되지 않으면 알러트를 트리거합니다 설정의 기본값은 YES. 이 옵션을 활성화된 상태로 두는 것을 권장합니다. 일정 시간이 지난 후 로그 소스에서 데이터 흐름이 중단되면 알림을 받게 되기 때문입니다. 시간 범위는 구성 가능하며 기본값은 24시간입니다.\
지원되는 로그 유형
MicrosoftGraph.SecurityAlert
고객 테넌트 내에서 Microsoft 또는 파트너 보안 솔루션이 식별한 잠재적 보안 문제를 나타냅니다.
필드:
- name: activityGroupName
description: 이 알러트가 귀속되는 활동 그룹(공격자)의 이름 또는 별칭
유형: 문자열
- name: assignedTo
description: 이 알러트가 귀속되는 활동 그룹(공격자)의 이름 또는 별칭
유형: 문자열
- name: azureSubscriptionId
description: Azure 구독 ID. 이 알러트가 Azure 리소스와 관련된 경우 존재합니다
유형: 문자열
- name: azureTenantId
required: true
description: Azure Active Directory 테넌트 ID
유형: 문자열
- 이름: category
description: 알러트의 범주(예: credentialTheft, ransomware 등)
유형: 문자열
- name: closedDateTime
description: 알러트가 닫힌 시각(UTC)
유형: 타임스탬프
timeFormat: rfc3339
- name: cloudAppStates
description: 이 알러트와 관련된 클라우드 애플리케이션에 대해 공급자가 생성한 보안 관련 상태 정보
유형: 배열
요소:
유형: 객체
필드:
- name: destinationServiceIp
description: 클라우드 애플리케이션/서비스에 대한 연결의 대상 IP 주소
유형: 문자열
지표:
- ip
- name: destinationServiceName
description: 클라우드 애플리케이션/서비스 이름(예: 'Salesforce', 'DropBox' 등)
유형: 문자열
- name: riskScore
description: 클라우드 애플리케이션/서비스에 대해 공급자가 생성/계산한 위험 점수. 0-1 범위의 권장 값이며 백분율에 해당합니다
유형: 문자열
- name: comments
description: 알러트에 대한 고객 제공 의견(고객 알러트 관리용)
유형: 배열
요소:
유형: 문자열
- name: confidence
description: 디택션 로직의 신뢰도(1-100 사이의 백분율)
유형: int
- name: createdDateTime
required: true
description: 알러트 제공자에 의해 알러트가 생성된 시각(UTC)
유형: 타임스탬프
timeFormat: rfc3339
- 이름: description
description: 알러트 설명
유형: 문자열
- 이름: detectionIds
description: 이 알러트 엔터티와 관련된 알러트 집합(각 알러트는 SIEM에 별도 레코드로 푸시됨)
유형: 배열
요소:
유형: 문자열
- name: eventDateTime
required: true
description: 알러트를 생성하는 트리거로 작동한 이벤트가 발생한 시각(UTC)
유형: 타임스탬프
timeFormat: rfc3339
isEventTime: true
- name: feedback
description: '알러트에 대한 분석가 피드백. 가능한 값: unknown, truePositive, falsePositive, benignPositive'
유형: 문자열
- name: fileStates
description: 이 알러트와 관련된 파일에 대해 공급자가 생성한 보안 관련 상태 정보
유형: 배열
요소:
유형: 객체
필드:
- name: fileHash
description: 파일 해시(암호학적 및 위치 민감)를 포함하는 복합 형식
유형: 객체
필드:
- name: hashType
description: '파일 해시 유형. 가능한 값: unknown, sha1, sha256, md5, authenticodeHash256, lsHash, ctph, peSha1, peSha256'
유형: 문자열
- name: hashValue
description: 파일 해시 값
유형: 문자열
지표:
- md5
- sha1
- sha256
- 이름: name
description: 파일 이름(경로 제외)
유형: 문자열
- 이름: path
description: 파일/이미지의 전체 파일 경로
유형: 문자열
- name: riskScore
description: 알러트 파일에 대해 공급자가 생성/계산한 위험 점수. 0-1 범위의 권장 값이며 백분율에 해당합니다
유형: 문자열
- name: hostStates
description: 이 알러트와 관련된 호스트에 대해 공급자가 생성한 보안 관련 상태 정보
유형: 배열
요소:
유형: 객체
필드:
- name: fqdn
description: 호스트 FQDN(정규화된 도메인 이름)(예: machine.company.com)
유형: 문자열
지표:
- 호스트 이름
- name: isAzureAdJoined
description: 호스트가 Azure Active Directory Domain Services에 도메인 조인된 경우 True
유형: 불리언
- name: isAzureAdRegistered
description: 호스트가 Azure Active Directory 장치 등록(BYOD 장치, 즉 기업에서 완전히 관리되지 않음)에 등록된 경우 True
유형: 불리언
- name: isHybridAzureDomainJoined
description: 호스트가 온프레미스 Active Directory 도메인에 도메인 조인된 경우 True
유형: 불리언
- name: netBiosName
description: DNS 도메인 이름을 제외한 로컬 호스트 이름
유형: 문자열
지표:
- 호스트 이름
- name: os
description: 호스트 운영 체제(예: Windows10, MacOS, RHEL 등)
유형: 문자열
- name: privateIpAddress
description: 알러트 발생 시점의 비공개(라우팅 불가) IPv4 또는 IPv6 주소(RFC 1918 참조)
유형: 문자열
지표:
- ip
- name: publicIpAddress
description: 알러트 발생 시점의 공용 라우팅 가능 IPv4 또는 IPv6 주소(RFC 1918 참조)
유형: 문자열
지표:
- ip
- name: riskScore
description: 호스트에 대해 공급자가 생성/계산한 위험 점수. 0-1 범위의 권장 값이며 백분율에 해당합니다
유형: 문자열
- 이름: id
required: true
description: 공급자가 생성한 GUID/고유 식별자
유형: 문자열
- name: incidentIds
description: 현재 알러트와 관련된 인시던트 ID
유형: 배열
요소:
유형: 문자열
- name: lastModifiedDateTime
description: 알러트 엔터티가 마지막으로 수정된 시각(UTC)
유형: 타임스탬프
timeFormat: rfc3339
- name: malwareStates
description: 이 알러트와 관련된 멀웨어에 대한 위협 인텔리전스
유형: 배열
요소:
유형: 객체
필드:
- 이름: category
description: 공급자가 생성한 멀웨어 범주(예: trojan, ransomware 등)
유형: 문자열
- name: family
description: 공급자가 생성한 멀웨어 패밀리(예: 'wannacry', 'notpetya' 등)
유형: 문자열
- 이름: name
description: 공급자가 생성한 멀웨어 변종 이름(예: Trojan:Win32/Powessere.H)
유형: 문자열
- 이름: severity
description: 공급자가 결정한 이 멀웨어의 심각도
유형: 문자열
- name: wasRunning
description: 디텍션된 파일(멀웨어/취약점)이 디택션 시점에 실행 중이었는지 또는 디스크에 정지 상태로 디텍션되었는지 여부를 나타냄
유형: 불리언
- name: networkConnections
description: 이 알러트와 관련된 네트워크 연결에 대해 공급자가 생성한 보안 관련 상태 정보
유형: 배열
요소:
유형: 객체
필드:
- name: applicationName
description: 네트워크 연결을 관리하는 애플리케이션 이름(예: Facebook 또는 SMTP)
유형: 문자열
- name: destinationAddress
description: 대상 IP 주소(네트워크 연결의)
유형: 문자열
지표:
- ip
- name: destinationLocation
description: 네트워크 연결의 대상과 관련된 위치(IP 주소 매핑 기준)
유형: 문자열
- name: destinationDomain
description: 대상 URL의 대상 도메인 부분(예: 'www.contoso.com')
유형: 문자열
지표:
- 도메인
- name: destinationPort
description: 대상 포트(네트워크 연결의)
유형: 문자열
- name: destinationUrl
description: 매개변수를 제외한 네트워크 연결 URL/URI 문자열(예: 'www.contoso.com/products/default.html')
유형: 문자열
지표:
- url
- name: direction
description: '네트워크 연결 방향. 가능한 값: unknown, inbound, outbound'
유형: 문자열
- name: domainRegisteredDateTime
description: 대상 도메인이 등록된 날짜(UTC)
유형: 타임스탬프
timeFormat: rfc3339
- name: localDnsName
description: 호스트의 로컬 DNS 캐시에 표시되는 로컬 DNS 이름 해석(예: 'hosts' 파일이 변조된 경우)
유형: 문자열
- name: natDestinationAddress
description: 네트워크 주소 변환 대상 IP 주소
유형: 문자열
지표:
- ip
- name: natDestinationPort
description: 네트워크 주소 변환 대상 포트
유형: 문자열
- name: natSourceAddress
description: 네트워크 주소 변환 원본 IP 주소
유형: 문자열
지표:
- ip
- name: natSourcePort
description: 네트워크 주소 변환 원본 포트
유형: 문자열
- 이름: protocol
description: '네트워크 프로토콜. 가능한 값: unknown, ip, icmp, igmp, ggp, ipv4, tcp, pup, udp, idp, ipv6, ipv6RoutingHeader, ipv6FragmentHeader, ipSecEncapsulatingSecurityPayload, ipSecAuthenticationHeader, icmpV6, ipv6NoNextHeader, ipv6DestinationOptions, nd, raw, ipx, spx, spxII'
유형: 문자열
- name: riskScore
description: 네트워크 연결에 대해 공급자가 생성/계산한 위험 점수. 0-1 범위의 권장 값이며 백분율에 해당합니다
유형: 문자열
- name: sourceAddress
description: 원본(즉, 시작점) IP 주소(네트워크 연결의)
유형: 문자열
지표:
- ip
- name: sourceLocation
description: 네트워크 연결의 원본과 관련된 위치(IP 주소 매핑 기준)
유형: 문자열
- name: sourcePort
description: 원본(즉, 시작점) IP 포트(네트워크 연결의)
유형: 문자열
- 이름: status
description: '네트워크 연결 상태. 가능한 값: unknown, attempted, succeeded, blocked, failed'
유형: 문자열
- name: urlParameters
description: 대상 URL의 매개변수(접미사)
유형: 문자열
지표:
- url
- name: processes
description: 이 알러트와 관련된 프로세스에 대해 공급자가 생성한 보안 관련 상태 정보
유형: 배열
요소:
유형: 객체
필드:
- name: accountName
description: 사용자 계정 식별자(프로세스가 실행된 사용자 계정 컨텍스트). 예: AccountName, SID 등
유형: 문자열
지표:
- 사용자 이름
- name: commandLine
description: 모든 매개변수를 포함한 전체 프로세스 실행 명령줄
유형: 문자열
- name: createdDateTime
description: 프로세스가 시작된 시각(UTC)
유형: 타임스탬프
timeFormat: rfc3339
- name: fileHash
description: 파일 해시(암호학적 및 위치 민감)를 포함하는 복합 형식
유형: 객체
필드:
- name: hashType
description: '파일 해시 유형. 가능한 값: unknown, sha1, sha256, md5, authenticodeHash256, lsHash, ctph, peSha1, peSha256'
유형: 문자열
- name: hashValue
description: 파일 해시 값
유형: 문자열
지표:
- md5
- sha1
- sha256
- name: integrityLevel
description: '프로세스의 무결성 수준. 가능한 값: unknown, untrusted, low, medium, high, system'
유형: 문자열
- name: isElevated
description: 프로세스가 상승된 권한인지 여부가 True인 경우
유형: 불리언
- 이름: name
description: 프로세스의 이미지 파일 이름
유형: 문자열
- name: parentProcessCreatedDateTime
description: 부모 프로세스가 시작된 DateTime(UTC)
유형: 타임스탬프
timeFormat: rfc3339
- name: parentProcessId
description: 부모 프로세스의 프로세스 ID(PID)
유형: bigint
- name: parentProcessName
description: 부모 프로세스 이미지 파일의 이름
유형: 문자열
- 이름: path
description: 파일 이름을 포함한 전체 경로
유형: 문자열
- name: processId
description: 프로세스의 프로세스 ID(PID)
유형: bigint
- name: recommendedActions
description: 알러트 결과로 취해야 할 공급업체/제공자 권장 조치(예: 머신 격리, 2FA 강제 적용, 호스트 재이미징)
유형: 배열
요소:
유형: 문자열
- name: registryKeyStates
description: 이 알러트와 관련된 레지스트리 키에 대해 공급자가 생성한 보안 관련 상태 정보
유형: 배열
요소:
유형: 객체
필드:
- name: hive
description: 'Windows 레지스트리 하이브. 가능한 값: unknown, currentConfig, currentUser, localMachineSam, localMachineSecurity, localMachineSoftware, localMachineSystem, usersDefault'
유형: 문자열
- name: key
description: 현재(즉, 변경된) 레지스트리 키(HIVE 제외)
유형: 문자열
- name: oldKey
description: 이전(즉, 변경 전) 레지스트리 키(HIVE 제외)
유형: 문자열
- name: oldValueData
description: 이전(즉, 변경 전) 레지스트리 키 값 데이터(내용)
유형: 문자열
- name: oldValueName
description: 이전(즉, 변경 전) 레지스트리 키 값 이름
유형: 문자열
- name: operation
description: '레지스트리 키 이름 및/또는 값을 변경한 작업. 가능한 값: unknown, create, modify, delete'
유형: 문자열
- name: processId
description: 레지스트리 키를 수정한 프로세스의 프로세스 ID(PID)(프로세스 세부 정보는 알러트의 'processes' 컬렉션에 표시됨)
유형: bigint
- name: valueData
description: 현재(즉, 변경된) 레지스트리 키 값 데이터(내용)
유형: 문자열
- name: valueName
description: 현재(즉, 변경된) 레지스트리 키 값 이름
유형: 문자열
- name: valueType
description: '레지스트리 키 값 유형. 가능한 값: unknown, binary, dword, dwordLittleEndian, dwordBigEndian, expandSz, link, multiSz, none, qword, qwordlittleEndian, sz'
유형: 문자열
- name: securityResources
description: 현재 알러트와 관련된 리소스. 예를 들어 일부 알러트에서는 Azure Resource 값이 포함될 수 있습니다
유형: 배열
요소:
유형: 객체
필드:
- name: resource
description: 현재 알러트와 관련된 리소스의 이름
유형: 문자열
- 이름: resourceType
description: '알러트와 관련된 보안 리소스의 유형을 나타냅니다. 가능한 값: attacked, related'
유형: 문자열
- 이름: severity
required: true
description: '알러트 심각도 - 공급업체/제공자에 의해 설정됨. 가능한 값: unknown, informational, low, medium, high'
유형: 문자열
- name: sourceMaterials
description: 알러트와 관련된 원본 자료로 연결되는 하이퍼링크(URI). 예: 알러트 또는 로그 검색을 위한 제공자의 사용자 인터페이스 등
유형: 배열
요소:
유형: 문자열
지표:
- url
- 이름: status
required: true
description: '알러트 수명 주기 상태(단계). 가능한 값: unknown, newAlert, inProgress, resolved'
유형: 문자열
- 이름: tags
description: 알러트에 적용할 수 있고 필터 조건으로도 사용할 수 있는 사용자 정의 레이블(예: 'HVA', 'SAW' 등)
유형: 배열
요소:
유형: 문자열
- name: title
required: true
description: 알러트 제목
유형: 문자열
- name: triggers
description: 알러트를 트리거한 특정 속성에 대한 보안 관련 정보(알러트에 표시되는 속성). 알러트에는 여러 사용자, 호스트, 파일, IP 주소에 대한 정보가 포함될 수 있습니다. 이 필드는 어떤 속성이 알러트 생성을 트리거했는지 나타냅니다
유형: 배열
요소:
유형: 객체
필드:
- 이름: name
description: 디택션 트리거 역할을 하는 속성의 이름
유형: 문자열
- name: type
description: 해석을 위한 key:value 쌍에서 속성의 유형. 예: String, Boolean 등
유형: 문자열
- 이름: value
description: 디택션 트리거 역할을 하는 속성의 값
유형: 문자열
- name: userStates
description: 이 알러트와 관련된 사용자 계정에 대해 공급자가 생성한 보안 관련 상태 정보
유형: 배열
요소:
유형: 객체
필드:
- name: aadUserId
description: AAD 사용자 개체 식별자(GUID) - 물리적/다중 계정 사용자 엔터티를 나타냅니다
유형: 문자열
지표:
- 사용자 이름
- name: accountName
description: Active Directory 도메인 또는 DNS 도메인 없이 사용자 계정의 계정 이름 - (mailNickName이라고도 함)
유형: 문자열
지표:
- 사용자 이름
- name: domainName
description: "사용자 계정의 NetBIOS/Active Directory 도메인(즉, domain\account 형식)"
유형: 문자열
지표:
- 도메인
- name: emailRole
description: '이메일 관련 알러트의 경우 - 사용자 계정의 이메일 "역할". 가능한 값: unknown, sender, recipient'
유형: 문자열
- name: isVpn
description: 사용자가 VPN을 통해 로그인했는지 여부를 나타냄
유형: 불리언
- name: logonDateTime
description: 로그인 발생 시각(UTC)
유형: 타임스탬프
timeFormat: rfc3339
- name: logonId
description: 사용자 로그인 ID
유형: 문자열
지표:
- 사용자 이름
- name: logonIp
description: 로그인 요청이 시작된 IP 주소
유형: 문자열
지표:
- ip
- name: logonLocation
description: 이 사용자의 사용자 로그인 이벤트와 관련된 위치(IP 주소 매핑 기준)
유형: 문자열
- name: logonType
description: '사용자 로그인 방법. 가능한 값: unknown, interactive, remoteInteractive, network, batch, service'
유형: 문자열
- name: onPremisesSecurityIdentifier
description: 사용자의 Active Directory(온프레미스) 보안 식별자(SID)
유형: 문자열
지표:
- 사용자 이름
- name: riskScore
description: 사용자 계정에 대해 공급자가 생성/계산한 위험 점수. 0-1 범위의 권장 값이며 백분율에 해당합니다
유형: 문자열
- name: userAccountType
description: 'Windows 정의에 따른 사용자 계정 유형(그룹 멤버십). 가능한 값: unknown, standard, power, administrator'
유형: 문자열
- name: userPrincipalName
description: '사용자 로그인 이름 - 인터넷 형식: (사용자 계정 이름)@(사용자 계정 DNS 도메인 이름)'
유형: 문자열
지표:
- 사용자 이름
- name: vendorInformation
required: true
description: 보안 제품/서비스 공급업체, 제공자 및 하위 제공자에 대한 세부 정보를 포함하는 복합 형식(예: vendor=Microsoft; provider=Windows Defender ATP; subProvider=AppLocker)
유형: 객체
필드:
- name: provider
description: 특정 제공자(제품/서비스 - 공급업체 회사 아님). 예: WindowsDefenderATP
유형: 문자열
- name: providerVersion
description: 알러트를 생성한 제공자 또는 하위 제공자의 버전(존재하는 경우)
유형: 문자열
- name: subProvider
description: 집계 제공자 아래의 특정 하위 제공자. 예: WindowsDefenderATP.SmartScreen
유형: 문자열
- name: vendor
description: 알러트 공급업체 이름(예: Microsoft, Dell, FireEye)
유형: 문자열
- name: vulnerabilityStates
description: 이 알러트와 관련된 하나 이상의 취약점에 대한 위협 인텔리전스
유형: 배열
요소:
유형: 객체
필드:
- name: cve
description: 취약점에 대한 Common Vulnerabilities and Exposures(CVE)
유형: 문자열
- 이름: severity
description: 이 취약점에 대한 기본 Common Vulnerability Scoring System(CVSS) 심각도 점수
유형: 문자열
- name: wasRunning
description: 디텍션된 취약점(파일)이 디택션 시점에 실행 중이었는지 또는 파일이 디스크에 정지 상태로 디텍션되었는지 여부를 나타냄
유형: 불리언