使用 SharpHound 枚举
在本章的之前几篇,BloodHound 多次被提及到。Bloodhound (https://github.com/BloodHoundAD/BloodHound) 是一款利用图论揭示 Active Directory 或 Azure 环境中隐藏的、非预期关系的工具。我们可以使用它快速轻松地枚举域对象并找到攻击路径。
配置 BloodHound
要设置 Bloodhound,我们需要配置多个组件:Neo4j 数据库,Sharphound 数据搜集器 和 Bloodhound。虽然可以在 Kali Linux 上设置 Bloodhound,但我们将在 Windows 10 虚拟机上进行设置。
首先,安装 Java(Java (https://www.java.com/en/download/) ,因为Neo4j 依赖于 Java。在 Java 的最近版本中,安装会自动为我们配置环境变量。然后,安装 Neo4j 社区服务器( (https://neo4j.com/download-center/\#community)#community)。
解压下载的文件,并通过执行命令:neo4j.bat console 来启动 Neo4j。
建议从提升特权的命令行终端中运行,如果一切正常,我们会看到与下面的截图类似的内容:
然后访问 http://127,.0.0.1:7474 以连接 neo4j 数据库的面板。
默认凭证是 neo4j:neo4j,第一次登陆后会要求修改密码。然后,我们可以从 https://github.com/BloodHoundAD/BloodHound/releases 下载最新的 BloodHound 了。
解压并运行 BloodHound,输入修改后的凭证并登陆
使用 SharpHound 搜集数据
目前,BloodHound 中是空的,因为我们没有上传任何数据,这就需要先初始化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)处下载最新的。
2:对于exe版装有旧版本,运行 sharphound.exe -c DcOnly 。对于ps1版本,导入sharphound.ps1后,执行 Invoke-BloodHound -CollectionMethod与 -allSharpHound -verbose 命令。当然对于python版的同学来说,最好同步使用最新版本的,在前一篇已经提到过。因为这些两个工具我们当版本要匹配,不然可以根会有数据用法以及自己实际需要进行参数调整文件兼容性问题。另外,根据sharphound版本下载的不同,可能生成json文件或者zip文件 SharpHound 也包含了 PowerShell 版的 SharpHound 了。
最后登录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即可,当然我们也可以根据用法帮助来个性化地搜集想要的数据。随后脚本会展示出较长的输出。