Вопрос или проблема
Практически каждое руководство для начинающих (дружественное к новичкам), написанное для стекового переполнения буфера, объясняет, что при использовании модуля mona для поиска безопасного и надежного адреса памяти, на который наш EIP будет переходить к нашему шеллкоду, следует отключить Rebase, Safe SEH и ASLR.
Однако в недавнем задании по стековому переполнению буфера все модули, предоставленные mona, показали, что они защищены, за исключением самого исполняемого файла.
Я использовал модуль (DLL), который имел эти защиты, показанные mona, чтобы перейти к моему шеллкоду и успешно выполнить его, что действительно сбило меня с толку.
Если сам исполняемый файл не защищен, означает ли это, что мы можем использовать любую DLL для перехода к нашему шеллкоду? Если нет, то как правильно справиться с этой ситуацией?
Использование защищенных модулей будет работать ТОЛЬКО в течение этой сессии, однако при перезапуске Windows адреса защищенных DLL будут изменены. Так что это объясняет, почему я смог получить обратный шелл во время этой сессии Windows. Если вывод mona показывает, что модули DLL защищены, лучше обратить внимание на сам исполняемый файл.
Решение этой ситуации заключается в том, чтобы искать JMP ESP внутри самого EXE.
Ответ или решение
Анализ ситуации с переполнением буфера и модулями Mona
Когда мы говорим о переполнении буфера в контексте эксплуатации уязвимостей, важно понимать, как различные механизмы защиты, такие как Rebase, SafeSEH и ASLR, могут повлиять на наше направление атаки. Ваша ситуация включает использование модулей Mona, которые указывают на наличие этих защит, и вы можете быть сбиты с толку тем, что вам удалось успешно выполнить код, даже когда все модули, кроме исполняемого файла, оказались защищены.
Понимание метрик защиты
-
Rebase: Это защита перемещения адресов, которая предотвращает выполнение кода по статическим адресам. Если эта защита включена, расположение кода будет изменяться, что делает его использование более сложным.
-
SafeSEH: Эта защита помогает предотвратить эксплуатацию уязвимостей через переопределение указателей обработки исключений. Если включен SafeSEH, вы не сможете просто подменить адреса в стеке.
-
ASLR (Address Space Layout Randomization): Этот механизм случайным образом изменяет расположение объектов в памяти при каждом запуске приложения, что затрудняет использование статических адресов.
Ситуация с DLL и исполняемым файлом
Когда вы обнаружили, что все модули DLL показывают наличие защиты, но сам исполняемый файл (EXE) не защищен, это открывает путь для атаки. Если исполняемый файл не защищен, то вам действительно стоит проверить наличие команд типа JMP ESP
внутри этого файла. Это может быть использовано для перенаправления выполнения кода в область, куда вы загрузили своё шеллкода.
Важно отметить, что использование защищенных модулей DLL возможно, но это может быть краткосрочным решением. Как вы правильно упомянули, адреса защищенных DLL могут изменяться при перезагрузке системы, и, таким образом, ваше решение сработает только в текущей сессии.
Рекомендации по эксплуатации
-
Ищите JMP ESP в исполняемом файле: Это наиболее надежный способ. Вам нужно проанализировать исполняемый файл на наличие инструкции
JMP ESP
, чтобы обеспечить возможность перенаправления к вашему шеллкоду. -
Используйте программы для анализа: Инструменты, такие как IDA Pro или Ghidra, могут помочь вам визуализировать структуру исполняемого файла и находить подходящие точки для прыжка.
-
Учитывайте контекст сессии: Будьте готовы к тому, что успешное использование защищенных DLL будет зависеть от контекста сессии. Для более надежного решения лучше полагаться на уязвимости в самом исполняемом файле.
Заключение
Таким образом, ваша задача состоит в том, чтобы как можно больше полагаться на характеристики самого исполняемого файла. Модули DLL могут обновляться и изменять свои адреса, тогда как исполняемый файл представляет собой более стабильную платформу для последующей эксплуатации. Изучение и анализ кода на предмет наличия меток, таких как JMP ESP
, является ключевым аспектом успешной атаки.
Непрерывное обучение и анализ защита современных программ помогут вам лучше справляться с подобными ситуациями в будущем.