Amber 是一个位置无关(反射式)PE 加载器,能够实现原生 PE 文件(EXE、DLL、SYS……)的内存中执行。它支持隐蔽的内存内载荷部署,可用于绕过防病毒、防火墙、IDS、IPS 产品以及应用程序白名单缓解措施。Amber 生成的反射式载荷既可以从远程服务器分阶段传输,也可以像通用 shellcode 一样直接在内存中执行。默认情况下,每个生成的载荷都使用新一代 SGN 编码器 进行编码。Amber 使用 CRC32_API 和 IAT_API 来隐秘地解析 Windows API 函数地址。PE 文件在内存中加载并执行后,反射式载荷会被擦除以躲避内存扫描器。
预编译的二进制文件可在 发布页面 中找到。
从源码构建
构建源码的唯一依赖是 keystone 引擎,请按照 这些说明 安装该库。一旦 libkeystone 安装在系统上,只需执行 go get 即可 ツ
go install github.com/EgeBalci/amber@latest
Docker 安装
docker pull egee/amber
docker run -it egee/amber
下表列出了 amber 支持的命令行选项。
示例用法
amber -f test.exe
amber -e 10 --iat -f test.exe
Docker 用法
docker run -it -v /tmp/:/tmp/ amber -f /tmp/file.exe
| 选项 | 类型 | 描述 |
|---|---|---|
| -f,--file | string | 输入的 PE 文件。 |
| -o,--out | string | 输出的二进制载荷文件名。 |
| -e | int | 对生成的反射式载荷进行编码的次数。 |
| --iat | bool | 使用 IAT API 解析器块而不是 CRC API 解析器块。 |
| -l | int | 混淆的最大字节数(默认 5) |
| --sys | bool | 执行原始系统调用(仅 x64) |
| --scrape | bool | 从 PE 中刮除魔数字节和 DOS 存根。 |