후회 없이 Exchange AD 분할 권한 적용하기
이미 모든 사서함을 클라우드로 옮긴 조직에서도 온-프레미스 Exchange Server 설치는 여전히 흔하게 남아 있습니다. 또한 Exchange는 Active Directory 내에서 여전히 매우 강력한 권한을 가지므로, 대부분의 경우 전체 AD를 장악하고 나아가 기업 IT 대부분을 손에 넣는 강력한 공격 경로가 존재합니다. 이른바 “AD 분할 권한(AD Split permissions)”으로 전환하면 이 치명적인 권한이 제거되며, 저는 지금까지 도입을 가로막아 온 단점들을 없앤 솔루션을 설계했습니다.
TLDR: 단점을 제거하면 어떨까요?
Exchange 사용자, 그룹, 연락처 등이 위치한 곳에서 AD 및 RBAC 권한을 다시 부여하는 방법을 찾았습니다. 이 방식이라면 관리자나 ID 관리 시스템 측에서 별도의 도입 작업이 필요하지 않으며, 제 경험상 이것이 대부분의 기업이 이 모델을 구현하지 못하게 막았던 걸림돌이었습니다. 그러면서도 측면 이동(lateral movement)과 도메인 침해에 대한 보안 이점은 그대로 유지됩니다.

세 단계로 구현됩니다:
- AD 분할 권한 모델 구현
- Exchange 서버에 상실된 AD 권한을 부여하되, 관련 OU에 한해서만 부여
- 누락된 PowerShell cmdlet을 다시 활성화하기 위해 Exchange RBAC 부여
모두 Microsoft의 가이드, AD ACL 또는 Exchange RBAC 할당을 통해 이루어집니다.
지금 왜 신경 써야 할까요?
이 기능은 Exchange 2010 SP1과 함께 도입된 이후로 대체로 간과되거나 무시되어 왔습니다. 그러나 기본 공유 권한 모델은 Active Directory 탈취로 이어지는 큰 보안 위험을 나타냅니다. 최근 몇 년간 Exchange가 원격 익스플로잇으로 악명을 떨쳐온 점까지 더하면, 이제는 행동에 나설 때입니다!
이 문제는 도메인 루트에 부여된 권한이 도메인 전체로 상속되는 데서 비롯됩니다.
- 사용자 및 그룹에 대한 권한 수정(사실상 전체 액세스)
- 그룹 구성원 수정
- 사용자 암호 재설정
- 사용자 및 그룹 생성/삭제

