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/adws-enu
This commit is contained in:
parent
582194953e
commit
b224292c86
@ -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)
|
||||
|
@ -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}}
|
@ -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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user