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. 对volatile的理解--从JMM以及单例模式剖析

    请谈谈你对volatile的理解 1.volitale是Java虚拟机提供的一种轻量级的同步机制 三大特性1.1保证可见性 1.2不保证原子性 1.3禁止指令重排 首先保证可见性 1.1 可见性 概念 ...

  2. Vue Element-ui表单校验规则,你掌握了哪些?

    1.前言   Element-ui表单校验规则,使得错误提示可以直接在form-item下面显示,无需弹出框,因此还是很好用的.   我在做了登录页面的表单校验后,一度以为我已经很了解表单的校验规则. ...

  3. 8 shell if else

    if 语句的判断条件,从本质上讲,判断的就是命令的退出状态. 语句 语句格式 同一行书写 注意点 用例1 用例2 if 语句 if  conditionthen  statement(s)fi if  ...

  4. webView远程代码执行漏洞复现

    一.概述 这个漏洞只存在于Android API level 16以及之前的版本,系统没有限制使用webView.addJavascriptInterface方法,导致攻击者可以通过使用java 反射 ...

  5. homestead

    前言 之前写过一篇文章(https://www.jianshu.com/p/5f30280a3c18),说不需要这玩意儿一样可以开发.是的,但是对于团队来说,使用统一的环境.开发工具.编码规范等,对于 ...

  6. 简单聊一下Uwsgi和Django的爱恨情仇

    项目目录:/root/app Uwsgi的配置文件 [uwsgi] # Python扩展包安装的地方 pythonpath=/usr/local/src/python3/lib/python3.5/s ...

  7. 「AGC032E」 Modulo Pairing

    「AGC032E」 Modulo Pairing 传送门 如果所有数都 \(<\lfloor \frac m 2\rfloor\),一个自然的想法是对所有数排序过后大小搭配,这样显然是最优秀的. ...

  8. CTF-wtc_rsa_bbq-writeup

    wtc_rsa_bbq 题目信息: 附件: cry200 解题思路: 1.观察cry200文件,发现该文件是一个二进制文件,用二进制模式查看,发现开头为50 4B 03 04,判断该文件是一个zip文 ...

  9. c语言:scanf()高级应用

    1) 指定读取长度 还记得在 printf() 中可以指定最小输出宽度吗?就是在格式控制符的中间加上一个数字,例如,%10d表示输出的整数至少占用 10 个字符的位置: 如果整数的宽度不足 10,那么 ...

  10. [刘阳Java]_eayui-pagination分页组件_第5讲

    分页组件也是很基本的应用,这里我只给出一段简单的代码 关键注意一点:分页组件可以在上面添加buttons按钮,或者自定义分页组件的外观.这些内容需要自行的查看EasyUI的API文档 <!DOC ...