windows 访问控制模型

也就是大名鼎鼎的ACM,access control mode

由两部分组成的。

  1. 访问令牌(access tokens)

    其中包含有关登录用户的信息(User SID,Group SIDS,特权列表),访问令牌是与Windows的账户相互对相应的,当某一账户登录时,系统会生成此用户的访问令牌并分发给启动的进程

  2. 安全描述符(security identifiers)

    其中包含保护安全对象的安全信息,还可以包含自由访问控制列表 (DACL) 和系统访问控制列表 (SACL)

大致流程:

当一个线程尝试去访问一个对象时,系统会检查线程持有的令牌以及被访问对象的安全描述符中的DACL。
如果安全描述符中不存在DACL,则授予访问权限。如果存在DACL,系统会顺序遍历DACL中的每个ACE,检查ACE中的SID在线程的令牌中是否存在。以访问者中的User SID或Group SID作为关键字查询被访问对象中的DACL。顺序:先查询类型为DENY的ACE,若命中且权限符合则访问拒绝;未命中再在ALLOWED类型的ACE中查询,若命中且类型符合则可以访问;以上两步后还没命中那么访问拒绝。

ACL

ACL主要有两个功能

  1. 权限访问控制

    • 一个用户能不能访问安全对象
  2. 日志记录功能

    • 访问成功与否

根据这俩功能ACL又分为,DACL和SACL。

DACL

DACL起到的作用是权限访问控制,DACL是安全描述符中最重要的,它里面包含零个或多个访问控制项(ACE)

DACL如何判断是否有权限访问

SRM安全参考监视器将按规范顺序读取ACE

  1. 将所有显式ACE(即手动设置的ACE)放在一个组中,然后放在任何继承的ACE之前。
  2. 在显式ACE组中,拒绝访问的ACE放置在允许访问的ACE之前。
  3. 继承的ACE按照继承的顺序放置。从子对象的父对象继承的ACE首先出现,然后是从祖父母那里继承的ACE,依此类推。
  4. 对于继承的ACE的每个级别,将拒绝访问的ACE放置在允许访问的ACE之前。
user 1
sid:20
group sid:10
group sid:11
group sid:12 user 2
sid:30
group sid:13
group sid:14
group sid:15 user 3
sid:40
group sid:16
group sid:17
group sid:18 Object A的DACL
ACE:允许sid为20的对象访问
ACE:拒绝sid为13的对象访问
  1. 当user1访问对象A的时候

    A查看user1的用户sid,以及组sids。首先到第二条ACE进行匹配,不成功,然后到第一条ACE进行判断,允许sid为50的对象进行访问,user1的用户sid为50,因此允许user1访问。

  2. 当user2访问对象A的时候

    A查看user2的用户sid,以及组sids。首先到第二条ACE进行匹配,拒绝sid为13的对象访问,发现user2的其中一个组sid 为13,拒绝user2访问。

  3. 当user3访问对象A的时候

    A查看user3的用户sid,以及组sids。首先到第二条ACE进行判断。没匹配上,然后匹配第一条,又没匹配上,所以拒绝C访问。

上面有两种情况:1. ACE 条目的数量为0的情况:这种情况底下,有DACL,但是ACE条目的数量为0,是不允许任何用户访问的;2. 没有DACL的情况,这种情况,是允许任何用户访问的。

SACL

SACL的作用是记录访问成功与否,SACL也是由ACE构成,每条ACE的内容是某个用户访问成功/失败某个权限,当访问跟满足这条ACE的时候就会被记录下来。

ACE

一条ACE主要是四个方面

  1. 谁对你有权限
  2. 是允许还是拒绝
  3. 有什么权限
  4. 这个权限能不能被继承

我们上面的小demo只体现出了前两条

  • 有什么权限

    1. 通用权限
    2. 对某个属性的权限
    3. 拓展权限(如更改密码等)
  • 权限能不能被继承



    如上图所示,将权限作用于OU=IT,如果设置这个权限能够继承的话,那这个权限能够作用于CN=u1

SDDL

AdFind.exe -b "CN=WIN7,CN=Computers,DC=muxue,DC=com" nTSecurityDescriptor -rawsddl

这些恶心的东西就是SDDL(安全描述符定义语言)了,大致可以分为四类

O:DA	——> ower

G:DA	-->Primary Group 

