Translated ['src/windows-hardening/active-directory-methodology/adws-enu

This commit is contained in:
Translator 2025-07-28 12:12:54 +00:00
parent 582194953e
commit b224292c86
3 changed files with 155 additions and 57 deletions

View File

@ -260,6 +260,7 @@
- [Ad Certificates](windows-hardening/active-directory-methodology/ad-certificates.md)
- [AD information in printers](windows-hardening/active-directory-methodology/ad-information-in-printers.md)
- [AD DNS Records](windows-hardening/active-directory-methodology/ad-dns-records.md)
- [Adws Enumeration](windows-hardening/active-directory-methodology/adws-enumeration.md)
- [ASREPRoast](windows-hardening/active-directory-methodology/asreproast.md)
- [BloodHound & Other AD Enum Tools](windows-hardening/active-directory-methodology/bloodhound.md)
- [Constrained Delegation](windows-hardening/active-directory-methodology/constrained-delegation.md)

View File

@ -0,0 +1,106 @@
# Active Directory Web Services (ADWS) Enumeration & Stealth Collection
{{#include ../../banners/hacktricks-training.md}}
## 什么是 ADWS
Active Directory Web Services (ADWS) 是 **自 Windows Server 2008 R2 起在每个域控制器上默认启用**,并监听 TCP **9389**。尽管名称中有“HTTP”**并不涉及 HTTP**。相反,该服务通过一系列专有的 .NET 框架协议暴露 LDAP 风格的数据:
* MC-NBFX → MC-NBFSE → MS-NNS → MC-NMF
由于流量被封装在这些二进制 SOAP 帧中,并通过一个不常用的端口传输,**通过 ADWS 进行枚举的可能性远低于经典的 LDAP/389 和 636 流量被检查、过滤或签名**。对于操作员来说,这意味着:
* 更隐蔽的侦察 蓝队通常集中于 LDAP 查询。
* 通过 SOCKS 代理在 **非 Windows 主机Linux, macOS** 上隧道 9389/TCP 的自由收集。
* 您可以通过 LDAP 获得的相同数据用户、组、ACL、架构等并能够执行 **写入**(例如 `msDs-AllowedToActOnBehalfOfOtherIdentity` 用于 **RBCD**)。
> 注意ADWS 也被许多 RSAT GUI/PowerShell 工具使用,因此流量可能与合法的管理员活动混合。
## SoaPy 原生 Python 客户端
[SoaPy](https://github.com/logangoins/soapy) 是 **用纯 Python 完全重新实现的 ADWS 协议栈**。它逐字节构建 NBFX/NBFSE/NNS/NMF 帧,允许从类 Unix 系统收集数据而不接触 .NET 运行时。
### 主要特性
* 支持 **通过 SOCKS 代理**(对 C2 植入有用)。
* 与 LDAP `-q '(objectClass=user)'` 相同的细粒度搜索过滤器。
* 可选的 **写入** 操作( `--set` / `--delete` )。
* **BOFHound 输出模式**,可直接导入 BloodHound。
* `--parse` 标志在需要人类可读性时美化时间戳 / `userAccountControl`
### 安装(操作员主机)
```bash
python3 -m pip install soapy-adws # or git clone && pip install -r requirements.txt
```
## Stealth AD Collection Workflow
以下工作流程展示了如何通过 ADWS 枚举 **域和 ADCS 对象**,将其转换为 BloodHound JSON并寻找基于证书的攻击路径 所有操作均在 Linux 上进行:
1. **从目标网络到你的机器隧道 9389/TCP**(例如通过 Chisel、Meterpreter、SSH 动态端口转发等)。导出 `export HTTPS_PROXY=socks5://127.0.0.1:1080` 或使用 SoaPy 的 `--proxyHost/--proxyPort`
2. **收集根域对象:**
```bash
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
-q '(objectClass=domain)' \
| tee data/domain.log
```
3. **从配置 NC 收集与 ADCS 相关的对象:**
```bash
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
-dn 'CN=Configuration,DC=ludus,DC=domain' \
-q '(|(objectClass=pkiCertificateTemplate)(objectClass=CertificationAuthority) \\
(objectClass=pkiEnrollmentService)(objectClass=msPKI-Enterprise-Oid))' \
| tee data/adcs.log
```
4. **转换为 BloodHound:**
```bash
bofhound -i data --zip # produces BloodHound.zip
```
5. **在 BloodHound GUI 中上传 ZIP** 并运行 cypher 查询,例如 `MATCH (u:User)-[:Can_Enroll*1..]->(c:CertTemplate) RETURN u,c` 以揭示证书升级路径 (ESC1, ESC8 等)。
### 编写 `msDs-AllowedToActOnBehalfOfOtherIdentity` (RBCD)
```bash
soapy ludus.domain/jdoe:'P@ssw0rd'@dc.ludus.domain \
--set 'CN=Victim,OU=Servers,DC=ludus,DC=domain' \
msDs-AllowedToActOnBehalfOfOtherIdentity 'B:32:01....'
```
将其与 `s4u2proxy`/`Rubeus /getticket` 结合,以形成完整的 **基于资源的受限委派** 链。
## 检测与加固
### 详细的 ADDS 日志记录
在域控制器上启用以下注册表项,以显示来自 ADWS和 LDAP的昂贵/低效搜索:
```powershell
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics' -Name '15 Field Engineering' -Value 5 -Type DWORD
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Expensive Search Results Threshold' -Value 1 -Type DWORD
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Search Time Threshold (msecs)' -Value 0 -Type DWORD
```
事件将出现在 **Directory-Service** 下,带有完整的 LDAP 过滤器,即使查询是通过 ADWS 到达的。
### SACL Canary Objects
1. 创建一个虚拟对象(例如,禁用用户 `CanaryUser`)。
2. 为 _Everyone_ 主体添加一个 **Audit** ACE审核 **ReadProperty**
3. 每当攻击者执行 `(servicePrincipalName=*)``(objectClass=user)` 等操作时DC 会发出 **Event 4662**,其中包含真实用户 SID——即使请求是代理的或源自 ADWS。
Elastic 预构建规则示例:
```kql
(event.code:4662 and not user.id:"S-1-5-18") and winlog.event_data.AccessMask:"0x10"
```
## 工具总结
| 目的 | 工具 | 备注 |
|------|------|------|
| ADWS 枚举 | [SoaPy](https://github.com/logangoins/soapy) | Python, SOCKS, 读/写 |
| BloodHound 导入 | [BOFHound](https://github.com/bohops/BOFHound) | 转换 SoaPy/ldapsearch 日志 |
| 证书泄露 | [Certipy](https://github.com/ly4k/Certipy) | 可以通过同一 SOCKS 代理 |
## 参考文献
* [SpecterOps 确保使用 SOAP(y) 操作员指南,使用 ADWS 进行隐秘的 AD 收集](https://specterops.io/blog/2025/07/25/make-sure-to-use-soapy-an-operators-guide-to-stealthy-ad-collection-using-adws/)
* [SoaPy GitHub](https://github.com/logangoins/soapy)
* [BOFHound GitHub](https://github.com/bohops/BOFHound)
* [Microsoft MC-NBFX, MC-NBFSE, MS-NNS, MC-NMF 规范](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nbfx/)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -1,87 +1,78 @@
# BloodHound & Other AD Enum Tools
# BloodHound & Other Active Directory Enumeration Tools
{{#include ../../banners/hacktricks-training.md}}
{{#ref}}
adws-enumeration.md
{{#endref}}
> 注意:本页面汇集了一些最有用的工具,用于**枚举**和**可视化**Active Directory关系。有关通过隐秘的**Active Directory Web Services (ADWS)**通道进行收集,请查看上述参考。
---
## AD Explorer
[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) 是来自 Sysinternal Suite 的工具:
[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) (Sysinternals) 是一个高级的**AD查看器和编辑器**,允许
> 一个高级的 Active Directory (AD) 查看器和编辑器。您可以使用 AD Explorer 轻松浏览 AD 数据库,定义收藏位置,查看对象属性和属性而无需打开对话框,编辑权限,查看对象的架构,并执行可以保存和重新执行的复杂搜索。
* 通过GUI浏览目录树
* 编辑对象属性和安全描述符
* 创建/比较快照以进行离线分析
### Snapshots
### 快速使用
AD Explorer 可以创建 AD 的快照,以便您可以离线检查。\
它可以用于离线发现漏洞,或比较 AD 数据库在不同时间的不同状态。
1. 启动工具并使用任何域凭据连接到`dc01.corp.local`
2. 通过`File ➜ Create Snapshot`创建离线快照。
3. 使用`File ➜ Compare`比较两个快照,以发现权限漂移。
您需要提供用户名、密码和连接方向(需要任何 AD 用户)。
要创建 AD 的快照,请转到 `File` --> `Create Snapshot` 并输入快照的名称。
---
## ADRecon
[**ADRecon**](https://github.com/adrecon/ADRecon) 是一个从 AD 环境中提取和组合各种工件的工具。信息可以以 **特别格式化** 的 Microsoft Excel **报告** 形式呈现,其中包括带有指标的摘要视图,以便于分析并提供目标 AD 环境当前状态的整体图景
```bash
# Run it
.\ADRecon.ps1
[ADRecon](https://github.com/adrecon/ADRecon) 从域中提取大量文物ACLs、GPOs、信任、CA模板等并生成**Excel报告**
```powershell
# On a Windows host in the domain
PS C:\> .\ADRecon.ps1 -OutputDir C:\Temp\ADRecon
```
## BloodHound
---
From [https://github.com/BloodHoundAD/BloodHound](https://github.com/BloodHoundAD/BloodHound)
## BloodHound (图形可视化)
> BloodHound 是一个单页面的 Javascript 网络应用程序,建立在 [Linkurious](http://linkurio.us/) 之上,使用 [Electron](http://electron.atom.io/) 编译,并配备一个由 C# 数据收集器提供数据的 [Neo4j](https://neo4j.com/) 数据库
[BloodHound](https://github.com/BloodHoundAD/BloodHound) 使用图论 + Neo4j 来揭示本地 AD 和 Azure AD 中隐藏的权限关系
BloodHound 使用图论来揭示 Active Directory 或 Azure 环境中隐藏的、通常是无意的关系。攻击者可以使用 BloodHound 轻松识别高度复杂的攻击路径,这些路径在其他情况下将无法快速识别。防御者可以使用 BloodHound 识别并消除这些相同的攻击路径。蓝队和红队都可以使用 BloodHound 更深入地理解 Active Directory 或 Azure 环境中的权限关系。
因此,[Bloodhound](https://github.com/BloodHoundAD/BloodHound) 是一个惊人的工具,可以自动枚举域,保存所有信息,查找可能的权限提升路径,并使用图形显示所有信息。
BloodHound 由两个主要部分组成:**ingestors** 和 **visualisation application**
**ingestors** 用于 **枚举域并提取所有信息**,以便可视化应用程序理解的格式。
**visualisation application 使用 neo4j** 来显示所有信息之间的关系,并展示在域中提升权限的不同方式。
### Installation
在创建 BloodHound CE 后,整个项目进行了更新,以便于使用 Docker。开始的最简单方法是使用其预配置的 Docker Compose 配置。
1. 安装 Docker Compose。这应该包含在 [Docker Desktop](https://www.docker.com/products/docker-desktop/) 安装中。
2. 运行:
### 部署 (Docker CE)
```bash
curl -L https://ghst.ly/getbhce | docker compose -f - up
# Web UI ➜ http://localhost:8080 (user: admin / password from logs)
```
3. 在 Docker Compose 的终端输出中找到随机生成的密码。
4. 在浏览器中,导航到 http://localhost:8080/ui/login。使用用户名 **`admin`** 和您可以在 Docker Compose 的日志中找到的 **`随机生成的密码`** 登录。
### 收集器
之后,您需要更改随机生成的密码,您将准备好新的界面,从中可以直接下载 ingestors。
* `SharpHound.exe` / `Invoke-BloodHound` 本地或 PowerShell 变体
* `AzureHound` Azure AD 枚举
* **SoaPy + BOFHound** ADWS 收集(见顶部链接)
### SharpHound
#### 常见的 SharpHound 模式
```powershell
SharpHound.exe --CollectionMethods All # Full sweep (noisy)
SharpHound.exe --CollectionMethods Group,LocalAdmin,Session,Trusts,ACL
SharpHound.exe --Stealth --LDAP # Low noise LDAP only
```
收集器生成 JSON通过 BloodHound GUI 进行摄取。
他们有几个选项,但如果您想从加入域的 PC 上运行 SharpHound使用您当前的用户并提取所有信息您可以这样做
```
./SharpHound.exe --CollectionMethods All
Invoke-BloodHound -CollectionMethod All
```
> 您可以在 [这里](https://support.bloodhoundenterprise.io/hc/en-us/articles/17481375424795-All-SharpHound-Community-Edition-Flags-Explained) 阅读更多关于 **CollectionMethod** 和循环会话的信息。
如果您希望使用不同的凭据执行 SharpHound您可以创建一个 CMD netonly 会话并从那里运行 SharpHound
```
runas /netonly /user:domain\user "powershell.exe -exec bypass"
```
[**了解更多关于 Bloodhound 的信息,请访问 ired.team。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-with-bloodhound-on-kali-linux)
---
## Group3r
[**Group3r**](https://github.com/Group3r/Group3r) 是一个用于查找与 **组策略** 相关的 Active Directory 中的 **漏洞** 的工具。\
您需要使用 **任何域用户** 从域内的主机上 **运行 group3r**
[Group3r](https://github.com/Group3r/Group3r) 枚举 **组策略对象** 并突出显示错误配置。
```bash
group3r.exe -f <filepath-name.log>
# -s sends results to stdin
# -f send results to file
# Execute inside the domain
Group3r.exe -f gpo.log # -s to stdout
```
---
## PingCastle
[**PingCastle**](https://www.pingcastle.com/documentation/) **评估AD环境的安全态势**并提供一个漂亮的**报告**和图表
要运行它,可以执行二进制文件`PingCastle.exe`,它将启动一个**交互式会话**,呈现选项菜单。默认选项是**`healthcheck`**,它将建立一个**域**的基线**概述**,并查找**错误配置**和**漏洞**。
[PingCastle](https://www.pingcastle.com/documentation/) 执行 Active Directory 的 **健康检查** 并生成带有风险评分的 HTML 报告
```powershell
PingCastle.exe --healthcheck --server corp.local --user bob --password "P@ssw0rd!"
```
{{#include ../../banners/hacktricks-training.md}}