![AtomLdr | 具有高级规避功能的 DLL 加载器插图 AtomLdr | 具有高级规避功能的 DLL 加载器插图](https://blog.eswlnk.com/wp-content/uploads/wpcy/bef226ead0379ea1541e3b047e082df9.jpg)
特点
最近推出的 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 加载器 AtomLdr | 具有高级规避功能的 DLL 加载器](https://static.esw.eswlnk.com/2023/06/20230610042942851.png)
![AtomLdr | 具有高级规避功能的 DLL 加载器 AtomLdr | 具有高级规避功能的 DLL 加载器](https://static.esw.eswlnk.com/2023/06/20230610042943425.png)
演示-调试模式(2)
- 运行
PayloadBuilder.exe
,加密demon[111].bin
– 一个 Havoc 负载文件
![AtomLdr | 具有高级规避功能的 DLL 加载器 AtomLdr | 具有高级规避功能的 DLL 加载器](https://static.esw.eswlnk.com/2023/06/20230610042941836.png)
![AtomLdr | 具有高级规避功能的 DLL 加载器 AtomLdr | 具有高级规避功能的 DLL 加载器](https://static.esw.eswlnk.com/2023/06/20230610042943909.png)
![AtomLdr | 具有高级规避功能的 DLL 加载器 AtomLdr | 具有高级规避功能的 DLL 加载器](https://static.esw.eswlnk.com/2023/06/20230610042943534.png)
- Havoc 在有效载荷执行后捕获屏幕截图
![AtomLdr | 具有高级规避功能的 DLL 加载器 AtomLdr | 具有高级规避功能的 DLL 加载器](https://static.esw.eswlnk.com/2023/06/20230610042943204.png)
📮评论