D:AI
(OA;;WP;5f202010-79a5-11d0-9020-00c04fc2d4cf;bf967a86-0de6-11d0-a285-00aa003049e2;DA)
(OA;;WP;bf967950-0de6-11d0-a285-00aa003049e2;bf967a86-0de6-11d0-a285-00aa003049e2;DA)
(OA;;WP;bf967953-0de6-11d0-a285-00aa003049e2;bf967a86-0de6-11d0-a285-00aa003049e2;DA)
(OA;;WP;3e0abfd0-126a-11d0-a060-00aa006c33ed;bf967a86-0de6-11d0-a285-00aa003049e2;DA)
(OA;;SW;72e39547-7b18-11d1-adef-00c04fd8d5cd;;DA)
(OA;;SW;f3a64788-5306-11d1-a9c5-0000f80367c1;;DA)
(OA;;WP;4c164200-20c0-11d0-a768-00aa006e0529;;DA)
(OA;;RPWP;bf967a7f-0de6-11d0-a285-00aa003049e2;;CA)
(OA;;CCDC;bf967aa8-0de6-11d0-a285-00aa003049e2;;PO)
(OA;;RP;46a9b11d-60ae-405a-b7e8-ff8a58d456d2;;S-1-5-32-560)
(OA;;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;;WD)
(OA;;SW;72e39547-7b18-11d1-adef-00c04fd8d5cd;;PS)
(OA;;SW;f3a64788-5306-11d1-a9c5-0000f80367c1;;PS)
(OA;;RPWP;77b5b886-944a-11d1-aebd-0000f80367c1;;PS)
(A;;LCRPDTLOCRSDRC;;;DA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;DA)
(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;AO)
(A;;CCDC;;;PS)
(A;;LCRPLORC;;;AU)
(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)
(OA;CIIOID;RP;4c164200-20c0-11d0-a768-00aa006e0529;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)
(OA;CIIOID;RP;4c164200-20c0-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;RU)
(OA;CIIOID;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)
(OA;CIIOID;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)
(OA;CIIOID;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)
(OA;CIIOID;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)
(OA;CIIOID;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)
(OA;CIIOID;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)
(OA;CIIOID;RP;037088f8-0ae1-11d2-b422-00a0c968f939;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)
(OA;CIIOID;RP;037088f8-0ae1-11d2-b422-00a0c968f939;bf967aba-0de6-11d0-a285-00aa003049e2;RU)
(OA;CIID;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)
(OA;CIIOID;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)
(OA;CIIOID;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)
(OA;CIID;WP;ea1b7b93-5e48-46d5-bc6c-4df4fda78a35;bf967a86-0de6-11d0-a285-00aa003049e2;PS)
(OA;CIIOID;LCRPLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)
(OA;CIIOID;LCRPLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)
(OA;CIIOID;LCRPLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)
(OA;OICIID;RPWP;3f78c3e5-f79a-46bd-a0b8-9d18116ddc79;;PS)
(OA;CIID;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)
(A;CIID;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-511003792-1237030605-620821399-519)
(A;CIID;LC;;;RU)
(A;CIID;CCLCSWRPWPLOCRSDRCWDWO;;;BA) S:AI
(OU;CIIOIDSA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)
(OU;CIIOIDSA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)
  1. O代表这条ACL的所有者
  2. G代表primary group
  3. D代表就是DACL,一个()里面是一条ACE
  4. S代表就是SACL,一个()里面是一条ACE

详细讲解

通用权限

(A;CIID;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-511003792-1237030605-620821399-519)

拆分

A;		允许 ACE类型(允许/拒绝/审核)
CIID; CI ID ACE标志(继承和审核设置)
CCDCLCSWRPWPDTLOCRSDRCWDWO; CC DC LC 权限(我这个不确定 msdn上的flags我没找到 懂得大佬call下)
; 对象类型(GUID)
; 继承的对象类型(GUID)
S-1-5-21-511003792-1237030605-620821399-519

拓展权限

OA; ACE类型(允许/拒绝/审核)
; ACE标志(继承和审核设置)
CR; 权限(增量权限列表)
00299570-246d-11d0-a768-00aa006e0529; 对象类型(GUID)
; 继承的对象类型(GUID)
S-1-5-21-1812960810-2335050734-3517558805-1178 受托人SID

可以看见多了个GUID00299570-246d-11d0-a768-00aa006e0529,用户强制更改密码

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/1522b774-6464-41a3-87a5-1e5633c3fbbb

拓展权限都存储在CN=Extended-Rights,CN=Configuration,DC=muxue,DC=com里。CN=User-Force-Change-Password就是这个类的实例

也可以通过查找这个GUID来获取是啥功能

过滤ACL

过滤出有S-AllowedToActOnBehalfOfOtherIdentity权限的

