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