다음을 통해 공유


Defender for Cloud Apps OAuth 애플리케이션 공격 경로 조사(미리 보기)

Microsoft 보안 노출 관리 회사의 공격 노출 영역과 노출 위험을 효과적으로 관리하는 데 도움이 됩니다. 공격 경로는 자산과 기술을 결합하여 공격자가 organization 내의 진입점에서 중요한 자산으로 이동하는 데 사용할 수 있는 엔드투엔드 경로를 보여 줍니다. Microsoft Defender for Cloud Apps OAuth 애플리케이션을 사용하여 Microsoft Teams, SharePoint, Outlook 등과 같은 중요 비즈니스용 애플리케이션에서 중요한 데이터에 액세스하는 공격자가 증가하는 것을 관찰했습니다. 조사 및 완화를 지원하기 위해 이러한 애플리케이션은 Microsoft 보안 노출 관리 공격 경로 및 공격 표면 맵 보기에 통합됩니다.

필수 구성 요소

노출 관리에서 OAuth 애플리케이션 공격 경로 기능을 시작하려면 다음 요구 사항을 충족하는지 확인합니다.

필요한 역할 및 사용 권한 할당

모든 노출 관리 환경에 액세스하려면 통합 RBAC(역할 기반 액세스 제어) 역할 또는 Entra ID 역할이 필요합니다. 하나만 필요합니다.

  • 노출 관리(읽기) (통합 RBAC)

또는 다음 Entra ID 역할 중 하나를 사용할 수 있습니다.

사용 권한 작업
전역 관리 (읽기 및 쓰기 권한)
보안 관리 (읽기 및 쓰기 권한)
보안 운영자 (읽기 및 제한된 쓰기 권한)
전역 읽기 권한자 (읽기 권한)
보안 읽기 권한자 (읽기 권한)

참고

현재 상용 클라우드 환경에서만 사용할 수 있습니다. Microsoft 보안 노출 관리 데이터 및 기능은 현재 GCC, GCC High, DoD 및 중국 정부 클라우드에서 사용할 수 없습니다.

중요 자산 관리 - 서비스 주체

Microsoft Defender for Cloud Apps 중요한 권한 OAuth 권한 집합을 정의합니다. 이러한 권한이 있는 OAuth 애플리케이션은 고부가가치 자산으로 간주됩니다. 손상된 경우 공격자는 SaaS 애플리케이션에 대한 높은 권한을 얻을 수 있습니다. 이러한 위험을 반영하기 위해 공격 경로는 이러한 권한이 있는 서비스 주체를 대상 목표로 취급합니다.

중요한 자산에 대한 권한 보기

사용 권한의 전체 목록을 보려면 Microsoft Defender 포털로 이동하여 설정 > Microsoft Defender XDR > 규칙 > 중요 자산 관리로 이동합니다.

Microsoft Defender 포털의 중요 자산 관리 페이지의 스크린샷

조사 사용자 흐름: OAuth 애플리케이션과 관련된 공격 경로 보기

값이 높은 대상을 나타내는 사용 권한을 이해한 후에는 다음 단계를 사용하여 이러한 애플리케이션이 환경의 공격 경로에 어떻게 표시되는지 조사합니다. 관리 가능한 공격 경로 수가 있는 소규모 조직의 경우 이 구조화된 접근 방식을 따라 각 공격 경로를 조사하는 것이 좋습니다.

참고

OAuth 앱은 특정 조건이 검색된 경우에만 공격 경로 표면 맵에 표시됩니다.
예를 들어 쉽게 악용 가능한 진입점이 있는 취약한 구성 요소가 감지되면 OAuth 앱이 공격 경로에 나타날 수 있습니다. 이 진입점은 높은 권한을 가진 서비스 주체로 횡적 이동을 허용합니다.

  1. 노출 관리 > 공격 표면 > 공격 경로로 이동합니다.

  2. '대상 유형: AAD 서비스 주체'로 필터링

    공격 경로 서비스가 기본 대상 형식을 추가하는 스크린샷

  3. "심각도가 높은 디바이스는 중요한 권한이 있는 서비스 주체로 횡적 이동을 허용합니다."라는 제목의 공격 경로를 선택합니다.

    공격 경로 이름의 스크린샷

  4. 지도에서 보기 단추를 클릭하여 공격 경로를 확인합니다.

    지도의 보기 단추 스크린샷

  5. + 기호를 선택하여 노드를 확장하고 자세한 연결을 봅니다.

    공격 표면 맵의 스크린샷

  6. 노드 및 가장자리를 마우스로 가리키거나 선택하여 이 OAuth 앱에 있는 사용 권한과 같은 추가 데이터를 탐색합니다.

    공격 표면 맵에 표시된 대로 OAuth 앱에 할당된 권한을 보여 주는 스크린샷

  7. OAuth 애플리케이션의 이름을 복사하여 애플리케이션 페이지의 검색 창에 붙여넣습니다.

    OAuth 애플리케이션 탭을 보여 주는 스크린샷

  8. 높은 권한 권한이 적극적으로 사용되는지 여부를 포함하여 할당된 권한 및 사용 인사이트를 검토할 앱 이름을 선택합니다.

    Oauth 앱에 할당된 권한을 보여 주는 스크린샷

  9. 선택 사항: OAuth 애플리케이션을 사용하지 않도록 설정해야 하는 경우 애플리케이션 페이지에서 사용하지 않도록 설정할 수 있습니다.

