Почему Windows рандомизирует PEB и TEB? - PullRequest
0 голосов
/ 29 января 2020

Согласно отчету Symante c:

Адрес структуры операционной системы, известной как Блок среды процесса (PEB), также выбирается случайным образом. Функция рандомизации PEB была представлена ​​ранее в Windows XP SP2 и Windows 2003 SP1, а также присутствует в Windows Vista. Хотя реализовано отдельно, это также форма рандомизации адресного пространства; но в отличие от других функций ASLR, рандомизация PEB происходит независимо от того, выбран ли загружаемый исполняемый файл для использования функции ASLR.

Когда процесс в Windows должен быть рандомизирован, базовые адреса стек и куча рандомизированы по очевидным причинам. Но почему PEB / TEB также рандомизированы, в чем здесь выгода?

На мой взгляд, вы хотите рандомизировать основание кучи и стека, чтобы, если злоумышленник получил возможность выполнить шеллкод от имени процесса - вы хотите предотвратить использование злоумышленником некоторых известных указателей путем их рандомизации. Злоумышленник получит контроль над IP-адресом, но не будет знать, куда перейти дальше.

Но какой смысл в PEB? чтобы получить доступ к PEB, вы должны go через GDT, используя сегмент FS с кодом, подобным следующему:

mov ax, fs:0x30

Если доступ к PEB для вас уже абстрагирован, когда вы получаете выполнение кода - вы можете получить прямой доступ к PEB с помощью нескольких инструкций, не беспокоясь о реальном адресе PEB, который был рандомизирован ASLR.

Итак, в чем выгода рандомизации PEB?

...