1、概述

本文侧重于从不同角度了解Windows Active Directory环境。如从管理员身份配置安全策略的角度、攻击者绕过安全策略的角度、检测攻击者的角度。导致Active Directory受攻击破坏的因素有很多,比如错误的配置、糟糕的维护程序以及管理员犯的其他很多错误。文章涉及基本和高级的概念、环境配置及攻击,内容可能有点长,但是这有助于模拟不同的攻击,模拟和了解红队的攻击行为。

2、什么是Active Directory

Active Directory简单来说,就是Microsfot提供的一项功能服务,它充当集中存储库并存储与Active Directory 用户、计算机、服务器和组织内的其他资源等对象相关的所有数据,它使系统管理员的管理变得容易。但它的主要功能是提供一种在域环境中对用户和机器进行身份验证的方法。使用 Active Directory,可以远程管理用户、工作站及其权限等资源。因此,它是一个可从网络上的任何地方访问的单一管理界面。它主要是 Microsoft Windows 的一项功能,但其他操作系统也可以加入其中,例如你可以在 Active Directory 环境中加入Linux 主机。

3、什么是域

简而言之,域可以称为共享公共 Active Directory 数据库的所有 Active Directory 对象(如用户、计算机、组等)的集合或结构,并由称为域控制器的域的主服务器管理。域始终以其唯一的名称来引用,并且具有正确的域名结构。

域名示例:rootdse.lab

此域名中的ROOTDSE代表其NetBIOS名称

我们可以将Active Directory基础结构拆分成多个单独的域,以创建更小的边界,以便可以在大型网络中分离不同域的管理任务。在Active Directory环境中,域还可以为管理某些设置(如密码策略和帐户锁定策略)创建边界,以便它们只能应用于域级别的域用户帐户。我们将在本系列的后面部分详细讨论组策略和错误配置的策略。

域中包含的几个重要组件:

  • 组、用户、计算机等对象。
  • 身份认证服务
  • 组策略
  • DNS
  • DHCP

Active Directory PowerShell模块

通过在Powershell中导入Active Directory模块,我们可以检索有关域环境的基本信息。

默认情况下,Active Directory模块只存在于域控制器中,不存在工作站上。

这些文件的路径:C:\Windows\Microsoft.NET\assembly\GAC_64\Microsoft.ActiveDirectory.Management\

默认情况下,此模块需要在要启用需要管理权限的 Active Directory powershell 模块的客户端计算机上安装远程服务器管理工具包 (RSAT)。每个域控制器都安装了 RSAT。因此域控制器和成员服务器都安装了内置的 Active Directory powershell 模块。但是也有一种方法可以在工作站上使用它(无需安装 RSAT),只需从域控制器复制 DLL 文件并将其导入到 powershell 会话中即可。

要在加入域的工作站上导入它,请从此处下载它(GitHub - ScarredMonk/RootDSE-ActiveDirectory: This repo contains files that i refer in my blogs),然后使用Import-Module简单地导入它,然后就可以使用此模块中的任何命令。

Import-Module '.\Microsoft.ActiveDirectory.Management.dll'

要检索有关域的信息,我们可以使用以下命令:

