使用BloodHound进行Active Directory环境侦察的Windows安全指南

本文详细介绍了如何使用BloodHound和SharpHound工具对Active Directory环境进行侦察,包括数据收集、Neo4j数据库配置、攻击路径可视化分析,以及如何识别高危权限和潜在攻击向量,提升域环境安全性。

第3部分:Windows安全——使用BloodHound对Active Directory环境进行侦察

使用SharpHound收集域环境信息

SharpHound是BloodHound工具的一个组件,用于收集域环境数据。环境数据的收集从在域内某台计算机上运行SharpHound.exe开始。

整个BloodHound包可以从以下地址下载(图32): https://github.com/BloodHoundAD/BloodHound/releases

下载并尝试运行SharpHound软件(SharpHound.exe或SharpHound.ps1,后者可在内存中运行而不将.exe文件转储到磁盘)时,Microsoft Defender会报告提示,在此实验中可忽略(图33)。

图32. 从GitHub下载BloodHound工具(图示:Windows工作站或Windows Server) 图33. Microsoft Defender防病毒软件检测到BloodHound的SharpHound黑客工具,将其分类为Hack Tool恶意软件(图示:Windows工作站或Windows Server)

调用SharpHound的命令示例如下(图3):

1
.\SharpHound.exe –domain blue-umbrella.online

所有调用SharpHound的参数均在文档中有描述。该程序可在Windows Server、连接到域的Windows工作站上运行,甚至可在未连接到域的工作站上运行(之前的图26)。

侦察完成后,SharpHound会终止并显示消息:Happy Graphing!,并在程序所在文件夹中生成一个包含收集数据的ZIP归档文件(图3)。ZIP文件可传输到测试的Active Directory环境之外,在自有计算机上进行分析。

红队和其他攻击者当然希望将ZIP归档中收集的数据移出视线。

图34. 使用SharpHound工具开始收集域环境数据(图示:Windows工作站或Windows Server)

在SharpHound工具附带的数据收集程序中,可找到一个名为SharpHound.ps1的PowerShell脚本,该脚本在内存中启动SharpHound工具而不将文件转储到计算机磁盘(图35)。这是为了避免防病毒和EDR(端点检测与响应)系统检测到该工具。

图35. 在RAM中运行SharpHound而不将文件写入计算机磁盘(图示:任意计算机)

此外,SharpHound.exe命令行具有以下参数:

  • EncryptZip – 使用随机密码保护创建的ZIP归档,
  • RandomizeFilenames – 对创建的文件应用随机名称,
  • ThrottleJitter – 在扫描单个计算机之间使用随机延迟值(毫秒),
  • NoSaveCache – 不在磁盘上创建缓存文件,以免被防病毒或EDR软件轻易检测。

使用BloodHound以图形形式可视化数据

为了分析Active Directory环境中的复杂攻击路径和危险链接,应通过BloodHound图形界面将上一步创建的ZIP归档文件导入Neo4j数据库。

要运行数据可视化器,必须安装必要的软件,包括Oracle JDK和Neo4j数据库。Oracle JDK版本11可从以下地址下载: https://www.oracle.com/pl/java/technologies/javase/jdk11-archive-downloads.html

Java环境用于运行Neo4j数据库服务器。Neo4j服务器的社区版可从以下地址下载: https://neo4j.com/download-center/#community

使用命令:

1
neo4j.bat console

可在命令行窗口中启动服务器,关闭控制台后服务器也会停止。

也可使用以下命令将Neo4j服务器作为服务安装在Windows上:

1
neo4j.bat install-service

在命令行运行Neo4j服务器如图5所示。务必在使用BloodHound时保持服务器运行。

图36. 启动BloodHound使用的Neo4j服务器数据库(图示:任意计算机)

首次启动Neo4j时,请更改密码。默认用户名和密码为neo4j:neo4j(图37)。

要更改密码,请在Web浏览器中打开http://localhost:7474/,并在表单中为Neo4j数据库设置新密码(图38)。

图37. 通过Web应用程序登录Neo4j服务器(图示:任意计算机) 图38. 通过Web应用程序更改Neo4j服务器密码(图示:任意计算机)

完成此过程后,即可登录BloodHound(图39)。

图39. BloodHound可视化器登录屏幕(图示:任意计算机)

为确保无误,请检查Neo4j数据库服务器是否在后台运行。接下来,可登录BloodHound并将之前由SharpHound生成的数据ZIP归档文件拖放到程序窗口(图40)。

图40. BloodHound呈现的Neo4j数据库中的对象信息(图示:任意计算机)

图10中的初始可视化显示了Domain Admins组的用户(MemberOf属性)。有关组的更多信息可参阅:Active Directory Security Groups | Microsoft Docs。

Domain Admins组的成员可以管理域,并且是Active Directory域中创建的任何对象的默认所有者。

此外,Domain Admins组控制对域中所有控制器的访问,并可修改所有帐户的成员身份,包括域中具有管理员权限的帐户。

图41. 在数据库中查找所有属于Domain Admins组的用户的查询(图示:任意计算机)

BloodHound软件内置一组现成的查询(表1),可帮助查找Active Directory中对象之间的危险关系和其他有价值的信息。

注意:如果没有准备高级测试环境,许多查询可能不会返回任何结果。因此,为每个查询运行示例超出了本文的范围。

