AD의 Access Control 에 대해 알아보자

penclicker·2025년 6월 25일

AD 모의해킹

목록 보기
2/3

AD 환경에서는 유저, 컴퓨터나 그룹들을 보통 Object라 명칭한다. 이러한 오브젝트들은 Access Control이라 해서 해당 오브젝트에 여러 권한들이 부여가 되는데 12가지 타입의 AD 오브젝트들이 존재한다.

  1. User object
  2. Contact object
  3. Printer object
  4. Computer object
  5. Shared folder
  6. Group
  7. Organization Unit
  8. Domain
  9. Domain Conroller
  10. Site objects
  11. Bulletin
  12. Foreign Security Principals

이렇게 많은 오브젝트들이 존재하고 이러한 다양한 오브젝트들을 관리한다는것은 엄청 큰 규모의 AD환경에서는 정말 힘들다. 여기서 하나라도 잘못된 권한부여가 이뤄지면 Privilege escalation이 쉽게 될수가 있고 AD의 탐색을 할때는 도메인 유저 권한만 있어도 가능하기 때문이다.

Access Control 이란 무엇인가?

Access Control Model은 유저나, 서비스나, 어떠한 프로젝트가 해당 오브젝트에 접근할때 접근 요청 권한을 체크하는 모델이다.

해당 요청은 Grant가 되거나 Deny가 되는데 해당 오브젝트 권한에 따라 결정된다.

ACL (Access Control List) 는 해당 요청을 체크할때 2가지 스탭으로 접근을 한다.

  1. Access Token - 해당 요청자의 권한과 identity
  2. Object Security Descriptor - 권한 리스트인 DACL (Discretionary Access Control List) 과 SACL (System Access Control List)을 이야기 한다. DACL 은 해당 요청자의 Access Token에서 해당 오브젝트의 권한 리스트를 보고 해당 요청을 허락할지 기각할지 결정한다. 그리고 SACL 은 해당 요청의 성공과 실패 여부를 로그로 기록한다.

예시로 들자면, 어떠한 유저가 재무부서에 접근하고 싶을때, 자기의 Access Token을 보여준다. 해당 Access Token에서는 John Doe (요청자의 Identity) 그리고 Sale Department 라는 내용을 포함한다. 해당 재무부서는 유저의 Access Token을 보고 해당 유저가 어떠한 권한이 있는지 체크를 한다 (DACL). 해당 유저가 권한이 있다면 접근 권한을 부여하고 권한이 없다면 접근을 거부 시킨다. SACL에서는 해당 유저의 성공/실패 여부를 기록한다.

DACL의 구조

Access Control List는 각각의 권한들로 이루어 져있다. 이것들을 우리는 ACEs (Access Control Entries) 라고 불린다.

각각의 entry는 Permission type (Allow 혹은 Deny), Principal Account (누구를 위한 권한인지? 유저인지, 컴퓨터인지 그룹인지...), 어떠한 오브젝트를 해당 Principal Account가 접근 할수 있는지, 그리고 어떠한 Access Rights (Read, Write, Full Control)등을 본다.

Interesting Active Directory Rights

Active Directory 권한들에는 다음과 같은 취약한 권한들이 있을때, 공격이 이루어질수 있다.

  1. GenericAll- full rights to the object (Add users to a group or reset user's password without knowing the existin password)

    완벽한 접근 권한을 가진다. 해당 GenericAll의 권한은 유저를 그룹에 넣거나 해당 유저의 패스워드를 알지 못해도 리셋 시킬수 있다.

  2. GenericWrite - Update object's attributes

    오브젝트의 attributes들을 업데이트 시킬수 있다.

  3. WriteOwner - Change object owner to attacker controlled user take over the object

    오브젝트의 주인을 공격자가 컨트롤 하고있는 유저로 변경하여 오브젝트를 탈취가 가능하다.

  4. WriteDACL - Modify object's ACEs and give attacker full control right over the objects

    해당 오브젝트의 ACE (Access Control Entries)를 수정하여 공격자가 해당 오브젝트의 완벽한 컨트롤을 할수있게 만든다.

  5. AllExtendedRights - Ability to add user to a group or reset password

    유저를 그룹에 넣거나 혹은 패스워드를 리셋시킬수 있다.

  6. ForceChangePassword - Ability to change user's password.

    유저의 비밀번호를 변경시킬수 있다.

  7. Self - Self-Membership - Ability to add yourself to a group.

    자기 자신을 어떠한 그룹에 넣을수있다.

  8. DS-Replication-Get-Changes - DCSync를 하기위해 활성화 되야되는 속성중 하나이다.

  9. DS-Replication-Get-Changes-All - DCSync를 하기위해 활성화 되야되는 속성중 하나이다. 위의 두개의 속성이 활성화가 되어야 DCSync가 가능하다.

profile
Security Researcher | Penetration Tester (모든 포스트는 안전한 보안을 위한 모의해킹 방법론입니다. 안전한 보안을 만드는것을 지향합니다.)

0개의 댓글