第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):
|
|
所有调用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– 对创建的文件应用随机名称,Throttle和Jitter– 在扫描单个计算机之间使用随机延迟值(毫秒),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
使用命令:
|
|
可在命令行窗口中启动服务器,关闭控制台后服务器也会停止。
也可使用以下命令将Neo4j服务器作为服务安装在Windows上:
|
|
在命令行运行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中的示例通过搜索字段输入以下内容显示具有管理员权限的组:
|
|
其他前缀如下:
- 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软件也是另一个完美的例子,说明许多网络安全工具既可以用于好的目的,也可以用于坏的目的。
目录
- BloodHound: Six Degrees of Domain Admin — BloodHound 3.0.3文档 | https://bloodhound.readthedocs.io/en/latest/
- BloodHound, Software S0521 | MITRE ATT&CK® | https://attack.mitre.org/software/S0521/
- Hidden Administrative Accounts: BloodHound to the Rescue (crowdstrike.com) | https://www.crowdstrike.com/blog/hidden-administrative-accounts-bloodhound-to-the-rescue/
- GitHub – davidprowe/BadBlood: BadBlood by @davidprowe, Secframe.com | https://github.com/davidprowe/BadBlood
- BloodHound – Sniffing Out the Path Through Windows Domains | SANS Institute | https://www.sans.org/blog/bloodhound-sniffing-out-path-through-windows-domains/
- BloodHound with Kali Linux: 101 – Red Teaming Experiments (ired.team) | https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-with-bloodhound-on-kali-linux
- How to Detect and Block Bloodhound Attacks | CrowdStrike | https://www.crowdstrike.com/blog/how-to-block-bloodhound-attacks/
- Active Directory Security Groups — Windows安全 | https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/active-directory-security-groups
作者: Dawid Farbaniec
标签: Active Directory, Reconnaissance, windows