Translated ['src/windows-hardening/active-directory-methodology/README.m

This commit is contained in:
Translator 2025-01-22 12:15:08 +00:00
parent 3a1df2d1a4
commit cb38dfa07f

View File

@ -2,9 +2,9 @@
{{#include ../../banners/hacktricks-training.md}}
## 基本概述
## Basic overview
**Active Directory** 作为基础技术,使 **网络管理员** 能够高效地创建和管理网络中的 **域**、**用户** 和 **对象**。它被设计为可扩展,便于将大量用户组织成可管理的 **组****子组**,同时在不同级别上控制 **访问权限**
**Active Directory** 作为基础技术,使 **网络管理员** 能够高效地创建和管理 **域**、**用户** 和 **对象**。它被设计为可扩展,便于将大量用户组织成可管理的 **组****子组**,同时在不同级别上控制 **访问权限**
**Active Directory** 的结构由三个主要层次组成:**域**、**树** 和 **森林**。一个 **域** 包含一组对象,如 **用户****设备**,共享一个公共数据库。**树** 是这些域的组,按共享结构连接,而 **森林** 代表多个树的集合,通过 **信任关系** 互联,形成组织结构的最上层。可以在每个层次上指定特定的 **访问****通信权限**
@ -25,22 +25,22 @@
5. **权限管理** 通过规范其未经授权的分发和使用来帮助保护版权材料。
6. **DNS 服务** **域名** 的解析至关重要。
有关更详细的解释,请查看:[**TechTerms - Active Directory 定义**](https://techterms.com/definition/active_directory)
有关更详细的解释,请查看:[**TechTerms - Active Directory Definition**](https://techterms.com/definition/active_directory)
### **Kerberos 身份验证**
### **Kerberos Authentication**
要学习如何 **攻击 AD**,您需要非常好地 **理解** **Kerberos 身份验证过程**。\
[**如果您仍然不知道它是如何工作的,请阅读此页面。**](kerberos-authentication.md)
## 备忘单
## Cheat Sheet
您可以访问 [https://wadcoms.github.io/](https://wadcoms.github.io) 快速查看可以运行的命令,以枚举/利用 AD。
## 侦查 Active Directory (无凭据/会话)
## Recon Active Directory (No creds/sessions)
如果您仅访问 AD 环境,但没有任何凭据/会话,您可以:
- **渗透测试网络**
- **对网络进行渗透测试:**
- 扫描网络,查找机器和开放端口,并尝试 **利用漏洞****提取凭据**(例如,[打印机可能是非常有趣的目标](ad-information-in-printers.md))。
- 枚举 DNS 可能会提供有关域中关键服务器的信息,如 Web、打印机、共享、VPN、媒体等。
- `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
@ -74,10 +74,11 @@
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
### 用户枚举
### User enumeration
- **匿名 SMB/LDAP 枚举:** 检查 [**渗透测试 SMB**](../../network-services-pentesting/pentesting-smb/index.html) 和 [**渗透测试 LDAP**](../../network-services-pentesting/pentesting-ldap.md) 页面。
- **Kerbrute 枚举**:当请求 **无效用户名** 时,服务器将使用 **Kerberos 错误** 代码 _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ 响应,从而使我们能够确定该用户名无效。 **有效用户名** 将引发 **AS-REP** 响应中的 **TGT** 或错误 _KRB5KDC_ERR_PREAUTH_REQUIRED_指示用户需要进行预身份验证。
- **Kerbrute 枚举**:当请求 **无效用户名** 时,服务器将使用 **Kerberos 错误** 代码 _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ 响应,从而使我们能够确定用户名无效。 **有效用户名** 将引发 **AS-REP** 响应中的 **TGT** 或错误 _KRB5KDC_ERR_PREAUTH_REQUIRED_指示用户需要进行预身份验证。
- **对 MS-NRPC 的无身份验证**:在域控制器上使用 auth-level = 1无身份验证对 MS-NRPCNetlogon接口进行操作。该方法在绑定 MS-NRPC 接口后调用 `DsrGetDcNameEx2` 函数,以检查用户或计算机是否存在而无需任何凭据。 [NauthNRPC](https://github.com/sud0Ru/NauthNRPC) 工具实现了这种类型的枚举。研究可以在 [这里](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf) 找到。
```bash
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
@ -87,6 +88,7 @@ Nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm='<domain
msf> use auxiliary/gather/kerberos_enumusers
crackmapexec smb dominio.es -u '' -p '' --users | awk '{print $4}' | uniq
python3 nauth.py -t target -u users_file.txt #From https://github.com/sud0Ru/NauthNRPC
```
- **OWA (Outlook Web Access) 服务器**
@ -105,11 +107,11 @@ Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password
> [!WARNING]
> 你可以在 [**这个 GitHub 仓库**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) 和这个 ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)) 中找到用户名列表。
>
> 然而,你应该之前的侦查步骤中获得 **公司员工的姓名**。有了名字和姓氏,你可以使用脚本 [**namemash.py**](https://gist.github.com/superkojiman/11076951) 来生成潜在的有效用户名。
> 然而,你应该之前的侦查步骤中获得 **公司员工的姓名**。有了名字和姓氏,你可以使用脚本 [**namemash.py**](https://gist.github.com/superkojiman/11076951) 来生成潜在的有效用户名。
### 知道一个或多个用户名
好的,你已经知道一个有效的用户名,但没有密码……那么尝试:
好的,所以你知道你已经有一个有效的用户名,但没有密码……那么尝试:
- [**ASREPRoast**](asreproast.md):如果用户 **没有** 属性 _DONT_REQ_PREAUTH_你可以 **请求该用户的 AS_REP 消息**,其中将包含一些由用户密码的派生加密的数据。
- [**Password Spraying**](password-spraying.md):让我们尝试每个发现用户的 **常见密码**,也许某个用户使用了一个糟糕的密码(记住密码策略!)。
@ -131,17 +133,17 @@ password-spraying.md
如果你已经成功枚举了活动目录,你将拥有 **更多的电子邮件和对网络的更好理解**。你可能能够强制 NTML [**中继攻击**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) 来访问 AD 环境。
### 窃取 NTLM 凭
### 窃取 NTLM 凭
如果你可以使用 **null 或访客用户** 访问其他 PC 或共享,你可以 **放置文件**(如 SCF 文件),如果以某种方式被访问,将会 **触发对你的 NTML 认证**,这样你就可以 **窃取** **NTLM 挑战** 进行破解:
如果你可以使用 **null 或访客用户** **访问其他 PC 或共享**,你可以 **放置文件**(如 SCF 文件),如果以某种方式被访问,将会 **触发对你的 NTML 认证**,这样你就可以 **窃取** **NTLM 挑战** 进行破解:
{{#ref}}
../ntlm/places-to-steal-ntlm-creds.md
{{#endref}}
## 使用凭/会话枚举活动目录
## 使用凭/会话枚举活动目录
在这个阶段,你需要 **获取有效域账户的凭据或会话。** 如果你有一些有效的凭据或作为域用户的 shell**你应该记住之前给出的选项仍然是妥协其他用户的选项**。
在这个阶段,你需要 **获取有效域账户的凭证或会话。** 如果你有一些有效的凭证或作为域用户的 shell**你应该记住之前给出的选项仍然是妥协其他用户的选项**。
在开始经过身份验证的枚举之前,你应该知道 **Kerberos 双跳问题**
@ -157,13 +159,13 @@ kerberos-double-hop-problem.md
- 你可以使用 [**CMD 进行基本侦查**](../basic-cmd-for-pentesters.md#domain-info)
- 你也可以使用 [**powershell 进行侦查**](../basic-powershell-for-pentesters/index.html),这将更加隐蔽
- 你还可以 [**使用 powerview**](../basic-powershell-for-pentesters/powerview.md) 提取更详细的信息
- 你还可以 [**使用 powerview**](../basic-powershell-for-pentesters/powerview.md) 提取更详细的信息
- 另一个在活动目录中进行侦查的惊人工具是 [**BloodHound**](bloodhound.md)。它 **不是很隐蔽**(取决于你使用的收集方法),但 **如果你不在乎**,你绝对应该试试。找出用户可以 RDP 的地方,找到其他组的路径等。
- **其他自动化 AD 枚举工具有:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
- [**AD 的 DNS 记录**](ad-dns-records.md),因为它们可能包含有趣的信息。
- 你可以使用 **AdExplorer.exe** 这个 **GUI 工具** 来枚举目录,来自 **SysInternal** 套件。
- 你还可以使用 **ldapsearch** 在 LDAP 数据库中搜索凭,查找字段 _userPassword__unixUserPassword_,甚至是 _Description_。请参阅 [PayloadsAllTheThings 中 AD 用户评论的密码](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) 了解其他方法。
- 如果你使用 **Linux**,你也可以使用 [**pywerview**](https://github.com/the-useless-one/pywerview) 枚举域。
- 你还可以使用 **ldapsearch** 在 LDAP 数据库中搜索凭,查找字段 _userPassword__unixUserPassword_,甚至是 _Description_。请参阅 [PayloadsAllTheThings 中 AD 用户评论的密码](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) 以获取其他方法。
- 如果你使用 **Linux**,你也可以使用 [**pywerview**](https://github.com/the-useless-one/pywerview) 枚举域。
- 你还可以尝试自动化工具,如:
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
- [**61106960/adPEAS**](https://github.com/61106960/adPEAS)
@ -175,7 +177,7 @@ kerberos-double-hop-problem.md
### Kerberoast
Kerberoasting 涉及获取 **TGS 票证**,这些票证用于与用户账户相关的服务,并破解其加密——这基于用户密码——**离线**。
Kerberoasting 涉及获取 **TGS 票证**,这些票证由与用户账户相关的服务使用,并破解其加密——这基于用户密码——**离线**。
更多信息请参见:
@ -183,19 +185,19 @@ Kerberoasting 涉及获取 **TGS 票证**,这些票证用于与用户账户相
kerberoast.md
{{#endref}}
### 远程连接RDP、SSH、FTP、Win-RM 等)
### 远程连接 (RDP, SSH, FTP, Win-RM 等)
一旦你获得了一些凭,你可以检查是否可以访问任何 **机器**。为此,你可以使用 **CrackMapExec** 尝试通过不同协议连接到多个服务器,具体取决于你的端口扫描结果。
一旦你获得了一些凭,你可以检查是否可以访问任何 **机器**。为此,你可以使用 **CrackMapExec** 尝试通过不同协议连接到多个服务器,具体取决于你的端口扫描结果。
### 本地权限提升
如果你已经妥协了凭或作为普通域用户的会话,并且你可以 **使用该用户访问域中的任何机器**,你应该尝试找到 **本地提升权限和寻找凭的方法**。这是因为只有拥有本地管理员权限,你才能 **在内存中LSASS和本地SAM转储其他用户的哈希**
如果你已经妥协了凭或作为普通域用户的会话,并且你可以 **使用该用户访问域中的任何机器**,你应该尝试找到 **本地提升权限和寻找凭的方法**。这是因为只有拥有本地管理员权限,你才能 **在内存中LSASS和本地SAM转储其他用户的哈希**
本书中有一整页关于 [**Windows 中的本地权限提升**](../windows-local-privilege-escalation/index.html) 和一个 [**检查表**](../checklist-windows-privilege-escalation.md)。此外,不要忘记使用 [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)。
### 当前会话票证
**不太可能** 在当前用户中找到 **票证**,使你能够访问意外资源,但你可以检查:
**不太可能** 在当前用户中找到 **票证**,使你有权限访问意外资源,但你可以检查:
```bash
## List all tickets (if not admin, only current user tickets)
.\Rubeus.exe triage
@ -236,7 +238,7 @@ printnightmare.md
### 哈希提取
希望你已经成功**破坏了一些本地管理员**账户,使用 [AsRepRoast](asreproast.md)、[Password Spraying](password-spraying.md)、[Kerberoast](kerberoast.md)、[Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) 包括中继、[EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)、[本地提升特权](../windows-local-privilege-escalation/index.html)。\
然后,是时候转储内存和本地的所有哈希。\
然后,是时候转储内存和本地的所有哈希。\
[**阅读此页面以了解获取哈希的不同方法。**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
### 传递哈希
@ -247,7 +249,7 @@ printnightmare.md
### 超越传递哈希/传递密钥
此攻击旨在**使用用户的 NTLM 哈希请求 Kerberos 票证**,作为常见的 NTLM 协议下的传递哈希的替代方案。因此,这在**禁用 NTLM 协议**且仅允许**Kerberos**作为认证协议的网络中尤其**有用**。
此攻击旨在**使用用户的 NTLM 哈希请求 Kerberos 票证**,作为常见的 NTLM 协议下的传递哈希的替代方案。因此,这在**禁用 NTLM 协议**且仅允许**Kerberos**作为认证协议的网络中可能特别**有用**。
{{#ref}}
over-pass-the-hash-pass-the-key.md
@ -275,33 +277,33 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c
### MSSQL 滥用与受信任链接
如果用户有权限**访问 MSSQL 实例**,他可能能够利用它在 MSSQL 主机上**执行命令**(如果以 SA 身份运行),**窃取** NetNTLM **哈希**,甚至执行**中继****攻击**。\
此外,如果 MSSQL 实例被其他 MSSQL 实例信任(数据库链接)。如果用户对受信任的数据库有权限,他将能够**利用信任关系在其他实例中执行查询**。这些信任可以链式连接,在某些情况下,用户可能能够找到一个配置错误的数据库,在其中执行命令。\
此外,如果 MSSQL 实例被其他 MSSQL 实例信任(数据库链接)。如果用户对受信任的数据库有权限,他将能够**利用信任关系在其他实例中执行查询**。这些信任可以链式连接,在某些情况下,用户可能能够找到一个配置错误的数据库,在那里他可以执行命令。\
**数据库之间的链接甚至可以跨森林信任工作。**
{{#ref}}
abusing-ad-mssql.md
{{#endref}}
### 不受限制的委
### 不受限制的委
如果您发现任何具有属性 [ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) 的计算机对象,并且您在计算机上具有域权限,您将能够从登录到该计算机的每个用户的内存中转储 TGT。\
因此,如果**域管理员登录到计算机**,您将能够转储他的 TGT并使用 [Pass the Ticket](pass-the-ticket.md) 冒充他。\
由于受限委,您甚至可以**自动妥协打印服务器**(希望它是 DC
由于受限委,您甚至可以**自动妥协打印服务器**(希望它是 DC
{{#ref}}
unconstrained-delegation.md
{{#endref}}
### 受限委
### 受限委
如果用户或计算机被允许进行“受限委托”,它将能够**冒充任何用户访问计算机中的某些服务**。\
如果用户或计算机被允许进行“受限委派”,它将能够**冒充任何用户以访问计算机上的某些服务**。\
然后,如果您**妥协**此用户/计算机的哈希,您将能够**冒充任何用户**(甚至是域管理员)以访问某些服务。
{{#ref}}
constrained-delegation.md
{{#endref}}
### 基于资源的受限委
### 基于资源的受限委
在远程计算机的 Active Directory 对象上拥有**WRITE**权限可以实现**提升权限**的代码执行:
@ -311,7 +313,7 @@ resource-based-constrained-delegation.md
### ACL 滥用
被妥协的用户可能对某些域对象有一些**有趣的权限**,这可能让您**横向移动**/**提升**权限。
被妥协的用户可能对某些域对象有一些**有趣的权限**,这可能让您**横向移动**/**提升**权限。
{{#ref}}
acl-persistence-abuse/
@ -336,7 +338,7 @@ rdp-sessions-abuse.md
### LAPS
**LAPS** 提供了一种管理域加入计算机上的**本地管理员密码**的系统,确保其**随机**、唯一且频繁**更改**。这些密码存储在 Active Directory 中,访问通过 ACL 仅限授权用户控制。拥有足够权限访问这些密码后,可以实现对其他计算机的转移。
**LAPS** 提供了一种管理域加入计算机上的**本地管理员密码**的系统,确保其**随机**、唯一且频繁**更改**。这些密码存储在 Active Directory 中,并通过 ACL 控制对授权用户的访问。拥有足够权限访问这些密码后,可以实现对其他计算机的转移。
{{#ref}}
laps.md
@ -401,9 +403,9 @@ silver-ticket.md
### 金票
**金票攻击**涉及攻击者在 Active Directory (AD) 环境中获取**krbtgt 账户的 NTLM 哈希**。该账户是特殊的,因为它用于签署所有**票据授予票据 (TGT)**,这些票据对于在 AD 网络中进行身份验证至关重要。
**金票攻击**涉及攻击者在 Active Directory (AD) 环境中获取**krbtgt 账户的 NTLM 哈希**。该账户是特殊的,因为它用于签署所有**票据授予票据 (TGTs)**,这些票据对于在 AD 网络中进行身份验证至关重要。
一旦攻击者获得此哈希,他们可以为他们选择的任何账户创建**TGT**(银票攻击)。
一旦攻击者获得此哈希,他们可以为他们选择的任何账户创建**TGTs**(银票攻击)。
{{#ref}}
golden-ticket.md
@ -435,7 +437,7 @@ ad-certificates/domain-persistence.md
### AdminSDHolder 组
Active Directory 中的**AdminSDHolder**对象通过在这些组中应用标准**访问控制列表 (ACL)** 来确保**特权组**(如域管理员和企业管理员)的安全,以防止未经授权的更改。然而,这一功能可能被利用;如果攻击者修改 AdminSDHolder 的 ACL 以授予普通用户完全访问权限,该用户将获得对所有特权组的广泛控制。这一安全措施本意是保护,但如果不加以监控,可能会适得其反,导致不当访问
Active Directory 中的**AdminSDHolder**对象通过在这些组中应用标准**访问控制列表 (ACL)**来确保**特权组**(如域管理员和企业管理员)的安全,以防止未经授权的更改。然而,这一功能可能被利用;如果攻击者修改 AdminSDHolder 的 ACL 以授予普通用户完全访问权限,该用户将获得对所有特权组的广泛控制。这个本应保护的安全措施因此可能适得其反,允许不当访问,除非进行严格监控
[**有关 AdminDSHolder 组的更多信息在这里。**](privileged-groups-and-token-privileges.md#adminsdholder-group)
@ -463,7 +465,7 @@ acl-persistence-abuse/
security-descriptors.md
{{#endref}}
### 骨架钥
### 骨架
在内存中更改**LSASS**以建立一个**通用密码**,授予对所有域账户的访问权限。
@ -483,7 +485,7 @@ custom-ssp.md
### DCShadow
它在 AD 中注册一个**新的域控制器**,并使用它在指定对象上**推送属性**SIDHistory、SPNs...**不留**任何关于**修改**的**日志**。您**需要 DA** 权限并在**根域**内。\
请注意,如果您使用错误的数据,会出现相当糟糕的日志。
请注意,如果您使用错误的数据,将会出现相当丑陋的日志。
{{#ref}}
dcshadow.md
@ -504,14 +506,14 @@ laps.md
### 基本信息
[**域信任**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>)是一种安全机制,使一个**域**的用户能够访问另一个**域**中的资源。它本质上在两个域的身份验证系统之间创建了一个链接,允许身份验证验证无缝流动。当域建立信任时,它们在其**域控制器 (DC)** 中交换并保留特定的**密钥**,这些密钥对信任的完整性至关重要。
[**域信任**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>)是一种安全机制,使来自一个**域**的用户能够访问另一个**域**中的资源。它本质上在两个域的身份验证系统之间创建了一个链接,允许身份验证验证无缝流动。当域建立信任时,它们在其**域控制器 (DC)** 中交换并保留特定的**密钥**,这些密钥对信任的完整性至关重要。
在典型场景中,如果用户打算访问**受信任域**中的服务,他们必须首先从自己域的 DC 请求一个称为**跨域 TGT**的特殊票据。此 TGT 使用两个域已达成一致的共享**密钥**进行加密。然后,用户将此 TGT 提交给**受信任域的 DC**以获取服务票据(**TGS**)。在受信任域的 DC 成功验证跨域 TGT 后,它会发出 TGS授予用户访问该服务的权限。
**步骤**
1. **域 1**中的**客户端计算机**开始该过程,使用其**NTLM 哈希**向其**域控制器 (DC1)** 请求**票据授予票据 (TGT)**。
2. 如果客户端成功通过身份验证DC1 发出新的 TGT。
1. **域 1**中的**客户端计算机**使用其**NTLM 哈希**向其**域控制器 (DC1)**请求**票据授予票据 (TGT)**,开始该过程
2. 如果客户端成功通过身份验证DC1 发出新的 TGT。
3. 客户端然后向 DC1 请求一个**跨域 TGT**,该 TGT 是访问**域 2**中的资源所需的。
4. 跨域 TGT 使用作为双向域信任的一部分在 DC1 和 DC2 之间共享的**信任密钥**进行加密。
5. 客户端将跨域 TGT 带到**域 2 的域控制器 (DC2)**。
@ -528,9 +530,9 @@ laps.md
- **父子信任**:这是同一森林内的常见设置,子域自动与其父域建立双向传递信任。这意味着身份验证请求可以在父域和子域之间无缝流动。
- **交叉链接信任**:称为“快捷信任”,这些是在子域之间建立的,以加快引用过程。在复杂的森林中,身份验证引用通常必须向森林根节点上行,然后向目标域下行。通过创建交叉链接,旅程缩短,这在地理分散的环境中尤其有利。
- **外部信任**:这些是在不同的、不相关的域之间建立的,具有非传递性。根据[微软的文档](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>),外部信任对于访问当前森林外的域中的资源非常有用,该域未通过森林信任连接。通过 SID 过滤增强安全性。
- **外部信任**:这些是在不同的、不相关的域之间建立的,通常是非传递性的。根据[微软的文档](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>),外部信任对于访问当前森林外的域中的资源非常有用,该域未通过森林信任连接。通过 SID 过滤增强安全性。
- **树根信任**:这些信任在森林根域和新添加的树根之间自动建立。虽然不常见,但树根信任对于将新域树添加到森林非常重要,使它们能够保持唯一的域名并确保双向传递性。有关更多信息,请参见[微软的指南](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>)。
- **森林信任**:这种类型的信任是两个森林根域之间的双向传递信任,也强制实施 SID 过滤以增强安全措施。
- **森林信任**:这种类型的信任是两个森林根域之间的双向传递信任,也实施 SID 过滤以增强安全措施。
- **MIT 信任**:这些信任与非 Windows 的[RFC4120 兼容](https://tools.ietf.org/html/rfc4120) Kerberos 域建立。MIT 信任更为专业,适用于需要与 Windows 生态系统外的基于 Kerberos 的系统集成的环境。
#### **信任关系中的其他差异**
@ -541,9 +543,9 @@ laps.md
### 攻击路径
1. **枚举**信任关系
2. 检查任何**安全主体**(用户/组/计算机)是否对**其他域**的资源有**访问**权限,可能通过 ACE 条目或通过在其他域的组中查找。寻找**跨域关系**(信任可能是为此创建的)。
2. 检查是否有任何**安全主体**(用户/组/计算机)对**其他域**的资源有**访问**权限,可能通过 ACE 条目或通过在其他域的组中查找。寻找**跨域关系**(信任可能是为此创建的)。
1. 在这种情况下kerberoast 可能是另一个选项。
3. **妥协**可以**跨域**转移的**账户**。
3. **妥协**可以**跨域**进行**转移**的**账户**。
攻击者可以通过三种主要机制访问另一个域中的资源:
@ -598,7 +600,7 @@ sid-history-injection.md
**架构变更攻击**
此方法需要耐心,等待新特权 AD 对象的创建。通过 SYSTEM 权限,攻击者可以修改 AD 架构,以授予任何用户对所有类的完全控制。这可能导致对新创建的 AD 对象的未经授权访问和控制。
此方法需要耐心,等待新特权 AD 对象的创建。通过 SYSTEM 权限,攻击者可以修改 AD 架构,以授予任何用户对所有类的完全控制。这可能导致对新创建的 AD 对象的未经授权访问和控制。
进一步阅读可在 [架构变更信任攻击](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent) 中找到。
@ -647,7 +649,7 @@ external-forest-domain-one-way-outbound.md
另一种妥协受信任域的方法是查找在域信任的**相反方向**创建的[**SQL受信任链接**](abusing-ad-mssql.md#mssql-trusted-links)(这并不常见)。
另一种妥协受信任域的方法是等待在一台**受信任域用户可以访问**机器上,通过**RDP**登录。然后攻击者可以在RDP会话进程中注入代码并从那里**访问受害者的源域**。\
另一种妥协受信任域的方法是等待在一台**受信任域用户可以访问**机器上,通过**RDP**登录。然后攻击者可以在RDP会话进程中注入代码并从那里**访问受害者的源域**。\
此外,如果**受害者挂载了他的硬盘**,攻击者可以在**RDP会话**进程中将**后门**存储在**硬盘的启动文件夹**中。这种技术称为**RDPInception**。
{{#ref}}
@ -661,9 +663,9 @@ rdp-sessions-abuse.md
- 通过SID过滤来减轻利用SID历史属性进行攻击的风险该过滤在所有跨森林信任中默认启用。这是基于假设考虑到森林而不是域作为安全边界认为内部森林信任是安全的这是微软的立场。
- 然而有一个问题SID过滤可能会干扰应用程序和用户访问导致其偶尔被禁用。
### **选择性证:**
### **选择性身份验证:**
- 对于跨森林信任,采用选择性证确保两个森林中的用户不会自动被认证。相反,用户需要明确的权限才能访问信任域或森林中的域和服务器。
- 对于跨森林信任,采用选择性身份验证确保两个森林中的用户不会自动被认证。相反,用户需要明确的权限才能访问信任域或森林中的域和服务器。
- 需要注意的是这些措施并不能保护免受可写配置命名上下文NC的利用或对信任账户的攻击。
[**有关域信任的更多信息请访问ired.team。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
@ -682,7 +684,7 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-move
- **域管理员限制**:建议仅允许域管理员登录到域控制器,避免在其他主机上使用。
- **服务账户权限**服务不应以域管理员DA权限运行以维护安全性。
- **临时权限限制**对于需要DA权限的任务应限制其持续时间。这可以通过以下方式实现`Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
- **临时权限限制**对于需要DA权限的任务其持续时间应有限制。这可以通过:`Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`来实现。
### **实施欺骗技术**