From b224292c868577fdf7ef8e9750ec77ad3ea35cb1 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 28 Jul 2025 12:12:54 +0000 Subject: [PATCH] Translated ['src/windows-hardening/active-directory-methodology/adws-enu --- src/SUMMARY.md | 1 + .../adws-enumeration.md | 106 ++++++++++++++++++ .../bloodhound.md | 105 ++++++++--------- 3 files changed, 155 insertions(+), 57 deletions(-) create mode 100644 src/windows-hardening/active-directory-methodology/adws-enumeration.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 4f96c20dc..ad681ba95 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -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) diff --git a/src/windows-hardening/active-directory-methodology/adws-enumeration.md b/src/windows-hardening/active-directory-methodology/adws-enumeration.md new file mode 100644 index 000000000..4316be9bc --- /dev/null +++ b/src/windows-hardening/active-directory-methodology/adws-enumeration.md @@ -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}} diff --git a/src/windows-hardening/active-directory-methodology/bloodhound.md b/src/windows-hardening/active-directory-methodology/bloodhound.md index 2cd58047a..611be2fb1 100644 --- a/src/windows-hardening/active-directory-methodology/bloodhound.md +++ b/src/windows-hardening/active-directory-methodology/bloodhound.md @@ -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 -# -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}}