콘텐츠로 이동하기
위협 인텔리전스

Intune 권한을 악용한 Entra ID 네이티브 환경에서의 측면 이동 및 권한 상승

2024년 11월 17일
Mandiant

보안 상담

보안에 대한 문의사항을 해당 전문가가 상담해 드립니다.

문의하기

* 해당 블로그의 원문은 2024년 11월 6일 Google Cloud 블로그(영문)에 게재되었습니다. 


작성자: Thibault Van Geluwe de Berlaere, Karl Madden, Corné de Jong


최근 맨디언트 레드팀은 한 고객사를 위해 평가 작업을 진행하였습니다. 당시 레드팀은 실력이 뛰어난 위협 행위자의 실제 공격이 발생했을 때 고객사에서 어떤 피해가 발생할 수 있는지 알아보기 위해 가상의 시나리오를 기반으로 평가를 수행하였습니다.

맨디언트는 고객사의 내부 시스템에서 측면 이동(Lateral Movement)을 하여 클라우드 시스템인 Entra ID에 접근했습니다. 그리고 Entra ID에 등록된 애플리케이션이나 서비스에 해당하는 서비스 주체(Entra ID service principals)의 권한을 탈취하여, 마치 그 애플리케이션이나 서비스인 것처럼 행세하며 시스템 내부의 자원에 접근하거나 조작할 수 있게 되었습니다.

이번 포스팅에서는 공격자가 Intune의 디바이스 관리 권한을 악용하여 획득한 정보를 바탕으로 Microsoft Entra ID 내에서 권한을 확대하는 방법과 이를 통해 다른 시스템으로 공격을 확산시키는 방법을 자세히 살펴봅니다. 특히, 권한 있는 액세스 워크스테이션(PAW) 환경에서 DeviceManagementConfiguration.ReadWrite.All 권한을 획득할 경우, 공격자는 디바이스 설정 변경, 데이터 탈취, 악성 코드 설치 등을 통해 시스템을 장악하고 더 높은 권한을 가진 계정에 접근할 수 있습니다. 이러한 공격은 PAW를 통해 중요한 자산을 보호하려는 조직에게 심각한 위협이 될 수 있습니다.

배경 정보

맨디언트 레드팀과 함께 평가를 진행한 고객사는 마이크로소프트가 권장하는 엔터프라이즈 액세스 모델을 기반으로 온프레미스 환경과 클라우드 환경을 연계할 수 있는 계정 관리 체계를 갖추고 있습니다.

  • 온프레미스 환경은 액티브 디렉토리(Active Directory)를 사용해 사용자와 그룹을 여러 계층으로 나누어 관리하는 방식(Tiered Model)을 따릅니다.

  • 마이크로소프트가 제공하는 클라우드 기반의 아이덴티티 및 액세스 관리 서비스인 Entra ID는 온프레미스의 액티브 디렉토리와 연결되어 있습니다. 온프레미스 사용자와 그룹 정보는 Microsoft Entra Connect Sync라는 도구를 통해 동기화됩니다. 이처럼 온프레미스의 사용자와 그룹 정보가 클라우드와 동기화되지만, 관리자 계정은 클라우드 네이티브 방식으로 관리되고 권한이 부여됩니다. 고객사는 권한 있는 액세스 워크스테이션을 사용합니다. 이 워크스테이션은 온프레미스 액티브 디렉토리에 가입되어 있지 않고, Intune MDM(Mobile Device Management)을 통해 클라우드 네이티브 방식으로 관리합니다. 관리자는 온프레미스 액티브 디렉토리와 동기화되지 않은 클라우드 네이티브 관리자 계정을 사용해 로그인합니다. Global Administrator, Privileged Role Administrator 같은 Entra ID의 역할은 이러한 클라우드 네이티브 관리자 계정에만 부여됩니다.

고객사는 액티브 디렉토리 기반 온프레미스 환경과 Entra ID 기반 클라우드 환경 간의 관리 계정, 장치, 권한을 분리해 보안을 강화했습니다.

  1. 별도의 클라우드 네이티브 ID 사용: 온프레미스 환경과 클라우드 환경에 각각 다른 관리 계정을 사용하여 액티브 디렉토리가 손상되더라도 Entra ID 환경에 영향을 미치지 않도록 했습니다. 이는 마이크로소프트가 제안하는 모범 사례 중 하나입니다.

  2. 물리적 워크스테이션 분리: 권한 있는 액세스 워크스테이션 같은 장치를 온프레미스 환경과 분리하여 클라우드 환경에서만 사용하도록 하였습니다. 이와 같은 물리적 분리는 온프레이스와 클라우드 사이에 ‘에어 갭(air gap)’을 형성하는데, 이 에어 갭은 공격자가 넘어가기 특히 어려운 장벽으로 기능합니다.

  3. 강력한 조건부 액세스 정책 사용: 각 시스템에서 필요한 최소한의 권한만 부여하여 불필요한 권한 부여를 방지하도록 하였습니다. 고객사의 Entra ID의 관리자 계정은 조건부 액세스 정책을 통해 관리된 장치와 다단계 인증을 요구하는 Privileged Identity Management를 통해 역할이 부여됩니다. 이 역시 마이크로소프트가 권장하는 모범 사례 중 하나입니다.

