Re: удаление драйвера
От: Геннадий Майко США  
Дата: 28.10.11 10:05
Оценка: 6 (1)
Здравствуйте, BouratKo,

BK>Проблема в том, как сделать отключение драйвера, чтобы никто, кроме uninstaller, не мог его остановить?

BK>Каким образом драйвер может убедиться, что его останавливает именно uninstaller, а не злоумышленник?
--
Устанавливайте драйвер только для одного user's account или для группы user's, используя secure driver installation. Удаляйте драйвер из другого user's account, в котором этот драйвер запустить нельзя. Тем самым Вы переносите проблему аутентификации uninstaller'a на Windows.

C уважением,
Геннадий Майко.
Re: удаление драйвера
От: x64 Россия  
Дата: 28.10.11 14:45
Оценка: 6 (1)
BK>Проблема в том, как сделать отключение драйвера, чтобы никто, кроме uninstaller, не мог его остановить?
BK>Каким образом драйвер может убедиться, что его останавливает именно uninstaller, а не злоумышленник?

Если злоумышленник имеет админские права, то никак. В противном случае можно создать специальный управляющий девайс с помощью IoCreateDeviceSecure() и указать дескриптор безопасности такой, который не позволил бы его открытие без админских прав. Также можно воспользоваться функцией ObSetSecurityObjectByPointer() чтобы установить дескриптор безопасности уже существующего девайса:

NTSTATUS
ObSetSecurityObjectByPointer (
    IN PVOID Object,
    IN SECURITY_INFORMATION SecurityInformation,
    IN PSECURITY_DESCRIPTOR SecurityDescriptor);


Если всё-таки очень хочется сделать защиту от админа, то я обычно делаю так: сохраняю в драйвере адрес объекта процесса, который первым открыл CDO (это может быть служба, например), и затем проверяю, что все последующие IOCTL-запросы исходят именно от него. Разумеется, в этом случае злоумышленник может внедрить свой код в управляющий процесс, но на Vista и выше ему для этого придётся обойти UAC, а во-вторых, а.п. процесса можно защитить в ядре (об этом здесь
Автор: x64
Дата: 27.10.11
).
удаление драйвера
От: BouratKo  
Дата: 28.10.11 09:10
Оценка:
Здравствуйте.
Есть приложение, состоящее из:
  • GUI
  • драйвер, следящий за целостностью файлов, относящихся к GUI, и себя тоже защищающий
  • правила защиты, на основании которых драйвер осуществляет защиту.

    В правилах защиты указан полный путь к подлежащим защите файлам и веткам.

    Есть инсталлер, который:
  • устанавливает файлы, относящиеся к GUI
  • формирует правила защиты
  • устанавливает и запускает драйвер
  • запускает GUI.

    Чего нет, так это деинсталлера, который бы:
  • останавливал драйвер
  • останавливал GUI
  • удалял файлы GUI и драйвера

    Проблема в том, как сделать отключение драйвера, чтобы никто, кроме uninstaller, не мог его остановить?
    Каким образом драйвер может убедиться, что его останавливает именно uninstaller, а не злоумышленник?
  • Re[2]: удаление драйвера
    От: BouratKo  
    Дата: 28.10.11 12:39
    Оценка:
    Здравствуйте, Геннадий Майко, Вы писали:

    ГМ>--

    ГМ>Устанавливайте драйвер только для одного user's account или для группы user's, используя secure driver installation. Удаляйте драйвер из другого user's account, в котором этот драйвер запустить нельзя. Тем самым Вы переносите проблему аутентификации uninstaller'a на Windows.

    Возможно, я не совсем верно понял ваш ответ — гугл ничего не дает по словам "secure driver installation".
    Если я ограничиваю работу драйвера группой пользователей, что помешает злоумышленнику создать другой аккаунт, под которым не будет работать мой драйвер, и стереть/модифицировать защищаемые файлы, точно так же, как это будет делать
    ГМ>uninstaller из другого user's account
    ?
    Re[3]: удаление драйвера
    От: BouratKo  
    Дата: 28.10.11 12:45
    Оценка:
    BK>Возможно, я не совсем верно понял ваш ответ — гугл ничего не дает по словам "secure driver installation".

    Наверно, имелось в виду "Secure Device Installation". Читаю...
    Re[3]: удаление драйвера
    От: okman Беларусь https://searchinform.ru/
    Дата: 28.10.11 12:55
    Оценка:
    Здравствуйте, BouratKo, Вы писали:

    BK>Если я ограничиваю работу драйвера группой пользователей, что помешает злоумышленнику создать другой аккаунт, под которым не будет работать мой драйвер, и стереть/модифицировать защищаемые файлы, точно так же, как это будет делать

    ГМ>>uninstaller из другого user's account
    BK>?

    Драйвер будет работать под всеми аккаунтами.
    Разграничения на профили пользователя в ядре нет.
    Re[3]: удаление драйвера
    От: Геннадий Майко США  
    Дата: 28.10.11 13:12
    Оценка:
    Здравствуйте, BouratKo,

    BK>Если я ограничиваю работу драйвера группой пользователей, что помешает злоумышленнику создать другой аккаунт, под которым не будет работать мой драйвер, и стереть/модифицировать защищаемые файлы, точно так же, как это будет делать

    uninstaller из другого user's account?
    --
    Это означает, что злоумышленник является администратором компьютера (или имеет соответствующие права). Такое в Вашей схеме работы компютера возможно?

    C уважением,
    Геннадий Майко.
    Re: удаление драйвера
    От: b-3 Россия  
    Дата: 29.10.11 14:56
    Оценка:
    Здравствуйте, BouratKo, Вы писали:

    BK>Проблема в том, как сделать отключение драйвера, чтобы никто, кроме uninstaller, не мог его остановить?

    Вот такие желания и заставляют радоваться, когда Microsoft добровольно-принудительно внедряет WHQL и прочую сертификацию для kernel-mode
    Забанен с формулировкой "клинический дисидент".
    Re[2]: удаление драйвера
    От: okman Беларусь https://searchinform.ru/
    Дата: 29.10.11 15:08
    Оценка:
    Здравствуйте, b-3, Вы писали:

    b-3>Вот такие желания и заставляют радоваться, когда Microsoft добровольно-принудительно внедряет WHQL и прочую сертификацию для kernel-mode...


    ...не противодействуя при этом реальным угрозам
    Автор: roman313
    Дата: 27.09.11
    .
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.