# 使用 SharpHound 枚举

在本章的之前几篇，BloodHound 多次被提及到。Bloodhound ([https://github.com/BloodHoundAD/BloodHound](https://github.com/BloodHoundAD/BloodHound)) 是一款利用图论揭示 **Active Directory** 或 **Azure** 环境中隐藏的、非预期关系的工具。我们可以使用它快速轻松地枚举域对象并找到攻击路径。

### **配置 BloodHound**

要设置 Bloodhound，我们需要配置多个组件：**Neo4j 数据库**，**Sharphound 数据搜集器** 和 **Bloodhound**。虽然可以在 Linux 上设置 Bloodhound，但我们将在 Windows 10 虚拟机上进行设置。

首先，安装 Java ([https://www.java.com/en/download/](https://www.java.com/en/download/%EF%BC%89%EF%BC%8C%E5%9B%A0%E4%B8%BA))，因为Neo4j 依赖于 Java。在 Java 的最近版本中，安装会自动为我们配置环境变量。然后，安装 Neo4j 社区服务器 ([https://neo4j.com/download-center/\\#community](https://neo4j.com/download-center/%5C#community%EF%BC%89%E3%80%82))。

解压下载的文件，并通过执行命令：**neo4j.bat console** 来启动 Neo4j。

建议从提升特权的命令行终端中运行，如果一切正常，我们会看到与下面的截图类似的内容：

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/KPIuClxLyuIYqVyo-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/KPIuClxLyuIYqVyo-image.png)

然后访问 http://127,.0.0.1:7474 以连接 neo4j 数据库的面板。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/2usEqCvEEdpBxBBS-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/2usEqCvEEdpBxBBS-image.png)

 默认凭证是 neo4j:neo4j，第一次登陆后会要求修改密码。然后，我们可以从 [https://github.com/BloodHoundAD/BloodHound/releases ](https://github.com/BloodHoundAD/BloodHound/releases)下载最新的 BloodHound 了。

解压并运行 BloodHound，输入修改后的凭证并登陆

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/30PqP1BsKqmT23Wc-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/30PqP1BsKqmT23Wc-image.png)

### **使用 SharpHound 搜集数据**

目前，BloodHound 中是空的，因为我们没有上传任何数据，这就需要我们用 SharpHoun 搜集器来搜集域信息了。我们可以从 [https://github.com/BloodHoundAD/SharpHound](https://github.com/BloodHoundAD/SharpHound) 处下载最新的。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/s6ilfqmqXMQPqCZe-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/s6ilfqmqXMQPqCZe-image.png)

对于装有旧版本 BloodHound 与 SharpHound 的同学来说，最好同步使用最新版本的，因为这两个工具版本要匹配，不然会有数据文件兼容性问题。下载的 SharpHound 也包含了 PowerShell 版的 SharpHound 了。

SharpHound 支持多个参数，包括搜集方法、请求频率、搜集范围等。灵活指定这些选项的值可以提升 OPSEC，毕竟 SharpHound 默认情况下会在短时间内发送较多 LDAP 请求给域控。哲理的话，我们使用了命令 **sharphound.exe -c All --throttle 1500 --jittle 10** 来运行 sharphound 搜集器，并成功获得了输出文件。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/RVr2zMP2D9kvTOPM-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/RVr2zMP2D9kvTOPM-image.png)

重复命令，但是指定域为 PROD 以及 RAVEN-MED。最终将得到的输出文件一起打包下载，传送到 BloodHound 所在的数据，并上传文件。我们也可以使用 PowerShell 版的搜集器搜集数据。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/ao5xpaVp3lrexQXN-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/ao5xpaVp3lrexQXN-image.png)

上传之后，重启 BloodHound，然后就能看见搜集的数据了。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/TtCkA5IviSOAk40H-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/TtCkA5IviSOAk40H-image.png)

我们可以以图形化方式简单直接地查看主体之间的关系

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/Mzrej7H7Bs9azFjk-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/Mzrej7H7Bs9azFjk-image.png)

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/CJrJga2RrBQE2DCT-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/CJrJga2RrBQE2DCT-image.png)

我们还可以把已经沦陷的域主题标注出来，从而让 BloodHound 自动帮我们计算接下来的攻击路径。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/5nfBTo0gOWOgigx5-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/5nfBTo0gOWOgigx5-image.png)

根据图示，我们是可以从在拿下用户 serveradm 后轻易接管当前域的。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/kkYWQ8SFf22nNR3t-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/kkYWQ8SFf22nNR3t-image.png)

BloodHound 内置了一些好用的查询语句，例如帮助我们发现了用户 **prod\\back\_operator** 具有在 PROD 域内的 DCSync 特权。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/jKyPeVUtPd7xVwcO-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/jKyPeVUtPd7xVwcO-image.png)

我们还可以用原始查询来自定义查询语句，例如筛选所有具有 SPN 用户的语句为

```neo4j
MATCH (u: User {hasspn:true}) RETURN u
```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/7VBnNrH5VOSpE0sn-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/7VBnNrH5VOSpE0sn-image.png)

除了 BloodHound之外，adPEAS ([https://github.com/61106960/adPEAS](https://github.com/61106960/adPEAS)) 也是很优秀的工具。adPEAS 的用法很简单，导入脚本后执行命令 **Invoke-adPEAS** 即可，可以指定其他可访问的域。adPEAS 默认会发出大量请求，是 OPSEC 不安全的，因此我们需要指定一些选项。在大量输出中，adPEAS 会高亮一些潜在的配置漏洞，以及自动帮我们获取一些帐号的 Kerberos 哈希。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/Nk1v2iNmpuxaWOw6-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/Nk1v2iNmpuxaWOw6-image.png)