使用 SharpHound 枚举
在本章的之前几篇,笔者多次提及BloodHound、adPEAS等对域信息进行大面积、多方位枚举的工具。一方面,它们能给我们带来非常直观且较为全面的信息,另一方面由于此类工具会向域控制器发送大量请求,使得噪声颇大,因此我们必须慎重使用。但由于该靶场更多是用于练习,因此学员们可以放心使用,只是需要注意这个OPSEC。
我们先说说 BloodHound,因为这是最知名的一款此类工具,它支持图形化显示域中各个组成部分的相互关系,尤其是寻找攻击路径。但需要注意的是,为了能让BloodHound得以运行,我们需要3个组成部分,neo4j (https://neo4j.com/download/) 数据库、SharpHound数据搜集器、以及BloodHound自身。另外,考虑到越来越多的企业同时使用了Azure AD,或者将AD与AAD进行了同步,BloodHound 也有 AzureAD 的版本 AzureHound (https://github.com/BloodHoundAD/AzureHound) 。关于AD与AAD之间的交互,我们在后续章节介绍。
我们需要先初始化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即可,当然我们也可以根据用法帮助来个性化地搜集想要的数据。随后脚本会展示出较长的输出。