贴一份笔记而已
最近没空写文章了 好好复习一下笔记
环境我用的god.org这个域
又看东西的时候遇到ldap基础相关的知识了 复习手写笔记 详细可以参考灵腾文章和harmj0y文章
http://www.harmj0y.net/blog/activedirectory/a-pentesters-guide-to-group-scoping/
0x01 域中ldap查询安全组
所有的组都是group类的实例
可以用(objectClass=group)或者(objectCategory=group)来过滤组
组的类型由属性groupType决定,属性groupType是一个位字段
域内所有组
域内全局组
域内通用组
域内本地组
域内安全组
域内系统创建的组
0x02 组中的 member && memberof属性
这两个属性能查看组之间的所属关系
0x03 安全组范围
安全组可以根据作用范围划分为
- 全局组 (Global group)
- 通用组(Universal group)
- 域本地组(Domain Local group)
附上daiker师傅画的范围图:
三个组的使用范围 简写的:
常见组
Administrators 域本地组
Domain Admins 全局组 “域管组” 域内所有计算机会把domain admins加入到本地管理员
Enterprise Admins 通用组 林 域中会默认把Enterprise Admins组加入到域本地组的administrators组中
Domain Users 全局组 域内机器 默认也会把Domain Users组加入本地用户组
0x04 ad中的分区
Naming Context即为ad的分区,为什么要有分区?简而言之为了隔离,以至于每个DC不需要复制林中的所有数据。
Active Directory预定义的Naming Context
-
Configuration NC(Configuration NC)
-
Schema NC(Schema NC)
-
Domain NC(DomainName NC)
连上ldap后查看相关容器。
Configuration NC
林配置信息的主要存储库,包含有关站点,服务,分区和Active Directory Schema 的信息。
配置NC中顶级容器说明:
Schema NC
Schema 信息定义Active Directory中使用的类,它是具有 classSchema ,attributeSchema 和 subSchema 对象的单个容器
Domain NC
不同的域内有不同的域Naming Context,其中包含特定于域的数据。
一个域的name context的根由域的DN表示:
corp.test.local域的DN将为dc=corp,dc=test,dc=local
Application Partitions NC
Application Partitions其实就是Naming Context的一个扩展,一共是两个作用
1.用户定义分区
简而言之,因为nc是微软预定义了,用户自己定义不了,如果要定义分区,就可以使用Application Partitions NC。
2.存储动态对象
动态对象是具有生存时间(TTL) 值的对象,Application Partitions可以给数据设置个TTL,时间一到,Active Directory就删除该数据。
0x05 ldap中的objectCategory和objectClass
简而言之,objectCategory和objectClass是用来ldap查询中对类实例所属关系的筛选
objectClass 属性中,可以看到这个对象是哪个类的实例, 以及这个类的所有父类
example:
CN=jane,CN=Users,DC=test,DC=local的objectClass是top,person,organizationalPerson,user。
查询上面对象的语句:(objectClass=user),(objectClass=organizationalPerson)
所有的类都是top类的子类。因此当我们过滤(objectClass=top)可以找到域内的所有对象
objectCategory是因为2008之前默认不对objectClass 属性进行索引,所以objectCategory粗略可以理解为是带了索引的objectClass
对象类的每个实例具有一个objectCategory属性,该属性是一个单值属性。并且建立了索引。
其中包含对象是其实例的类或其父类之一的专有名称。
example:
CN=jane,CN=Users,DC=test,DC=local.
他的objectCategory是CN=Person,CN=Schema,CN=Configuration,DC=test,DC=local
所以同理:
adfind.exe -b dc=god,dc=org -s -subtree -bit -f "(objectCategory=person)" -dn
objectClass与objectCategory结合
Objectclass包含对象是哪个类的实例,以及这个类的所有父类
Objectcategory包含对象实例的类 或 其父类之一
所以如果没建立索引,objectCategory划分一个大的范围,然后通过objectClass进行精准匹配
0x06 AD中的OU、组
组:
OU:
ou、组、容器之间的区别
简而言之
最重要的一点是OU能部署组策略,容器不行。
- OU:组织单元,是一个专用容器,被管理的集合,也可以说管理对象的集合。
- 容器: Domain Computers 是常规容器,Domain Controllers是OU
- 组: 组是权限的集合。
OU的委派
赋予域内用户对OU的某些管理权限
ADfind 过滤OU
所有的OU都是organizationalUnit类的实例
使用(objectClass=organizationalUnit)或者(objectCategory=organizationalUnit)来过滤OU。
0x07 AGDLP
说白了 对组权限的策略集合: