ACLs - DACLs/SACLs/ACEs

Trickest를 사용하여 세계에서 가장 고급 커뮤니티 도구를 활용한 워크플로우를 쉽게 구축하고 자동화하세요. 오늘 바로 액세스하세요:

제로부터 영웅이 될 때까지 AWS 해킹을 배우세요 htARTE (HackTricks AWS Red Team 전문가)!

HackTricks를 지원하는 다른 방법:

액세스 제어 목록 (ACL)

액세스 제어 목록 (ACL)은 객체 및 해당 속성에 대한 보호를 지시하는 일련의 순서가 지정된 액세스 제어 항목 (ACE)으로 구성됩니다. 본질적으로 ACL은 주어진 객체에서 어떤 보안 주체(사용자 또는 그룹)가 허용되거나 거부되는 작업을 정의합니다.

두 가지 유형의 ACL이 있습니다:

  • 임의 액세스 제어 목록 (DACL): 객체에 대한 액세스 권한을 가진 사용자 및 그룹을 지정합니다.

  • 시스템 액세스 제어 목록 (SACL): 객체에 대한 액세스 시도의 감사를 관리합니다.

파일에 액세스하는 프로세스는 객체의 보안 설명자를 사용자의 액세스 토큰과 비교하여 액세스가 허용되어야 하는지 및 그 액세스의 범위를 결정하는 방식에 따라 수행됩니다.

주요 구성 요소

  • DACL: 객체에 대한 사용자 및 그룹의 액세스 권한을 부여하거나 거부하는 ACE를 포함합니다. 기본적으로 액세스 권한을 지시하는 주요 ACL입니다.

  • SACL: 객체에 대한 액세스 감사를 위해 사용되며, ACE는 보안 이벤트 로그에 기록할 액세스 유형을 정의합니다. 무단 액세스 시도를 감지하거나 액세스 문제를 해결하는 데 유용할 수 있습니다.

ACL과 시스템 상호 작용

각 사용자 세션은 해당 세션에 관련된 보안 정보(사용자, 그룹 ID 및 권한)를 포함하는 액세스 토큰과 관련이 있습니다. 이 토큰에는 세션을 고유하게 식별하는 로그온 SID도 포함됩니다.

로컬 보안 권한(LSASS)은 액세스를 시도하는 보안 주체와 일치하는 DACL의 ACE를 검사하여 액세스 요청을 처리합니다. 관련 ACE가 없으면 즉시 액세스가 허용됩니다. 그렇지 않으면 LSASS는 ACE를 액세스 토큰의 보안 주체 SID와 비교하여 액세스 자격 여부를 결정합니다.

요약된 프로세스

  • ACLs: DACL을 통해 액세스 권한을 정의하고 SACL을 통해 감사 규칙을 정의합니다.

  • 액세스 토큰: 세션의 사용자, 그룹 및 권한 정보를 포함합니다.

  • 액세스 결정: DACL ACE를 액세스 토큰과 비교하여 결정하며, 감사를 위해 SACL을 사용합니다.

ACEs

**세 가지 주요 유형의 액세스 제어 항목 (ACE)**이 있습니다:

  • 액세스 거부 ACE: 이 ACE는 특정 사용자 또는 그룹에 대한 객체 액세스를 명시적으로 거부합니다 (DACL에서).

  • 액세스 허용 ACE: 이 ACE는 특정 사용자 또는 그룹에 대한 객체 액세스를 명시적으로 허용합니다 (DACL에서).

  • 시스템 감사 ACE: 시스템 액세스 제어 목록 (SACL) 내에 위치한 이 ACE는 사용자 또는 그룹에 의한 객체 액세스 시도에 대한 감사 로그를 생성합니다. 액세스가 허용되었는지 또는 거부되었는지 및 액세스의 성격을 문서화합니다.

각 ACE에는 네 가지 중요한 구성 요소가 있습니다:

  1. 사용자 또는 그룹의 보안 식별자 (SID) (또는 그래픽 표현에서의 주체 이름).

  2. ACE 유형 (액세스 거부, 허용 또는 시스템 감사를 식별하는 플래그).

  3. 자식 객체가 부모로부터 ACE를 상속할지 여부를 결정하는 상속 플래그.

  4. 객체의 부여된 권한을 지정하는 32비트 값인 액세스 마스크.

