Всем привет!
Вот в этой теме был задан вопрос, как склеить зверька с какой-то полезной программой.
Самое просто это использовать самораспаковывающийся архив, например так:ВАЖНО - Делаем крутой крипто-джойнер и обходим детект VT
Но в этой теме давайте рассмотрим как запаковать пейлоад в скрипт на bat или на sh для линукса.
Это может часто быть полезно и для легальных программ, в случае линукса, так можно сделать свой инсталятор.)
Предлагаю вначале рассмотреть линукс:
Чтобы упаковать бинарный файл (бинарник) в .sh скрипт на Linux, вы можете использовать следующий подход. Этот метод основан на использовании скрипта shell, который включает в себя сам бинарный файл, закодированный в формате base64. Вот подробный пример:
- Подготовка бинарного файла: Сначала убедитесь, что ваш бинарный файл (например, your_binary) находится в той же директории, где вы будете создавать скрипт.
- Кодирование бинарного файла: Затем используйте команду base64 для кодирования бинарного файла в текстовый формат. Это можно сделать с помощью команды в терминале:
Код:
base64 your_binary > binary_encoded.txt
- Создание скрипта:
Откройте текстовый редактор и начните скрипт с #!/bin/bash, чтобы указать, что это скрипт shell.
Напишите команды для декодирования и сохранения бинарного файла. Например:
Код:
#!/bin/bash
# Decode the binary
echo 'ЗДЕСЬ_ИДЕТ_ЗАКОДИРОВАННЫЙ_БИНАРНИК' | base64 --decode > your_binary
# Make the binary executable
chmod +x your_binary
# Execute the binary
./your_binary
# Optional: Remove the binary file after execution
# rm your_binary
Вместо 'ЗДЕСЬ_ИДЕТ_ЗАКОДИРОВАННЫЙ_БИНАРНИК' вставьте содержимое файла binary_encoded.txt. Это будет ваш закодированный бинарник.
Сохранение и исполнение скрипта:
- Сохраните ваш скрипт с расширением .sh, например, как your_script.sh.
- Дайте скрипту права на исполнение с помощью команды chmod +x your_script.sh.
- Теперь вы можете запустить скрипт командой ./your_script.sh.
Важно помнить, что при использовании этого метода размер вашего скрипта значительно увеличится, так как он будет содержать целиком бинарный файл в закодированном виде.
Есть также программа, которая может создавать такие скрипты:
makeself - это утилита для Linux, которая позволяет создавать самораспаковывающиеся архивы из файлов и директорий. Это удобный способ распространения программного обеспечения, так как пользователю достаточно запустить один скрипт, чтобы распаковать и установить программу. Вот как вы можете использовать makeself:
Установка makeself
Первым шагом является установка makeself. Она может быть доступна в репозиториях вашего дистрибутива Linux. Например, в Debian или Ubuntu вы можете установить её с помощью команды:
Код:
sudo apt-get install makeself
Создание самораспаковывающегося архива
- Подготовка файлов: Перед созданием архива убедитесь, что у вас есть директория, содержащая все файлы и поддиректории, которые вы хотите включить в архив.- Использование makeself: Запустите makeself для создания архива. Основной синтаксис команды:
Код:
makeself [опции] <директория_источник> <результирующий_скрипт> <описание_архива> <команда_или_скрипт_после_распаковки>
Например, если у вас есть директория my_software, содержащая ваше программное обеспечение, и вы хотите создать скрипт install_my_software.sh, который будет запускать install.sh после распаковки, команда будет выглядеть так:
Код:
makeself my_software install_my_software.sh "Установка My Software" ./install.sh
Здесь:
- my_software - директория, которую вы хотите упаковать.
- install_my_software.sh - имя скрипта, который будет создан.
- "Установка My Software" - описание, которое будет показано при запуске скрипта.
- ./install.sh - команда, которая будет выполнена после распаковки архива.
Запуск самораспаковывающегося архива
После создания архива, пользователи могут запустить скрипт для распаковки и установки:
Код:
./install_my_software.sh
Этот скрипт распакует содержимое во временную директорию и запустит указанную команду или скрипт (install.sh в нашем примере).
Примечания
- Убедитесь, что файл install.sh (или любой другой скрипт, который вы запускаете после распаковки) имеет права на выполнение.
- Вы можете добавить дополнительные опции в makeself для управления поведением архива, например, для создания MD5 чек-суммы, указания необходимости запуска с правами суперпользователя и т.д. Полный список опций можно получить, запустив makeself --help.
Он имеет различные параметры, которые позволяют настраивать процесс создания архива и его поведение при распаковке. Вот основные параметры makeself:
- --help или -h: Отображает справку и основные инструкции по использованию.
- --version: Показывает версию makeself.
- --gzip или --bzip2 или --xz или --compress или --nocomp: Указывает метод сжатия. Вы можете выбрать gzip, bzip2, xz, использовать сжатие compress или отказаться от сжатия (nocomp).
- --encrypt: Зашифровывает архив (требует наличия openssl для распаковки).
- --current: Включает в архив файлы из текущей директории.
- --follow: Включает в архив файлы, на которые указывают символические ссылки.
- --header: Позволяет указать собственный файл заголовка скрипта.
- --noprogress: Отключает показ индикатора выполнения при распаковке.
- --nox11: Отключает автоматический запуск xterm для отображения прогресса.
- --nowait: Не ожидает ввода пользователя после завершения распаковки/установки.
- --lsm: Указывает файл LSM (Linux Software Map).
- --license: Указывает файл лицензии, который будет показан перед распаковкой.
- --target: Предоставляет пользователю возможность выбрать каталог для распаковки.
- --tar-extra: Позволяет добавить дополнительные параметры к команде tar.
- --keep-umask: Сохраняет текущую umask во время распаковки.
- --nooverwrite: Предотвращает перезапись существующих файлов.
- --nomd5 и --nocrc: Отключает создание и проверку MD5/CRC чек-сумм.
- --append: Добавляет данные в существующий архив.
- --compressargs: Указывает дополнительные аргументы для программы сжатия.
- --backup: Создает резервные копии перезаписываемых файлов.
Как сделать что-то похожее на батниках например для винды:
Да, можно упаковать бинарный файл (бинарник) в .bat скрипт в Windows, хотя процесс немного отличается от того, который используется в Linux. В Windows .bat файлы могут использовать встроенные инструменты командной строки для обработки и извлечения бинарных данных. Один из подходов — это кодирование бинарного файла в формате base64 и включение этого кода в .bat скрипт. Затем скрипт может декодировать данные обратно в бинарный файл и запускать его.
Вот общие шаги для реализации этого метода:
Шаг 1: Кодирование бинарного файла в base64
- Сначала вам нужно закодировать ваш бинарный файл в формат base64. Это можно сделать с помощью PowerShell:
Код:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\path\to\your\binary.exe")) > binary.txt
Замените C:\path\to\your\binary.exe на путь к вашему бинарному файлу.
Шаг 2: Создание .bat скрипта
- Создайте .bat скрипт, который будет содержать кодированный бинарный файл и логику для его декодирования и выполнения.В вашем .bat файле:
- Включите закодированные данные в скрипт.
- Используйте скриптовые возможности командной строки Windows для декодирования base64 обратно в бинарный файл.
- Выполните бинарный файл.
Пример скрипта:
Код:
@echo off
setlocal
:: Декодирование base64 в бинарный файл
echo Вставьте сюда ваш base64 закодированный бинарник > temp_base64.txt
certutil -decode temp_base64.txt your_binary.exe
:: Выполнение бинарного файла
your_binary.exe
:: Очистка (опционально)
del your_binary.exe
del temp_base64.txt
endlocal
Замените Вставьте сюда ваш base64 закодированный бинарник на ваш кодированный текст из binary.txt.
Шаг 3: Запуск .bat скрипта
Запустите .bat скрипт, чтобы декодировать и выполнить ваш бинарный файл.Важные замечания
- Этот метод требует внимательности при обращении с base64 строками, так как они могут быть очень длинными.
- Убедитесь, что размер декодированного файла совпадает с исходным бинарным файлом.
- Этот метод может не подходить для очень больших бинарных файлов из-за ограничений командной строки и размера файла .bat.
Давайте рассмотрим пример разбиения большого бинарного файла на части, его кодирования в формате base64 и воссоздания файла из этих частей с помощью .bat скрипта в Windows.
Разбиение и кодирование бинарного файла
Допустим, у вас есть бинарный файл example.exe. Вам нужно разбить этот файл на части и закодировать каждую часть в base64. Это можно сделать с помощью PowerShell:Разбиение файла:
Код:
$file = 'C:\path\to\example.exe'
$chunkSize = 500KB
$buffer = New-Object byte[] $chunkSize
$stream = [System.IO.File]::OpenRead($file)
$chunkNum = 0
while ($readLen = $stream.Read($buffer, 0, $buffer.Length)) {
$chunk = [System.Array]::CreateInstance([System.Byte], $readLen)
[System.Array]::Copy($buffer, 0, $chunk, 0, $readLen)
[System.Convert]::ToBase64String($chunk) | Set-Content "C:\path\to\chunks\chunk$chunkNum.txt"
$chunkNum++
}
$stream.Close()
Этот скрипт разобьет example.exe на части размером 500 КБ и сохранит каждую часть как отдельный base64-кодированный текстовый файл в директории C:\path\to\chunks.
Создание .bat скрипта для воссоздания файла
Создание .bat скрипта: В вашем .bat скрипте вы будете декодировать каждый файл-часть и собирать их в исходный бинарный файл.
Код:
@echo off
setlocal
set "outputFile=example.exe"
del "%outputFile%" >nul 2>&1
:: Цикл по всем частям
for %%i in (C:\path\to\chunks\*.txt) do (
echo Processing part %%i
certutil -decode "%%i" temp.bin
copy /b "%outputFile%" + temp.bin "%outputFile%" >nul
del temp.bin
)
echo Binary file reconstructed: %outputFile%
endlocal
Этот скрипт перебирает все .txt файлы в директории C:\path\to\chunks, декодирует каждый из них обратно в бинарный формат и собирает их в исходный файл example.exe.
Важные замечания
- Убедитесь, что размер и порядок частей при кодировании и декодировании совпадают, чтобы бинарный файл был воссоздан корректно.
- Проверьте, что у вас достаточно места на диске для хранения всех частей и для сборки исходного файла.
- Этот метод требует дополнительного времени и ресурсов для кодирования/декодирования и может быть неэффективным для очень больших файлов.