무제한 위임은 심각한 사이버 보안 위험을 의미합니다. AD 환경에서 사용자 및 컴퓨터 개체에 적용되는 Active Directory 위임 제어를 악용하기 위한 조치를 취하면, 공격자는 내부에서 가로 이동(lateral movement)하여 도메인까지 장악할 수 있습니다.
엄선한 관련 콘텐츠:
이 블로그 게시물에서는 공격의 한 영역(비제약 위임, unconstrained delegation)을 살펴보고, 보안 팀과 관리자에게 이 보안 위험을 완화하기 위한 효과적인 전략을 제공합니다.
비제약 위임(unconstrained delegation)이란 무엇인가요?
위임(Delegation)을 통해 사용자 또는 컴퓨터가 다른 계정을 가장하여 리소스(예: 백엔드 데이터베이스 서버)에 액세스할 수 있습니다. 위임에는 여러 가지 실용적인 적용 사례가 있으며, Microsoft는 이 블로그 게시물에서 이를 다룹니다。
사용자 또는 컴퓨터 계정의 위임(Delegation) 탭을 사용하면 비제약 위임(unconstrained delegation) 또는 제약 위임(constrained delegation) 중 하나를 구성할 수 있습니다.
- “Trust this computer for delegation to any service (Kerberos delegation only),”를 선택하면 비제약(unconstrained)
- 또는 특정 Service Principal Names (SPNs)를 지정하여 사용자 또는 컴퓨터가 가장할 수 있는 서비스의 범위를 제한할 수 있습니다. 이는 제한적 위임입니다.
또 다른 옵션으로는 리소스 기반 제한적 위임 (RBCD)가 있습니다. 이 방식에서는 리소스에 대해 위임이 구성되며, 리소스에 액세스하는 계정에 구성하는 것이 아닙니다. RBCD는 Windows PowerShell을 사용해 설정할 수 있습니다.
제약 없는 위임(unconstrained delegation)의 위험은 무엇인가요?
제약 없는 위임(unconstrained delegation)에 대해 수행할 수 있는 공격은 여러 가지가 있습니다. 그중 일부는 harmj0y의 이 블로그 글에서 다루고 있으며 Sean Metcalf가 다른 사례들을 설명합니다。몇 가지를 살펴봅시다.
예시 1: 제약 없는 위임(unconstrained delegation)을 악용해 전체 AD 포리스트를 손상시키기
보안 연구자들은 한 포리스트에서 무제한 위임(unconstrained delegation)으로 설정된 머신을 공격자가 장악하면, 다른 포리스트와 그 안의 모든 도메인을 손상시킬 수 있다는 방법 을 보여주었습니다. 양방향 트러스트(two-way trust)가 설정되어 있다면, 공격자는 MS-RPRN 프린터 버그를 사용해 DC가 인증 정보를 공격자에게 다시 전송하도록 만들 수 있으며, 그러면 공격자는 DCSync 를 사용해 신뢰된 도메인을 손상(compromise)시킬 수 있습니다. 예를 들어, 회사가 소규모 회사를 인수하고 그 회사의 도메인을 귀사의 도메인에 조인했다면, 소규모 환경의 시스템을 장악한 공격자가 귀사의 회사 전체 포리스트를 장악할 수도 있는데, 이는 결코 좋은 상황이 아닙니다.
이 버그에 대한 수정 사항을 제공하기 위해 KB article 이 공개되었고, Windows Server 2012 이상에는 이를 방지하기 위한 보안 설정이 있습니다. 다만 기본값으로 켜져 있지 않을 수 있습니다.
예시 2: 무제한 위임(unconstrained delegation)을 악용해 측면 이동(lateral movement) 활성화
또 다른 시나리오가 있습니다. 컴퓨터에서 무제한 위임(unconstrained delegation)이 켜져 있으면, 계정이 해당 컴퓨터에 연결할 때마다 Key Distribution Center(KDC)에서 발급한 티켓-발급 티켓(ticket-granting ticket, TGT)이 나중에 컴퓨터가 사용할 수 있도록 메모리에 저장됩니다. 만약 그 머신이 침해되면, 공격자는 해당 TGT를 확보한 뒤 이를 악용해 막대한 피해를 일으킬 수 있습니다. 특히 TGT가 권한이 매우 높은 사용자에 대한 것이라면 더욱 위험합니다.
예를 들어, Domain Admin이 공유 폴더에 접근하는 방식으로 Common Internet File System(CIFS) 를 통해 특정 컴퓨터에 접속한다고 가정해 보겠습니다. 무제한 위임(unconstrained delegation)이 켜져 있지 않으면, 메모리에는 티켓-발급 서버(ticket-granting server, TGS)만 저장됩니다. 이 티켓은 로컬 머신의 CIFS 서비스에만 접근할 수 있게 해주므로, 공격자는 이를 이용해 측면 이동(lateral movement)을 할 수 없습니다. Mimikatz 명령 sekurlsa::tickets /export 를 사용하면 이를 확인할 수 있으며, 이 명령은 사용자 서비스 티켓(TGS)만 반환합니다:
하지만 무제한 위임(unconstrained delegation)이 활성화되어 있으면, 해당 명령은 관리자 계정의 TGT를 반환하며, 공격자는 이를 사용해 전체 도메인을 손상시키는 Pass-the-Ticket 공격을 수행할 수 있습니다.
시스템에 연결하는 모든 사용자로부터 TGT를 수집하기 위해 공격자는 다음 PowerSpoit 명령을 사용할 수 있습니다:
무제한 위임(unconstrained delegation)을 활성화하는 데 필요한 권한
개체의 위임 제어를 관리하려면 사용자는 다음 권한이 필요합니다:
- SeEnableDelegationPrivilege(사용자 권한)는 도메인 컨트롤러의 로컬 security policy에 의해 제어되며, 다음 Group Policy setting “Enable computer and user accounts to be trusted for delegation”를 통해 관리됩니다(아래 그림 참고).
- 컴퓨터에 대한 msDS-AllowedToDelegateTo 및 userAccountControl 특성을 업데이트할 수 있으며, 이 Group Policy 설정 이 저장됩니다
제한 없는 위임(Unconstrained Delegation) 찾기
제한 없는 위임(unconstrained delegation)이 활성화된 위치를 확인하려면 다음 PowerShell 스크립트를 사용할 수 있습니다. 이 스크립트는 모든 컴퓨터의 사용자 계정 컨트롤(User Account Control, UAC) 값을 확인하여, 제한 없이 위임이 켜져 있는 위치를 찾아냅니다.
또한 누가 SeEnableDelegationPrivilege 권한을 부여받았는지 확인해 보는 것도 좋습니다. 이를 위해 PowerSploit과 Get-DomainPolicy 명령을 사용할 수 있습니다.
제한 없는 위임에서 발생하는 위험을 줄이기 위한 모범 사례
제한 없는 위임(unconstrained delegation)으로 인한 위험을 줄이려면 다음을 권장합니다:
- 제한 없는 위임(unconstrained delegation)이 실제로 필요한지 확인하십시오. 많은 경우 제한 없는 위임이 실수로 활성화되었으며, 완전히 비활성화하거나 제한 위임(constrained delegation) 또는 리소스 기반 제한 위임(resource-based constrained delegation)으로 전환할 수 있습니다. 제한 위임 계정을 침해한 공격자는 DC(도메인 컨트롤러)에서 어떤 사용자든 가장하여 DC의 어떤 서비스로든 접근할 수 있으므로, 제한 위임을 도메인 컨트롤러(DC)에 구성하는 것은 권장되지 않습니다.
- “This account is sensitive and cannot be delegated” 옵션을 사용하여 민감한 계정이 위임에 사용되지 않도록 하십시오.
- 권한이 있는 사용자를 Protected Users 그룹에 배치하십시오. 이렇게 하면 해당 사용자가 위임에 사용되는 것을 방지하고, 인증 후 TGT가 컴퓨터에 남지 않게 됩니다.
- 위임된 계정의 활동을 면밀히 모니터링하십시오. 어떤 유형이든 위임이 구성되고 사용되는 모든 시스템에서는 의심스러운 활동이 있는지 모니터링해야 합니다.
Netwrix가 어떻게 도와드릴 수 있나요?
무제한 위임(Unconstrained delegation)은 악의적인 사용자가 Active Directory 환경에 대한 액세스를 획득하고 지속성을 만들기 위해 악용할 수 있는 수많은 공격 벡터 중 하나입니다. Netwrix Active Directory Security Solution 를 통해 다음을 수행할 수 있습니다:
- 불필요한 위임, 과도한 권한, 상시(privileged) 권한 및 GPO 오구성 등 보안 위험을 파악하고, 대응(완화) 노력을 우선순위로 정할 수 있습니다.
- 전체 IT 인프라에 걸쳐 안전한 구성을 설정하고, 강화된 기준선(hardened baseline)에서 발생한 부적절한 변경 사항을 식별 및 수정하여 이를 지속적으로 유지할 수 있습니다.
- Kerberoasting, DCSync, dit extraction, Golden Ticket 같은 고도화된 위협을 신속하게 탐지하고 대응할 수 있습니다.Kerberoasting, DCSync, dit extraction 그리고 Golden Ticket 공격.
- 알려진 공격에 대한 대응을 자동화하여 피해를 최소화하세요.
- 보안 침해 또는 기타 사고 발생 시 Active Directory를 빠르게 복구할 수 있도록 하세요.
FAQ
Active Directory에서 사용할 수 있는 위임 유형에는 어떤 것이 있나요?
조직에서 사용할 수 있는 위임 유형은 3가지입니다:
- 제약 없는 위임
- 제약된 위임
- 리소스 기반 제약 위임 (RBCD)
리소스 기반 제약 위임(RBCD)이란 무엇인가요?
RBCD를 사용하면 리소스를 소유한 관리자가 해당 리소스에 대한 액세스를 위임할 수 있습니다.
RBCD를 어떻게 구성할 수 있나요?
사용자를 대신하여 액세스를 허용하도록 리소스 서비스를 구성하려면 Windows PowerShell cmdlet (New-ADComputer, New-ADServiceAccount, New-ADUser, Set-ADComputer, Set-ADServiceAccount 및 Set-ADUser)와 함께 매개 변수를 사용하면 됩니다. PrincipalsAllowedToDelegateToAccount.
Netwrix Directory Manager 무료 평가판을 신청하세요
공유하기
더 알아보기
저자 소개
Joe Dibley
보안 연구원
Netwrix의 보안 연구원이며 Netwrix Security Research Team의 일원입니다. Joe는 Active Directory, Windows 및 다양한 엔터프라이즈 소프트웨어 플랫폼과 기술 분야의 전문가로, 새로운 보안 위험, 복잡한 공격 기법, 그리고 이에 대한 대응(완화)과 탐지 방법을 연구합니다.