PS C:\Users\scarred.monk> Get-ADDomainAllowedDNSSuffixes                 : {}
ChildDomains                       : {matrix.rootdse.lab}
ComputersContainer                 : CN=Computers,DC=rootdse,DC=lab
DeletedObjectsContainer            : CN=Deleted Objects,DC=rootdse,DC=lab
DistinguishedName                  : DC=rootdse,DC=lab
DNSRoot                            : rootdse.lab
DomainControllersContainer         : OU=Domain Controllers,DC=rootdse,DC=lab
DomainMode                         : Windows2016Domain
DomainSID                          : S-1-5-21-580985966-2115238843-2989639066
ForeignSecurityPrincipalsContainer : CN=ForeignSecurityPrincipals,DC=rootdse,DC=lab
Forest                             : rootdse.lab
InfrastructureMaster               : RDSEDC01.rootdse.lab
LastLogonReplicationInterval       :
LinkedGroupPolicyObjects           : {CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=rootdse,DC=lab}
LostAndFoundContainer              : CN=LostAndFound,DC=rootdse,DC=lab
ManagedBy                          :
Name                               : rootdse
NetBIOSName                        : rootdse
ObjectClass                        : domainDNS
ObjectGUID                         : 70b22e8c-d4e3-4690-b4e0-0998b0125fb2
ParentDomain                       :
PDCEmulator                        : RDSEDC01.rootdse.lab
PublicKeyRequiredPasswordRolling   : True
QuotasContainer                    : CN=NTDS Quotas,DC=rootdse,DC=lab
ReadOnlyReplicaDirectoryServers    : {}
ReplicaDirectoryServers            : {RDSEDC01.rootdse.lab}
RIDMaster                          : RDSEDC01.rootdse.lab
SubordinateReferences              : {DC=matrix,DC=rootdse,DC=lab, DC=ForestDnsZones,DC=rootdse,DC=lab, DC=DomainDnsZones,DC=rootdse,DC=lab, CN=Configuration,DC=rootdse,DC=lab}
SystemsContainer                   : CN=System,DC=rootdse,DC=lab
UsersContainer                     : CN=Users,DC=rootdse,DC=lab

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注“ csdn ”获取!】

 ① 网安学习成长路径思维导图

 ② 60+网安经典常用工具包

 ③ 100+SRC漏洞分析报告

 ④ 150+网安攻防实战技术电子书

 ⑤ 最权威CISSP 认证考试指南+题库

 ⑥ 超1800页CTF实战技巧手册

 ⑦ 最新网安大厂面试题合集(含答案)

 ⑧ APP客户端安全检测指南(安卓+IOS)

要检索域名,我们可以使用以下命令:

PS C:\Users\scarred.monk> (Get-ADDomain).DNSRoot
rootdse.lab

SID

每个域都有一个唯一的 SID(安全标识符)来标识它。通常,SID 用于唯一标识安全主体,例如用户帐户、计算机帐户或在安全上下文中运行的进程或用户或计算机帐户。 SID 在其范围内(域或本地)是唯一的,并且永远不会被重用。对于域帐户,安全主体的 SID 是通过将域的 SID 与帐户的相对标识符 (RID) 连接起来创建的。

RID

RID(相对标识符)是Active Directory对象的安全标识符(SID)的一部分,用于唯一标识域中的帐户或组。它在创建时分配给Active Directory对象。RIDSID的最后一部分。

FQDN( 完全合格域名/全称域名)

完全合格域名是域中特定主机的完整域名。

FQDN包含两部分:主机名+域名

例如,如果域是 matrix.rootdse.lab,并且矩阵域中的计算机具有主机名 MTRXDC01,则该计算机的 FQDN 将是 mtrxdc01.matrix.rootdse.lab

4、域控制器(Domain Controller)

简而言之,Active Directory域控制器承载对域中的身份验证请求进行响应的服务。它对网络上的用户访问进行身份验证和验证。当用户和计算机帐户登录到网络时,他们向域控制器进行身份验证,域控制器验证他们的信息(如用户名、密码),然后决定是允许还是拒绝这些用户的访问。域控制器是攻击者的重要服务器和主要目标,因为它持有Active Directory环境的密钥。每个域至少有一个域控制器(也可以有其他域控制器)。

要检查域控制器,我们可以使用以下命令:

PS C:\Users\scarred.monk> (Get-ADDomainController).HostName
RDSEDC01.rootdse.lab

域控制器提供名称解析服务,并负责将域数据库中有关域对象的信息保持为最新。Active Directory数据库存储在文件C:\WINDOWS\NTDS\ntds.dit中,该文件在域控制器中维护。如果此文件被盗,则有关Active Directory对象(如用户、计算机、组、GPO等)的所有信息(包括用户凭据)也会受到威胁。

