NTFS Permissions, Share Permissions and ACLs: The Windows Authorization Model
Concept
Section titled βConceptβThe Windows securable object model relies on Security Descriptors attached to every file, directory, registry key, and service:
- Owner SID: Holds default legal control over the object and can always rewrite the DACL via
WRITE_DAC. - Primary Group SID: Maintained for POSIX subsystem compatibility.
- DACL (Discretionary Access Control List): An ordered list of Access Control Entries (ACEs) establishing who is permitted (Allow) or forbidden (Deny) to execute operations.
- SACL (System Access Control List): Directs the security event log generation for access successes or failures.
Why This Matters in DFIR
Section titled βWhy This Matters in DFIRβAuditing NTFS permissions and SMB shares answers critical intrusion questions:
- Establishing Exfiltration Scope: Prove definitively whether a compromised user account possessed the authorization to read target repositories.
- Reconstructing Ransomware Execution: Reconstruct which account deposited encrypted extensions and modified files on central file servers.
- Identifying DACL Tampering for Persistence: Threat actors modify object DACLs (e.g., adding an
Allow GenericAllACE for a low-privilege user on a service binary or theAdminSDHoldercontainer).
How It Works
Section titled βHow It Worksβ1. DACL Evaluation Algorithm
Section titled β1. DACL Evaluation AlgorithmβThe Security Reference Monitor (SRM) evaluates ACEs from top to bottom:
[Access Request: Read + Write] β βΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ 1. Explicit ACE : DENY Write (Interns Group) β βββΊ Immediate Write Denial!ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β 2. Explicit ACE : ALLOW Read (jdoe) β βββΊ Read Access Granted!ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β 3. Inherited ACE: ALLOW Write (Users Group) β βββΊ Ignored due to prior explicit denyββββββββββββββββββββββββββββββββββββββββββββββββββββββββββCanonical ACE Order:
- Explicit Deny
- Explicit Allow
- Inherited Deny
- Inherited Allow
If an explicit Deny matching the caller is encountered, access is immediately denied. When all requested access bits are satisfied by Allow ACEs, the check succeeds. If the end of the DACL is reached with unsatisfied access bits, access is denied by default.
2. SMB Shares vs NTFS Permissions
Section titled β2. SMB Shares vs NTFS PermissionsβNetwork (SMB) βββΊ [Share Permissions] βββΊ [NTFS Permissions] βββΊ File on Disk| Share Permission | NTFS Permission | Effective Network Access | Effective Local Console Access |
|---|---|---|---|
Everyone : Read | Everyone : Full Control | Read Only | Full Control |
Everyone : Full Control | Everyone : Read | Read Only | Read Only |
Domain Users : Change | Domain Users : Modify | Modify (Write) | Modify (Write) |
Everyone : Full Control | jdoe : Deny Write | Write Denied for jdoe | Write Denied for jdoe |
What Is Possible
Section titled βWhat Is Possibleβ- Being Owner Without Read Rights: An owner stripped of Read permissions cannot read the file immediately, but holds
WRITE_DACauthority to grant themselves access. - Bypassing DACLs via
SeBackupPrivilege: Backup utilities (and adversaries holding this right) open files withFILE_FLAG_BACKUP_SEMANTICS, instructing the kernel to bypass DACL checks. - Administrative Hidden Shares: Appending
$(e.g.,C$,ADMIN$) hides the share from browser enumeration but enforces standard ACL checks.
What Is Not Possible
Section titled βWhat Is Not Possibleβ- Overriding an Explicit Deny via Group Membership: If user
jdoeis inDomain Admins(Allow), but an explicit ACE setsjdoe: Deny, access is denied. - Network Writes Through Read-Only Shares: Even
Domain Adminscannot write through a share restricted toRead.
Forensic Artifacts
Section titled βForensic ArtifactsβEventID: 5140 # Network Share Object Was AccessedShareName: \\*\FinanceIpAddress: 192.168.1.105SubjectUserName: jdoe
EventID: 5145 # Network Share Object Check (Detailed Triage)ShareName: \\*\FinanceRelativeTargetName: Invoices\salaries_2026.xlsxAccessMask: 0x120089 # ReadData, ReadEA, ReadAttributes, ReadControlSubjectUserName: jdoeSubjectUserSid: S-1-5-21-111111111-222222222-333333333-1105Key Takeaways
Section titled βKey Takeawaysβ- Network access is bounded by the most restrictive setting between Share and NTFS.
- Explicit Deny ACEs take precedence over all Allow ACEs.
- The Owner of an object can always modify its DACL.
- Event ID 5145 documents specific file targets and the requested
AccessMask.