Буквенно-цифровой Shellcode в Metasploit

Генерирование буквенно-цифрового shell-кода с Metasploit

 

Бывают случаи когда вам необходимо получить чистый буквенно-цифровой shell код в связи с фильтрацией в эксплуатируемом приложении. Metasploit Framework способен генерировать буквенно-цифровой shell код легко через Msfvenom. Например, чтобы сгенерировать смешанный буквенно-цифровой shell код с прописными и строчными буками, мы можем использовать следующую команду:

Генерация буквенно-цифрового shell кода
Dante

 

Если мы посмотрим внимательнее на сгенерированный shell код, мы увидим что присутствуют некоторые не буквенно-цифровые символы:

Сгенерированный код по умолчанию
Dante

 

Это связано с опкодами (“\x89\xe2\xdb\xdb\xd9\x72”) в начале payload которые необходимы для того чтобы найти абсолютное местоположение payload в памяти и получить полностью позиционно-независимый shell код:

После того как наш адрес shell кода получается после первых двух команд, он помещается в стек и сохраняется в регистре ECX, которые затем будут использоваться для расчета относительных смещений. Тем не менее, если мы в состоянии каким-то образом получить абсолютное положение shell кода на наш выход и сохранить этот адрес в регистре перед запуском shell-кода, мы можем использовать специальную опцию BufferRegister=REG32 когда кодируется наш payload:

Получение нашего адреса shell кода
Dante

 

Теперь мы получили чистый буквенно-цифровой shell-код:

Получили чистый буквенно-цифровой shell-код
Dante

 

В этом случае мы говорим что msfencode позаботился о нахождении абсолютного адреса shell кодов и мы сохранили его в регистр ECX:

Как вы можете видеть на предыдущем изображении, ECX ранее был установлен для того, чтобы указать на начало нашего буквенно-цифрового shell-кода. В этот момент наш payload начинает непосредственно переориентировать ECX, чтобы начать последовательность декодирования shell кода.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *