AtomLdr | 具有高级规避功能的 DLL 加载器插图

特点

最近推出的 AtomLdr 具有以下特点:

  • 独立于 CRT 库。
  • 最终的 DLL 文件可以通过加载 DLL 或命令行执行导出的函数来运行有效载荷。
  • DLL 从 \KnwonDlls\ 目录中脱钩,没有 RWX 部分。
  • 加密的有效载荷保存在资源部分并通过自定义代码检索。
  • 采用 AES256-CBC 加密,使用自定义无表/数据依赖分支使用 ctaes,是最好的自定义 AES 实现之一。
  • 使用 Aes 密钥和 Iv 加密。
  • 使用间接系统调用,将 HellHall 与 ROP 小工具一起使用(用于脱钩部分)。
  • 使用 APC 调用的有效负载注入- 可警告线程。
  • 使用 APC 执行有效载荷- 可警告线程。
  • Api 哈希使用 CRC32 字符串哈希算法的两种不同实现。
  • 总大小为 17kb + 有效负载大小(16 的倍数)。

脱钩方法

AtomLdr 的 unhooking 方法如下:

该程序从 \KnwonDlls\目录中 Unhooking并不是一种绕过用户态挂钩的新方法。但是,此加载程序在这样做时会尝试避免分配 RWX 内存,从而消除了在取消挂钩之前需要将它们标记为 RWX 部分的需要。这种方法可以阻止从目标文本部分中调用任何函数。

然而,这种方法产生了另一个问题;脱钩时,NtProtectVirtualMemory 系统调用和其他人使用 ntdll.dll 模块内部的系统调用指令,作为间接系统调用方法。未挂钩的模块将被标记为 RW 部分,因此无法执行间接系统调用。为了解决此问题,AtomLdr 使用了 win32u.dll 来跳转到另一个可执行位置,从而保证了程序的正常运行。

虽然 AtomLdr 的 unhooking 方法可能效率不高,而且可能不稳定,但它已经通过多个流程进行了测试并取得了积极的结果。如果您遇到任何问题,请随时提出问题。

使用方法

使用 AtomLdr 的步骤如下:

  1. 使用 PayloadBuilder 编译并执行指定的 payload,并生成一个 PayloadConfig.pc 文件,其中包含加密的 payload,以及它的加密密钥和 iv。
  2. AtomLdr 替换为生成的 PayloadConfig.pc 文件。
  3. 将项目编译为 x64 Release。

如果需要启用调试模式,请取消注释相关代码。

演示 (1)

AtomLdr | 具有高级规避功能的 DLL 加载器
AtomLdr | 具有高级规避功能的 DLL 加载器

演示-调试模式(2)

  • 运行PayloadBuilder.exe,加密demon[111].bin– 一个 Havoc 负载文件
AtomLdr | 具有高级规避功能的 DLL 加载器
AtomLdr | 具有高级规避功能的 DLL 加载器
AtomLdr | 具有高级规避功能的 DLL 加载器
  • Havoc 在有效载荷执行后捕获屏幕截图
AtomLdr | 具有高级规避功能的 DLL 加载器