新型持久化之WinSxS二进制文件依赖劫持(支持Win10,Win11)
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
1.技术背景 我们探索了一种创新方法, 该方法利用了受信任的WinSxS文件夹中常见的可执行文件, 并配合经典的DLL搜索顺序劫持技术来利用。该方法允许威胁行为者绕过高权限要求, 在Windows文件夹(特别是WinSxS)内的应用程序中执行恶意代码, 并且无需在攻击链中添加额外的二进制文件。除此以外, 该技术还有助于从任何位置执行恶意代码, 并且与WIndow10和Windows11兼容。 在这篇文章中, 详细解释了攻击流的基本原理, 我们将讨论DLL搜索顺序劫持的经典实现优缺点, 并将其与我们最新的实现进行比较, 此外我们还描述了该技术的功能和含义,阐明了其有效性、潜在影响和防御者检测的方法。 借助自己的相关工具, 我们探索了WinSxS文件夹中的每个二进制文件, 并识别了该文件夹中可用的多个可执行文件, 这些可执行文件可以被滥用来加载和执行恶意文件。与经典的DLL搜索顺序劫持相比, 这种方法降低了防御软件和事件响应程序检测命中的可能性, 因为恶意代码是从位于Windows文件夹WinSxS下的受信任二进制文件的内存空间运行的。 这种方法使我们能够改进和简化经典DLL搜索顺序劫持的一般感染流程, 虽然可以检测到此活动, 但它并不是操作系统的直接漏洞, 相反,这种行为可能是由Windows本身的本地行为和为开发人员和最终用户提供的功能引起的。 2.Dll搜索顺序劫持 DLL搜索顺序劫持是威胁行为者的一种简单但高效的技术。该技术利用Windows 应用程序加载动态链接库 (DLL) 和外部可执行文件的方式,利用那些未指定所需文件 (EXE/DLL) 完整路径的应用程序。与之相反,这些应用程序依赖于预定义的搜索顺序来定位必要的 DLL,使其容易受到威胁行为者的操控。 根据MITRE ATT&CK 的说法,攻击者可以采用多种方法来劫持 DLL 加载过程。然而,所有这些方法都有一个共同的要求:目标应用程序不应指定所需内容的完整路径。这种情况常常是由于软件开发中的疏忽而出现的。随后,威胁行为者将恶意 DLL 放置在搜索顺序优先于合法 DLL 目录的目录中。通常,此操作的首选位置是目标应用程序的工作目录,因为它在搜索顺序中占据显着位置。 了解 Windows 如何加载 DLL 和可执行文件对于掌握这项技术至关重要。当应用程序启动加载过程时,它遵循特定的顺序,该顺序指示系统为查找和利用必要的组件(例如 DLL 和可执行文件)而采取的步骤。此过程可确保应用程序的高效运行,使它们能够无缝访问共享资源和功能。它还提供了一种替代方法来递归地定位可能需要但开发人员未包含在应用程序安装包中的资源。 Windows操作系统搜索和加载外部资源时遵循的大致流程如下:
操控此加载过程允许威胁参与者在受信任进程的内存空间中注入和执行未经授权的代码,从而有效地欺骗安全工具和分析人员。 如前所述,这种技术在网络安全领域并不新鲜,并且被威胁行为者广泛使用,无论其目标、原籍国或所使用的工具类型如何。根据 MITRE 的说法,我们总结了一些已知在入侵中使用此技术的威胁行为者,以供参考:
威胁行为者采用DLL搜索顺序劫持的动机源于其微妙性和有效性。通过操控受信任的应用程序,威胁行为者可以实现未经授权的访问、执行任意代码,并在看似合法的进程中隐藏其活动。这种技术只是为他们提供了一种破坏系统、逃避检测和实现恶意目标的隐秘手段。 3.WinSxS怎么样? WinSxS(Windows Side by Side)文件夹是Windows操作系统维护和恢复中的关键组件,通常位于C:\Windows\WinSxS。它的主要功能是并排存储重要系统文件的各个版本。当 Windows 进行更新时,它会在 WinSxS 文件夹中保留以前版本的组件。因此,WinSxS 文件夹的大小往往会随着每次 Windows 更新而增加。 WinSxS 文件夹的主要用途包括:
实际上,在安装 Windows 组件、更新或软件应用程序期间,文件系统地存储在 WinSxS 目录中。该目录充当系统文件(特别是 DLL)的集中存储库,这些文件在各种应用程序和组件之间共享,以确保兼容性并防止潜在的冲突。 在 Windows Server 等服务器操作系统中,WinSxS 文件夹充当增强服务器功能的附加角色。它保存系统恢复所需的关键文件,有助于恢复过程。此外,它还充当一种保护机制,使用户能够在必要时从有问题的系统更新恢复到稳定状态,从而有助于系统的弹性和可靠性。 虽然依赖 WinSxS 文件夹的漏洞利用并不是全新的,并且之前已被用于绕过用户帐户控制 (UAC),但这是该 Windows 功能在红队操作或真实攻击场景中的潜力首次得到广泛记录与经典的 DLL 搜索顺序劫持技术相结合。 4.WinSxS二进制文件依赖劫持 我们的研究团队通过关注位于 Windows WinSxS 文件夹中的应用程序,改进了经典的DLL搜索顺序劫持技术。此方法与以前已知的实现的区别在于,故意针对驻留在WinSxS文件夹中的文件。 这种方法的主要优点包括:
通过以这种方式优化经典的 DLL 搜索顺序劫持技术,我们发现了一种更有效、更规避的方法,用于危害系统并在受信任的应用程序中执行未经授权的代码。这一发现强调了理解 Windows 组件的复杂性及其交互对于防御者和安全从业者的重要性。 在调查的早期阶段,我们的主要目标是识别 WinSxS 文件夹中的二进制文件中的潜在漏洞。为了实现这一目标,我们结合使用了两个关键工具:进程监视器和专门为此调查目的开发的定制工具。我们的目标是深入了解执行 WinSxS 文件夹中的二进制文件时系统的行为,并识别驻留在此受信任 Windows 文件夹中的易受攻击的文件。 一旦识别出有漏洞的二进制文件,我们的注意力就转移到理解 Windows 在搜索系统文件(包括 DLL)时遵循的精确加载顺序。正如前面提到的,序列需要评估各种位置,包括启动应用程序的目录、几个 Windows 文件夹、系统 PATH 环境变量中指定的目录,尤其是当前工作目录。 有了这些信息,我们通过策略性地将自定义 DLL 放入指定的目录中来结束利用过程,密切模仿目标二进制文件所需的合法 DLL 的名称。当执行易受攻击的二进制文件时,它会尝试加载所需的 DLL。Windows 根据已建立的加载顺序系统地执行此搜索,并在此过程的早期对当前工作目录进行关键检查。此时,我们的自定义 DLL 已被发现并加载,而不是合法的对应项。 针对WinSxS应用程序的DLL搜索顺序劫持执行流程 5.概念验证Poc 我们开始在进程监视器中创建过滤器,以筛选具有“PATH NOT FOUND”、“CreateFile”和“NAME NOT FOUND”值的结果。此外,重点关注包含指定路径“NOT_A_SYSTEM_FOLDER_MS”的结果,该路径是在桌面上创建的文件夹,其中包含将用于研究目的的文件。 在Process Monitor中创建的过滤器有助于检测WinSxS中易受攻击的文件 在我们创建的文件夹中,放置了一个自定义 DLL,它将使用 DLL 搜索顺序劫持技术注入到内存中。除了自定义 DLL 之外,我们还开发了一个可执行文件,其唯一目的是执行 WinSxS 文件夹中的所有其他二进制文件并监视其操作。此可执行文件旨在识别 WinSxS 文件夹中存在的易受攻击的文件。 自定义的文件夹 执行自定义工具后,已经识别出诸如“ngentask.exe”和“aspnet_wp.exe”之类的二进制文件,它们试图在当前目录中搜索各自的 DLL,标记为“NOT_A_SYSTEM_FOLDER_MS”。这一观察结果表明,只需重命名自定义 DLL,以匹配这些可执行文件所寻求的预期 DLL 文件,就可以加载它。然后我们的研究集中在“ngentask.exe”二进制文件上以进行进一步分析。 监视器活动日志 本质上,只需从使用文件夹“NOT_A_SYSTEM_FOLDER_MS”作为当前目录的 shell 启动命令行即可触发漏洞,而无需将易受攻击的文件复制或移动到 WinSxS 之外。此操作将导致目标二进制文件执行我们的 DLL,因为它只会将其定位在我们的目录中。这凸显了我们实现的强大功能,只需要注入一个命令行和一个 DLL。无需携带自己的易受攻击的应用程序,这在涉及 DLL 搜索顺序劫持的攻击中很常见,例如TrendMicro过去报告的 PlugX 案例,该案例滥用了与开源调试器 x32dbg 相关的二进制文件加载恶意代码。 滥用WinSxS文件夹中二进制程序劫持成功 通过将自定义 DLL 重命名为“mscorsvc.dll”并从当前目录执行前面提到的命令行(专门针对“ngentask.exe”进程),成功注入了自定义 DLL。通过使用 Process Explorer,我们能够验证 DLL 是否成功导入到位于 WinSxS 文件夹中的“ngentask.exe”中。 位于WinSxS文件夹中应用程序ngentask.exe加载的DLL 重要的是要承认,随着系统进行新的更新,WinSxS 文件夹中可能会存在其他易受攻击的二进制文件。下面我们添加了一个表格,总结了我们研究过程中位于 WinSxS 文件夹中的易受攻击的可执行文件以及在其执行过程中搜索的相应资源。需要澄清的是,这些文件的标识并不自动暗示它们的漏洞,而是作为一个强有力的指示,必须在每个二进制文件中进行额外的测试以确认其漏洞:
6.如何检测 我们向社区提供以下策略,以便在自己的环境中有效解决这种利用方法。 父进程分析: 检查进程之间的父子关系,特别关注受信任的二进制文件。寻找涉及以下内容的活动:
行为分析: 密切监视 WinSxS 文件夹中的二进制文件执行的所有活动。专注于网络通信和文件操作。您可以查找以下活动:
该文章在 2024/1/10 10:22:09 编辑过 |
关键字查询
相关文章
正在查询... |