
Рефлексивный упаковщик PE.
Amber — это позиционно-независимый (рефлексивный) загрузчик PE-файлов, который обеспечивает выполнение нативных PE-файлов (EXE, DLL, SYS...) в памяти. Он позволяет скрытно развертывать полезную нагрузку в памяти, что может использоваться для обхода антивирусов, межсетевых экранов, IDS, IPS и механизмов блокировки приложений по белому списку. Рефлексивные полезные нагрузки, созданные Amber, могут быть либо загружены с удаленного сервера, либо выполнены непосредственно в памяти, как обычный шелл-код. По умолчанию каждая сгенерированная полезная нагрузка кодируется с помощью нового поколения кодировщика SGN. Amber использует CRC32_API и IAT_API для незаметного разрешения адресов функций Windows API. После загрузки и выполнения PE-файла в памяти рефлексивная полезная нагрузка стирается для обхода сканеров памяти.
Предварительно скомпилированные бинарники можно найти в релизах.
Сборка из исходников
Единственная зависимость для сборки исходного кода — keystone engine. Следуйте этим инструкциям для установки библиотеки. После установки 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 | Извлекать magic-байт и DOS-заглушку из PE. |