mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/active-directory-methodology/README.m
This commit is contained in:
parent
3a1df2d1a4
commit
cb38dfa07f
@ -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-NRPC(Netlogon)接口进行操作。该方法在绑定 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)`来实现。
|
||||
|
||||
### **实施欺骗技术**
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user