액세스 결정은 각 ACE를 순차적으로 검사하여 수행되며:

  • 액세스 거부 ACE가 액세스 토큰에서 신뢰자에게 요청된 권한을 명시적으로 거부하는 경우.

  • **액세스 허용 ACE(s)**가 액세스 토큰에서 신뢰자에게 모든 요청된 권한을 명시적으로 부여하는 경우.

  • 모든 ACE를 확인한 후에도 요청된 권한 중 명시적으로 허용되지 않은 경우, 액세스가 암시적으로 거부됩니다.

ACE 순서

ACEs (누가 무엇에 액세스할 수 있는지를 말하는 규칙)가 포함된 목록인 DACL에 배치되는 방식은 매우 중요합니다. 이는 시스템이 이러한 규칙을 기반으로 액세스를 부여하거나 거부한 후에는 나머지를 살펴보지 않기 때문입니다.

이러한 ACE를 구성하는 가장 좋은 방법이 있으며, 이를 **"정규 순서"**라고 합니다. 이 방법은 모든 것이 원활하고 공정하게 작동하도록 돕습니다. Windows 2000Windows Server 2003과 같은 시스템에서는 다음과 같이 진행됩니다:

  • 먼저, 이 항목에 특별히 만든 모든 규칙을 다른 근원(예: 상위 폴더)에서 온 규칙보다 앞에 놓습니다.

  • 이러한 특정 규칙 중에서 **"아니오 (거부)"**를 말하는 규칙을 **"예 (허용)"**를 말하는 규칙보다 앞에 놓습니다.

  • 다른 근원에서 온 규칙의 경우, 가장 가까운 소스에서 시작한 다음 거기서부터 다시 거슬러 올라갑니다. 다시 한 번 **"아니오"**를 "예" 앞에 놓습니다.

이 설정은 두 가지 큰 방법으로 도움이 됩니다:

  • 특정 **"아니오"**가 있으면 다른 "예" 규칙이 무엇이든 상관없이 존중받도록 합니다.

  • 항목 소유자가 부모 폴더 또는 더 뒤에서 오는 규칙이 작동하기 전에 누가 들어올지에 대한 최종 결정권을 갖도록 합니다.

이렇게 하면 파일 또는 폴더 소유자가 누가 액세스할 수 있는지를 매우 정확하게 지정하여 올바른 사람들이 들어오고 잘못된 사람들이 들어오지 못하도록 할 수 있습니다.

따라서 **"정규 순서"**는 액세스 규칙이 명확하고 잘 작동하도록 하고, 특정 규칙을 먼저 두고 모든 것을 스마트하게 조직하는 데 도움이 됩니다.

Trickest를 사용하여 세계에서 가장 고급 커뮤니티 도구를 활용한 워크플로우를 쉽게 구축하고 자동화하세요. 오늘 바로 액세스하세요:

### GUI 예시

여기에서 예시 확인

이것은 ACL, DACL 및 ACE를 보여주는 폴더의 클래식 보안 탭입니다:

고급 버튼을 클릭하면 상속과 같은 추가 옵션을 볼 수 있습니다:

그리고 보안 주체를 추가하거나 편집하는 경우:

마지막으로 감사 탭에서 SACL을 확인할 수 있습니다:

간단히 설명하는 접근 제어

자원에 대한 액세스를 관리할 때 폴더와 같은 자원에 대한 액세스 제어 목록 (ACL) 및 액세스 제어 항목 (ACE)이라고 하는 규칙 목록을 사용합니다. 이러한 규칙은 특정 데이터에 누가 액세스할 수 있는지 또는 할 수 없는지를 정의합니다.

특정 그룹에 대한 액세스 거부

Cost라는 폴더가 있다고 상상해보세요. 마케팅 팀을 제외한 모든 사람이 액세스할 수 있도록 하려고 합니다. 규칙을 올바르게 설정하여 마케팅 팀이 다른 모든 사람에게 액세스를 허용하기 전에 명시적으로 액세스를 거부할 수 있습니다. 이는 마케팅 팀에 대한 액세스 거부 규칙을 모든 사람에 대한 액세스를 허용하는 규칙 앞에 배치함으로써 수행됩니다.

거부된 그룹의 특정 구성원에 대한 액세스 허용

