使用 SharpHound 枚举
在本章的之前几篇,笔者BloodHound 多次被提及BloodHound、adPEAS等对域信息进行大面积、多方位枚举的工具到。一方面,它们能给我们带来非常直观且较为全面的信息,另一方面由于此类工具会向域控制器发送大量请求,使得噪声颇大,因此我们必须慎重使用。但由于该靶场更多是用于练习,因此学员们可以放心使用,只是需要注意这个OPSEC。
我们先说说 BloodHound,因为这是最知名的一款此类工具,它支持图形化显示域中各个组成部分的相互关系,尤其是寻找攻击路径。但需要注意的是,为了能让BloodHound得以运行,我们需要3个组成部分,neo4j (https://neo4j.com/download/) 数据库、SharpHound数据搜集器、以及BloodHound自身。另外,考虑到越来越多的企业同时使用了Azure AD,或者将AD与AAD进行了同步,BloodHound 也有 AzureAD 的版本 AzureHoundBloodhound (https://github.com/BloodHoundAD/AzureHoundBloodHound) 是一款利用图论揭示 Active Directory 或 Azure 环境中隐藏的、非预期关系的工具。关于AD与AAD之间的交互,我们可以使用它快速轻松地枚举域对象并找到攻击路径。
配置 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。
建议从提升特权的命令行终端中运行,如果一切正常,我们会看到与下面的截图类似的内容:
然后访问 http://127,.0.0.1:7474 以连接 neo4j 数据库的面板。
默认凭证是 neo4j:neo4j,第一次登陆后会要求修改密码。然后,我们可以从 https://github.com/BloodHoundAD/BloodHound/releases 下载最新的 BloodHound 了。
解压并运行 BloodHound,输入修改后的凭证并登陆
使用 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)。
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即可,当然我们也可以根据用法帮助来个性化地搜集想要的数据。随后脚本会展示出较长的输出。