目录

OU组织单位

OU 与容器的区别

OU跟组的区别

组织单位的创建

OU委派

OU查询

ACL(Access Control List)访问控制列表

Windows访问控制模型

ACE

ACL的判断流程

SeEnableDelegationPrivilege权限

寻找域中分配了SeEnableDelegationPrivilege的用户

GPO

secedit

指定用户添加SeEnableDelegationPrivilege

GPO

secedit


OU组织单位

OU,即组织单位(Organization Unit),是一个容器对象,将域中的对象组织成逻辑组,帮助网络管理员简化管理组。组织单位包含下列类型的对象:用户,计算机,工作组,打印机,安全策略以及其他组织单位等。可以在组织单位基础上部署组策略,统一管理组织单位中的域对象。 在企业域环境里面,我们经常可以看到按照部门划分的一个个 OU,如下图所示:

OU 与容器的区别

组织单位(OU)是专用容器,与常规容器的区别在于管理员可以将组策略应用于 OU,然后系统将其下推到 OU 中的所有计算机,但是你不能将组策略应用于容器。这也是 OU 与容器主要的区别。需要注意的是Domain Computers是一个普通容器,而Domain Controllers是一个 OU,因此可以可以将组策略应该于Domain Controllers,而不可以将组策略应用于Domain Computers。注意这里所说的Domain ComputersDomain Controllers特指根域的,而不是User容器底下的那两个组:

OU跟组的区别

组织单位跟组是两个完全不同的概念。很多人经常会把这两个弄混。组是权限的集合。OU是管理对象的集合。举个前面举过的例子,运维需要对公司的网络进行管理,需要一些特殊的管理权限,我们就可以设置个组,对组配置权限。然后将运维拉近组里面,组里面的运维就拥有了该权限。比如我们需要对财务部里面的用户进行统一管理,那我们可以设置个OU,然后把财务部的用户拉近这个OU,这样就可以进行集中管理,比如说下发组策略。说通俗点,组是管理的集合,OU是被管理的集合。

组织单位的创建

在域控制器的 “管理工具” —> “Active Directory 用户和计算机”,选中你的域名后 “右键” —> “新建” —> “组织单位”:

填入需要创建的组织单位的名称后点击确定:

如下图所示,成功创建了一个名为 “行政部” 的组织单位:

向 OU 中添加对象

我们可以向新创建的 OU 中添加管理对象,比如用户,计算机,工作组,打印机等。选中你当创建的组织单位,然后 “右键” —> “新建”:

然后选择相应类型的对象即可。如下,我们向 “行政部” 这个组织单位中添加了一台计算机:

OU委派

考虑这样一种需求,如果我们想允许某个用户把其他用户拉入OU,而不赋予这个用户域管权限,我们可以在这个OU给这个用户委派 添加成员的权限。组织单位的委派其实就是赋予某个域内用户对OU的某些管理权限。这些权限体现在ACL里面。

右键 OU——>委派控制:

OU查询

所有的OU都是`organizationalUnit`类的实例,因此我们可以用`(objectClass=organizationalUnit)`或者`(objectCategory=organizationalUnit)`来过滤OU。

adfind.exe -s subtree -b dc=xie,dc=com -f "(objectClass=organizationalUnit)" -dn
或
adfind.exe -s subtree -b dc=xie,dc=com -f "(objectCategory=organizationalUnit)" -dn

要要查询OU里面的账户,可以指定BaseDN为OU就行

adfind.exe -s subtree -b "OU=技术部,DC=xie,DC=com" -dn

ACL(Access Control List)访问控制列表

Windows访问控制模型

简单来说,访问控制是指某 主体(subject) 允许或不被允许对某 实体(object) 执行读取、写入、删除、更改等操作。在Windows中,主体subject通常是进程;实体object通常指安全对象(securable object),可能是:

文件
目录
管道
服务
进程
Active Directory对象
注册表
打印机
共享等

