Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Защита


Чапаев ©   (2007-02-24 09:04:00) 

Создаю дескриптор защиты ConvertStringSecurityDescriptorToSecurityDescriptor(), преобразую его к абсолютному MakeAbsoluteSD(), устанавливаю права SetSecurityInfo()на процесс (и/или его основной поток). В качестве строки описания дескриптора задаю O:SYG:SYD:(A;;GA;;;SY)(D;;GA;;;BA). Все функции отрабатывают успешно. Но администратор по-прежнему может завершить процесс. Почему так?


Игорь Шевченко   (2007-02-25 22:24:00) [1]

совсем забыл, у админа может быть вклчена по умелчанию привилегия отладки. С этой привилегией права недействительны. Кроме того, в случае XP процесс может быть открыт с опцией WRITE_DACL для того, чтобы изменить его дексриптор безопасности, и после этого изменения процесс уже убивается вполне легально. Всем этим занимается Task Manager


Чапаев   (2007-02-25 10:52:00) [2]

Нету!


Игорь Шевченко   (2007-02-25 10:10:00) [3]

А унаследованных прав в ACL случаем нету ?


Чапаев   (2007-02-25 08:33:00) [4]

Скачал Process Explorer 10.2. Всё страньше и страньше, как говорила Алиса. В Security|Permissions|Advanced -- всё как было задумано: запретить - администраторы - полный доступ; разрешить - SYSTEM - полный доступ.

Даже когда средствами Process Explorer'а явно запрещаю доступ всем, через диспетчер задач можно завершить.


Чапаев   (2007-02-25 08:12:00) [5]

> [5] Игорь Шевченко ©   (24.02.07 22:11)
Хм... В имеющейся у меня версии 8.41 такого не вижу... Буду искать поновее.


Игорь Шевченко   (2007-02-24 22:11:00) [6]

Чапаев ©   (24.02.07 21:55) [3]

Ну вот, Built-in admins имеют, значит есть ACE, в котором есть SID админский. Я бы посмотрел полностью ACL (через тот же Process Explorer на вкладке Security|Permissions|Advanced - оно там все ACE показывает.


Чапаев   (2007-02-24 22:00:00) [7]

Ага... У главного потока DACL именно такой, как я назначил.


Чапаев   (2007-02-24 21:55:00) [8]

> А какой дескриптор получается в итоге ? (Точнее, какой ACL)
> ? (глянуть можно Process Explorer'ом)
Если я правильно понял про "глянуть Process Explorer'ом" (Properties -> Security), доступ имеют Built-in admins, Authenticated users и Everyone. Хотя GetSecurityInfo() выдаёт, что DACL имеено тот, какой я назначал.

> [2] Eraser ©   (24.02.07 21:13)
Буду пробовать...


Eraser   (2007-02-24 21:13:00) [9]

> [0] Чапаев ©   (24.02.07 09:04)

не понял, зачем вот это

> преобразую его к абсолютному MakeAbsoluteSD


Если нужно установить права для процесса, я бы действовал следующим образом:

1. Заполняем массив структур EXPLICIT_ACCESS, для кажной устанавливаем нужный SID (AllocateAndInitializeSid), нужные права доступа и т.д.
2. Содаем и заполняем DACL ф-цией SetEntriesInAcl, передав ей массив структур EXPLICIT_ACCESS.
3. Выполняем SetSecurityInfo с DACL_SECURITY_INFORMATION (или PROTECTED_DACL_SECURITY_INFORMATION, там смотря по обстоятельствам), передав ф-ции полученный ранее DACL.


Игорь Шевченко   (2007-02-24 20:06:00) [10]


> Но администратор по-прежнему может завершить процесс. Почему
> так?


А какой дескриптор получается в итоге ? (Точнее, какой ACL) ? (глянуть можно Process Explorer'ом)


Наверх

Титульная страница Поиск, карта сайта Написать письмо