Integrity Levels
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
У Windows Vista та пізніших версіях всі захищені елементи мають тег рівня цілісності. Це налаштування в основному призначає "середній" рівень цілісності для файлів і ключів реєстру, за винятком певних папок і файлів, до яких Internet Explorer 7 може записувати на низькому рівні цілісності. За замовчуванням процеси, ініційовані стандартними користувачами, мають середній рівень цілісності, тоді як служби зазвичай працюють на рівні системної цілісності. Мітка високої цілісності захищає кореневий каталог.
Ключове правило полягає в тому, що об'єкти не можуть бути змінені процесами з нижчим рівнем цілісності, ніж рівень об'єкта. Рівні цілісності:
Ненадійний: Цей рівень призначений для процесів з анонімними входами. %%%Приклад: Chrome%%%
Низький: Головним чином для взаємодій в Інтернеті, особливо в захищеному режимі Internet Explorer, що впливає на пов'язані файли та процеси, а також на певні папки, такі як Тимчасова папка Інтернету. Процеси з низькою цілісністю стикаються з суттєвими обмеженнями, включаючи відсутність доступу на запис до реєстру та обмежений доступ на запис до профілю користувача.
Середній: Рівень за замовчуванням для більшості дій, призначений стандартним користувачам та об'єктам без специфічних рівнів цілісності. Навіть члени групи адміністраторів за замовчуванням працюють на цьому рівні.
Високий: Зарезервований для адміністраторів, що дозволяє їм змінювати об'єкти з нижчими рівнями цілісності, включаючи ті, що на високому рівні.
Система: Найвищий операційний рівень для ядра Windows та основних служб, недоступний навіть для адміністраторів, що забезпечує захист життєво важливих системних функцій.
Встановлювач: Унікальний рівень, що перевищує всі інші, що дозволяє об'єктам на цьому рівні видаляти будь-який інший об'єкт.
Ви можете отримати рівень цілісності процесу, використовуючи Process Explorer від Sysinternals, отримавши доступ до властивостей процесу та переглянувши вкладку "Безпека":
Ви також можете отримати свій поточний рівень цілісності, використовуючи whoami /groups
Об'єкт у файловій системі може вимагати мінімального рівня цілісності, і якщо процес не має цього рівня цілісності, він не зможе взаємодіяти з ним. Наприклад, давайте створимо файл з консольного сеансу звичайного користувача та перевіримо дозволи:
Тепер давайте призначимо мінімальний рівень цілісності Високий для файлу. Це повинно бути зроблено з консолі, що працює як адміністратор, оскільки звичайна консоль працюватиме на середньому рівні цілісності і не буде дозволено призначити високий рівень цілісності об'єкту:
Це місце, де все стає цікавим. Ви можете побачити, що користувач DESKTOP-IDJHTKP\user
має ПОВНІ привілеї над файлом (насправді це був користувач, який створив файл), однак, через мінімальний рівень цілісності, який було впроваджено, він не зможе більше змінювати файл, якщо не працює в межах Високого Рівня Цілісності (зауважте, що він зможе його читати):
Отже, коли файл має мінімальний рівень цілісності, для його модифікації вам потрібно працювати принаймні на цьому рівні цілісності.
Я зробив копію cmd.exe
в C:\Windows\System32\cmd-low.exe
і встановив йому рівень цілісності низький з консолі адміністратора:
Тепер, коли я запускаю cmd-low.exe
, він буде запускатися з низьким рівнем цілісності замість середнього:
Для цікавих людей, якщо ви призначите високий рівень цілісності бінарному файлу (icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high
), він не буде автоматично запускатися з високим рівнем цілісності (якщо ви викликаєте його з середнього рівня цілісності -- за замовчуванням -- він буде запускатися з середнім рівнем цілісності).
Не всі файли та папки мають мінімальний рівень цілісності, але всі процеси працюють під рівнем цілісності. І подібно до того, що сталося з файловою системою, якщо процес хоче записати всередину іншого процесу, він повинен мати принаймні такий же рівень цілісності. Це означає, що процес з низьким рівнем цілісності не може відкрити дескриптор з повним доступом до процесу з середнім рівнем цілісності.
З огляду на обмеження, про які йдеться в цьому та попередньому розділі, з точки зору безпеки завжди рекомендується запускати процес на найнижчому можливому рівні цілісності.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)