공격 경로

맨디언트 레드팀은 Entra ID 테넌트에 침투하여 Global Administrator 권한을 획득했습니다. 이후 획득한 권한을 이용하여 테넌트 내 모든 서비스 주체의 자격 증명을 임의로 변경할 수 있는 권한(microsoft.directory/servicePrincipals/credentials/update)을 확보하였습니다. 그리고 이를 통해 테넌트 내 시스템에 대한 액세스 권한을 확보했습니다.

공격자들은 일반적으로 RoleManagement.ReadWrite.Directory, AppRoleAssignment.ReadWrite.All, Application.ReadWrite.All과 같은 Microsoft Graph 권한을 악용하여 Azure AD 내에서 권한을 상승시키는 기법을 사용합니다. 하지만 이번 맨디언트 레드팀의 평가 대상 환경에서는 이러한 고위험 권한이 부여된 서비스 주체가 발견되지 않았습니다. 이에 맨디언트 레드팀은 ROADTools를 활용하여 환경을 심층 분석하였습니다. 그 결과 DeviceManagementConfiguration.ReadWrite.All 권한이 부여된 서비스 주체를 발견하였습니다. 이 권한은 Intune과 같은 모바일 장치 관리 솔루션에서 사용되는 권한으로 디바이스 설정 변경, 앱 설치, 데이터 탈취 등 다양한 악의적인 활동을 수행할 수 있습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/intuned-cloud-fig1.max-900x900.png

그림 1: DeviceManagementConfiguration.ReadWrite.All 권한이 부여된 서비스 주체 (ROADTools 스크린샷)

이 권한은 서비스 주체에게 "Microsoft Intune의 장치 구성 및 정책을 읽고 쓸 수 있는" 권한을 부여합니다. Intune의 장치 관리 스크립트는 Windows 10 이상의 클라이언트에서 실행될 수 있는 사용자 지정 PowerShell 스크립트입니다. 이러한 스크립트는 관리자가 Intune의 기존 구성 정책이나 앱 설정에서 제공되지 않는 추가 설정을 적용할 수 있도록 합니다. 관리 스크립트는 장치가 시작될 때 관리자 권한(NT AUTHORITY\SYSTEM)으로 실행됩니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/intuned-cloud-fig2.max-900x900.png

그림 2: Intune 관리 스크립트는 시작 시 실행됩니다

The DeviceManagementConfiguration.ReadWrite.All permission is sufficient to list, read, create and update management scripts through the Microsoft Graph API.

DeviceManagementConfiguration.ReadWrite.All 권한을 통해 마이크로소프트 Graph API를 사용해 관리 스크립트를 나열, 읽기, 생성, 업데이트하는 것이 가능합니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/intuned-cloud-fig3.max-1000x1000.png

그림 3: DeviceManagementConfiguration.ReadWrite.All 권한으로 장치 관리 스크립트 수정

마이크로소프트 Graph API를 통해 관리 스크립트를 손쉽게 생성하거나 수정할 수 있습니다. 다음은 기존 스크립트를 수정하는 HTTP 요청 예시입니다.

PATCH https://graph.microsoft.com/beta/deviceManagement/
deviceManagementScripts/<script id>

{
  "@odata.type": "#microsoft.graph.deviceManagementScript",
  "displayName": "<display name>",
  "description": "<description>", 
  "scriptContent": "<PowerShell script in base64 encoding>",
  "runAsAccount": "system",
  "enforceSignatureCheck": false,
  "fileName": "<filename>",
  "roleScopeTagIds": [
    "<existing role scope tags>"
  ],
  "runAs32Bit": false
}

Graph API는 호출자가 Base64로 인코딩된 PowerShell 스크립트 내용을 표시 이름, 파일 이름, 설명과 함께 지정할 수 있도록 합니다. runAsAccount 값은 사용자 또는 시스템 계정으로 설정하여 스크립트 실행 계정을 결정할 수 있습니다. roleScopeTagIds 값은 장치와 사용자를 그룹화하는 Intune의 기능인 Scope Tags를 참조하며, 이 역시 DeviceManagementConfiguration.ReadWrite.All 권한으로 생성관리할 수 있습니다.

