Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Помогите с использованием ACL security


Автор: xAnejl 16.12.2004, 15:22
Я использую ACL, не содержащую ни одного элемента защиты, т.е. запрещающая доступ к объекту всем, для запуска нового процесса. Но несмотря ни на что, имея права админа можно убить этот процесс. Известно, что Антивирус Касперского и ZoneAlarm создают процесс, который нельзя убить даже имея права админа! Какую ACL использовать, чтобы получить такой эффект?

Автор: Albinos_x 17.12.2004, 18:56
Наверно его будет проще спрятать

Автор: _hunter 18.12.2004, 14:14
касторский по другому принципу работает
аларма нет -- проверить не могу ( но IMHO тоже по другому работает )

Автор: Girder 18.12.2004, 22:53
Енто делается через драйвер... smile Правится SST, ITD на уровне ядра... smile
Более простые защиты делают енто через... smile ..., т.е. через внедрение.

PS:И те и другие защиты... как правило пропускают... защиту потоков... smile . Как следствии... можно прибить главный поток процесса... и программа "успешно" закроется.

Цитата(xAnejl @ 16.12.2004, 15:22)
Какую ACL использовать, чтобы получить такой эффект?
ХЗ smile

Комодератор: Перенесено из раздела Delphi: WinAPI

Автор: NiJazz 19.12.2004, 11:18
Girder
ACL - неотъемлимая часть мира WinAPI (а не программный продукт), поэтому что эта тема делает в данном разделе?
xAnejl
Попробуй делать не пустой ACL. То есть InitializeAcl -> AddAccessDeniedAce и т.д.
В MSDN хорошо написано, сколько нужно выделять памяти для ACL. Если памяти "недодать", то работать не будет.
Добавлено @ 11:18
Модератор: Перенесите тему обратно!

Автор: Girder 19.12.2004, 17:20
NiJazz насколько я помню... то что он хочет, с помощью ACL не сделаеш(По крайне мере... надежно не получится). Но точно знаю... что енто можно... сделать с использованием некоторых программ защит.

По ентому я и перенес сюда.

PS:Возможно, я не правильно понял проблемму xAnejl smile .

Автор: NiJazz 19.12.2004, 17:30
Функция CreateProcess принимает указатель на структуру "атрибуты безопасности" (SECURITY_ATTRIBUTES). Она, в свою очередь, включает в себя дескриптор безопасности. А этот уже включает в себя ACL (Access Control List).
Так что думаю, что нужно перенести тему обратно в Delphi.

Автор: xAnejl 19.12.2004, 21:20
Цитата(_hunter @ 18.12.2004, 14:14)
касторский по другому принципу работает
аларма нет -- проверить не могу ( но IMHO тоже по другому работает )


пример неудачный получилса, он действительно либо через драйвер, либо через хук апи ф-цый (я так делал вместо ACL)
попробуй прогу ClubTimer Client (когда как сервис запущен используя ACL блокирует доступ к убийству процесса {p.s. нужно сначало клавиатурный хук снять чтобы попробовать убить!} )


Цитата(Girder @ 18.12.2004, 22:53)
PS:И те и другие защиты... как правило пропускают... защиту потоков...  . Как следствии... можно прибить главный поток процесса... и программа "успешно" закроется.


Да можно, но если я применю ACL и к потоку, то тогда только по [X] закроеш

>> Комодератор: Перенесено из раздела Delphi: WinAPI
Все таки ACL к WinApi относитса, и там на этот вопрос могут ответить спецыалисты, а здесь...

Цитата(NiJazz @ 19.12.2004, 11:18)
Попробуй делать не пустой ACL. То есть InitializeAcl -> AddAccessDeniedAce и т.д.
В MSDN хорошо написано, сколько нужно выделять памяти для ACL. Если памяти "недодать", то работать не будет.


пробовал но не получилось... (может памяти недодал, попробую ещо раз но думаю что тоже не пойдьот, в справке написано что пустой ACL эквивалентний ACL с закрытым для всех доступом)

Цитата(Girder @ 19.12.2004, 17:20)
NiJazz насколько я помню... то что он хочет, с помощью ACL не сделаеш(По крайне мере... надежно не получится). Но точно знаю... что енто можно... сделать с использованием некоторых программ защит.


сделаеш, но почемуто работает только на пользователях с ограничеными правами. Вот и прошу помоч что исправить нужно.
А какие это программы?

Цитата(NiJazz @ 19.12.2004, 17:30)
Функция CreateProcess принимает указатель на структуру "атрибуты безопасности" (SECURITY_ATTRIBUTES). Она, в свою очередь, включает в себя дескриптор безопасности. А этот уже включает в себя ACL (Access Control List).
Так что думаю, что нужно перенести тему обратно в Delphi.


Полностю согласен, ведь прогу пишем, а не чужое программное обеспечение юзаем!

Автор: NiJazz 20.12.2004, 10:27
Цитата
пробовал но не получилось... (может памяти недодал, попробую ещо раз но думаю что тоже не пойдьот, в справке написано что пустой ACL эквивалентний ACL с закрытым для всех доступом)

Для всех, кроме админа.

Автор: NiJazz 20.12.2004, 10:51
Допустим, что хочешь запретить доступ след. группам: Админ, Пользователь, Опытный ползователь и Гость. Значит, у тебя 4 SID и, соответственно, 4 вызова AddAccessDeniedAce.
Код

const  NUM_OF_ACES =  4;

cbAcl := sizeof(ACL) +  ((sizeof(ACCESS_ALLOWED_ACE) - sizeof(DWORD)) * NUM_OF_ACES);
for i:=1 to 4 do
 cbAcl := cbAcl + GetLengthSid(Sids[i]);

Теперь инициализируешь ACL с таким размером.
Модератор: Эту тему когда-нибудь перенесут на своё место?!

Автор: NiJazz 20.12.2004, 17:10
Вот теперь я спокоен. smile

Автор: NiJazz 21.12.2004, 10:33
Код

SID_IDENTIFIER_AUTHORITY SecurityNTAuthority = SECURITY_NT_AUTHORITY;

AllocateAndInitializeSid(&SecurityNTAuthority, 2,
           SECURITY_BUILTIN_DOMAIN_RID,
           DOMAIN_ALIAS_RID_ADMINS,
           0, 0, 0, 0, 0, 0,
         &pSid);


Создание SID группы админов. См. MSDN (Well-known SIDs).
Это на C++. Переделай под Delphi.

Автор: RA 1.1.2005, 17:10
www.madshi.net

Автор: xAnejl 2.1.2005, 19:34
разве без Mad Shi обойтись нельзя?

smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)