Mac OS X: приложение с включенным флагом NX, файлами Stack Cookies и ASLR? - PullRequest
5 голосов
/ 03 ноября 2011

Я хочу знать, поддерживает ли исполняемый файл общие средства защиты, такие как флаг NX, файлы cookie стека или ASLR. Кажется, ASLR установлен на уровне ОС, но откуда вы знаете, что он включен? В Windows некоторые исполняемые файлы не поддерживают ASLR, поэтому мне было интересно, как вы можете определить это в Mac OS X.

1 Ответ

0 голосов
/ 04 ноября 2011

Прежде всего ALSR, используемый в OSX 10.6 и ниже , не рандомизировал все области памяти . Насколько я знаю, ASLR включен для всех запущенных исполняемых файлов. Это очень просто для проверки, просто запустите отладчик, установите точку останова и запишите любой адрес памяти в стеке. Перезапустите приложение и посмотрите, имеет ли эта переменная тот же адрес памяти.

Я думаю, что в OSX 10.7 они начали рандомизировать динамический компоновщик. Какие системы Linux, BSD и даже Windows работали в течение ряда лет.

Для OSX связанные библиотеки ASLR могут быть протестированы на использование выполнения export DYLD_PRINT_SEGMENTS=1 и последующего запуска команды. Область памяти TEXT является базовым адресом для библиотеки. Выполните эту команду дважды против любого двоичного файла. Если базовый адрес отличается между двумя исполнениями, то виновата грязная работа ASLR.

Стек печенье - это совершенно другая игра в мяч. Это защита на уровне компилятора, которая зависит от приложения. Современные версии GCC должны по умолчанию включать стеки. Опять же, вам следует проконсультироваться с отладчиком, чтобы узнать, использует ли конкретное приложение канареек. Просто проверьте кадр стека любой функции, чтобы увидеть, есть ли случайное значение, вставленное между локально объявленными переменными и адресом возврата.

Что касается флага NX, вы должны предположить, что любая система, созданная после 1999 года, использует эту тривиальную форму защиты. Но это, безусловно, самая простая защита, которую вы можете обойти, просто ret-to-libc или используйте цепочку ROP (из-за aslr).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...