访问控制即对访问行为是否具有合法权限进行判定并执行相应的策略,而访问行为实际上就是主体subject访问实体object的过程。Windows操作系统会为访问行为的主体(subject)创建访问令牌(Access Token),且当访问行为的实体(object)被创建时操作系统会为其创建一个安全描述符(Security Descriptor),ACL对权限的访问控制正是通过访问令牌和安全描述符来完成的。

Windows访问控制模型由如下两个部分组成:

访问令牌(Access Token):其中包含有关登录用户的信息。当用户登录时,系统会验证用户的帐户名称和密码。如果登录成功,系统将创建一个访问令牌。代表此用户执行的每个进程都将具有此访问令牌的副本。访问令牌包含安全标识符SID(Security Identifiers) ,用于标识用户的帐户和用户所属的所有组帐户。令牌还包含用户或用户组所持有的特权列表。当进程试图访问安全对象或执行需要特权的系统管理任务时,系统使用此访问令牌来标识关联用户。

安全描述符(Security Descriptor):包含保护安全对象的安全信息。当创建安全对象时,系统会为其分配一个安全描述符,安全描述符包含了该对象的属主对该对象所配置的一些安全属性和策略,安全描述符由4部分组成:

1.   SID(Security Identifiers):标识该对象拥有的SID
2.   DACL(Discretionary Access Control List):DACL定义对象的访问控制策略(允许或拒绝访问),DACL的ACE定义了哪些用户(组)对该对象具有怎样的访问权限,当请求访问该对象时,系统检查请求方的SID与对象DACL中的ACE配置策略,根据找到的ACE配置策略授予访问或拒绝访问。如果该对象没有设置DACL,系统默认允许所有访问操作,如果对象配置了DACL但是没有配置ACE条目,系统将拒绝所以访问操作;如果系统配置了DACL和ACE,系统将按顺序检查ACE,直到找到一个或多个允许所有请求访问权限的ACE,或者直到任何请求的访问权限被拒绝为止。

3. SACL(System Access Control List):SACL定义对象的访问行为记录策略,SACL的ACE定义了对哪些用户(组)的哪些访问行为进行日志记录,例如对指定用户的访问成功、失败行为进行审计记录日志。

4. Flag:其他标志位信息

ACE

ACL访问控制列表由一系列访问控制实体(ACE,Access Control Entries)组成,每个ACE可以看作是配置的一条访问策略。每个ACE指定了一组访问权限,并包含一个SID,该ID标识了允许、拒绝或审计这些权利的委托人。委托人可以是用户帐户、群组帐户或_登录会话_。

可以把一条ACE归纳为四个方面:

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

ACL的判断流程

ACL的解析流程如下:

1.明确定义的Deny ACE
2.明确定义的Allow ACE
3.继承的Deny ACE
4.继承的Allow ACE

当每条ACE都没匹配上的时候,是拒绝访问的。值得注意的是,这里有两种情况:

1. 有DACL,但是ACE条目的数量为0,这种情况是不允许任何用户访问的
2.没有DACL的情况,这种情况是允许任何用户访问的

我们接下来举个例子来说明:

主体subjectA:      
    sid=100      
    groupsid=110      
    groupsid=120      
主体subjectB:      
    sid=200      
    groupsid=210      
    groupsid=220      
主体subjectC:      
    sid=300      
    groupsid=310      
    groupsid=320       
安全对象实体ObjectD:      
    ACE:拒绝sid=200的对象访问      
    ACE:允许sid=100和sid=210的对象访问

当主体subjectA访问安全对象实体ObjectD时,首先匹配第一条拒绝sid=200的访问,没匹配上,然后匹配第二条允许sid=100和sid=210的对象访问,匹配上了,所以允许主体A访问。

当主体subjectB访问安全对象实体ObjectD时,首先匹配第一条拒绝sid=200的访问,匹配上,拒绝主体A对D的访问。即使第二条ACE允许了sid=210的对象访问匹配上了,但是因为拒绝的ACE优先级大于允许的ACE,所以最后还是拒绝主体B访问。

当主体subjectC访问安全对象实体时,第一条ACE和第二条ACE都没匹配上,所以拒绝主体C访问。

SeEnableDelegationPrivilege权限

