Skip to main content

使用 SharpHound 枚举

在本章的之前几篇,BloodHound 多次被提及到。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/),因为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 搜集数据

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

image.png

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

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

image.png

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

image.png

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

image.png

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

image.png

image.png

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

image.png

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

image.png

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

image.png

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

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

image.png

 

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

image.png