此文于2022年1月28日更新。
本文主要讲述基本的概念。内容参考 微软文档
访问控制是指控制用户访问操作系统资源。 使用访问控制模型可以控制进程访问安全对象或执行各种系统管理任务。
访问控制模型有两个基本部分:
- 访问令牌—其中包含已登录用户的相关信息。
- 安全描述符—其中包含安全对象的相关安全信息。
这里的安全对象包括: NTFS卷上的文件和目录、注册表项、网络共享、服务、进程、Active Directory 对象等。
#访问令牌
访问令牌是描述进程或线程的安全上下文的对象。 用户登录后,系统(LSA)将生成访问令牌。 之后以该用户执行的每一个进程都有此访问令牌的副本。
当线程与安全对象进行交互或尝试执行需要特权的任务时,系统使用访问令牌来标识用户。
访问令牌包含以下信息:
用户的SID
用户所属组的SID
标识当前登录会话的登录SID
用户或用户组所拥有的权限列表
所有者的SID
主要组的SID
用户在不指定安全描述符的情况下创建安全对象时系统使用的默认DACL
访问令牌的来源
是主要令牌还是模拟令牌
受限制SID的列表
当前的模拟级别
其他数据
#模拟令牌
每个进程都有一个主令牌,用于描述与进程所关联用户的安全上下文。 默认情况下,进程的线程将使用主令牌与安全对象交互。
此外,线程可以模拟客户端帐户(其实可以理解为这台机器上的其他账户)。 模拟时允许线程使用客户端的安全上下文与安全对象进行交互。 模拟客户端的线程同时具有主令牌和模拟令牌。
模拟令牌的完整性级别必须小于或等于调用进程的完整性级别,否则模拟调用将失败。比如在开启UAC的情况下只能模拟未提升权限的(过滤的)中等完整性令牌。
#受限令牌
受限令牌是由CreateRestrictedToken函数修改的主令牌或模拟令牌。 在受限令牌的安全上下文中,运行的进程或模拟线程会被限制访问安全对象或执行特权操作。
可通过以下方式对令牌权限进行限制:
- 删除令牌中的权限
- 将"仅拒绝"属性应用于令牌中的 sid,使其不能用于访问受保护的对象。
- 指定受限制的sid列表,该列表可限制对安全对象的访问
受限制的进程或线程尝试访问某个安全对象时,系统会执行两次访问检查:一个是所使用令牌的 sid,另一个是受限制的sid 列表。 当这两个访问检查都通过时,才授予访问权限。
访问令牌中的 SID
访问令牌中的用户和组的SID都有一组属性,系统在收到访问请求时会对其进行检查。如下:
属性 | 描述 |
---|---|
SE_GROUP_ENABLED | 当系统执行访问检查时,如果启用了该属性,它会检查允许访问和拒绝访问的ACE 条目。没有设置该属性的SID 会在权限检查时被忽略。 |
SE_GROUP_USE_FOR_DENY_ONLY | 具有此属性的 SID 代表仅拒绝 SID。当系统执行访问检查时,它会忽略允许此 SID访问的 ACE,只检查拒绝此 SID访问的 ACE。如果设置了此属性,则 SE_GROUP_ENABLED 属性无效。 |
对访问令牌的修改权限
对访问令牌的修改权限由令牌中的安全描述符控制。系统会根据安全描述符中的DACL 检查请求的访问权限。可使用GetKernelObjectSecurity
和SetKernelObjectSecurity
函数为访问令牌设置安全描述符。
下面是针对访问令牌的操作权限:
- 访问令牌支持
DELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNER
这些标准权限。 不支持SYNCHRONIZE
权限。 ACCESS_SYSTEM_SECURITY
权限用于在令牌的安全描述符中访问或修改SACL。- 更详细的操作令牌的权限,参考微软官方文档。
#令牌中的特权
参考: https://www.anquanke.com/post/id/254165
某些特权可以使用户绕过内核中对给定对象的访问检查。
这里的特权指令牌中的“用户或用户组所拥有的权限列表”。
特权是一个用户或组在本地计算机执行各种系统相关操作(关闭系统、装载设备驱动程序、改变系统时间)的权限,特权与访问权限的区别如下:
- 特权控制账户对系统资源和系统相关任务的访问,而访问权限控制对安全对象(可以具有安全描述符的对象)的访问
- 系统管理员为用户或组指派特权,而系统根据对象的DACL中的ACE授予或拒绝对安全对象的访问,有时拥有特权可以忽略ACL的检查
关键特权介绍
-
SeDebugPrivilege
通常情况下,用户只对属于自己的进程有调试的权限,但如果该用户Token中被赋予
SeDebugPrivilege
并启用时,该用户就拥有了调试其他用户进程的权限,此时就可以对一些高权限进程执行操作以获取对应的权限。有此特权的令牌,Windows内核将跳过对任何进程和线程对象的DACL检查。
-
SeBackupPrivilege
该特权代表需要执行备份操作的权限,授予当前用户对所有文件的读取权限,不受文件原本的ACL限制,主要有以下利用思路:
- 备份SAM数据库
- 备份磁盘上高权限用户的敏感文件
- 域内在域控上备份ntds.dit
-
SeImpersonatePrivilege
当
SeImpersonatePrivilege
特权分配给用户时,表示允许该用户运行的程序模拟客户端,默认Service账户(如MSSQL、IIS的服务账户)和管理员账户会拥有该权限。该权限也是一些potato提权的重要条件。 -
SeEnableDelegationPrivilege
想要配置无约束委派或约束委派,不仅需要对
userAccountControl
属性有写权限,还需要在域控有SeEnableDelegationPrivilege
特权。利用方法参考: 组策略利用
#令牌的利用
- 假冒/窃取令牌: 攻击者创建一个新的访问令牌,该令牌使用 DuplicateToken(Ex) 复制现有令牌。
- 使用令牌创建进程: 攻击者创建一个新的访问令牌,并使用它创建一个在模拟用户的安全上下文下运行的新进程。
- 制作和模拟令牌: 拥有用户名和密码,但用户未登录系统。攻击者可以使用该功能为用户创建登录会话。
一般的利用流程为:
WindowsPrincipal:判断当前权限
LookupPrivilegeValue:判断是否拥有SeDebugPrivilege权限
OpenProcess:打开进程获取句柄
OpenProcessToken:打开进程令牌获取hToken
DuplicateToken:复制令牌
CreateProcessWithTokenW:启动进程
使用 PROCESS_QUERY_INFORMATION
或 PROCESS_ALL_ACCESS
的访问权限对某些 SYSTEM 进程调用 OpenProcess()
时,可以成功窃取这些进程的访问令牌。
dllhost.exe
lsass.exe
OfficeClickToRun.exe
svchost.exe(只适用于某些PID)
Sysmon64.exe
unsecapp.exe
VGAuthService.exe
vmacthlp.exe
vmtoolsd.exe
winlogon.exe
对于受 PPL 保护的某些 SYSTEM 进程,如果以 PROCESS_QUERY_LIMITED_INFORMATION
访问权限调用 OpenProcess()
,还是能够窃取访问令牌,这些进程包括:
csrss.exe
Memory Compression.exe
services.exe
smss.exe
wininit.exe
如果想在某个进程上调用OpenProcessToken()
,那么BUILTIN\Administrator必须为TokenOwner
#安全描述符
安全描述符包含了与对象有关的安全信息。安全描述符由SECURITY_DESCRIPTOR
结构体组成。一个安全描述符包含了以下内容:
- 对象的所有者与所在主要组的SID
- DACL—指定了特定用户或组的访问权限。(拒绝或允许)
- SACL—指定了对对象进行访问的类型,并生成审计记录。
- 一系列的控制bit位,用于限定安全描述符或它的单个成员的含义。
#为新对象创建权限
-
新对象的DACL
- 新对象的DACL可由对象的创建者指定。在安全描述符的
SE_DACL_PROTECTED
控制位没有被设置的情况下,系统会合并可继承的ACE和创建者指定的DACL。 - 如果创建者没有指定安全描述符,系统会利用可继承的ACE来创建新对象的DACL。
- 如果既没有指定安全描述符,也没有可继承的ACE。那么对象的DACL会被设置成创建者的主令牌或模拟令牌中的默认DACL。
- 如果上面三个都没有,那么系统会创建没有DACL的对象。这样所有人都有权限访问该对象。
- 新对象的DACL可由对象的创建者指定。在安全描述符的
-
新对象的SACL
- 第一条同DACL的创建规则。只是来自父类的
SYSTEM_RESOURCE_ATTRIBUTE_ACEs
和SYSTEM_SCOPED_POLICY_ID_ACEs
始终会被合并到新对象中,即使SE_DACL_PROTECTED
位被设置。 - 如果创建者没有指定安全描述符,系统根据可继承的ACE 创建对象的SACL。
- 如果没有指定SACL和存在可继承的SACL,那么对象就没有SACL。
对新对象指定SACL,需要对象的创建者开启
SE_SECURITY_NAME
特权。如果指定的SACL只包含SYSTEM_RESOURCE_ATTRIBUTE_ACEs
或对象的SACL全是继承的ACE,那么就不需要此特权。 - 第一条同DACL的创建规则。只是来自父类的
-
新对象的所有者
- 对象的所有者默认有对象的
WRITE_DAC
权限,代表对象的所有者可以编辑对象的DACL。 - 新对象的所有者是来自创建进程的主令牌或模拟令牌中的所有者SID。可使用
SetTokenInformation
函数来设置访问令牌的默认所有者。 - 启用了
SE_TAKE_OWNERSHIP
权限的进程能将它自己设置为对象的所有者。拥有SE_RESTORE_NAME
权限或对对象有WRITE_OWNER
权限的进程能够将任何有效用户或组SID设置为对象的所有者。
- 对象的所有者默认有对象的
-
新对象的主要组
对象的创建者可以指定新对象的主要组,如果没有被指定,那会被设置为创建者主令牌或模拟令牌中的主要组。
#ACL
一个ACL 是由 ACE 组成的列表。在ACL中的每个ACE 用于标识用户和指定对此用户的允许、拒绝、审计等访问权限。安全描述符包含两种类型的ACL: DACL、SACL
。
DACL 标识了用户对对象的访问是被允许或被拒绝。当进程尝试访问安全对象时,系统会检查对象的 DACL 中的 ACE 以决定是否授予访问权限。
SACL 允许管理员记录访问对象的日志。每个ACE 指定了某个用户尝试获取对象的类型。当访问尝试失败时,SACL 中的ACE 能够生成审计日志。
#ACE
Tips: 受托人指用户账户、组账户和登录会话。
一个ACL 能有零个或多个ACE。每个ACE 监控或控制指定受托人的访问。共有6中类型的ACE,其中有3个类型支持所有的安全对象,另外3个类型支持目录服务对象。
所有类型的ACE包含了如下信息:
- 一个SID 标识此条ACE 应用于哪个用户
- 一个访问掩码用于指定此条ACE 的访问权限
- 一个flag 用于表明此条ACE 的类型
- 一系列的bit位用于决定子对象或容器是否能够继承ACE
下面是所有安全对象可用的ACE 类型
Type | Description |
---|---|
Access-denied ACE | 在DACL中拒绝受托人访问 |
Access-allowed ACE | 在DCAL中允许受托人访问 |
System-audit ACE | 在SACL 中,当受托人尝试行使指定权限时生成审计记录 |
目录服务(DS)对象支持特定对象的ACE。特定对象的ACE 包含一对GUID ,以此来扩展ACE。可参考 微软文档。
下面是特定对象的ACE类型
Type | Description |
---|---|
Access-denied object ACE | 在 DACL 中使用以拒绝用户访问对象上的属性或属性集,或将 ACE 继承限制为指定类型的子对象。使用ACCESS_DENIED_OBJECT_ACE结构。 |
Access-allowed object ACE | 在 DACL 中使用以允许用户访问对象上的属性或属性集,或将 ACE 继承限制为指定类型的子对象。使用ACCESS_ALLOWED_OBJECT_ACE结构。 |
System-audit object ACE | 在 SACL 中用于记录用户访问对象上的属性或属性集的尝试,或将 ACE 继承限制为指定类型的子对象。使用SYSTEM_AUDIT_OBJECT_ACE结构。 |
DACL 中ACE 的顺序
当进程尝试访问安全对象时,系统会逐步遍历对象的DACL中的ACE,直到找到允许或拒绝请求访问的 ACE。DACL 中对用户的访问权限可能因 DACL 中 ACE 的顺序而异。
- 所有直接应用(这里的直接应用就是直接配置的意思)的ACE都被放在继承的ACE 之前。
- 在所有直接应用的ACE中,表示拒绝的ACE 被放在表示允许的ACE 之前。
- 继承的 ACE 按照它们被继承的顺序放置。首先是从子对象的父对象继承的 ACE,然后是从祖父对象继承的 ACE,依此类推。
- 对于每一级继承的 ACE,拒绝访问的 ACE 放置在允许访问的 ACE 之前。
#访问掩码与 SID
#访问掩码
访问掩码是一个32位的值,它的每个位对应于不同访问权限。其包含以下的访问权限位:
- 通用访问权限
- 标准访问权限
- SACL 权限
- 目录服务访问权限
当一个线程试图打开一个对象的句柄时,通常指定一个访问掩码来请求一组访问权限。所有的安全对象使用下图所示的访问掩码格式来安排其访问权限。
-
通用访问权限
安全对象在访问掩码中使用高四位来指定通用访问权限。所有类型的安全对象都会映射通用权限位到它的标准访问权限和特定对象访问权限。例如Windows 文件对象将
GENERIC_READ
位映射到READ_CONTROL
和SYNCHRONIZE
标准访问权限和FILE_READ_DATA
、FILE_READ_EA
和FILE_READ_ATTRIBUTES
对象特定的访问权限。打开对象的句柄时,可以使用通用访问权限来指定所需的访问类型。
下表显示了为通用访问权限定义的常量。
Constant Generic meaning GENERIC_ALL 所有可能的访问权限 GENERIC_EXECUTE 执行权限 GENERIC_READ 读取权限 GENERIC_WRITE 写权限 -
标准访问权限
Winnt.h 中定义了以下用于标准访问权限的 Windows 常量。
Constant Meaning DELETE 删除对象的权利。 READ_CONTROL 读取对象安全描述符中信息的权限,不包括系统访问控制列表(SACL)中的信息。 SYNCHRONIZE 使用对象进行同步的权利。这使线程能够等待,直到对象处于信号状态。某些对象类型不支持此访问权限。 WRITE_DAC 修改对象安全描述符中的自由访问控制列表(DACL)的权利。 WRITE_OWNER 在对象的安全描述符中更改所有者的权利。 -
SACL 访问权限
ACCESS_SYSTEM_SECURITY
权限用于控制对SACL的读取或修改。只有在线程的访问令牌中启用了SE_SECURITY_NAME
权限时,系统才会授予此访问权限。ACCESS_SYSTEM_SECURITY
权限在 DACL 中无效,因为 DACL 不控制对 SACL 的访问。 -
目录服务访问权限
每个 Active Directory 对象都有一个安全描述符。可在安全描述符中设置一组特定于目录服务对象的权限。具体的权限列表参考微软文档
#安全标识符(SID)
SID 的长度可变但值唯一,它用来标识当前用户。由权威机构(如域控)颁发,并存储在安全数据库中。每次用户登录时,系统都会从数据库中检索该用户的 SID,并将其放入该用户的访问令牌中。访问令牌中的 SID 用于与所有Windows 安全对象交互时识别用户。当 SID 已被用做用户或组的唯一标识符时,就不能再使用它来标识另一个用户或组。
Windows 在以下安全元素中使用 SID:
- 在安全描述符中标识对象和主要组的所有者
- 在访问控制条目(ACE)中 标识允许、拒绝或审核访问的受托人
- 在访问令牌中标识用户和用户所属的组
SID 的结构
- SID结构的修订级别
- 一个 48 位标识符权限值,用于标识颁发 SID 的权限
- 可变数量的子授权或相对标识符 (RID) 值,用于唯一标识相对于颁发 SID 的授权的受托人
通过标识符权限值和子权限值的组合来确保没有两个 SID 相同,即使两个不同的 SID 颁发机构发布相同的 RID 值组合也是如此。
SID 以二进制格式存储在SID结构中。要显示 SID,您可以调用ConvertSidToStringSid
函数将二进制 SID 转换为字符串格式。这些函数对 SID 使用以下标准化字符串表示法,这使得其组件的可视化变得更简单:
S- R - I - S …
字符"S"将一系列数字标识为 SID,R是修订级别,I是标识符权限值,而S ……是一个或多个子权限值。例如: S-1-5-32-544
代表
- 修订级别为 1
- 标识符权限值为 5 (
SECURITY_NT_AUTHORITY
) - 第一个子权限值为 32 (
SECURITY_BUILTIN_DOMAIN_RID
) - 第二个子权限值为 544 (
DOMAIN_ALIAS_RID_ADMINS
)
#权限检查的过程
当线程尝试访问安全对象时,系统要么授予访问权限,要么拒绝访问。如果对象没有自由访问控制列表(DACL),则系统授予访问权限;否则系统会在对象的 DACL 中查找适用于该线程的访问控制项(ACE)。
系统将每个 ACE 中的受托人与线程的访问令牌中标识的受托人进行比较。访问令牌包含标识用户和用户所属组帐户的安全标识符(SID),还包含标识当前登录会话的登录 SID。在访问检查期间,系统会忽略未启用的组 SID。
通常系统使用请求访问的线程的主要访问令牌。但是如果该线程正在模拟另一个用户,系统将使用该线程的模拟令牌。
系统按顺序检查每个 ACE,直到发生以下事件之一:
- 拒绝访问的 ACE 明确拒绝访问令牌中的受托者请求的任何访问权限。
- 一个或多个允许访问的 ACE 明确授予线程的访问令牌中列出的受托者所有请求的访问权限。
- 已检查所有 ACE,但仍有至少一项请求的访问权限未被明确允许,在这种情况下,访问将被隐式拒绝。
下图显示了对象的 DACL 如何允许访问一个线程同时拒绝访问另一个线程。
在访问检查中,系统将线程访问令牌中的安全信息与对象安全描述符中的安全信息进行比较。
- 访问令牌包含与线程关联的用户的安全标识符(SID)。
- 安全描述符标识对象的所有者并包含自由访问控制列表访问控制条目 (DACL)。DACL 包含ACE,每个条目指定允许或拒绝特定用户或组的访问权限。
对于线程 A,系统读取 ACE 1 并立即拒绝访问,因为拒绝访问的 ACE 适用于线程访问令牌中的用户。在这种情况下,系统不检查 ACE 2 和 3。对于线程 B,ACE 1 不适用,因此系统继续执行允许写访问的 ACE 2 和允许读和执行访问的 ACE 3。
因为当请求的访问被明确授予或拒绝时,系统会停止检查 ACE,所以 DACL 中 ACE 的顺序很重要。
如果属于对象安全描述符的自由访问控制列表(DACL)设置为NULL,则会创建一个NULL DACL。NULL DACL 向任何请求它的用户授予完全访问权限;NULL DACL 和空DACL 不同,一个空的DACL 是正确分配和初始化的 DACL,但不包含访问控制条目(ACE),空的 DACL 拒绝任何对象的访问权限。
#安全描述符定义语言
安全描述符定义语言 Security Descriptor Definition Language(SDDL)
是用来将安全描述符表示为文本字符串。
安全描述符字符串格式
该格式是以null 结尾的字符串,指明了安全描述符的四个主要组件:
O:owner_sid
G:group_sid
D:dacl_flags(string_ace1)(string_ace2)...
S:sacl_flags(string_ace1)(string_ace2)...
owner_sid
标识对象所有者的sidgroup_sid
标识对象主要组的sid,SID 字符串可以使用 SID (S-R-I-S-S) 的标准字符串形式表示或 Sddl.h 中定义的字符串常量之一表示,完整字符串常量见 微软官方文档 。dacl_flags
适用于DACL的安全描述符的控制标志。dacl_flags 可以是以下字符串的串联。Control Constant in Sddl.h Meaning "P" SDDL_PROTECTED SE_DACL_PROTECTED 标志被设置 "AR" SDDL_AUTO_INHERIT_REQ SE_DACL_AUTO_INHERIT_REQ标志被设置 "AI" SDDL_AUTO_INHERITED SE_DACL_AUTO_INHERITED标志被设置 "NO_ACCESS_CONTROL" SDDL_NULL_ACL ACL 为 null。不适用于 Windows Server 2008, Windows Vista and Windows Server 2003 sacl_flags
适用于 SACL 的安全描述符控制标志, 与 dacl_flags相同 。
着重说一下string_ace
,它用于描述DACL 或SACL 中的ACE 字符串。
ACE 格式:
ace_type;ace_flags;rights;object_guid;inherit_object_guid;account_sid;(resource_attribute)
ACE类型(允许/拒绝/审核):ACE标志(继承和审计):权限列表:对象GUID:继承的对象GUID:受托人
例如ACE: ****A;CIID;GW;;;S-1-5-21-1812960810-2335050734-3517558805-1103
A; 表示允许
CI; 容器继承
GW; 通用写权限
; 对象类型
; 继承的对象类型
S-1-5-21-1812960810-2335050734-3517558805-1103 受托人SID CO:Creator Owner 许多SID都有速记符号
表示允许sid为S-1-5-21-1812960810-2335050734-3517558805-1103
的用户拥有GW权限,且权限可以被继承(CI)
-
ACE 类型与继承类型: (仅列举常见的,详细可参考 微软官方文档 或 SDDL Explained)
ACE类型
Value Description A 允许访问 D 拒绝访问 OA 允许对象访问: 仅适用于对象的一个子集。 OD 对象访问被拒绝: 仅适用于对象的一个子集。 AU 系统审计(SACL) AL 系统报警(SACL) OU 对象系统审计(SACL) OL 对象系统警报(SACL) ACE标志
Value Description CI 容器继承: 容器的子对象(如目录)将ACE作为显式ACE继承 OI 对象继承: 不是容器的子对象将ACE作为显式ACE继承 IO 仅继承: ACE不会应用于当前对象,仅通过继承影响子对象 NP 没有传播的继承: 只有直接的下级子对象继承这个ACE(子对象的子对象是不继承的) ID ACE是继承的 SA 成功的访问审核(SACL) FA 失败的问审核(SACL) -
权限列表
通用权限(就是对这个条目的通用权限,通用读,通用写等)
Value Description Hex GA 所有通用权限 0x10000000 GR 通用读取权限 0x80000000 GW 通用写入权限 0x40000000 GX 通用执行权限 0x20000000 还有标准权限、目录服务对象权限、文件权限、注册表键值权限等等,详细可参考 微软官方文档 或 SDDL Explained。
-
object_guid
指明在特定于对象的 ACE 结构中ObjectType 成员的值。
对某个属性的权限或者扩展权限是用GUID表示的(域内)。如果object_guid 表示为属性的GUID,那么此条ACE 表示用户对该属性的权限。如果object_guid为扩展权限的GUID,那么此条ACE 代表用户拥有该扩展权限。
下表列出了一些密码相关扩展权限的 GUID,更多参考 微软文档。
权限和GUID 扩展权限含义 CR;ab721a53-1e2f-11d0-9819-00aa0040529b Change password CR;00299570-246d-11d0-a768-00aa006e0529 Reset password 例如此条ACE 表示此用户有重置密码的权限。
OA; 对象允许 ; CR;表明对对象执行扩展权限检查,此标志与特定扩展权限(如下的重置密码GUID)结合使用执行特定扩展权限检查 00299570-246d-11d0-a768-00aa006e0529; 重置密码的GUID ; S-1-5-21-1812960810-2335050734-3517558805-1178 受托人SID
-
根据GUID查扩展权限名
adfind -b "CN=Extended-Rights,CN=Configuration,DC=rootkit,DC=org" -f "rightsGuid=00299570-246d-11d0-a768-00aa006e0529" name
-
可根据GUID查具体属性的名字,所有属性名都存储在结构分区里面。 (属性名参考 微软文档)
adfind -schema -f "schemaIDGUID={{GUID:BF9679C0-0DE6-11D0-A285-00AA003049E2}}" -binenc name
-
-
inherit_object_guid
指明在特定于对象的 ACE 结构中InheritedObjectType 成员的值。
安全描述符 O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)
表示的意义:
Revision: 0x00000001
Control: 0x0004
SE_DACL_PRESENT
Owner: (S-1-5-32-548)
PrimaryGroup: (S-1-5-21-397955417-626881126-188441444-512)
DACL
Revision: 0x02
Size: 0x001c
AceCount: 0x0001
Ace[00]
AceType: 0x00 (ACCESS_ALLOWED_ACE_TYPE)
AceSize: 0x0014
InheritFlags: 0x00
Access Mask: 0x100e003f
READ_CONTROL
WRITE_DAC
WRITE_OWNER
GENERIC_ALL
Others(0x0000003f)
Ace Sid : (S-1-0-0)
SACL
Not present