SeEnableDelegationPrivilege权限的作用是配置约束性委派。拥有SeEnableDelegationPrivilege权限的人可以配置任意一台主机的约束性委派,但这个权限一般情况下只有域控才有,如果在渗透过程中控制一个拥有SeEnableDelegationPrivilege权限的账户,那基本约等于控制了整个域。

寻找域中分配了SeEnableDelegationPrivilege的用户

GPO

域上一般默认有两个GPO:Default Domain Policy和Default Domain Controllers Policy,这只是他们显示的名称,他们实际名称为它们的GUID,分别为:{31B2F340-016D-11D2-945F-00C04FB984F9}和{6AC1786C-016F-11D2-945F-00C04fB984F9}

1.可以通过powerview枚举域中的所有GPO:

Get-DomainGPO

查找指定GPO:

Get-DomainGPO -Identity "Default Domain Controllers Policy"

2.其中gpcfilesyspath为该GPO策略文件的位置:

我们可以通过GPO为Default Domain Controllers Policy的GptTmpl.inf文件来寻找域中哪些用户(组)分配了SeEnableDelegationPrivilege。

GptTmpl.inf文件位于\\<domain>\SYSVOL\<domain>\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf

3.

Get-DomainPolicy -Source DC #第一条命令得到gpcfilesyspath的值

4.

type "\\test.local\SYSVOL\test.local\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf" #用第二条命令读gpcfilesyspath所指定的文件,查看SeEnableDelegationPrivilege对应的值

5.

"S-1-5-32-544"|Convert-SidToName #确定sid后跟第一步使用"S-1-5-32-544"|Convert-SidToName来获取sid对应的用户

secedit

还可以通过secedit来查看,和GPO一个道理

注: secedit为组策略的命令行版本

secedit /export /cfg secpolicy.inf /areas USER_RIGHTS

参数:

/export:导出组策略

/cfg:指定安全模板的路径和名称

/areas:指定允许系统的安全区域,我们这里是USER_RIGHTS:指定登录用户的权限和允许特权

获得SeEnableDelegationPrivilege对应的值:

确定sid后跟GPO一样使用"S-1-5-32-544"|Convert-SidToName来获取sid对应的用户:

"S-1-5-32-544"|Convert-SidToName 

指定用户添加SeEnableDelegationPrivilege

默认情况下,只有BUILTIN\Administrators的成员(即Domain Admins/Enterprise Admins/etc)拥有SeEnableDelegationPrivilege权限,普通用户是没有此权限的,所有下面将列举给普通用户添加SeEnableDelegationPrivilege权限的方法。

GPO

通过修改{6AC1786C-016F-11D2-945F-00C04fB984F9}GptTmpl.inf文件就可以给指定用户添加SeEnableDelegationPrivilege权限。

将用户SID或用户名添加到[Privilege Rights]下的SeEnableDelegationPrivilege中,当DC重启或者刷新其组策略时,该设置就会生效。

添加之后刷新组策略让其设置生效:

gpupdate /force

使用powerview验证是否成功添加:

$p = Get-DomainPolicy -Source DC
$p.PrivilegeRights
"S-1-5-21-662417213-3583657854-423750704-1001" |Convert-SidToName

secedit

导出配置文件:

secedit /export /cfg secpolicy.inf /areas USER_RIGHTS

导出之后,在[Privilege Rights]项下的SeEnableDelegationPrivilege添加用户的SID或者用户名:

将修改之后的配置覆盖掉当前设置:

secedit /configure /db secedit.sdb /cfg secpolicy.inf /overwrite /areas USER_RIGHTS

相关文章:内网渗透测试:OU 组织单位 - FreeBuf网络安全行业门户

相关文章:域渗透——SeEnableDelegationPrivilege的利用 - 先知社区