只读域控制器

出于备份目的,域控制器有三种类型,即主域控制器、只读域控制器和附加域控制器。只读域控制器(RODC)不允许对数据库进行任何更改。如果是只读域控制器,则必须在可写域控制器上进行更改,然后将其复制到特定域中的只读域控制器。只读域控制器是为了解决在远程位置的分支机构中常见的问题,这些分支机构可能没有域控制器,或者物理安全性差、网络带宽差,或者没有当地的专业知识来支持它。只读域控制器的主要用途是促进来自远程办公分支机构的身份验证,并允许用户访问域资源。

5、域树(Domain Tree)

域树表示为一系列以分层顺序连接在一起的域,这些域使用相同的DNS命名空间。当我们将子域添加到父域时,会创建域树。例如,有一个根域rootdse.lab,并向其添加了一个新的域矩阵(FQDN为matrix.rootdse.lab),一旦在两者之间自动创建树系信任,它就会成为同一域树的一部分。信任将在下一节中解释。

6、森林(Forest)

Active Directory林是共享公共架构的多个域树的集合,所有域通过信任连接在一起。林中的每个域都可以有一个或多个域控制器,这些域控制器可以与其他域交互,也可以访问来自其他域的资源。林的名称与根域相同。如果林包含单个域,则该域本身就是根域。

我们可以按如下方式检查Active Directory中的林名称:

PS C:\Users\scarred.monk> Get-ADForestApplicationPartitions : {DC=DomainDnsZones,DC=matrix,DC=rootdse,DC=lab, DC=ForestDnsZones,DC=rootdse,DC=lab, DC=DomainDnsZones,DC=rootdse,DC=lab}
CrossForestReferences : {}
DomainNamingMaster    : RDSEDC01.rootdse.lab
Domains               : {matrix.rootdse.lab, rootdse.lab}
ForestMode            : Windows2016Forest
GlobalCatalogs        : {RDSEDC01.rootdse.lab, MTRXDC01.matrix.rootdse.lab}
Name                  : rootdse.lab
PartitionsContainer   : CN=Partitions,CN=Configuration,DC=rootdse,DC=lab
RootDomain            : rootdse.lab
SchemaMaster          : RDSEDC01.rootdse.lab
Sites                 : {Default-First-Site-Name}
SPNSuffixes           : {}
UPNSuffixes           : {}

通过从上面的输出请求RootDomain属性,可以过滤上面的命令以提取林名称:

PS C:\Users\scarred.monk> (Get-ADForest).RootDomain
rootdse.lab

同样,我们可以使用此方法查看任何特定的属性,方法是将整个命令放在括号中,然后键入要查看的属性名称。

7、信任(Trusts)

在林中,域通过称为信任的连接相互连接。这就是为什么一个域的用户能够访问其他域的资源。在 Active Directory 环境中,一旦在两个域之间建立信任关系,它就会向跨实体的用户、组和计算机授予对资源的访问权限。这是通过连接域之间的身份验证系统并允许身份验证流量在它们之间流动来完成的。稍后将详细讨论这一点,以了解当一个域中的用户请求访问另一个域的资源时会发生什么,当前域控制器向用户返回一个特殊的票证(用域间信任密钥签名),该票证指的是另一个域的域控制器。这部分会在后续的 Kerberos 部分详细解释。

信任方向(单向或双向)

信托可以是单向的,也可以是双向的。在单向信任域中,域一信任域二,这意味着域一是信任域,域二将是受信任域。某个域中的用户访问另一个域中的资源,该用户需要在信任域中。下图显示了两个域之间信任流的图形表示。

在双向信任的情况下,所有域都可以与所有用户共享资源,而不管它们属于哪个域。顾名思义,信任是双向的。当我们在两个域(域一和域二)之间创建信任时,域一中的用户帐户将可以访问域二中的资源,反之亦然。

有各种类型的信任。信任可以是传递性的,也可以是非传递性的。下表解释了不同类型的信任。

信任类型 属性 信任方向 验证 详情
Tree-Root Transitive 双向 Kerberos V5 or NTLM 将新树添加到林时自动创建
Parent-Child Transitive 双向 Kerberos V5 or NTLM 添加子域时自动创建
Shortcut Transitive 单向或者双向 Kerberos V5 or NTLM 手动创建。在林中使用以缩短信任路径以提高身份验证时间
Forest Transitive 单向或者双向 Kerberos V5 or NTLM 手动创建。用于在AD DS林之间共享资源。

森林中的传递信任:

可传递信任扩展到林中的任何其他受信任域。

例如:

如果域1信任域2,域2信任域3,则域1信任域3。

在这里,信任关系通过每个受信任域。因为它是可传递的信任,所以它允许域1中的用户帐户访问域3中的资源,反之亦然(而不必在域1和域3之间创建额外的信任)

森林中的非传递性信任

在不可传递信任的情况下,与信任之外的域的关系受到限制。这意味着不允许其他域访问信任之外的资源。他们将无法通过其身份验证信息。

在上面的示例中,域1和域2之间建立了不可传递的信任关系,两个域中的用户帐户都可以访问另一个域中的资源。因此,当我们添加新的域3并在域2和域3之间创建信任时,域1中的用户不会自动被允许访问域3中的资源。

森林中的自动信任

默认情况下,当添加子域或添加域树时,会自动创建双向可传递信任。两种默认信任类型是父子信任和树根信任。

8、全局编录 Global Catalog(GC)

全局编录用于执行全林搜索,因为全局编录服务器包含所有对象的完整副本。默认情况下,域中的根域控制器被视为全局编录服务器。为了加快对林中其他域中对象的查询速度,全局编录服务器具有其自己域的副本和其他域对象的只读分区。假设我们必须从当前域以外的域中查询特定用户的描述属性,在这种情况下,全局编录将检索它而无需查询其他域的域控制器。

让我们举一个具有四个域的 Active Directory 林的示例,其中域1是根域:

由于域1是根域控制器,因此它保存当前域的完全可写目录分区:

全局编录服务器在目录数据库文件(Ntds.dit)中保存其自己域的副本(完整且可写)和林中所有其他域的部分只读副本:

9、小结

1、Active Directory是一种目录服务,充当集中式存储库并保存与Active Directory对象相关的所有数据

2、Active Directory域是共享Active Directory数据库的所有对象(如用户、计算机、组等)的结构

3、域代表Active Directory林中的逻辑分区

4、SID(安全标识符)用于唯一标识用户、计算机帐户等安全主体

5、RID (Relative identifier) 是 SID 的最后一部分,用于唯一标识域内的帐户或组

6、FQDN是域中特定主机的完整域名

7、域树基本上是一系列按层次顺序连接在一起的域

8、域控制器对网络上的用户访问进行身份验证和验证

9、信任允许用户、组和计算机访问其他实体的资源

10、全局编录包含所有对象的完整副本,在执行林范围搜索时使用

在第2部分中,我们将介绍不同类型的Active Directory对象以及如何查询它们。

更多靶场实验练习、网安学习资料,请点击这里>>https://www.hetianlab.com

AD(Active Directory)基础知识相关推荐

  1. AD(Active Directory)和LDAP

    目录 AD(Active Directory)活动目录 LDAP LDAP中的四种基本模型 信息模型 命名模型 功能模型

  2. C# AD(Active Directory)域信息同步,组织单位、用户等信息查询

    转自:http://blog.csdn.net/lingpaoershiyishiji/article/details/9139527 目录 示例准备 知识了解 读取AD域信息示例 Directory ...

  3. Windows Server 2008 R2 配置AD(Active Directory)域控制器(图文教程)

    配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型: 64 位操作系统 配置DNS服务器 这一步不是必须的,在安装 ...

  4. Active Directory 基础概念

    1.概念 活动目录(Active Directory)是面向WindowsStandard Server.Windows Enterprise Server以及 WindowsDatacenter S ...

  5. AD常用快捷键+基础知识(Altium Designer)

    Altium Designer基础知识 一.PCB快捷键 二.原理图快捷键 三.常用计量单位 四.建立工程文件和元器件库 1.工程文件 2.新建工程文件夹 五.PCB布局的常规操作 1.PCB分层 2 ...

  6. C# 使用AD(Active Directory)验证内网用户名密码

    1. 连到内网,找到AD的domain地址 nslookup  set types=all _ldap._tcp 2. 验证AD的函数 public bool ADLogin(string userN ...

  7. AD/DA相关基础知识

    1.AD芯片的通道是什么意思? 以四通道为例子:四通道指可输入4路模拟量信号,但对这4路信号是同步还是分时采样转换则因芯片规格而定. 一般是一次只能转换一个通道的信号,四通道是可以有四路输出,但实际只 ...

  8. SANGFOR AD初级认证——基础知识

    目录 SANGFOR AD产品应用场景 SANGFOR AD 解决方案​ SANGFOR AD基本功能介绍 基本功能介绍 出站链路负载(智能路由) 入站链路负载(智能DNS) 服务器负载(虚拟服务) ...

  9. Active Directory管理

    ​​每位IT管理员都面临着许多Active Directory管理挑战,包括几乎每天在Active Directory中管理用户帐户.手动配置用户属性极为耗时.烦人和容易出错,尤其是在大型.复杂的Wi ...

  10. Altium Designer基础知识

    最近在学习机械臂的相关知识,发现买的六轴机械臂的代码不太好用,而且不太符合自己的实际情况.因此学习PCB的相关知识,打算自己画一块基于STM32F103C8T6主控芯片的PCB设计板,后期会开放原理图 ...

最新文章

  1. 在Mac上设置环境变量并永久生效的方法
  2. LiDAR-Camera Fusion for 3D Reconstruction
  3. Redis 中的集合类型是怎么实现的?
  4. 利用python进行识别相似图片(二)
  5. C++ - RTTI(RunTime Type Information)运行时类型信息 详解
  6. 解决 Ubuntu 无法更新软件问题
  7. 【ASP】Menu菜单导航
  8. python中的参数值无法传递_python中关于函数参数值传递的问题
  9. Java停止线程的方式
  10. 两数之和-给定一个整数数组nums和一个目标值target,请你在该数组找出和为目标值的那两个整数,并返回他们的数组下标,你可以假设每种输入只会对应一个答案。但是,数组同一个元素不能使-python
  11. Lync2013 升级错误总结2 Lync2013 PC和手机客户端登录无法验证
  12. 3_python基础—运算符 1
  13. BZOJ 1041 圆上的整点 数学
  14. JAVA实现随机无重复数字功能
  15. EGE基础入门篇(五):换上我的彩色画笔
  16. 考研计算机时间安排表,2019计算机考研这份复习时间表让你自律
  17. 解决com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
  18. 华为设备MPLS LDP配置命令
  19. Nature综述:鸟枪法宏基因组-从取样到数据分析——2万字带你系统入门宏基因组实验和分析
  20. html中text函数,Excel中text函数的使用方法

热门文章

  1. 爬虫日记之01编辑系统环境变量
  2. Mac IDEA Scala编译报错总结
  3. android instrumentation 原理,Android 运行Instrumentation Test的原理分析
  4. 利用LM神经网络算法自动识别窃电用户
  5. python 分析外汇数据_Python/Pandas如何存储外汇勾数数据进行分析
  6. C语言实现凯撒密码加解密
  7. 实验十三————网页爬虫
  8. 解决foxmail无法收取邮件
  9. 2019 GDD breaking world‘s record of π
  10. 【IoT开发工具箱 | 03】搭建可外网访问的内网穿透http文件服务器