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. Sql Server 查询正在执行的sql信息和锁定事务

    执行中的sql SELECT [Spid] = session_Id, ecid, [Database] = DB_NAME(sp.dbid), [User] = nt_username, [Stat ...

  2. AcWing 1128. 信使

    战争时期,前线有 n个哨所,每个哨所可能会与其他若干个哨所之间有通信联系. 信使负责在哨所之间传递信息,当然,这是要花费一定时间的(以天为单位). 指挥部设在第一个哨所.当指挥部下达一个命令后,指挥部 ...

  3. SpringBoot:Service层使用@Autowired 注解 mapper对象爆红问题

    问题点 这个报错可能导致程序运行大面积爆红 这个报错会逼疯强迫症 解决方法 为避免程序运行报错 ,需要在Application.class添加注解@MapperScan(mapper包位置) @Spr ...

  4. Docker:Centos7更新yum源下载docker

    前言: Docker 要求 CentOS 系统(6.5及以上)的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看你 ...

  5. Docker:Linux离线安装docker-17.03.2-ce,配置开机自启

    1. 准备docker离线包 docker官方离线包下载地址 下载需要安装的docker版本,我此次下载的是:docker-17.03.2-ce.tgz 2. 准备docker.service 系统配 ...

  6. mybatis源码简单分析

    mybatis入门介绍 /** * 1. 接口式编程 * 原生: Dao =====> DaoImpl * mybatis : Mapper =====> xxxMapper * 2. S ...

  7. bugku--cookie欺骗

    打开题目一看,是一串的东西,再看了一下filename发现不对劲了,明显是base64编码,拿去解码一下, 发现是这个,说明是filename,是需要解析的哪个文件名,把index.php编码一下,试 ...

  8. MyBatis框架中的条件查询!关键字exists用法的详细解析

    exists用法 exists: 如果括号内子查询语句返回结果不为空,说明where条件成立,就会执行主SQL语句 如果括号内子查询语句返回结果为空,说明where条件不成立,就不会执行主SQL语句 ...

  9. KeepAlive详解(转)

    一.什么是KeepAlive? 首先,我们要明确我们谈的是TCP的 KeepAlive 还是HTTP的 Keep-Alive.TCP的KeepAlive和HTTP的Keep-Alive是完全不同的概念 ...

  10. FTP传输

    FTP传输                    一.FTP服务–用来传输文件的协议                    二.设置匿名用户访问的FTP服务(最大权限)                 ...