Freeze是一个有效载荷工具包,它利用挂起的进程、直接系统调用和替代执行方法来绕过EDR

admin 2026-01-01 05:25:20 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: Freeze是一款EDR绕过载荷工具,通过创建挂起进程获取未钩取的Ntdll.dll副本,利用ASLR特性恢复系统调用段。它修补ETW调用阻断遥测,使用Go语言直接调用系统API执行shellcode。该工具支持生成exe或dll文件,具备AES加密与沙箱规避功能。 综合评分: 85 文章分类: 免杀,恶意软件,安全工具,红队


cover_image

Freeze 是一个有效载荷工具包,它利用挂起的进程、直接系统调用和替代执行方法来绕过 EDR

Ots安全

2025年12月30日 17:38 广东

威胁简报

恶意软件

漏洞攻击

描述

Freeze 是一款有效载荷创建工具,用于绕过 EDR 安全控制,以隐蔽的方式执行 shellcode。Freeze 利用多种技术,不仅可以移除用户层 EDR 钩子,还能以绕过其他端点监控控制的方式执行 shellcode。

创建暂停进程

当一个进程创建时,Ntdll.dll 是第一个被加载的 DLL 文件。这发生在任何 EDR DLL 加载之前。这意味着 EDR 需要一些时间才能加载并开始钩取和修改系统 DLL 的程序集。查看 Ntdll.dll 中的 Windows 系统调用,我们可以看到此时还没有任何程序被钩取。如果我们创建一个处于挂起状态(时间冻结)的进程,可以看到除了 Ntdll.dll 之外,没有加载任何其他 DLL 文件。同时还可以看到没有加载任何 EDR DLL 文件,这意味着 Ntdll.dll 中的系统调用尚未被修改。

地址空间布局随机化

为了利用这个干净的挂起进程从 Freeze 加载器中移除钩子,我们需要一种方法来以编程方式查找并读取该干净挂起进程的内存。这时,地址空间布局随机化 (ASLR) 就派上了用场。ASLR 是一种安全机制,用于防止基于栈内存损坏的漏洞。ASLR 会随机化进程内部的地址空间,以确保所有内存映射对象(包括栈、堆和可执行程序本身)都是唯一的。有趣的是,虽然 ASLR 有效,但它对位置无关代码(例如 DLL)无效。对于 DLL(特别是已知的系统 DLL),其地址空间会在启动时随机化一次。这意味着我们不需要枚举远程进程的信息来查找其 ntdll.dll 的基地址,因为所有进程(包括我们控制的进程)的基地址都是相同的。由于每次启动时每个 DLL 的地址都是相同的,我们可以从我们自己的进程中提取此信息,而无需枚举已挂起的进程来查找地址。

有了这些信息,我们可以使用 API ReadProcessMemory 来读取进程的内存。此 API 调用通常与基于凭据的攻击中读取 LSASS 相关联;然而,就其本身而言,它本质上并不恶意,尤其是在我们只是读取任意内存区域的情况下。只有当您读取了不应该读取的内容(例如 LSASS 的内容)时,ReadProcessMemory 才会被标记为可疑操作的一部分。EDR 产品绝不应该将 ReadProcessMemory 的调用标记为可疑操作的一部分,因为此函数有合法的操作用途,这样做会导致大量的误报。

我们可以更进一步,只读取 Ntdll.dll 中存储所有系统调用的部分——即它的 .text 部分,而不是读取整个 DLL。

结合这些元素,我们可以通过编程方式获取 Ntdll.dll 的 .text 部分副本,以便在执行 shellcode 之前覆盖我们现有的 hooked .text 部分。

ETW补丁

ETW 利用内置系统调用生成遥测数据。由于 ETW 也是 Windows 的原生功能,安全产品无需“钩住”ETW 系统调用即可访问这些信息。因此,为了防止 ETW 攻击,Freeze 会修补大量的 ETW 系统调用,清空寄存器并将执行流程返回到下一条指令。现在,所有加载器默认都会修补 ETW。

Shellcode

由于只有 Ntdll.dll 被恢复,所有后续执行 shellcode 的调用都必须位于 Ntdll.dll 中。使用 Go 语言(注意,虽然其他语言也能实现,但 Go 语言实现起来比较容易),我们可以定义并调用分配、写入和保护 shellcode 所需的 NT 系统调用,从而有效地跳过位于 kernel32d.dll 和 Kernelbase.dll 中的标准调用,因为这些调用可能仍然被 hook。

安装

要安装 Freeze,请运行以下命令,或使用已编译的二进制文件:

go build Freeze.go
___________
        \_ _____/______ ____ ____ ________ ____
         | __) \_ __ \_/ __ \_/ __ \\___ // __ \
         | \ | | \/\ ___/\ ___/ / /\ ___/
         \___ / |__| \___ >\___ >_____ \\___ >
             \/ \/ \/ \/ \/
                                        (@Tyl0us)
        Soon they will learn that revenge isa dish... best served COLD...

Usage of ./Freeze:
  -I string
        Path to the raw 64-bit shellcode.
  -O string
        Name of output file (e.g. loader.exeor loader.dll). Depending on what file extension defined will determine if Freeze makes a dll orexe.
  -console
        Only for Binary Payloads - Generates verbose console information when the payload is executed. This will disable the hidden window feature.
  -encrypt
        Encrypts the shellcode using AES 256 encryption
  -export string
        For DLL Loaders Only - Specify a specific Export functionforaloadertohave.
  -process string
        The name of process to spawn. This process hasto exist in C:\Windows\System32\. Example 'notepad.exe' (default "notepad.exe")
  -sandbox
        Enables sandbox evasion by checking:
                Is Endpoint joined toa domain?
                Does the Endpoint have more than 2 CPUs?
                Does the Endpoint have more than 4 gigs of RAM?
  -sha256
        Provides the SHA256 value of the loaders (This is useful for tracking)

二进制文件与 DLL 文件

Freeze 可以生成二进制文件.exe或.dllDLL 文件。要指定文件类型,请确保-O命令行选项以 .exe--binaries(二进制文件)或.dll--dll(DLL 文件)结尾。目前不支持其他文件类型。对于 DLL 文件,Freeze 还可以添加额外的导出功能。为此,请使用-export带有特定导出函数名称的 --export 选项。

Freeze 采用一种技术,先创建进程,然后将其移至后台运行。这样做有两个目的:首先,有助于隐藏进程;其次,避免被任何 EDR 产品检测到。立即在后台启动进程非常可疑,是恶意行为的标志。Freeze 通过在进程创建后且 EDR 的钩子加载完毕后调用 Windows 的 GetConsoleWindowShowWindow 函数来实现这一点,然后将窗口属性更改为隐藏。Freeze 使用这些 API 而不是传统的 -ldflags -H=windowsgui,因为后者具有高度特征性,并且在大多数安全产品中被归类为入侵指标。

如果-console选中命令行选项,Freeze 将不会隐藏后台进程。相反,Freeze 会添加多条调试信息,显示加载程序正在执行的操作。

项目地址:

  • https://github.com/Tylous/Freeze

END

公众号内容都来自国外平台-所有文章可通过点击阅读原文到达原文地址或参考地址

排版 编辑 | Ots 小安

采集 翻译 | Ots Ai牛马

公众号 | AnQuan7 (Ots安全)


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Ots安全 《Freeze 是一个有效载荷工具包,它利用挂起的进程、直接系统调用和替代执行方法来绕过 EDR》

评论:0   参与:  0