Windows ACL简析

Windows ACL Model 基本概述

基本概念
  • SID:Secure Identifier(安全标识符),每个用户和账户组都有一个唯一的SID(通常情况下唯一)。它是标识用户、用户组和计算机账户唯一的号码,
  • Access Token:与特定的windows账户关联,账户环境下启动的所有进程都会获得该令牌的副本,进程中的线程默认获得这个令牌。由关联账户的SID、当前登录账户所属组的SID列表、受限制的SID列表、当前登录账户与所属组的Privilege列表组成。

    • Account SID

      • Group SID
      • logon SID
      • privileges administrator 授权给user的特权,
  • Security Descriptor:安全描述符,与被访问对象关联。由对象所有者的SID、group SID、DACL、SACL组成。DACL描述允许或拒绝特定用户或组的某些访问权限,它包含零个或多个访问控制实体(ACE,Access Control Entry)
  • owner SID
  • primary group SID
  • DACL
    discretionary access control list.
  • SACL

    • system ACL (SACL). SACL 主要包括为访问尝试生成系统监控报告的权限。每个SACE都包括一个trustee,一个权限集合, 以及一个flag结合来表示访问成功和访问失事件,哪些需要被记录,或者全部记录。所有的监听消息最终都写入event-log

The system writes audit messages to the security event log. For information about accessing the records in a security event log, see Event Logging.

  • ACE 访问控制实体,用于指定特定用户/组的访问权限

    • user or group SID
    • Access Mask object 访问权限
    • ACE Flag 是否让子目录继承
    • ACE Type Allow or Deny
      Windows ACL简析

windows 访问控制的基本流程

Windows ACL简析

  • 当用户登录系统成功后, 系统会为用户生成一个accessToken。该用户调用的每一个进程都会有一个AccessToken copy。当进程要访问某个securable object 时,系统会比对accessToken拥有的权限(previlages 是否能访问securable object)
  • 如果安全描述符中不存在DACL,则系统会允许线程进行访问。如果存在DACL,系统会顺序遍历DACL中的每个ACE,检查ACE中的SID在线程的AccessTkoen中是否存在。以访问者中的User SID或Group SID作为关键字查询被访问对象中的DACL。顺序:先查询类型为DENY的ACE,若命中且权限符合则访问拒绝;未命中再在ALLOWED类型的ACE中查询,若命中且类型符合则可以访问;以上两步后还没命中那么访问拒绝
    Windows ACL简析

ACE

order of ACE

The following steps describe the preferred order:

  • 显式ACE在继承ACE之前
  • 对于显式ACE denyACE 在 allowACE 之前
  • 继承的ACE按照继承树的倒序排列。先父节点ACE,再祖先节点ACE。
  • 对于同一层的ACE,denyACE在AllowACE 之前
Automatic Propagation of Inheritable ACEs

The system uses the following rules when propagating inherited ACEs to child objects:

  • 如果子对象没有DACL,子对象直接继承ACE
  • 如果子对象有空DACL, 子对象直接继承ACE
  • 如果从父对象删除可继承ACE, 删除自对象继承的该ACE副本
  • 如果自动删除造成自对象的DACL为空, 保留空DACL

空DACL和没有DACL的区别在于,空DACL没有任何权限, 没有DACL表示允许任何操作。

ACE inheritance flag(待分析)
父 ACE flag 对子ACL 的影响
OBJECT_INHERIT_ACE 只有子文件继承
CONTAINER_INHERIT_ACE 只有子目录继承
CONTAINER_INHERIT_ACE and OBJECT_INHERIT_ACE 子目录和自文件都继承
No inheritance flags 不继承 .
Access mask
  • access mask 和权限的对应关系
    Windows ACL简析
  • Generic Access Rights, 所有securable object 通用权限
Constant Generic meaning
GENERIC_ALL All possible access rights
GENERIC_EXECUTE Execute access
GENERIC_READ Read access
GENERIC_WRITE Write access
  • Standard Access right,大多数securable object 通用权限
Constant Meaning
DELETE The right to delete the object.
READ_CONTROL The right to read the information in the object's security descriptor, not including the information in the system access control list (SACL).
SYNCHRONIZE The right to use the object for synchronization. This enables a thread to wait until the object is in the signaled state. Some object types do not support this access right.
WRITE_DAC The right to modify the discretionary access control list (DACL) in the object's security descriptor.
WRITE_OWNER The right to change the owner in the object's security descriptor.
上一篇:script标记的加载方式(多浏览器测试)


下一篇:三丰云的免费云服务器初体验