Малварь как искусство Скрываем нагрузку в скриптах


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 085
Репутация
8 208
1704270127418.png


Всем привет!

Вот в этой теме был задан вопрос, как склеить зверька с какой-то полезной программой.
Самое просто это использовать самораспаковывающийся архив, например так:ВАЖНО - Делаем крутой крипто-джойнер и обходим детект 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 - мощный инструмент для создания самораспаковывающихся архивов, который может значительно упростить процесс распространения и установки программного обеспечения.

Он имеет различные параметры, которые позволяют настраивать процесс создания архива и его поведение при распаковке. Вот основные параметры makeself:
  1. --help или -h: Отображает справку и основные инструкции по использованию.
  2. --version: Показывает версию makeself.
  3. --gzip или --bzip2 или --xz или --compress или --nocomp: Указывает метод сжатия. Вы можете выбрать gzip, bzip2, xz, использовать сжатие compress или отказаться от сжатия (nocomp).
  4. --encrypt: Зашифровывает архив (требует наличия openssl для распаковки).
  5. --current: Включает в архив файлы из текущей директории.
  6. --follow: Включает в архив файлы, на которые указывают символические ссылки.
  7. --header: Позволяет указать собственный файл заголовка скрипта.
  8. --noprogress: Отключает показ индикатора выполнения при распаковке.
  9. --nox11: Отключает автоматический запуск xterm для отображения прогресса.
  10. --nowait: Не ожидает ввода пользователя после завершения распаковки/установки.
  11. --lsm: Указывает файл LSM (Linux Software Map).
  12. --license: Указывает файл лицензии, который будет показан перед распаковкой.
  13. --target: Предоставляет пользователю возможность выбрать каталог для распаковки.
  14. --tar-extra: Позволяет добавить дополнительные параметры к команде tar.
  15. --keep-umask: Сохраняет текущую umask во время распаковки.
  16. --nooverwrite: Предотвращает перезапись существующих файлов.
  17. --nomd5 и --nocrc: Отключает создание и проверку MD5/CRC чек-сумм.
  18. --append: Добавляет данные в существующий архив.
  19. --compressargs: Указывает дополнительные аргументы для программы сжатия.
  20. --backup: Создает резервные копии перезаписываемых файлов.
Эти параметры позволяют настроить создание архива в соответствии с вашими потребностями, будь то сжатие, шифрование, отображение лицензии или какие-либо другие специфические требования. Для получения полного списка параметров и более подробной информации рекомендуется обратиться к справке makeself, выполнив команду makeself --help в терминале.

Как сделать что-то похожее на батниках например для винды:

Да, можно упаковать бинарный файл (бинарник) в .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.

Важные замечания​

  • Убедитесь, что размер и порядок частей при кодировании и декодировании совпадают, чтобы бинарный файл был воссоздан корректно.
  • Проверьте, что у вас достаточно места на диске для хранения всех частей и для сборки исходного файла.
  • Этот метод требует дополнительного времени и ресурсов для кодирования/декодирования и может быть неэффективным для очень больших файлов.
 
Верх Низ