利用Microsoft 365产品增强安全测试与分析活动
在安全测试中使用Microsoft 365产品并不是一个新概念。长期以来,我一直在测试中利用Office产品的各种功能。早期,我们经常使用恶意的Office文档进行初始访问,通过在宏加载的文档中嵌入恶意软件,当用户打开文件时执行。
遗憾的是,使用VBA宏逻辑直接执行负载变得越来越困难,组织可能会完全阻止传入的宏。不过,我们仍然有很多机会在测试中使用宏(以及作为防御者进行分析)。随着时间的推移,我的宏使用已经从直接执行演变为专注于在安全测试背景下可能有用的其他功能。本文将介绍其中的一些概念。关于该主题的更多内容,可以观看我在https://www.youtube.com/watch?v=cfKDnxeoTuQ上的网络研讨会。
本文讨论的资源可以在https://github.com/aut0m8r/FunWithMacros找到。
Microsoft Office产品选择
Microsoft Office产品只是我们可以使用的另一个LOLbin。在将Microsoft Office产品纳入测试方法时,考虑从哪个产品开始可能是有用的。就我而言,我最常使用Microsoft Excel,原因如下:
- 数据以简单的表格格式呈现——这使得批量分析、可视化和呈现信息变得容易。不必在Bloodhound中调查每个对象来查看给定属性的值,只需查看表格本身并使用集成功能。
- 隐藏(和取消隐藏)元素——列和表可以在Microsoft Excel工作簿中隐藏。这提供了将信息收集到用户无法立即访问的元素中的机会。这在毒化现有的宏启用文档时非常有价值。
- 集成功能——排序、筛选、条件格式和公式支持使Excel成为收集原始数据的有吸引力的产品,这些数据可能需要在事后进行操纵和分析。
- 外部数据收集——Excel支持从本地环境、LDAP(Active Directory)、数据库和其他可能在测试和安全分析背景下有用的来源收集信息的许多功能。通常,使用这些功能收集数据在环境中不会被检测到。
最终,我建议在给定条件下使用最有意义的产品。您可能需要调整这里确定的策略,但在这样做时,您可能会为更大的社区扩展可用的工具选项。
随着Microsoft 365的出现,Office套件添加了一些可能有助于我们测试工作的额外功能。考虑这样一个场景:您获得了对组织的Microsoft 365环境的访问权限,但没有建立远程C2。通常,这种情况发生在使用反向代理、窃取浏览器凭据存储或只是分析窃取恶意软件转储时。
Office产品现在包括“存在”的概念:当用户打开文档时,功能区中会出现一个存在指示器,显示任何其他打开同一文档的用户。因此,我最喜欢的活动之一是搜索SharePoint、OneDrive或SMB共享中经常使用的现有宏启用文档,并等待出现存在信息。
在确认这些文档对我的恶意目的有用后,我将自己的宏逻辑添加到现有文档中。这种技术的美妙之处在于,我们不必真正担心“启用宏”提示,因为我们知道用户已经在使用我们的目标文档。
显然,在随意毒化文档之前,您应该花时间了解您的替代代码如何影响合法文档的操作。另外……始终备份原始文档。
常见活动
那么,我们可以用这些文档做什么而不会导致端点保护在给定设备上触发?我通常分几个阶段进行文档毒化。
侦察
在初始阶段,我的方法通常由以下问题指导:“在向该用户发送钓鱼邮件之前,我想知道什么?”答案通常包括:
- 我的目标主机上有哪种端点保护?——我们可以查询进程并调查本地文件系统的内容,至少得到一个粗略的近似值。
- 我的目标用户在环境中拥有哪些权限?——我们绝对可以询问Active Directory,然后根据需要以特定用户的上下文执行负载。
- 是否有任何有用的应用程序我可能想冒充以避免检测?——通常,这涉及调查文件系统以查找可能指示自定义开发的应用程序的条目。
我通常在Program Files文件夹中查找我的组织名称,然后,当我尝试交付负载时,我模仿这些应用程序的特征。为什么要这样做?因为这些应用程序通常被应用程序控制和端点保护解决方案允许列出,并可能被安全团队忽略。
在从远程系统收集详细信息后,我可能想对Active Directory进行分析。收集有关密码策略、用户列表、组和计算机的详细信息通常有助于我更好地了解目标环境,并将提高我执行的任何外部攻击的有效性。拥有完整的内部用户列表和内部密码策略的知识肯定会提高密码喷洒的有效性。此外,Active Directory属性分析可能会暴露额外的凭据。下面显示了通常有用的输出摘录。
- 域密码策略详细信息
- 用户帐户详细信息
- 计算机详细信息
- 敏感组成员资格
初始访问
对内部环境有足够的了解后,我可能会尝试在目标系统上建立远程命令和控制(C2)。一个有趣的方法涉及滥用现代Microsoft Windows客户端上默认安装的SSH客户端。通常,我会在虚拟专用服务器(VPS)实例上设置一个受限SSH用户,然后使用SSH将负载交付到端点或建立反向SSH隧道连接。通常,我发现可以使用TCP端口443建立出站SSH连接。
我建立这种访问的方法通常涉及使用宏做两件事。首先,我将受限用户(在VPS上)的SSH私钥放到受感染用户的配置文件目录中。接下来,我将一个LNK文件放到某个会导致用户诱导执行的位置。示例包括启动文件夹或用户的桌面以实现热键持久性。
LNK文件包含用于执行我的命令的SSH命令。这可能包括下载和执行负载、直接将负载下载到dll劫持或dll旁加载位置,或建立反向SSH隧道。SSH文件传输的好处是不会收到Mark of the Web。
后渗透
在环境中建立立足点后,我经常也使用Microsoft Excel进行后渗透活动。该产品原生支持连接到各种资源。我已经实现的功能包括:
- 分析SYSVOL/Policies共享——此功能将收集有关有趣工件的详细信息,如驱动器映射、脚本、URL和非标准策略文件。结果可以提供一种更隐蔽的替代方案,而不是完整的SMB共享分析和扫描内部Web应用程序。
- SQL数据库访问——此功能识别包含MSSQLSvc的服务主体名称(SPN)的计算机,然后尝试连接到每个计算机,为任何可访问的数据库服务器提供数据库列表。
- LAPS密码访问——LAPS分析很棘手,因为如果未部署产品,则相关属性(ms-mcs-AdmPwd)可能不存在于目录中。此模块将在执行用户的上下文中检查可读的LAPS密码。
这些功能只是冰山一角。Microsoft Excel功能区中的“数据”选项卡有许多功能,攻击者可以使用这些功能执行有趣的操作。您知道吗,您可以使用Microsoft Excel作为各种数据源的SQL客户端。您绝对应该看看。
我在后渗透情况下使用的另一种技术是内部查找常用的宏启用文档。然后我重新进行文档毒化,只是这次我将负载放在内部可写文件共享上,并使用LNK文件使用上述相同技术执行该负载。
结论
希望这篇博客文章激发了您的创造力。Microsoft Office是一个与其他工具一样容易被滥用的工具。在探索环境时,考虑如何使用原生功能增强您的测试方法。至少,您将为您的客户提供思考的材料,以考虑加固常见工具(如Microsoft Office套件)的部署。
最后给防御者的一个建议,考虑如何从Active Directory收集信息可能有助于加强内部安全。如果您无法获得在环境中运行BloodHound或PingCastle等工具的权限,使用Office套件可能是了解环境中可能存在弱点的好起点。
如果您觉得可能想从Active Directory收集此类信息,请查看https://github.com/aut0m8r/FunWithMacros上的资源。