Netwrix 1Secure는 데이터와 아이덴티티 전반에 걸쳐 통합된 가시성을 제공합니다 - 14일간 무료로 전체 액세스가 가능합니다.무료 평가판 시작

리소스 센터블로그

AdminSDHolder와 SDProp을 사용해 공격자가 지속성을 확보하는 방법

AdminSDHolder와 SDProp을 사용해 공격자가 지속성을 확보하는 방법

Jun 16, 2023

공격자가 예를 들어 공격 경로를 악용해 권한 있는 자격 증명(privileged credentials)을 탈취한 경우, 공격 경로를 악용해 도메인 내에서의 거점을 잃지 않도록 하려 합니다. 즉, 탈취한 계정이 비활성화되거나 비밀번호가 재설정되더라도, 손쉽게 Domain Admin 권한을 다시 확보할 수 있기를 원합니다.

이러한 지속성을 달성하는 한 가지 방법은 특권 계정을 보호하기 위해 의도된 Active Directory 기능을 악용하는 것입니다. 예를 들어 AdminSDHolder와 SDProp이 이에 해당합니다. 이 문서는 이러한 전술이 어떻게 작동하는지, 그리고 이에 어떻게 방어할 수 있는지 설명합니다.

AdminSDHolder와 SDProp이란 무엇인가요?

AdminSDHolder는 모든 Active Directory 도메인에 존재하는 특수 목적의 컨테이너입니다. 즉, AdminSDHolder 개체의 액세스 제어 목록(ACL)은 템플릿으로 사용되어 Active Directory의 모든 보호 그룹과 그 구성원에게 권한을 복사합니다. (보호 그룹은 Domain Admins, Administrators, Enterprise Admins, Schema Admins를 포함해 추가 보안이 필요하다고 식별된 기본 제공 그룹입니다.)

기본적으로 SDProp 프로세스는 60분마다 AdminSDHolder 개체의 ACL을 모든 보호 그룹과 그 구성원 사용자에게 적용합니다. AdminSDHolder에 대한 ACL은 매우 제한적으로 설계되어 있으므로, 이 프로세스는 일반적으로 보안을 강화하는 데 도움이 됩니다.

하지만 공격자가 AdminSDHolder의 ACL을 수정하면, 대신 그 변경된 액세스 권한이 모든 보호 개체에 자동으로 적용됩니다. 예를 들어 공격자는 자신이 통제하는 사용자 계정을 AdminSDHolder ACL에 추가하고 해당 계정에 전체 제어 권한을 부여할 수 있습니다:

Image

관리자가 특정 보호 개체에서 부적절한 권한을 확인하고 이를 제거하더라도, SDProp 프로세스는 단지 1시간 이내에 수정된 ACL을 다시 적용합니다. 그 결과, 이러한 전략은 공격자가 민감한 정보에 접근하는 데 도움이 됩니다.

AdminCount를 사용해 위험 평가하기

AdminCount는 Active Directory 개체의 속성입니다. AdminCount 값이 1이면 해당 개체가(또는 과거에) 보호 그룹 중 최소 하나의 구성원임을 의미합니다. 따라서 AdminCount 값이 1인 모든 개체를 살펴보면, AdminSDHolder에 대한 공격이 여러분의 환경에 얼마나 널리 영향을 미칠 수 있는지 감을 잡을 수 있습니다.

이 분석은 PowerShell과 LDAP 필터 작업을 사용하면 쉽게 수행할 수 있습니다:

      $ldapFilter = “(adminCount=l)”

$domain = New-Object System.DirectoryServices.DirectoryEntry

$search = New-Object System.DirectoryServices.DirectorySearcher

$search.SearchRoot = $domain

$search.PageSize = 1000

$search.Filter = $ldapFilter

$search.SearchScope = “Subtree”

$results = $search.FindAll()

foreach ($result in $results)

      {

             SuserEntry = $result.GetDirectoryEntry()

             Write-host “Object Name = “ $userEntry.name

             Write-host “Obect Class = “ $userEntry.objectClass

             foreach($AdminCount in $userEntry.adminCount)

             {

                   Write-host “AdminCount =” $AdminCount

                   Write-host “”

             }

}
      

