
智能摘要 AI
AtomLdr 是一款独立于 CRT 库的恶意软件加载器,其 DLL 文件通过加载或命令行执行导出函数运行有效载荷。它从 KnownDlls 目录中脱钩,不分配 RWX 内存,并使用 AES256-CBC 加密保存在资源中的有效载荷。AtomLdr 采用间接系统调用、APC 调用和调试模式,确保有效载荷的稳定运行。使用时需先用 PayloadBuilder 编译有效载荷,生成配置文件,然后替换 AtomLdr 并编译为 x64 Release。演示中展示了通过 rundll32.exe 运行 AtomLdr.dll 并执行 Havoc 负载以捕获屏幕截图的过程。
特点
最近推出的 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 的步骤如下:
- 使用 PayloadBuilder 编译并执行指定的 payload,并生成一个 PayloadConfig.pc 文件,其中包含加密的 payload,以及它的加密密钥和 iv。
- 将 AtomLdr 替换为生成的 PayloadConfig.pc 文件。
- 将项目编译为 x64 Release。
如果需要启用调试模式,请取消注释相关代码。
演示 (1)

AtomLdr.dll的导入地址表

演示-调试模式(2)
- 运行
PayloadBuilder.exe,加密demon[111].bin– 一个 Havoc 负载文件



- Havoc 在有效载荷执行后捕获屏幕截图






评论 (0)