ShellcodeLoader
Language: English
Windows 平台的 shellcode 免杀加载器。
功能特点
- 自带多种加载方式。32 位自带 13 种加载方式,64 位自带 12 种加载方式。
- 支持拓展。如果发现新的利用方式,按指定方式开发模板即可。
- shellcode 自动随机加密。使用时间为种子,生成 128 位密钥进行加密,相同 shellcode 出来的加载器的 md5 也不相同。
编译环境和方法
环境: 生成器使用 MFC 实现 UI,生成器和加载器模板均使用 C++ 开发,VS2015 静态编译。
方法: 使用 VS2015 打开项目的解决方案 (.sln),再进行编译即可。你也可以从realse下载成品。
文件组成
本工具由生成器 (shellcodeLoader.exe), 和众多加载器模板组成。不同的加载器模板需放入对应位数的目录。并最终放入生成器同目录下的 DATA 目录。
使用方法
勾选加载器的运行位数,并选择你需要的配置选项,是否需要自启动 (自带方式皆为注册表方式自启动),是否需要反沙箱 (64 位下多数杀软不需要该选项即可免杀)
拓展方法
在你新的模板源文件前包含 public.hpp.
调用 GetShellcodeFromRes() 函数获取 shellcode 信息, 注意 100 不可更改,除非你改了生成器中的资源序号。
其返回 shellcode 的数据指针,并且,shellcodeSize 就是 shellcode 的大小。多数情况下,这一步是不需要进行更改的,你可以在获取 shellcode 之后做任何事。将编译出来的文件进行指定命名, 这里的命名就是 UI 上最终现实的加载方式名称,并将其后缀改为 DAT,放入指 DATA 目录下指定位数的目录中,生成器会自动获取该加载方式。
关于 public.hpp
public.hpp 源码中含有必要的注释。如果你想要其他的方式进行反沙箱, 你可以更改 antisandbox 中的函数;如果你想要其他方式自启动,你可以更改 autostart 函数中的内容。其他函数体的内容多数情况下是不需要更改的。
使用效果
VT 检测效果,均以 CS 原始 shellcode,并不勾选反沙箱为例:
加载方式 | 未绕过率 |
---|---|
CreateThreadpoolWait 加载 | 3/72 |
Fiber 加载 | 4/72 |
NtTestAlert 加载 | 5/70 |
SEH 异常加载 | 2/72 |
TLS 回调加载 | 28/71 |
动态加载 | 1/72 |
动态加载 plus | 28/71 |
系统 call 加载 | 1/69 |
APC 注入加载 | 6/72 |
Early Brid APC 注入加载 | 4/72 |
NtCreateSection 注入加载 | 2/71 |
入口点劫持注入加载 | 3/72 |
线程劫持注入加载 | 6/72 |
在动态加载方式勾选反沙箱之后,结果如下:
使用该加载器 bypass 诺顿的智能防火墙出网拦截,并上线: