AD 환경에서는 유저, 컴퓨터나 그룹들을 보통 Object라 명칭한다. 이러한 오브젝트들은 Access Control이라 해서 해당 오브젝트에 여러 권한들이 부여가 되는데 12가지 타입의 AD 오브젝트들이 존재한다.
이렇게 많은 오브젝트들이 존재하고 이러한 다양한 오브젝트들을 관리한다는것은 엄청 큰 규모의 AD환경에서는 정말 힘들다. 여기서 하나라도 잘못된 권한부여가 이뤄지면 Privilege escalation이 쉽게 될수가 있고 AD의 탐색을 할때는 도메인 유저 권한만 있어도 가능하기 때문이다.
Access Control Model은 유저나, 서비스나, 어떠한 프로젝트가 해당 오브젝트에 접근할때 접근 요청 권한을 체크하는 모델이다.
해당 요청은 Grant가 되거나 Deny가 되는데 해당 오브젝트 권한에 따라 결정된다.
ACL (Access Control List) 는 해당 요청을 체크할때 2가지 스탭으로 접근을 한다.
예시로 들자면, 어떠한 유저가 재무부서에 접근하고 싶을때, 자기의 Access Token을 보여준다. 해당 Access Token에서는 John Doe (요청자의 Identity) 그리고 Sale Department 라는 내용을 포함한다. 해당 재무부서는 유저의 Access Token을 보고 해당 유저가 어떠한 권한이 있는지 체크를 한다 (DACL). 해당 유저가 권한이 있다면 접근 권한을 부여하고 권한이 없다면 접근을 거부 시킨다. SACL에서는 해당 유저의 성공/실패 여부를 기록한다.
Access Control List는 각각의 권한들로 이루어 져있다. 이것들을 우리는 ACEs (Access Control Entries) 라고 불린다.
각각의 entry는 Permission type (Allow 혹은 Deny), Principal Account (누구를 위한 권한인지? 유저인지, 컴퓨터인지 그룹인지...), 어떠한 오브젝트를 해당 Principal Account가 접근 할수 있는지, 그리고 어떠한 Access Rights (Read, Write, Full Control)등을 본다.
Active Directory 권한들에는 다음과 같은 취약한 권한들이 있을때, 공격이 이루어질수 있다.
GenericAll- full rights to the object (Add users to a group or reset user's password without knowing the existin password)
완벽한 접근 권한을 가진다. 해당 GenericAll의 권한은 유저를 그룹에 넣거나 해당 유저의 패스워드를 알지 못해도 리셋 시킬수 있다.
GenericWrite - Update object's attributes
오브젝트의 attributes들을 업데이트 시킬수 있다.
WriteOwner - Change object owner to attacker controlled user take over the object
오브젝트의 주인을 공격자가 컨트롤 하고있는 유저로 변경하여 오브젝트를 탈취가 가능하다.
WriteDACL - Modify object's ACEs and give attacker full control right over the objects
해당 오브젝트의 ACE (Access Control Entries)를 수정하여 공격자가 해당 오브젝트의 완벽한 컨트롤을 할수있게 만든다.
AllExtendedRights - Ability to add user to a group or reset password
유저를 그룹에 넣거나 혹은 패스워드를 리셋시킬수 있다.
ForceChangePassword - Ability to change user's password.
유저의 비밀번호를 변경시킬수 있다.
Self - Self-Membership - Ability to add yourself to a group.
자기 자신을 어떠한 그룹에 넣을수있다.
DS-Replication-Get-Changes - DCSync를 하기위해 활성화 되야되는 속성중 하나이다.
DS-Replication-Get-Changes-All - DCSync를 하기위해 활성화 되야되는 속성중 하나이다. 위의 두개의 속성이 활성화가 되어야 DCSync가 가능하다.