
Empacotador reflexivo de PE.
Amber é um carregador de PE posicionamento-independente (reflexivo) que permite a execução em memória de arquivos PE nativos (EXE, DLL, SYS...). Ele permite a implantação furtiva de payloads em memória que pode ser usada para contornar antivírus, firewall, IDS, IPS e mitigações de lista de permissão de aplicativos. Os payloads reflexivos gerados pelo Amber podem ser estagiados a partir de um servidor remoto ou executados diretamente na memória como um shellcode genérico. Por padrão, cada payload gerado é codificado usando o codificador SGN de nova geração. O Amber usa CRC32_API e IAT_API para resolver discretamente os endereços das funções da API do Windows. Após o arquivo PE ser carregado e executado na memória, o payload reflexivo é apagado para evitar scanners de memória.
Binários pré-compilados podem ser encontrados em releases.
Construindo a partir do código fonte
A única dependência para compilar o código fonte é o keystone engine, siga estas instruções para instalar a biblioteca. Depois que a libkeystone estiver instalada no sistema, simplesmente use go get ツ
go install github.com/EgeBalci/amber@latest
Instalação via Docker
docker pull egee/amber
docker run -it egee/amber
A tabela a seguir lista as opções suportadas pelo amber.
Exemplo de Uso
amber -f test.exe
amber -e 10 --iat -f test.exe
Uso via Docker
docker run -it -v /tmp/:/tmp/ amber -f /tmp/file.exe
| Opção | Tipo | Descrição |
|---|---|---|
| -f,--file | string | Arquivo PE de entrada. |
| -o,--out | string | Nome do arquivo de saída do payload binário. |
| -e | int | Número de vezes para codificar o payload reflexivo gerado. |
| --iat | bool | Usar bloco resolvedor de API IAT em vez do bloco resolvedor de API CRC. |
| -l | int | Número máximo de bytes para ofuscação (padrão 5). |
| --sys | bool | Realizar syscalls brutas. (apenas x64). |
| --scrape | bool | Extrair byte mágico e stub DOS do PE. |