마케팅 이사인 Bob이 일반적으로 액세스 권한이 없어야 하는 마케팅 팀의 Cost 폴더에 액세스해야 한다고 가정해보겠습니다. Bob을 위해 액세스를 부여하는 특정 규칙 (ACE)을 추가하고, 일반적으로 액세스를 거부하는 규칙 앞에 배치함으로써 Bob이 팀의 일반 제한에도 불구하고 액세스를 받을 수 있습니다.

액세스 제어 항목 이해

ACE는 ACL 내의 개별 규칙입니다. 사용자 또는 그룹을 식별하고 허용되거나 거부되는 액세스를 지정하며 하위 항목에 대한 이러한 규칙이 적용되는 방법 (상속)을 결정합니다. ACE에는 두 가지 주요 유형이 있습니다:

  • 일반 ACE: 모든 유형의 개체에 영향을 미치거나 컨테이너 (폴더와 같은)와 비컨테이너 (파일과 같은)만을 구별하는 규칙입니다. 예를 들어, 사용자가 폴더의 내용을 볼 수 있지만 내부 파일에 액세스할 수 없도록 하는 규칙.

  • 개체별 ACE: 특정 유형의 개체 또는 개체 내의 개별 속성에 대해 규칙을 설정할 수 있도록 더 정확한 제어를 제공합니다. 예를 들어, 사용자 디렉터리에서 사용자가 전화 번호를 업데이트할 수 있지만 로그인 시간을 업데이트할 수 없도록 하는 규칙.

각 ACE에는 규칙이 적용되는 대상 (보안 식별자 또는 SID), 규칙이 허용하거나 거부하는 내용 (액세스 마스크), 다른 개체에 상속되는 방식과 같은 중요한 정보가 포함되어 있습니다.

ACE 유형 간 주요 차이점

  • 일반 ACE는 모든 개체의 모든 측면에 동일한 규칙이 적용되는 간단한 액세스 제어 시나리오에 적합합니다.

  • 개체별 ACE는 특히 Active Directory와 같은 환경에서 특정 개체의 속성에 대한 액세스를 다르게 제어해야 하는 복잡한 시나리오에 사용됩니다.

요약하면, ACL 및 ACE는 정확한 액세스 제어를 정의하여 민감한 정보나 자원에 대한 액세스를 가진 사람 또는 그룹만이 액세스할 수 있도록 하며, 액세스 권한을 개별 속성이나 개체 유형 수준까지 맞춤화할 수 있습니다.

액세스 제어 항목 레이아웃

ACE 필드설명

유형

ACE 유형을 나타내는 플래그. Windows 2000 및 Windows Server 2003은 모든 보안 가능한 개체에 첨부된 세 가지 일반 ACE 유형과 Active Directory 개체에 대해 발생할 수 있는 세 가지 개체별 ACE 유형을 지원합니다.

플래그

상속 및 감사를 제어하는 비트 플래그 세트.

크기

ACE에 할당된 메모리 바이트 수.

액세스 마스크

개체에 대한 액세스 권한에 해당하는 32비트 값. 비트는 켜거나 끌 수 있지만, 설정의 의미는 ACE 유형에 따라 다릅니다. 예를 들어, 읽기 권한에 해당하는 비트가 켜져 있고 ACE 유형이 거부인 경우, ACE는 개체의 권한을 읽을 수 없도록 거부합니다. 동일한 비트가 켜져 있지만 ACE 유형이 허용인 경우, ACE는 개체의 권한을 읽을 수 있도록 허용합니다. 액세스 마스크의 자세한 내용은 다음 표에 나와 있습니다.

SID

이 ACE에 의해 제어되거나 모니터링되는 사용자 또는 그룹을 식별합니다.

액세스 마스크 레이아웃

비트 (범위)의미설명/예시

0 - 15

개체별 액세스 권한

데이터 읽기, 실행, 데이터 추가

16 - 22

표준 액세스 권한

삭제, ACL 쓰기, 소유자 쓰기

23

보안 ACL에 액세스 가능

24 - 27

예약됨

28

일반 ALL (읽기, 쓰기, 실행)

하위 모든 것

29

일반 실행

프로그램 실행에 필요한 모든 것

30

일반 쓰기

파일 쓰기에 필요한 모든 것

31

일반 읽기

파일 읽기에 필요한 모든 것

참고 자료

Last updated