Windows协议 LDAP篇 - 域权限的更多相关文章

  1. Windows协议 LDAP篇 - 域用户和计算机用户

    域用户 查询域用户 通过SAMR协议查询(net user就是通过这种协议查询的),samr也不是一种专门的协议,是一个RPC接口 在impacket里有个脚本samrdump.py,就是专门调用这个 ...

  2. Windows协议 LDAP篇 - Actite Directory

    LDAP简介 先说下ldap,轻量目录访问协议.LDAP就是设计用来访问目录数据库的一个协议.也就是为了能访问目录数据库,ldap是其中一种协议 LDAP的基本模型 目录树:在一个目录服务系统中,整个 ...

  3. Windows协议 LDAP篇 - 组&OU

    LDAP搜索 LDAP查找 位操作 以userAccountControl为例,CN=User-Account-Control,CN=Schema,CN=Configuration,DC=muxue, ...

  4. Windows协议 NTLM篇

    NTLM 基础 介绍 LM Hash & NTLM Hash Windows本身是不会存储明文密码的,只保存密码的hash 其中本机用户的密码hash是放在本地的SAM文件里面,域内用户的密码 ...

  5. Windows协议 Kerberos篇

    认证流程 角色 功能 Domain Controller 也就是域控 Key Distribution Center 秘钥分发中心,简称KDC,默认安装在域控里,包括AS.AD和TGS. Accoun ...

  6. Microsoft Windows Server 2012 Ad域搭建

    Microsoft Windows Server 2012 Ad域搭建 一.Active Directory概念 AD(活动目录):是一种组织资源信息的方法,目录的意义在于我们可以通过标题或者说搜索条 ...

  7. Windows Server 2016-Active Directory域服务端口汇总

    本章为大家简单整理一下有关Windows server Active Directory和Active Directory域服务(AD DS)组件的端口要求.生产环境中我们在做网络调整.防火墙或者开关 ...

  8. 看完这篇 Linux 权限后,通透了!

    我们在使用 Linux 的过程中,或多或少都会遇到一些关于使用者和群组的问题,比如最常见的你想要在某个路径下执行某个指令,会经常出现这个错误提示 . permission denied 反正我大概率见 ...

  9. Windows Server 2008 R2域控组策略设置禁用USB

    问题: Windows Server 2008 R2域控服务器如何禁用客户端使用USB移动存储(客户端操作系统需要 Windows Vista以上的操作系统,XP以下的操作系统不能禁用USB移动存储) ...

随机推荐

  1. 重新整理 .net core 实践篇————网关中的身份签名认证[三十七]

    前言 简单整理一下网关中的jwt,jwt用于授权认证的,其实关于认证授权这块https://www.cnblogs.com/aoximin/p/12268520.html 这个链接的时候就已经写了,当 ...

  2. 配置Oracle遇到问题<一>

    1, 将D:\app\product\11.2.0\dbhome_1\NETWORK复制到D:\app\product\instantclient_11_2.为了处理: 12154错误,不过没有解决. ...

  3. JDK8安装包的下载安装方式以及环境变量的配置

    前面我们介绍了 <Java是什么?>.<OracleJDK是什么?OracleJDK的版本怎么选择?>.<OpenJDK是什么?>以及<OracleJDK 与 ...

  4. [源码解析] 深度学习分布式训练框架 horovod (11) --- on spark --- GLOO 方案

    [源码解析] 深度学习分布式训练框架 horovod (11) --- on spark --- GLOO 方案 目录 [源码解析] 深度学习分布式训练框架 horovod (11) --- on s ...

  5. Springboot整合shardingsphere和druid进行读写分离

    最近在使用springboot整合shardingsphere和druid实现mysql数据库读写分离时遇到了一些问题,特此记录一下. 依赖版本 Springboot 2.1.6.RElEASE sh ...

  6. CentOS-Docker安装Elasticsearch(单点)

    下载镜像 $ docker pull elasticsearch:7.6.0 运行镜像 $ docker run --restart=always --name elasticsearch -d -p ...

  7. Linux平台安装MongoDB(转)

      一.下载完安装包,并解压 tgz(以下演示的是 64 位 Linux上的安装) . curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x ...

  8. python 常见面试问题

    https://blog.csdn.net/weixin_43789195/article/details/87469096 https://blog.csdn.net/qq_42642945/art ...

  9. 20道Java实习生笔试面试选择题(内附答案解析)

    ​1.以下对继承的描述错误的是(A) A.Java中的继承允许一个子类继承多个父类 B.父类更具有通用性,子类更具体 C.Java中的继承存在的传递性 D.当实例化子类时会递归调用父类中的构造方法 解 ...

  10. 麒麟操作系统上安装docker并加载镜像

    最近需要在政务云系统中部署深度学习环境,其使用麒麟操作系统并与互联网相互隔离,无法使用常规的指令行方式进行安装.参考docker官方文档并经过多次尝试,使用离线安装的方式完成了环境的部署.这里做一下笔 ...