맨디언트 레드팀은 DeviceManagementConfiguration.ReadWrite.All 권한으로 Entra ID 관리용으로 사용되는 PAW로 이동하여, 기존 장치 관리 스크립트를 수정하고 맨디언트 레드팀이 제어하는 PowerShell 스크립트를 실행하도록 설정할 수 있었습니다. 사용자가 일상 업무로 인해 장치를 재부팅하면 Intune 관리 스크립트가 트리거되어 악성 스크립트가 실행됩니다.

맨디언트 레드팀은 공격자가 해킹한 시스템에 침투하여 원격으로 제어할 수 있도록 설치하는 악성 소프트웨어인 명령 및 제어 임플란트(command-and-control implant)를 실행하여 PAW에서 임의의 명령을 실행할 수 있었습니다. 그런 다음, 피해자가 Azure Privileged Identity Management를 통해 권한 있는 역할을 활성화하는 순간을 기다렸다가, 쿠키나 토큰을 탈취하여 해당 권한 있는 계정을 사칭함으로써 Entra ID에 대한 관리자 권한을 획득했습니다. 이를 통해 맨디언트 레드팀은 Entra ID에서 Global Administrator 권한을 확보하여 평가 목표를 달성할 수 있었습니다.

침해 완화 방안 & 권장 사항

맨디언트 레드팀은 이번에 평가한 공격 시나리오를 방지하기 위해 다음과 같은 보안 강화를 권장합니다.

  1. DeviceManagementConfiguration.ReadWrite.All 권한이 있는 보안 주체를 검토합니다. Intune을 통해 장치를 관리하는 조직은 DeviceManagementConfiguration.ReadWrite.All 권한을 민감하게 다루어야 합니다. 이 권한은 Intune 관리 장치와 장치에 연결된 ID를 제어할 수 있는 권한을 제공하기 때문입니다. Azure 서비스 주체에 부여된 권한을 정기적으로 검토 조직은 DeviceManagementConfiguration.ReadWrite.All과 더불어 RoleManagement.ReadWrite.Directory, AppRoleAssignment.ReadWrite.All, Application.ReadWrite.All과 같은 중요한 권한을 주기적으로 점검하는 것이 중요합니다. Intune으로 PAW(Privileged Access Workstation)를 관리할 때 주의 Intune의 DeviceManagementConfiguration.ReadWrite.All 권한이나 Intune Role Administrator 같은 Entra 역할을 위임할 때 특히 신중해야 합니다.

  2. Intune에서 다중 관리자 승인을 활성화합니다. Intune에서는 변경 사항을 적용하기 전에 두 번째 관리자의 승인을 요구하는 액세스 정책을 설정할 수 있습니다. 이를 통해 하나의 계정이 손상되더라도 관리 스크립트가 임의로 생성되거나 수정되는 것을 방지할 수 있습니다.

  3. Graph API 활동 로그를 활성화합니다. Graph API 활동 로그를 활성화하면 Graph 리소스에 대한 HTTP 요청 정보를 상세히 제공해, 탐지 및 대응 작업에 유용하게 활용할 수 있습니다.

  4. Workload ID Premium 라이선스 기능을 활용합니다. Workload-ID Premium 라이선스를 사용 중이라면 다음과 같은 보안 기능을 적용할 수 있습니다. 먼저 신뢰할 수 있는 위치에서만 접근하도록 제한하여 무단 액세스 위험을 줄이고 보안을 강화할 수 있습니다. 다음으로 Microsoft Identity Protection의 위험 감지를 통한 보안 강화를 통해 의심스러운 활동이나 위험이 감지되면 사전에 접근을 차단할 수 있습니다.

  5. 서비스 주체 로그인 모니터링을 수행합니다. 서비스 주체의 로그인을 지속적으로 모니터링하면 이상 징후와 잠재적 위협을 탐지하는 데 도움이 됩니다. 이러한 데이터를 보안 운영 시스템에 통합하여 경고를 생성하고 무단 접근 시도에 신속히 대응할 수 있습니다.

맨디언트는 다양한 공격 시나리오를 적용한 평가, 레드팀 평가, 퍼플팀 평가를 통해 공격자가 타겟의 클라우드 환경을 해킹하는 데 사용할 수 있는 다양한 경로에 대한 깊은 이해를 얻었습니다. 추가 정보나 맨디언트의 서비스가 궁금하시면 문의 바랍니다.

게시 위치