Здравствуйте, BouratKo,
BK>Проблема в том, как сделать отключение драйвера, чтобы никто, кроме uninstaller, не мог его остановить? BK>Каким образом драйвер может убедиться, что его останавливает именно uninstaller, а не злоумышленник?
--
Устанавливайте драйвер только для одного user's account или для группы user's, используя secure driver installation. Удаляйте драйвер из другого user's account, в котором этот драйвер запустить нельзя. Тем самым Вы переносите проблему аутентификации uninstaller'a на Windows.
BK>Проблема в том, как сделать отключение драйвера, чтобы никто, кроме uninstaller, не мог его остановить? BK>Каким образом драйвер может убедиться, что его останавливает именно uninstaller, а не злоумышленник?
Если злоумышленник имеет админские права, то никак. В противном случае можно создать специальный управляющий девайс с помощью IoCreateDeviceSecure() и указать дескриптор безопасности такой, который не позволил бы его открытие без админских прав. Также можно воспользоваться функцией ObSetSecurityObjectByPointer() чтобы установить дескриптор безопасности уже существующего девайса:
NTSTATUS
ObSetSecurityObjectByPointer (
IN PVOID Object,
IN SECURITY_INFORMATION SecurityInformation,
IN PSECURITY_DESCRIPTOR SecurityDescriptor);
Если всё-таки очень хочется сделать защиту от админа, то я обычно делаю так: сохраняю в драйвере адрес объекта процесса, который первым открыл CDO (это может быть служба, например), и затем проверяю, что все последующие IOCTL-запросы исходят именно от него. Разумеется, в этом случае злоумышленник может внедрить свой код в управляющий процесс, но на Vista и выше ему для этого придётся обойти UAC, а во-вторых, а.п. процесса можно защитить в ядре (об этом здесь
Здравствуйте.
Есть приложение, состоящее из:
GUI
драйвер, следящий за целостностью файлов, относящихся к GUI, и себя тоже защищающий
правила защиты, на основании которых драйвер осуществляет защиту.
В правилах защиты указан полный путь к подлежащим защите файлам и веткам.
Есть инсталлер, который:
устанавливает файлы, относящиеся к GUI
формирует правила защиты
устанавливает и запускает драйвер
запускает GUI.
Чего нет, так это деинсталлера, который бы:
останавливал драйвер
останавливал GUI
удалял файлы GUI и драйвера
Проблема в том, как сделать отключение драйвера, чтобы никто, кроме uninstaller, не мог его остановить?
Каким образом драйвер может убедиться, что его останавливает именно uninstaller, а не злоумышленник?
Здравствуйте, Геннадий Майко, Вы писали:
ГМ>-- ГМ>Устанавливайте драйвер только для одного user's account или для группы user's, используя secure driver installation. Удаляйте драйвер из другого user's account, в котором этот драйвер запустить нельзя. Тем самым Вы переносите проблему аутентификации uninstaller'a на Windows.
Возможно, я не совсем верно понял ваш ответ — гугл ничего не дает по словам "secure driver installation".
Если я ограничиваю работу драйвера группой пользователей, что помешает злоумышленнику создать другой аккаунт, под которым не будет работать мой драйвер, и стереть/модифицировать защищаемые файлы, точно так же, как это будет делать ГМ>uninstaller из другого user's account
?
Здравствуйте, BouratKo, Вы писали:
BK>Если я ограничиваю работу драйвера группой пользователей, что помешает злоумышленнику создать другой аккаунт, под которым не будет работать мой драйвер, и стереть/модифицировать защищаемые файлы, точно так же, как это будет делать ГМ>>uninstaller из другого user's account BK>?
Драйвер будет работать под всеми аккаунтами.
Разграничения на профили пользователя в ядре нет.
Здравствуйте, BouratKo,
BK>Если я ограничиваю работу драйвера группой пользователей, что помешает злоумышленнику создать другой аккаунт, под которым не будет работать мой драйвер, и стереть/модифицировать защищаемые файлы, точно так же, как это будет делать
uninstaller из другого user's account?
--
Это означает, что злоумышленник является администратором компьютера (или имеет соответствующие права). Такое в Вашей схеме работы компютера возможно?
Здравствуйте, BouratKo, Вы писали:
BK>Проблема в том, как сделать отключение драйвера, чтобы никто, кроме uninstaller, не мог его остановить?
Вот такие желания и заставляют радоваться, когда Microsoft добровольно-принудительно внедряет WHQL и прочую сертификацию для kernel-mode
Здравствуйте, b-3, Вы писали:
b-3>Вот такие желания и заставляют радоваться, когда Microsoft добровольно-принудительно внедряет WHQL и прочую сертификацию для kernel-mode...