表1. 选定的BloodHound查询及描述

  • Find all Domain Admins – 查找属于Domain Admins组的所有帐户
  • Find Computers where Domain Users are Local Admin – 查找域用户帐户具有本地管理员权限的计算机
  • Find All Paths from Domain Users to High Value Targets – 查找从域用户帐户到图中标记为高价值目标节点的所有路径
  • Find Workstations where Domain Users can RDP – 查找域用户帐户可通过远程桌面连接的工作站
  • Find Servers where Domain Users can RDP – 查找域用户帐户可通过远程桌面连接的服务器
  • Find Dangerous Rights for Domain Users Groups – 查找域用户帐户组的危险访问权限
  • Shortest Paths to High Value Targets – 查找到图中标记为高价值目标节点的最短路径
  • Shortest Paths from Domain Users to High Value Targets – 查找从域用户帐户到图中标记为高价值目标节点的最短路径
  • Find Shortest Paths to Domain Admins – 查找到Domain Admins组用户帐户的最短路径
  • ……

BloodHound工具呈现的图由节点组成。通过右键单击,可查看给定节点的属性(图42)。可以编辑、删除、设置为开始、结束、已拥有、高价值,甚至查找到达该节点的最短路径。

图42. 所选图节点的属性——此处为域blue-umbrella.online中的用户daisy(图示:任意计算机)

图43中的示例通过搜索字段输入以下内容显示具有管理员权限的组:

1
group:Admin

其他前缀如下:

  • Group
  • Domain
  • Computer
  • User
  • OU(组织单元)
  • GPO(组策略对象)

对于初学者来说,一个重要提示是管理员不仅仅是Domain Admins组。可能有更多组,如图12和图13所示。

图43. BloodHound搜索窗口(图示:任意计算机) 图44. 搜索Enterprise Admins组用户的查询(图示:任意计算机)

在违规后分析期间重建攻击路径时,将节点标记为已拥有的能力被证明是一个有用的选项。这使得可以寻找从受感染的机器或帐户出发的路径,以及到达受感染对象的路径(图45)。

图45. 将图节点标记为已入侵(已拥有)会在对象旁边添加一个骷髅图标

单个图节点可以具有高价值指定,这意味着高价值对象。这里指的是对攻击者的价值,例如具有高权限的用户或在其机器上拥有有价值数据的用户。某些节点(如域控制器)默认标记为高价值。将帐户标记为高价值(钻石图标)的示例如图46所示。

图46. 用钻石图标标记节点,表示对攻击者有价值的高价值对象(图示:任意计算机)

作为一个简单实验,尝试查找从图45中标记为已入侵的计算机FINWVIR1000000到图46中标记为高价值对象的用户帐户DOLORES_GARRISON的最短路径。启动上述对象之间最短路径搜索的选项如图47所示。

图47. 查找从先前标记为已入侵对象到节点的最短路径的菜单选项(图示:任意计算机)

图48中的攻击路径从已入侵的机器FINWVIR1000000开始,通过各种组,MemberOf属性表明不需要滥用,因为计算机是这些安全组的成员。沿MemberOf属性视觉追踪五次后,出现GenericAll属性,表明属于这些安全组的受入侵机器对ANTOINE_GILES用户帐户拥有完全权限。进一步,该帐户是MA-TEQUIEROO-ADMINGROUP1组的成员,该组对AWSWSECS1000001计算机拥有完全权限(GenericAll),而该计算机对标记为高价值资源的用户帐户拥有GenericAll权限。

图48. 从已入侵机器(骷髅图标)到高价值帐户(钻石图标)的最短路径(图示:任意计算机)

在大多数情况下,红队和其他攻击者都会寻找到高权限用户帐户的最短路径。示例攻击可能从感染用户的终端工作站开始,然后包括尝试权限提升以进一步采取最短路径(图49),执行设备之间的横向移动,并到达域控制器,获取管理员权限。因此,BloodHound工具在违规后分析期间非常有助于重建潜在攻击路径。

另一个实际示例是将FREDERIC_MIDDLETON帐户标记为已入侵,并尝试查找从该帐户到高价值资源(如域控制器组)的路径(图49)。

图49. 通过搜索字段确定节点之间的路径(图示:任意计算机)

可以对图中的属性施加过滤器,如图50所示。例如,在搜索路径时检查CanRDP将包括具有通过远程桌面连接权限的对象。这使攻击者能够寻找具有设置属性的攻击向量。

图50. 确定路径时要考虑的属性过滤(图示:任意计算机)

BloodHound还允许添加节点、它们之间的连接、组织布局,甚至导入和导出图(图51)。

图51. BloodHound程序中的图弹出菜单(图示:任意计算机)

如您所见,所示示例只是冰山一角,因为BloodHound工具的功能确实非常广泛。与BadBlood脚本结合使用时,可以创建Active Directory环境,以训练蓝队检测危险链接和攻击路径。

最后,值得记住的是,不要在生产系统上运行BadBlood工具,因为这可能会创建大量随机对象,且更改难以逆转。

总结

上述示例清楚地说明,应审查和分析Active Directory环境中任何对象之间的链接以发现隐藏危险。值得一提的是,CrowdStrike网站在2018年已经描述了BloodHound工具的合乎道德的使用,这涉及更容易检测攻击者创建的用户帐户作为后门,提供对Active Directory环境的未经授权的访问。此类隐藏帐户可用于将有价值的数据带出企业。

BloodHound软件也是另一个完美的例子,说明许多网络安全工具既可以用于好的目的,也可以用于坏的目的。

目录

作者: Dawid Farbaniec
标签: Active Directory, Reconnaissance, windows

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计