
Packer PE riflessivo.
Amber è un caricatore PE position-independent (riflessivo) che consente l'esecuzione in memoria di file PE nativi (EXE, DLL, SYS...). Permette un dispiegamento stealth di payload in memoria che può essere utilizzato per bypassare prodotti antivirus, firewall, IDS, IPS e mitigazioni di whitelisting delle applicazioni. I payload riflessivi generati da Amber possono essere sia messi in scena da un server remoto che eseguiti direttamente in memoria, proprio come uno shellcode generico. Di default, ogni payload generato viene codificato utilizzando il codificatore di nuova generazione SGN encoder. Amber utilizza CRC32_API e IAT_API per risolvere in modo discreto gli indirizzi delle funzioni API di Windows. Dopo che il file PE è stato caricato ed eseguito in memoria, il payload riflessivo viene cancellato per eludere gli scanner di memoria.
I binari precompilati si trovano nella sezione releases.
Build dal sorgente
L'unica dipendenza per compilare il sorgente è il keystone engine; segui queste istruzioni per installare la libreria. Una volta installato libkeystone sul sistema, basta eseguire go get ツ
go install github.com/EgeBalci/amber@latest
Installazione con Docker
docker pull egee/amber
docker run -it egee/amber
La tabella seguente elenca le opzioni supportate da amber.
Esempio di utilizzo
amber -f test.exe
amber -e 10 --iat -f test.exe
Utilizzo con Docker
docker run -it -v /tmp/:/tmp/ amber -f /tmp/file.exe
| Opzione | Tipo | Descrizione |
|---|---|---|
| -f,--file | string | File PE di input. |
| -o,--out | string | Nome del file binario di output del payload. |
| -e | int | Numero di volte per codificare il payload riflessivo generato |
| --iat | bool | Utilizza il blocco risolutore API IAT invece del blocco risolutore API CRC |
| -l | int | Numero massimo di byte per l'offuscamento (default 5) |
| --sys | bool | Esegui syscall raw. (solo x64) |
| --scrape | bool | Rimuovi il magic byte e lo stub DOS dal PE. |