의사 결정자 사용자 흐름: 초크 지점을 사용하여 공격 경로 우선 순위 지정

수동으로 조사할 수 없는 수많은 공격 경로가 있는 대규모 조직의 경우 공격 경로 데이터를 사용하고 Choke Points 환경을 우선 순위 지정 도구로 활용하는 것이 좋습니다. 이 방법을 사용하면 다음을 수행할 수 있습니다.

  • 가장 많은 공격 경로와 연결된 자산을 식별합니다.
  • 조사에 우선 순위를 지정할 자산에 대해 정보에 입각한 결정을 내립니다.
  • Microsoft Entra OAuth 앱을 기준으로 필터링하여 가장 많은 공격 경로에 관련된 OAuth 앱을 확인합니다.
  • 최소 권한 권한을 적용할 OAuth 애플리케이션을 결정합니다.

시작하려면 다음을 수행합니다.

  1. 공격 경로 > 초크 포인트 페이지로 이동합니다.

    초크 포인트 페이지를 보여 주는 스크린샷

  2. 초크 지점 이름을 선택하여 이름, 진입점 및 대상과 같은 상위 공격 경로에 대한 자세한 내용을 확인합니다.

  3. 폭발 반경 보기를 클릭하여 공격 표면 맵의 초크 지점을 자세히 조사합니다. 폭발 반경 보기 단추를 보여 주는 스크린샷

초크 지점이 OAuth 애플리케이션인 경우 위의 7~9단계에 설명된 대로 애플리케이션 페이지에서 조사를 계속합니다.

쿼리를 사용하여 공격 표면 맵 분석 및 헌팅

공격 표면 맵에서 사용자 소유 앱, OAuth 앱 및 서비스 주체의 연결을 볼 수 있습니다. 이 관계 데이터는 다음에서 사용할 수 있습니다.

  • ExposureGraphEdges 테이블(연결 표시)

  • ExposureGraphNodes 테이블(권한과 같은 노드 속성 포함)

다음 고급 헌팅 쿼리를 사용하여 중요한 권한이 있는 모든 OAuth 애플리케이션을 식별합니다.

let RelevantNodes = ExposureGraphNodes
| where NodeLabel == "Microsoft Entra OAuth App" or NodeLabel == "serviceprincipal"
| project NodeId, NodeLabel, NodeName, NodeProperties;
ExposureGraphEdges
| where EdgeLabel == "has permissions to" or EdgeLabel == "can authenticate as"
| make-graph SourceNodeId --> TargetNodeId with RelevantNodes on NodeId
| graph-match (AppRegistration)-[canAuthAs]->(SPN)-[hasPermissionTo]->(Target)
        where AppRegistration.NodeLabel == "Microsoft Entra OAuth App" and
        canAuthAs.EdgeLabel == "can authenticate as" and
        SPN.NodeLabel == "serviceprincipal" and
        SPN.NodeProperties["rawData"]["criticalityLevel"]["criticalityLevel"] == 0 and
        hasPermissionTo.EdgeLabel == @"has permissions to" and
        Target.NodeLabel == "Microsoft Entra OAuth App" and
        Target.NodeName == "Microsoft Graph"
        project AppReg=AppRegistration.NodeLabel,
         canAuthAs=canAuthAs.EdgeLabel, SPN.NodeLabel, DisplayName=SPN.NodeProperties["rawData"]["accountDisplayName"],
         Enabled=SPN.NodeProperties["rawData"]["accountEnabled"], AppTenantID=SPN.NodeProperties["rawData"]["appOwnerOrganizationId"],
         hasPermissionTo=hasPermissionTo.EdgeLabel, Target=Target.NodeName,
         AppPerm=hasPermissionTo.EdgeProperties["rawData"]["applicationPermissions"]["permissions"]
| mv-apply AppPerm on (summarize AppPerm = make_list(AppPerm.permissionValue))
| project AppReg, canAuthAs, DisplayName, Enabled, AppTenantID, hasPermissionTo, Target, AppPerm

다음 단계

자세한 내용은 다음을 참조하세요.