Завершение Эксплоита

Завершение нашего эксплоита egghunter

 

Это переполнение стандарта SEH. Мы можем заметить кое-что из нашего пользовательского ввода в ‘pop, pop, ret‘ вдали от нашего stack. Интересной вещью что можно заметить из скриншота, является тот факт, что мы отправили 2000 байт payload — однако кажется что когда мы возвратимся к нашему буферу, он получается усеченным. У нас есть около 80 байт пространства для нашего shell кода (синим выделено). Мы используем невосприимчивость! Функция safeseh определит местоположение незащищенных библиотек, из которых может быть найден обратный адрес.

Исключение обработчика переполнения SEH
Dante

 

Мы копируем DLL и ищем POP POP RET комбинации команд при помощи msfpescan.

Используем msfpescan
Dante

 

Из доказательства концепции эксплоита

 

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

Используем pattern create
Dante

 

Мы модифицируем наш эксплоит путем введения действенного обратно адреса.

Ввод обратного адреса
Dante

 

Затем мы настроим буфер для перенаправления потока исполнения на момент краха нашего обратного адреса, перепрыгнув через него (xEB является коротким прыжком ‘short jump‘) и затем останавливаем точку остановки буфера (xCC).

Настраиваем буфер
Dante

 

Еще раз мы создаем наш файл эксплоита, приложим Audacity отладчику и импортируем вредоносный файл. На этот раз, SEH должны быть перезаписаны с нашего адреса — тот который приведет нас к набору команд pop, pop, ret. Там мы устанавливаем точку остановки, и еще раз возьмем исключение с shift + F9 и пройдем сквозь наш pop pop ret с F8.

SEH сети
Dante

 

Короткий прыжок перебросит нас через наш обратный адрес, в нашем ‘shellcode buffer‘.

Shell код эксплоита Egg Hunter
Dante

 

Снова мы имеем очень мало места в буфере для нашего payload. Быстрый осмотр памяти показывает что длина нашего полного буфера может быть найдена в динамической памяти. Зная это мы может использовать наше первоначальное пространство 80 байт в выполнении egghunter, который будет искать и найдет второй payload.

Egg-hunt эксплоит
Dante

 

Реализация Metasploit Framework egghunter достаточно проста:

Код Metasploit Framework egghunter
Dante

 

Окончательно эксплоит выглядит так:

Окончательный эксплоит
Dante

 

Мы запустим конечный эксплоит через отладчик чтобы убедится, что все в порядке. Мы видим egghunter был реализован корректно и замечательно работает.

Производим запуск egghunter
Dante

 

Мы генерируем наш окончательный взрывной эксплоит:

Производим генерацию эксплоита
Dante

 

И получим meterpreter shell.

 

Получаем Shell Meterpreter
Dante

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

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