일부 높은 권한을 가진 Tier0 사용자 및 그룹만이 AdminSDHolder 프로세스(admincount=1 특성)에 의해 보호되며, 많은 환경에서는 도메인 및/또는 포리스트의 침해를 허용하거나 최소한 심각한 영향을 초래할 수 있는 보호되지 않은 사용자나 그룹이 존재합니다.
대표적인 예시:
- PWHashSync를 사용할 때의 Entra Connect Sync 계정
- 기본 그룹
- EntraConnect 계정과 함께 있는 Allowed RODC Password Replication Group(실제 Windows RODC가 존재하는 경우)
- 더 많은 경로를 보여주는 Untrustworthy Trust Builders: Account Operators Replicating Trust Attack (AORTA) - SpecterOps도 참고하세요(Account Operators 그룹도 유사한 위협입니다)
- 보호를 제거하여 공격 경로를 만들기 위해 Protected Users를 비우는 행위
- 보호되지 않은 사용자 지정 그룹 또는 관리자/서비스 계정
- GPO에 대한 쓰기 권한(도메인 컨트롤러에 적용됨)
- AD 백업, 백업 서버, PKI 템플릿, 하이퍼바이저 등에 대한 액세스 관리
이러한 현재 및 향후의 모든 잠재적 경로를 사후에 통제하기란 매우 어렵습니다. _ADM 사용자 지정 OU의 경우 ACL 상속을 비활성화할 수 있지만, 대부분의 기본 개체는 기본 Builtin OU나 Users 컨테이너에서 이동할 수 없어 취약한 상태로 남습니다.
루트에서 강력한 권한을 제거하는 편이 훨씬 낫고, 이는 Active Directory 분할 권한 모델을 구현함으로써 이루어집니다. Configure Exchange Server for split permissions | Microsoft Learn
그리고 Microsoft도 이에 동의합니다. “…encouraged to implement Active Directory split permissions” Active Directory Hardening Series - Part 7 – Implementing Least Privilege | Microsoft Community Hub
그런데 왜 아무도 하지 않을까요?
분할 권한은 Exchange 2010 SP1이 나오기 전까지는 사용할 수 없었기 때문에 그 무렵에는 이미 모두가 기존 방식을 받아들인 상태였고, 이 기능이 생긴 뒤에도 보안 팀이 도입을 성공적으로 밀어붙이지 못한 것으로 보입니다.
게다가 이 기능은 관리자 및 IDM 프로세스의 변경을 강제했을 것입니다. 예를 들어 먼저 AD에서 사용자나 배포 목록을 생성한 뒤에야 Exchange를 사용해 “메일 사용(mail enable)”으로 설정하는 식입니다.
더 이상 사용할 수 없거나 작동하지 않는 cmdlet:Add-DistributionGroupMember, New-DistributionGroup, New-Mailbox, New-MailContact, New-MailUser, New-RemoteMailbox, Remove-DistributionGroup, Remove-DistributionGroupMember, Remove-Mailbox, Remove-MailContact, Remove-MailUser, Remove-RemoteMailbox, Update-DistributionGroupMember, Add-ADPermission, Remove-ADPermission
적용 방식 예시:
- New-Mailbox(Exchange가 AD에 쓰는 경우)는 다음과 같이 바뀝니다:
- New-ADUser(adm.jdoe가 AD에 쓰는 경우)
- Enable-Mailbox
- SendAs 권한을 위한 Add-ADPermission은 Active Directory 사용자 및 컴퓨터의 보안 탭을 통해 수행해야 하며, 표준 관리자에게는 추가 AD 권한이 필요한 경우가 많습니다.
후회 없는 방법을 보여주세요!
면책 조항: 다음 링크와 문서를 반드시 완전히 읽고 이해한 뒤, 먼저 테스트 환경에서 수행하고, AD 백업이 최신 상태인지, 복구 절차가 확립되어 있는지 확인하세요!
현재 사용 현황 감사
먼저 영향을 받는 cmdlet 중 어떤 것이 어떤 OU에서 사용되고 있는지 확인해야 합니다.$CsvPath ="C:\temp\SplitPermissionAdminAuditLog.csv"
$Cmdlets = "Add-ADPermission","Remove-ADPermission","New-DistributionGroup","Remove-DistributionGroup","Add-DistributionGroupMember","Update-DistributionGroupMember","Remove-DistributionGroupMember","New-Mailbox","Remove-Mailbox","New-RemoteMailbox","Remove-RemoteMailbox","New-MailUser","Remove-MailUser","New-MailContact","Remove-MailContact"
Search-AdminAuditLog -ResultSize 99000 -Cmdlets $Cmdlets| select RunDate,Caller,ObjectModified,CmdletName,@{Name='CmdletParameters';Expression={[string]::join(",", ($_.CmdletParameters))}},succeeded,error | Export-Csv -Path $CsvPath -Delimiter ";" -Encoding Unicode -NoTypeInformation
호출자 및 cmdlet의 빠른 분석:$CSVs=Import-Csv -Path $CsvPath -Delimiter ";"$CSVs|group Caller$CSVs|group CmdletNameAD 권한이 필요한 위치를 파악하기 위해 CSV를 분석하세요. 모든 Exchange 관련 그룹을 전용 OU로 이동하여 최적화할 수도 있습니다.
분할 권한 모델 활성화
Configure Exchange Server for split permissions | Microsoft Learn의 “Switch to Active Directory split permissions” 지침을 따르세요(RBAC 분할 권한이 아님).
본질적으로 이는 “Exchange Windows Permissions” 그룹의 위험한 권한을 제거하고 Exchange를 그룹 구성원에서도 제거합니다.Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /PrepareAD /ActiveDirectorySplitPermissions:true
되돌리려면 다음을 사용하세요: /ActiveDirectorySplitPermissions:false
AD 권한 부여
사용자 지정 AD 그룹을 만들고 Exchange 서버를 구성원으로 추가하세요.
먼저 OU 경로를 조정하세요!New-ADGroup -Name "AD_Custom Exchange Split permissions replacement" -GroupCategory Security -GroupScope DomainLocal -Path "OU=Rights,OU=Groups,OU=T1,OU=_ADM,$((Get-ADDomain).DistinguishedName)" -Description "replaces the permissions lost by split permissions on relevant OUs"Add-ADGroupMember "AD_Custom Exchange Split permissions replacement" -Members "Exchange Trusted Subsystem"
그룹을 통한 권한이 작동하도록 Exchange 서버를 재부팅하세요
사용 사례별로 AD 권한 위임을 쉽게 할 수 있도록 스크립트를 만들었습니다.
INFO: 이러한 권한이 없으면 Exchange 서버는 AD로부터
“INSUFF_ACCESS_RIGHTS”오류를 받게 됩니다.
glueckkanja GitHub에서 Add-ExchangeADSplitPermissionOnOU.ps1을 다운로드하세요
다음 PermissionType을 부여할 수 있습니다:
- CreateUserAndContact
- 사용자 및 연락처에 대한 생성/삭제, ResetPassword, WriteAllProperties
- Exchange cmdlet: New-Mailbox, New-RemoteMailbox, New-MailUser, New-MailContact 및 이에 대응하는 Remove-*
- GroupManage
- 그룹 생성/삭제, 구성원 수정
- Exchange cmdlet: New-DistributionGroup, Remove-DistributionGroup, Add-DistributionGroupMember, Update-DistributionGroupMember, Remove-DistributionGroupMember
- 추가 사용 사례: 사용자가 https://
/EAC를 통해 자신이 소유한 DistributionGroup을 관리
- UserSendAs
- 사용자에 대한 AD 권한 수정
- Exchange cmdlet: Add-ADPermission
- GroupSendAs
- 그룹에 대한 AD 권한 수정
- Exchange cmdlet: Add-ADPermission
스크립트 사용 방법:
Add-ExchangeADSplitPermissionOnOU.ps1 -TargetOU <OU> -PermissionType <GroupManage|UserSendAs|GroupSendAs|CreateUserAndContact> -Trustee "AD_Custom Exchange Split permissions replacement
예:Add-ExchangeADSplitPermissionOnOU.ps1 -TargetOU "OU=ExchangeGroups,OU=HQ,OU=Alderaan,$((Get-ADDomain).DistinguishedName)" -PermissionType GroupManage -Trustee "AD_Custom Exchange Split permissions replacement"
Add-ExchangeADSplitPermissionOnOU.ps1 -TargetOU "OU=ExchangeGroups,OU=HQ,OU=Alderaan,$((Get-ADDomain).DistinguishedName)" -PermissionType GroupSendAs -Trustee "AD_Custom Exchange Split permissions replacement"
Add-ExchangeADSplitPermissionOnOU.ps1 -TargetOU "OU=Users,OU=HQ,OU=Alderaan,$((Get-ADDomain).DistinguishedName)" -PermissionType UserSendAs -Trustee "AD_Custom Exchange Split permissions replacement"
Add-ExchangeADSplitPermissionOnOU.ps1 -TargetOU "OU=Users,OU=HQ,OU=Alderaan,$((Get-ADDomain).DistinguishedName)" -PermissionType CreateUserAndContact -Trustee "AD_Custom Exchange Split permissions replacement"
Exchange RBAC 부여
Add-DistributionGroupMember 및 Remove-DistributionGroupMember cmdlet에 대해 -BypassSecurityGroupManagerCheck 매개 변수를 다시 활성화:New-RoleGroup -Name "SplitPermission Security Group Creation and Membership" -Roles "Security Group Creation and Membership" -Members "Organization Management","Recipient Management" -Description "Brings back -BypassSecurityGroupManagerCheck to Add-DistributionGroupMember, but also needs AD ACL for Exchange Server on target DLs"
INFO:
그렇지 않으면 "-BypassSecurityGroupManagerCheck parameter is not available" 또는 "You don't have sufficient permissions. This operation can only be performed by a manager of the group" 오류가 발생합니다.
필요한 매개 변수와 함께 New-Mailbox, New-RemoteMailbox, New-MailContact, Remove-... cmdlet을 다시 활성화:New-RoleGroup -Name "SplitPermission Mail Recipient Creation" -Roles "Mail Recipient Creation" -Members "Organization Management","Recipient Management" -Description "Brings back New-Mailbox, New-RemoteMailbox, New-MailUser, New-MailContact and matching Remove-... cmdlets, but additionally Exchange needs AD ACL for Exchange Server on target OUs"
결론
이 가이드를 통해 더 많은 분들이 Exchange를 통한 침해로부터 Active Directory를 보호하는 이 중요한 단계를 밟기를 바랍니다. 저는 고객사에서 Exchange AD 분할 권한 모델과 이 글에서 소개한 적용 방식을 구현하면서 아직까지 문제를 겪은 적이 없습니다.
저는 Microsoft가 현재의 전부 아니면 전무 방식 대신, 이러한 세분화된 OU 기반 접근 방식을 기본적으로 구현하여 이 방식이 널리 채택되기를 바랍니다.
AD 계층화(Tiering)는 제가 특히 중요하게 여기는 부분입니다. 추가로, Exchange 서버에 Domain Admin(또는 어떤 Tier0 계정으로도) 로그온하지 말고 지금부터는 Tier1으로 취급하며 가능한 한 빨리 AD 계층화를 구현하세요. 첫 단계로, AD 보안 및 제어 경로를 평가하기 위해 PingCastle 또는 Purple Knight 같은 도구를 권장합니다.