한 가지 주의할 점은 사용자가 권한이 있는 그룹에서 제거되더라도 해당 사용자의 AdminCount 값은 1로 유지된다는 것입니다. 하지만 Active Directory에서 이들은 더 이상 보호 개체로 간주되지 않으므로 AdminSDHolder ACL은 이들에게 적용되지 않습니다. 그럼에도 불구하고, AdminSDHolder 권한으로 보호되었던 시점의 흔적으로서 권한 상속이 계속 비활성화되어 있을 가능성이 크기 때문에, 이들에는 AdminSDHolder 권한의 버전이 여전히 설정되어 있을 수 있습니다. 따라서 이러한 개체를 계속 확인하고, 대부분의 경우 권한 상속을 다시 켜는 것이 유용합니다.

AdminSDHolder 악용으로부터 보호

관리 권한이 있는 사용자만 AdminSDHolder ACL을 수정할 수 있으므로, 이 지속(피싱) 전술에 대한 최선의 보호 방법은 관리자 자격 증명의 유출을 방지하는 것입니다.

또한 관리 계정이 침해된 경우에는 AdminSDHolder 개체를 모니터링하고, 변경 사항이 발생하면 알림을 받는 것이 중요합니다. 변경은 절대 일어나면 안 되므로, 어떤 알림이든 즉시 조사하고 원상복구할 가치가 있습니다.

AdminCount 값이 1인 개체를 정기적으로 보고하는 것도 중요합니다. 해당 개체들 중 관리자 권한이 없어야 하는 것이 있다면 올바른 위치에 배치하고 권한을 상속하도록 확인해야 합니다.

Netwrix가 도와드릴 수 있는 방법

Netwrix Active Directory Security Solution는 AdminSDHolder 및 SDProp을 악용하는 공격으로부터 조직을 방어하려는 노력을 지원할 수 있습니다. 특히 다음을 수행할 수 있습니다:

  • 특권 계정이 손상되지 않도록 보호하여 AdminSDHolder를 수정하는 데 사용할 수 없게 하세요.
  • 신원(Identity) 침해를 시사하는 의심스러운 행위를 신속하게 탐지하세요.
  • AdminSDHolder 개체를 모니터링하고, 해당 개체의 변경 사항이 있으면 알림을 받으세요.
  • 자격 증명이 손상되었을 때 피해를 제한하기 위해 과도한 권한을 식별하고 제거하세요.
  • 실시간 알림과 상세 보고서를 통해 Active Directory 환경에서 이루어진 모든 변경 사항을 계속 파악하세요.

자주 묻는 질문

AdminSDHolder란 무엇인가요?

AdminSDHolder는 각 Active Directory 도메인에 생성되는 컨테이너 개체입니다. 이 개체의 ACL은 도메인의 모든 보호 그룹과 해당 구성원에게 자동으로 적용됩니다.

AdminSDHolder는 어디에 위치하나요?

AdminSDHolder 컨테이너는 시스템 컨테이너(CN=System)에 있습니다. Active Directory Users and Computers (ADUC) 관리 콘솔에서 "고급 기능"을 사용하도록 설정하면 확인할 수 있습니다.

AdminCount란 무엇인가요?

AdminCount는 AD 개체의 속성입니다. AdminCount 값이 1이면 해당 개체가(또는 과거에) 하나 이상의 보호 그룹의 구성원임을 나타냅니다.

공유하기

더 알아보기

저자 소개

Jeff Warren

최고 제품 책임자

Jeff Warren은 Netwrix의 제품 포트폴리오를 총괄하며, 보안에 초점을 둔 제품 관리 및 개발 분야에서 10년이 넘는 경험을 바탕으로 기여하고 있습니다. Netwrix에 합류하기 전 Jeff는 Stealthbits Technologies에서 제품 조직을 이끌었으며, 소프트웨어 엔지니어로서의 경험을 활용해 혁신적이고 엔터프라이즈 규모의 보안 솔루션을 개발했습니다. 직접적인 실행 중심의 접근 방식과 까다로운 보안 과제를 해결하는 데 강점을 지닌 Jeff는 실제로 효과가 있는 실용적인 솔루션을 구축하는 데 집중하고 있습니다. 그는 델라웨어 대학교에서 정보 시스템(Information Systems) 학사 학위를 취득했습니다.