Windows安全:使用BloodHound进行Active Directory环境侦察
本文将深入探讨BloodHound工具——Six Degrees of Domain Admin。该应用采用JavaScript开发,基于Electron平台构建,图形可视化使用Neo4j数据库。
在实验中,我们将使用Windows工作站和Windows Server服务器(均为Microsoft Azure上的虚拟机)以及任意Windows计算机。为便于区分不同机器的示意图,文中使用以下标识:
- 图示代表:Windows工作站
- 图示代表:Windows Server
- 图示代表:任意计算机(Windows系统)
- 图示代表:Windows工作站或Windows Server
具体标识请参见图注说明。
BloodHound软件利用图论技术揭示Active Directory和Azure环境中难以发现且通常非预期的关系。攻击者和防御者均可使用该工具轻松识别复杂攻击路径以及可能存储宝贵资源或包含高权限用户账户的设备。
<Active Directory图>
BloodHound工具用于数据分析。要收集数据集,只需在Active Directory环境中域连接系统或非域连接系统上运行SharpHound或AzureHound(如下所述)。BloodHound的Windows版本包含两个主要组件:
- 信息收集程序:如PowerShell脚本AzureHound.ps1和.NET平台应用程序SharpHound.exe
- 数据可视化程序:BloodHound.exe,以图形形式展示收集的数据
另有Linux系统版本的BloodHound工具,但不在本文讨论范围内。
值得一提的是,Dirk-jan Mollema创建了BloodHound.py脚本,支持从Linux、macOS和Windows系统收集信息,但需要安装Python 3语言支持。注意:该脚本未获BloodHound开发者官方支持,据GitHub描述适用于BloodHound 4.1及以上版本。
关于基于Windows的IT网络在各种组织(如企业)中的结构,可参阅文章《Windows安全——什么是LSASS转储。如何防范?》。简而言之:计算机通过域控制器连接的域进行互联。这些运行Windows的互联机器可形成称为树和林的扩展结构。因此,BloodHound工具对管理员、蓝队、网络安全分析师或威胁猎手非常有用,它以图形形式展示域中连接计算机之间的链接,便于消除可能危险的隐藏和不需要的链接,从而快速减少攻击路径。但需警告:同样地,该程序也可被红队在安全测试中使用,甚至被网络罪犯在攻击IT网络时利用。
在Microsoft Azure平台上准备带Active Directory的域环境
我们将使用Microsoft Azure云平台构建作为实验室的环境。Azure Web应用界面可轻松创建虚拟机(图1)。
图1. 在Microsoft Azure云平台上创建虚拟机(图示代表:任意计算机)
创建作为域控制器的虚拟机
我们将从创建Windows Server 2019 Datacenter示例虚拟机开始构建实验室环境(图2)。现实中,企业中有更多计算机充当域控制器,例如为了更高的可用性和可靠性。
图2. 创建Windows Server 2019虚拟机(图示代表:任意计算机)
图3显示虚拟机基本配置屏幕。为简化测试,建议在单一网络上设置测试VM创建。
图3. 创建的Windows Server虚拟机的网络设置(图示代表:任意计算机)
虚拟机创建向导的最后步骤如图4和图5所示。
图4. Windows Server虚拟机创建向导的最后步骤(图示代表:任意计算机) 图5. Windows Server虚拟机成功部署信息(图示代表:任意计算机)
您可以使用远程桌面(RDP)、SSH或Azure Bastion连接创建的虚拟机(图6)。出于实验目的,简单远程桌面即可满足。该机器被命名为DC,作为域控制器的缩写。
图6. 显示连接Windows Server虚拟机所需数据(图示代表:任意计算机)
要通过远程桌面连接虚拟机,需要公共IP地址(图7)、用户名和密码(之前在向导中设置)等数据。
图7. 复制Windows Server虚拟机的公共IP地址(图示代表:任意计算机)
如果想使用更易记的域名(而非IP地址),可以使用自己的Internet域并通过DNS区域中的A类型记录将其绑定到IP地址。这适用于IP版本4地址。对于IPv6地址,记录类型为AAAA。
图8. Internet域提供商的DNS区域条目(图示代表:任意计算机)
要连接远程机器,输入其公共IP地址(或域名)、用户名和密码。如图9所示。
图9. 通过远程桌面连接Windows Server虚拟机(图示代表:任意计算机)
成功连接远程桌面后,应出现用于管理Windows服务器的Server Manager工具的图形界面(图10)。
图10. 用于管理Windows服务器的Windows Server Manager工具(图示代表:Windows Server)
要创建域环境,通过单击添加角色和功能安装Active Directory域服务角色(图10和11)。
图11. 通过Server Manager工具安装Active Directory域服务角色(图示代表:Windows Server)
在Windows Server上完成新角色安装后,需要重新启动虚拟机(图12)。
图12. 设置虚拟机成为域控制器(图示代表:Windows Server)
要将选定的VM设置为域控制器,选择"Promote this server to a domain controller"(图13和14)。
图13. 在Windows Server上完成域控制器配置的提示(图示代表:Windows Server) 图14. 将Windows Server虚拟机设置为域控制器(图示代表:Windows Server)
出于实验目的,可以使用先前拥有的Internet域创建新林(图15、16和17)。
图15. 创建带根域的新林(图示代表:Windows Server) 图16. 设置DSRM恢复功能级别和密码(图示代表:Windows Server) 图17. 先决条件已满足,可以开始安装(图示代表:Windows Server)
此实验室中的每台机器都有公共IP地址(也称为外部IP地址),这使得它们理论上可以从Internet可见和访问。理论上是这样,因为到虚拟机的流量由称为防火墙的软件过滤。因此,需要允许所需服务的网络流量(图18),即对于创建的Windows Server,这些将是LDAP和DNS(图19)。
图18. 在Microsoft Azure平台上添加网络流量安全规则(图示代表:任意计算机) 图19. Microsoft Azure平台上的网络流量入站端口规则(图示代表:任意计算机)
作者:Dawid Farbaniec 标签:Active Directory, windows