域渗透基础知识(五)之OU组织单位、ACL、SeEnableDelegationPrivilege特权相关推荐

  1. 域渗透基础知识(二)之活动目录 Active Directory 的查询

    目录 Active Directory Active Directory 的查询基础语法 什么是BaseDN 什么是Naming Context 什么是LDAP(轻量级目录访问协议) 过滤规则 LDA ...

  2. 渗透基础知识入门(自学笔记)

    渗透基础知识入门 学渗透,要学的东西还是比较广,需要有一些基础知识作铺垫开始学,而且作为一个刚踏上学习道路不久的小伙子更应该在学习道路中不断补充更多基础知识,如编程语言,网络知识等,该篇笔记做一些基础 ...

  3. SAP SD基础知识之装运的组织单元(Organizational Units in Shipping)

    SAP SD基础知识之装运的组织单元(Organizational Units in Shipping) 组织结构-后勤Organizational Structure-Logistics Plant ...

  4. git 分支复制_Git基础知识(五)

    Git基础知识(五) 分支 都说Git的分支是它的必杀技特性,由于没有接触过太多的版本管理工具,就使用过的SVN来说,两者真的差别巨大.SVN创建一个分支,需要将内容复制一遍!这个时间真的是非常的漫长 ...

  5. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  6. 域渗透基础_域渗透实战下gpo策略利用

    计划任务 每次需要删除计划的配置文件 ,更改任务名 重新下发文件,计划任务的文件路径放在sysvol目录下,域渗透实战下gpo策略利用. startup 重启登录 文件必须放在 gpo配置的指定目录下 ...

  7. 域渗透基础之NTLM认证协议

    域渗透基础的两个认证协议ntlm和Kerberos协议是必须总结的~ 这篇简单总结下ntlm协议 晚上写下kerberos 0x01 NTLM简介 NTLM使用在Windows NT和Windows ...

  8. JavaSE基础知识(五)--面向对象代码实现初步(实现一个简单的类类型代码)

    Java SE 是什么,包括哪些内容(五)? 本文内容参考自Java8标准 一.面向对象(代码实现): 首先,在这里我需要说明一个根本性的问题:实际上,面向对象编程包括了两部分,一个是你的编程思想,一 ...

  9. 1、域渗透基础简单信息收集

    之前写过一篇内网当中域渗透的简单文章.好久没遇到忘得差不多了.前几天做项目,正好碰到了域环境,正好有时间,再回顾一下原来的知识,另外把新补充的知识再记录一下. 域相关知识 什么是域 域英文叫DOMAI ...

最新文章

  1. SNMP协议5种报文
  2. Gear 360新款发布!预购有礼哦
  3. maven java 可执行jar_Maven项目打包成可执行Jar文件
  4. 042_JDK的Map接口
  5. Hibernate框架(1)
  6. JVM垃圾回收机制GC详解
  7. 【python笔记】异常
  8. java实现EXcel的RC地址变成常规地址
  9. python中iter是什么意思_python iter()与 __iter__()的区别
  10. 【mysql】知识点
  11. 三次样条曲线拟合算法c语言,关于三次样条曲线拟合法
  12. 使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法
  13. mysql二级软件_全国计算机等级考试二级MySQL练习软件
  14. C++ 读取和写入txt文件
  15. ssm框架搭建连接mysql_搭建SSM框架(一) - xiaoqi__y的个人空间 - OSCHINA - 中文开源技术交流社区...
  16. 什么是软件体系结构?
  17. 人民日报:密码,让百姓生活更安全
  18. 怎么查看自己的笔记本电脑系统型号以及其他配置(DXDIAG打开DirectX诊断配置)
  19. g++ 编程初窥门径
  20. vellum 简单Bear毛发

热门文章

  1. 【HTTP 404 - 指定されたURLは見つかりません。】错误及解决
  2. 塔罗牌占卜源码(塔罗牌源码)占卜+爱情+预测+事业
  3. 华为Android手机adb连接不上的又一解决方案
  4. 存储过程报错1172 - Result consisted of more than one row
  5. 项目的路由vue-router
  6. python360安全浏览器_python-selenium自动化测试(火狐、谷歌、360浏览器启动)
  7. Java小项目实现——简易的登录系统实现
  8. 利用Udig修改铁路样式为黑白相间
  9. javaweb复习题库-02
  10. 说说字符流中flush()和close()的区别