Skip to main content

使用 SharpHound 枚举

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

配置 BloodHound

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

首先,安装 Java(https://www.java.com/en/download/) ,因为Neo4j 依赖于 Java。在 Java 的最近版本中,安装会自动为我们配置环境变量。然后,安装 Neo4j 社区服务器(https://neo4j.com/download-center/\#community)。

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

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

image.png

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

image.png

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

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

image.png

使用 SharpHound 搜集数据

我们需要先初始化neo4j 数据库:

1:下载安装好neo4数据库后,进入neo4j文件夹下的bin子文件夹

2:打开命令行,执行 neo4j.bat console 命令

3:打开浏览器,访问 http://localhost:7474

4:初始账号都为 neo4j,但需要更改密码


然后使用SharpHound数据搜集器

1:最重要的一点,SharpHound数据搜集器与BloodHound的版本需要匹配,SharpHound既有exe版本 (https://github.com/BloodHoundAD/SharpHound) 也有ps1版本 (https://github.com/BloodHoundAD/BloodHound/blob/master/Collectors/SharpHound.ps1)。

image.png

2:对于exe版本,运行 sharphound.exe -c DcOnly 。对于ps1版本,导入sharphound.ps1后,执行 Invoke-BloodHound -CollectionMethod -all -verbose 命令。当然对于python版的,在前一篇已经提到过。这些工具我们当然可以根据用法以及自己实际需要进行参数调整。另外,根据sharphound版本的不同,可能生成json文件或者zip文件。


最后登录BloodHound

1:输入neo4j数据库凭证

2:上传sharphound的输出文件

3:图形化浏览域内关系图


在此初次使用之后,每次启动BloodHound都需要保持neo4j的运行。在BloodHound内,我们可以自由查看域内的关系图,我们还可以借助内置查询语句以及原始查询语句,查看我们想看的关系,例如使用原始语句 MATCH (u:User {hasspn:true}) RETURN u 查看被设置了SPN的用户。


除了BloodHound之外,adPEAS (https://github.com/61106960/adPEAS) 也是很优秀的工具。adPEAS的用法很简单,导入脚本后执行命令 Invoke-adPEAS即可,当然我们也可以根据用法帮助来个性化地搜集想要的数据。随后脚本会展示出较长的输出。