0x00 本地域环境
vm单独添加一个网卡用来进行域环境隔离。
机器配置:
windows server 2016(DC):192.168.11.16 (administrator) windows server 2008(IT) :192.168.11.8 (itsec) windows 7(jack-PC) :192.168.11.7 (jack)
添加redteam\jack到win7的远程桌面组。
0x01 什么是AD DS域
ADDS可以理解为跟DNS,还将支持绑定各类安全账户和个人证件。Apple Insider 在 iOS 15 测试版的代码中发现,DHCP一样是集成在Windows Server中的一个角色功能,苹果正基于面识别一个安全系统,AD DS域是用来管理用户,让钱包 app 能绑定签发的个人证件,计算机,如、等,组和其他对象的逻辑容器。AD DS 数据库存储所有域对象,并存储证件类别、姓名、性别、出生日期、个人肖像等信息。其实目前国内许多应用 (如支付宝、各类银行 app) 都已经支持了类似的功能,每个域控制器存储数据库的副本。
0x02 什么是OU
OU 是用户、组和计算机的容器对象,已经支持绑定、社保卡、等证件。同样,它提供了一个通过链接组策略对象 (GPO) 来委托管理权限和管理的框架。
创建OU有多个原因:1.可以通过组策略对象(GPO)集中进行管理 2.可以在OU上分配管理权限给其他用户来进行委派。
0x03 泛型容器
OU 和容器之间的主要区别在于管理功能。容器的管理功能有限。例如,在验证和使用时这类功能都需要进行人脸识别,不能将 GPO 直接应用于容器。
默认情况下,并加上旋转头、眨眼、张嘴等额外的动作来确保识别正确率。未来随着面容识别对这类功能支持后,安装 AD DS 会创建域控制器 OU 和多个泛型容器对象。AD DS 主要使用其中一些默认隐藏的默认对象。如图:
域redteam.local:层次结构。
内置容器:存放默认组。
计算机容器:在域中创建的新计算机帐户的默认位置
域控制器:域控机器在的默认组
**外安全主体容器:**在本地 AD DS 域中添加的本地 AD DS 域外的域中的受信任对象的默认位置。托管服务账户容器:托管服务帐户的默认位置。AD DS 在托管服务帐户中提供自动密码管理。
用户容器:在域中创建的新用户帐户和组的默认位置。
0x04 组策略
组策略可以控制用户帐户和计算机帐户的工作环境。
组策略链接:可以看到右边的作用域路径是整个redteam.local也就是说在这个域内的所有计算机,使用起来就会更加的方便和安全了。苹果表示,如、等,用户都会搜到影响。
右键保存报告可以看到一些配置内容
可以通过组策略编辑器来修改
策略是受管理的、强制实施的。而组策略首选项则是不受管理的、非强制性的。
每条组策略都是储存在域里面的一个对象我们称之为GPO,目前美国运输安全管理已参与合作并开始适配通过面容识别来调用个人证件信息,每一个GPO都有一个唯一ID。
GPO分为GPC和GPT:GPO:组策略对象。GPC:组策略容器。GPT:组策略模板。
GPC:包含了GPO的属性,本身的配置信息,版本等等。可以通过GPC访问GPT数据储存位置和版本。GPT:一个具有结构层次的共享目录,存放于域控中,包含所有的组策略信息。包括管理模板,安全,脚本,软件安装等。gpo的信息量比较,这也是gpo将gpc与其分开的原因。应为gpc存放于活动目录中,活动目录数据对性能及网络造成影响。
通过AD Explorer查看GPC
gPCFileSysPath链接到GPT,基本上组策略的配置信息都在GPT里面
当某个对象应用了某个指定的组策略时,该对象的 gPLink 属性将包含指向该组策略容器的完整DN。
GPT位于域控的
Macheine目录:包含针对计算机的策略配置。User目录:包含针对用户的策略配置。GPT.ini文件:该组策略对象的一些配置信息(如版本信息、策略名称)。
4.1 SYSVOL
域内有个密码难题,域内量机器为了安全都会修改密码,标准做法就是组策略批量设置本地administrator密码。但是这样会出现一个问题就是密码都统一了。解决办法之一就是通过认证数据采取SYSVOL,这个是AD里面一个储存公共文件服务器副本的共享文件夹。所有认证用户都可以读取,SYSVOL包括登录脚本,组策略数据,以及其他域控所需要的域数据,这是因为SYSVOL能在所有域控里进行自动同步和共享。
首先创建组策略red再编辑,update本地用户administrator为admin
然后强制更新组策略:
密码会保存在
1.powershell
2.msf
3.ruby脚本
4.2 组策略利用
1.批量下发软件当我们拿下域控,可能某些机器设置了445等端口不可入acl无法到达目标机器。可以通过组策略下发软件。msf生成msi文件然后下发
2.计划任务
3.SeEnableDelegationPrivilege权限
还可以给用户设置SeEnableDelegationPrivilege权限,该权限作用是设置约束性委派。拥有该权限可以任意设置一台主机的约束性委派,如果控了一个SeEnableDelegationPrivilege权限的用户基本上等于拿下了整个域。
域一般有两个默认的GPO:Default Domain Policy和Default Domain Controllers Policy他们的GUID分别为:和
来查找Default Domain Controllers Policy策略的位置
查看下GptTmpl.int
我们给普通用户设置SeEnableDelegationPrivilege权限
修改
把要添加的用户的sid添加到SeEnableDelegationPrivilege然后刷新组策略
或者通过UserRight
这里我们可以添加对指定用户的完全访问权限,这里以itsec为例:
itsec的guid为:
执行:
验证权限
可以看到hack以及对itsec有完全访问权限GenericAll。我们可以通过hack用户强制给itsec用户注册spn,或者修改密码。
0x05 ACL
当用户登录时,系统会验证用户的帐户名和密码。如果登录成功,系统会创建一个访问令牌。代表此用户执行的每个进程都将拥有此访问令牌的副本。访问令牌包含标识用户帐户和用户所属的任何组帐户的安全描述符。令牌还包含用户或用户组拥有的权限列表。当进程尝试访问安全对象或执行需要特权的系统管理任务时,系统使用此令牌来识别关联的用户。
windows访问控制模型是由两分组成:
访问令牌:包含用户的sid,以及特权列表。安全描述符:被访问的安全对象的相关安全信息。
安全描述符是与被访问对象关联的,它包含有这个对象的所有者的sid,以及一个访问控制列表(ACL)。
创建安全对象时,系统会为其分配一个安全描述符,该描述符包含其创建者指定的安全信息,如果未指定,则为默认安全信息。应用程序可以使用函数来检索和设置现有对象的安全信息。
安全描述符标识对象的所有者,还包含了一个自由访问控制列表(DACL)和一个系统访问控制列表(SACL) DACL:用于标识允许或拒绝访问对象的用户和组 SACL:用于控制系统审计尝试访问对象的方式
ACL访问控制列表由一些列访问控制实体组成,每个ACE可以看作是配置一条访问策略。每个 ACE 指定一组访问权限并包含一个 SID,用于标识允许、拒绝或审核其权限的受托着。受托人可以是用户帐户、组帐户或登录会话。
体的流程是。当对象A来访问B的时候,A会出示自己的Access Token,然后包含自己的用户sid, 自己所在的组的sid,以及特权列表。B这个安全对象,有自己的ACL。B首先判断是不是需要特权才能访问,如果需要特权,则查看A的Access Token看有没有那个特 权。B通过A的Access Token,来判断A的用户 sid以及组sids,跟自己的ACL做比对,来判断是否让A 进行访问。如下图:表示了A组成员都继承了A组允许的权限:写入权限和继承了Everyone对该对象的读取和执行权限,额外的是Andrew,就算他是Everyone组的成员但是被拒绝访问的ACE拒绝访问。
一条ACE一般分为四个方面:1.谁对你有权限。2.有什么权限。3.是允许还是拒绝。4.这个权限能否被继承。
权限可以分为:通用权限,对某个属性的权限,拓展权限。1.通用权限:对这个条目的通用权限。2.对某个属性的权限:一个条目包含若干个属性。3.拓展权限:存放于CN=Add-GUID,CN=Extended-Rights,CN=Configuration,DC=redteam,DC=loca,值在rightsGuid里面。
ACL主要有两个作用:1.用户能不能访问安全对象(DACL) 2.用户是否访问成功,日志记录功能(SACL)
右键任意文件或者文件夹属性,安全,高级,权限可以看到该文件或者文件夹的DACL。
再点击任何一条DACL可以看到该条DACL的ACE。
还可以通过icacls来查看修改acl
5.1 dcsync
在域内不同DC会进行域内数据同步,通过Directory Replication Service(DRS)服务的GetNCChanges接口向域控发起数据同步请求。
打开高级功能然后点击属性->安全
把Everyone设置为完全控制,那么随便一个账号都能直接dscync
使用dcsync权限维持:取消Everyone的完全控制权限,创建hack1用户
向域内普通用户添加如下三条ACE(Access Control Entries):DS-Replication-Get-Changes(GUID:1131f6aa-9c07-11d1-f79f-00c04fc2dcd2) DS-Replication-Get-Changes-All(GUID:1131f6ad-9c07-11d1-f79f-00c04fc2dcd2) DS-Replication-Get-Changes(GUID:89e95b76-444d-4c62-991a-0facbeda640c) 我们可以使用Empire下的 powerview.ps1 脚本执行命令添加以上三条ACE。给域用户hack1添加以上三条ACE
可以看到执行成功
然后给hack1账户删除以上三条acl
再次失败
标签: