【网络安全】掌握 Active Directory 攻防审计实操知识点

news/2024/12/21 23:24:10/

掌握 Active Directory 攻防审计实操知识点

在深入了解 Active Directory 之前,我们需要先掌握网络基础设施的映射和资源访问管理方式。这一切通常通过目录服务 (Directory Services) 实现,目录服务在组织内提供网络资源的映射和访问。轻量目录访问协议 (Lightweight Directory Access Protocol, LDAP) 是目录服务的核心,提供一种高效管理和查询目录数据的机制,用于快速检索用户、计算机、组等对象的信息。

1. 什么是 Active Directory (AD)?

Active Directory (AD) 是一种目录服务,作为大多数企业网络的核心,用于存储网络中对象的信息。这些对象包括:

  • 用户:代表个人或服务的账户。
  • :用户或其他对象的集合,通常附带特定权限。
  • 计算机:属于 AD 域的机器,受 AD 策略管控。
  • 打印机及其他资源网络中可访问的设备或服务。

1.1 AD 的核心架构

AD 的核心架构由以下几个关键组成部分构成:

  • 域 (Domains)

域是网络资源(如用户、计算机和服务)的逻辑分组,是 AD 管理的主要边界。域内的所有资源均受统一的安全策略和权限约束,通过域组件 (Domain Component, DC) 和域控制器 (Domain Controller) 标识。

  • 组织单位 (Organizational Units, OUs)

组织单位是域内的容器,用于根据部门、位置或功能对对象进行分组,便于管理。管理员可以对特定 OU 应用组策略 (Group Policy) 设置,实现更加精细的权限控制。

  • 森林 (Forest)

森林是一个或多个域的集合,具有统一的架构、配置和全局目录,是 AD 的顶级容器。

  • 信任关系 (Trust Relationships)

域之间(甚至跨森林)可以建立信任关系,允许一个域中的用户访问另一个域的资源,前提是有相应权限。

通过上述结构,我们可以确定某个对象在 AD 中的专属名称 (Distinguished Name, DN)。例如:

DN=CN=Mayor Malware, OU=Management, DC=wareville, DC=thm

1.2 AD 的核心组件

  • 域控制器 (Domain Controllers, DCs)
    域控制器是托管 Active Directory 服务的服务器,存储 AD 数据库,并处理身份验证和授权请求。为了保障高可用性,一个域中可以存在多个 DC,所有 DC 之间通过复制保持数据一致。

  • 全局目录 (Global Catalog, GC)
    全局目录是 AD 中的可搜索数据库,包含目录中所有对象的部分信息,使用户和服务能够快速定位林中任何域内的对象。

  • LDAP
    Active Directory 使用轻量目录访问协议 (LDAP) 查询和修改目录,提供高效的信息检索服务。

  • Kerberos 认证
    AD 默认采用 Kerberos 认证协议,通过票据 (Tickets) 代替密码实现安全认证。

1.3 组策略 (Group Policy)

组策略是 Active Directory 的重要功能之一,允许管理员在整个域内强制执行策略。例如,可以对密码策略、软件部署、防火墙设置等进行统一管理。

配置密码策略示例:

假设我们需要在 Wareville 的安全运营中心 (SOC) 确保所有用户遵守严格的密码规则,强制执行最小密码长度和复杂性规则。:

  1. 打开组策略管理工具 (gpmc.msc)。
  2. 右键点击域,选择“Create a GPO in this domain, and Link it here”,并命名为“Password Policy”。
  3. 编辑策略,路径为:
    Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Account Policies -> Password Policy
  4. 设置以下规则:
    • 最小密码长度:12 个字符。
    • 强制记住历史密码:10 个。
    • 密码最大有效期:90 天。
    • 启用密码复杂性要求。
  5. 点击“OK”,将此策略链接到目标域或 OU。

这样,域内的所有用户都会遵守新的密码要求。

在这里插入图片描述

2. 常见 Active Directory 攻击及其防护措施

攻击者常试图利用 AD 漏洞攻击企业网络。以下是一些常见攻击类型及其应对措施:

2.1 Golden Ticket 攻击

攻击者伪造 Kerberos 协议的票据 (TGT),冒充任意账户访问 AD。此攻击需要以下信息:

  • 域的完全限定域名 (FQDN)。
  • 域的安全标识符 (SID)。
  • 目标账户用户名。
  • KRBTGT 账户的密码哈希。

检测方式

  • 监控与 KRBTGT 相关的异常活动。
  • 关注以下事件 ID:
    • 4768:高权限账户的 TGT 请求。
    • 4672:用户被分配特殊权限。

2.2 Pass-the-Hash 攻击

此攻击窃取密码哈希,用于身份验证而无需实际密码。因为NTLM协议允许基于密码哈希值的身份验证。

防护措施

  • 实施强密码策略。
  • 定期审计账户权限。
  • 部署多因素认证。

2.3 Kerberoasting

Kerberoasting是一种针对Kerberos 的攻击,攻击者请求具有服务主体名称 (SPN) 的帐户的服务票证,提取票证和密码哈希,然后尝试离线破解它们以检索纯文本密码。

防护措施

  • 为服务账户设置强密码。
  • 定期检查服务账户的安全配置。

2.4 Pass-the-Ticket 攻击

在传递票证攻击中,攻击者从受感染的机器窃取Kerberos票证,并使用它们以被盗票证的用户或服务的身份进行身份验证。

检测方式

  • 可以通过使用事件 ID 4768(TGT请求)监控可疑登录来检测此攻击,尤其是当用户从不寻常的位置或设备登录时。此外,事件 ID 4624(成功登录)将显示用于身份验证的票证。

2.5 恶意 GPO 攻击

众所周知,攻击者会滥用组策略来创建持久的特权访问帐户,并通过设置模仿整个域中软件部署的策略来分发和执行恶意软件。借助整个域中的升级权限,攻击者可以创建 GPO 来实现大规模目标,包括禁用核心安全软件和防火墙、防病毒软件、安全更新和日志记录等功能。此外,还可以创建计划任务来执行恶意脚本或从整个域中受影响的设备中窃取数据。

防护措施

  • 定期审计 GPO 修改。
  • 限制 GPO 修改权限。

2.6 Skeleton Key 攻击

在万能钥匙攻击中,攻击者安装恶意软件后门,使用主密码登录任何帐户。每个帐户的合法密码将保持不变,但攻击者可以使用万能钥匙密码绕过它。

防护措施

  • 监控 AD 服务器的行为。
  • 实施基于行为的检测工具。

3. 调查 Active Directory 入侵

3.1 审核 GPO

组策略

如本任务中前面所讨论的,组策略是一种将配置和策略分发给域中已注册设备的方法。对于攻击者来说,组策略是一种将恶意脚本传播到多台设备的有利可图的手段。

审查组策略对象 (GPO) 是一项很好的调查步骤。在本节中,我们将使用PowerShell来审核我们的 GPO。首先,我们可以使用Get-GPOcmdlet Get-GPO -All 列出域控制器上安装的所有 GPO。

PS C:\Users\Administrator> Get-GPO -AllDisplayName      : Default Domain Policy
DomainName       : wareville.thm
Owner            : WAREVILLE\Domain Admins
Id               : 31b2f340-016d-11d2-945f-00c04fb984f9
GpoStatus        : AllSettingsEnabled
Description      :
CreationTime     : 10/14/2024 12:17:31 PM
ModificationTime : 10/14/2024 12:19:28 PM
UserVersion      : AD Version: 0, SysVol Version: 0
ComputerVersion  : AD Version: 3, SysVol Version: 3
WmiFilter        :DisplayName      : Default Domain Controllers Policy
DomainName       : wareville.thm
Owner            : WAREVILLE\Domain Admins
Id               : 6ac1786c-016f-11d2-945f-00c04fb984f9
GpoStatus        : AllSettingsEnabled
Description      :
CreationTime     : 10/14/2024 12:17:31 PM
ModificationTime : 10/14/2024 12:17:30 PM
UserVersion      : AD Version: 0, SysVol Version: 0
ComputerVersion  : AD Version: 1, SysVol Version: 1
WmiFilter        :DisplayName      : SetWallpaper GPO
DomainName       : wareville.thm
Owner            : WAREVILLE\Domain Admins
Id               : d634d7c1-db7a-4c7a-bf32-efca23d93a56
GpoStatus        : AllSettingsEnabled
Description      : Set the wallpaper of every domain joined machine
CreationTime     : 10/30/2024 9:01:36 AM
ModificationTime : 10/30/2024 9:01:36 AM
UserVersion      : AD Version: 0, SysVol Version: 0
ComputerVersion  : AD Version: 0, SysVol Version: 0
WmiFilter        :

使用 PowerShell 命令 Get-GPO -All 列出所有 GPO 并检查可疑更改。可导出 GPO 报告以便分析,这样我们就可以查找不合适的 GPO。我们可以将 GPO 导出到 HTML 文件以进行进一步调查,从而更轻松地查看策略强制执行的配置。在本示例中,我们将导出“SetWallpaper” GPO。

Get-GPOReport -Name "SetWallpaper" -ReportType HTML -Path ".\SetWallpaper.html"

然后,当在浏览器中打开 HTML 文件时,我们会看到以下内容的概述:

  • 策略的创建和修改时间。
  • GPO适用于哪些设备或用户。
  • GPO的权限。
  • 它强制执行的用户或计算机配置。
    在这里插入图片描述

从上面的截图中,我们可以看到该策略使用位于域控制器上的 C:\THM.jpg中的图像设置设备的桌面壁纸。

域可能有许多 GPO。我们可以使用相同的 Get- GPO cmdlet,加上 PowerShell -fu来仅列出最近修改的 GPO。这是一个方便的代码片段,因为它突出显示了最近修改的策略 - 可能是由攻击者修改的。

PS C:\Users\Administrator\Desktop> Get-GPO -All | Where-Object { $_.ModificationTime } | Select-Object DisplayName, ModificationTimeDisplayName                                ModificationTime
-----------                                ----------------
Default Domain Policy                      10/14/2024 12:19:28 PM
Default Domain Controllers Policy          10/14/2024 12:17:30 PM
SetWallpaper                               10/31/2024 1:01:04 PM

3.2 查看事件日志

Windows 自带事件查看器。这个宝贵的存储库存储了系统活动的记录,包括安全事件、服务行为等。

例如,在事件查看器的“安全”选项卡中,我们可以看到用户登录、尝试和注销的历史记录。下面的屏幕截图显示了用户“cmnatic”尝试登录设备的记录。
在这里插入图片描述

在事件查看器 (Event Viewer) 的“安全”标签中,可以检查用户登录历史。关键事件 ID 包括:

  • 4624:用户成功登录。
  • 4625:用户登录失败。
  • 4672:用户被分配特殊权限。
  • 4768:高权限账户的 TGT 请求。

3.3 审核用户账户

用户帐户是一种有价值的攻击方法,而且通常很成功。您可以使用事件查看器 ID 查看用户事件,并使用 PowerShell 审核其状态。密码喷洒等攻击方法最终会导致用户帐户被锁定,具体取决于域控制器的锁定策略。

要查看所有锁定的帐户,您可以使用 Search-ADAccount cmdlet,应用一些过滤器来显示信息,例如用户上次成功登录的时间。

Search-ADAccount -LockedOut | Select-Object Name, SamAccountName, LockedOut, LastLogonDate, DistinguishedName

此外,快速查看域中现有的用户帐户及其组成员身份的一种好方法是使用Get-ADUser下面演示的 cmdlet:

PS C:\Users\Administrator\Desktop> Get-ADUser -Filter * -Properties MemberOf | Select-Object Name, SamAccountName, @{Name="Groups";Expression={$_.MemberOf}}Name           SamAccountName Groups
----           -------------- ------
Administrator  Administrator  {CN=Group Policy Creator Owners,CN=Users,DC=wareville,DC=thm, CN=Domain Admins,CN=Users,DC=wareville,DC=thm, CN=Enterprise Admins,CN=Users,DC=wareville,DC=thm, CN=Schema ...
Guest          Guest          CN=Guests,CN=Builtin,DC=wareville,DC=thm
krbtgt         krbtgt         CN=Denied RODC Password Replication Group,CN=Users,DC=wareville,DC=thm
tryhackme      tryhackme      CN=Domain Admins,CN=Users,DC=wareville,DC=thm
DAVID          DAVID
James          James
NewAccount     NewAccount
cmnatic        cmnatic        {CN=Domain Admins,CN=Users,DC=wareville,DC=thm, CN=Remote Desktop Users,CN=Builtin,DC=wareville,DC=thm}

3.4 检查 PowerShell 历史记录

PowerShell 与Linux上的 Bash 类似,会保留会话中输入的命令的历史记录。查看这些历史记录是查看用户帐户在计算机上最近执行的操作的绝佳方式。

在 Windows Server 上,此历史文件位于: %APPDATA%\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
图片为Administrator的历史记录,所以是在Users/Administrator文件夹下
在这里插入图片描述
您可以使用 Windows 内置的记事本或您最喜欢的文本编辑器来查看PowerShell命令历史记录。
在这里插入图片描述
此外,系统还会记录每个在系统上执行的PowerShell进程的日志。这些日志位于 下的事件查看器中,也可以位于 下。日志中包含大量可用于事件响应的信息。Application and Services Logs -> Microsoft -> Windows -> PowerShell -> OperationalApplication and Service Logs -> Windows PowerShell

在这里插入图片描述

4. 总结

Active Directory 是企业网络管理的基石,其复杂性为攻击者和防守者提供了广泛的切入点。通过理解其架构、功能及常见攻击手段,管理员可以更有效地保护企业网络安全


http://www.ppmy.cn/news/1557045.html

相关文章

python中的字典数据和标准json格式区别

Python中的字典(dict)数据和标准JSON(JavaScript Object Notation)格式在许多方面类似,因为JSON的对象结构本质上是键值对的集合。然而,它们之间仍存在一些重要的区别。以下是详细的对比: 1.数…

基于Java+SpringBoot+Vue摄影约拍管理系统(源码)

感谢您阅读本文,欢迎“一键三连”。作者定会不负众望,按时按量创作出更优质的内容。 ❤️ 1. 毕业设计专栏,毕业季咱们不慌,上千款毕业设计等你来选。 项目介绍: 摄影约拍管理系统是一款基于Java、Spring Boot、Vue技…

上海期货信息技术部分笔试题 - 解析

一、单选题 1.下列哪一种叙述是正确的(D) A.抽象方法的方法体部分必须用一对大括号{}包住 B.abstract修饰符可修饰字段、方法和类 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 解析: 抽象方法没有方法体,因此不能有大…

Java全栈项目 - 学生档案管理系统

项目介绍 学生档案管理系统是一个基于 Spring Boot Vue.js 的全栈项目,主要用于管理学生的基本信息、学习记录、考勤情况等数据。系统采用前后端分离架构,具有良好的可扩展性和维护性。 技术栈 后端技术 Spring Boot 2.7.xSpring SecurityMyBatis P…

解决docker环境下aspose-words转换word成pdf后乱码问题

描述 环境&#xff1a;docker 部署工具&#xff1a;Jenkins 需求&#xff1a;本地上传的word文档需要转换成pdf 问题&#xff1a;转换之后的pdf文档出现小框框&#xff08;乱码&#xff09; 转换成PDF的操作 pom&#xff1a; <dependency><groupId>org.apach…

【5G】5G 无线协议 Radio Protocols(一)

长期演进&#xff08;LTE&#xff09;无线电协议主要设计用于通过扁平架构提供PS服务&#xff0c;相比之前的代际&#xff0c;这代表了一个重大改进&#xff0c;它消除了支持电路交换&#xff08;CS&#xff09;服务和复杂架构中固有的复杂性。许多原始的LTE原则自第8版以来一直…

使用Vue创建前后端分离项目的过程(前端部分)

前端使用Vue.js作为前端开发框架&#xff0c;使用Vue CLI3脚手架搭建项目&#xff0c;使用axios作为HTTP库与后端API交互&#xff0c;使用Vue-router实现前端路由的定义、跳转以及参数的传递等&#xff0c;使用vuex进行数据状态管理&#xff0c;后端使用Node.jsexpress&#xf…

13.罗意文面试

1、工程化与架构设计&#xff08;考察项目管理和架构能力&#xff09; 1.1 你负责的可视化编排项目中&#xff0c;如何设计组件的数据结构来支持"拖拉拽"功能&#xff1f;如何处理组件间的联动关系&#xff1f; // 组件数据结构示例 {components: [{id: comp1,type…