Ограничение доступа программы к реестру Windows

1923
Alexandr Zarubkin

Можно ли предотвратить доступ определенной программы к реестру Windows? Я знаю, что есть ACL для блокировки пользователя, но как насчет каждого исполняемого элемента управления?

2
Нет, потому что это учетная запись, в которой запущен процесс программы, поскольку он записывает данные в реестр от ее имени. Какую программу вы пытаетесь заблокировать? В какие ключи реестра вы пытаетесь остановить запись? В зависимости от того, в какую часть реестра вы пытаетесь запретить запись, вы можете просто отказать всем. Но для меня это пахнет как [Проблема XY] (http://xyproblem.info); Какую ФАКТИЧЕСКУЮ проблему вы пытаетесь решить, блокируя записи в реестре? Ƭᴇcʜιᴇ007 7 лет назад 2
В Linux вы можете применять механизмы обязательного контроля доступа к приложениям через такие системы, как SeLinux и AppArmour, но в Windows все основано на пользователях. смотрите здесь для получения более подробной информации: https://msdn.microsoft.com/en-us/library/windows/desktop/bb648648(v=vs.85).aspx Frank Thomas 7 лет назад 0
@ Ƭᴇcʜιᴇ007 Правда. В Windows также есть обязательный контроль доступа, и здесь может помочь Низкая целостность. Ben N 7 лет назад 0

2 ответа на вопрос

3
Ben N

Извините, это невозможно, по крайней мере, в той степени, в которой вы этого не хотите. Как упомянуто в комментариях ʜcᴇι7007, все управление доступом Windows основано на пользователях. К каждому процессу прикреплен токен, который определяет, каким пользователем он запущен. Нет разницы между тем, как вы выполняете действие, и программой, выполняемой под вашей учетной записью, которая выполняет это действие, поскольку вы делаете буквально все через тот или иной процесс. «Программы не атакуют пользователей; пользователи атакуют пользователей».

Кроме того, практически каждый процесс обращается к реестру. Даже если сама программа явно не осуществляет доступ к Реестру, исследование Process Monitor показывает, что каждое приложение с графическим интерфейсом начинается с загрузки считываний Реестра, чтобы выяснить, как настроить графические элементы управления. Запустите Process Monitor для приложения, которое, по вашему мнению, не нуждается в реестре; вы будете удивлены

Но если вы хотите заблокировать все записи и только записи, на самом деле есть кое-что, что может помочь. В Windows есть понятие «уровни целостности», которое является частью UAC. По сути, программа, работающая с определенным уровнем целостности, не может писать в объекты, помеченные с более высоким уровнем целостности. Обычные процессы и обычные файлы (и ключи реестра) имеют средний уровень целостности, но вы можете вручную запускать процессы с низким уровнем. Загрузите инструмент PsExec . Если вы хотите создать командную строку, которая не может писать в обычные места, запустите это:

psexec -l -i cmd 

-lПереключатель устанавливает низкие целостности; -iпереключатель делает процесс интерактивным. Полученная командная строка может записывать только в места, специально помеченные как Низкая целостность.

C:\Users\Ben>reg add HKCU\Test ERROR: Access is denied. 

Эта команда работает в обычной командной строке, но не в закрытой.

1
Alexandr Zarubkin

Другим решением является использование Sandboxie . Эта программа может выполнить любой процесс внутри песочницы, так что любое изменение в системе, сделанное этим процессом, может быть отменено.