информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Шестой Perl превратится в Raku,... 
 Kik закрывается, все ушли на криптофронт 
 Sophos открывает Sandboxie 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] SetFileSecurity ???? :-(((( Help 08.11.05 18:24  
Автор: Tamas Статус: Member
Отредактировано 08.11.05 19:09  Количество правок: 2
<"чистая" ссылка>
народ у меня такая проблема...

мне нужно из под SYSTEM
в цикле выполнять SetFileSecurity для определённого фаила...
ну тобиш выставлят разрешения для фаила NT AUTHORITY\SYSTEM:F

всё бы хорошо но когда другой процесс меняет разрешение допустим на BUILTIN\Администраторы:F
SetFileSecurity начинает кричать типа доступ запрёщён ??????

если запустить всё это от имини Администратор
то всё работает как надо другой процесс меняет разрешение
а SetFileSecurity меняет его обратно... на NT AUTHORITY\SYSTEM:F

не смотря на то что в списке доступа нет BUILTIN\Администраторы:F
а только один NT AUTHORITY\SYSTEM:F

до пустим такой пример

от имени SYSTEM
c:\>cacls aaa.exe
c:\>cacls aaa.exe BUILTIN\Администраторы:F
NT AUTHORITY\SYSTEM:F
BUILTIN\Пользователи:R

c:\>cacls aaa.exe /g Администратор:F
разрешение поменялось....

теперь допустим
c:\>cacls aaa.exe /g SYSTEM:F
а вот теперь хрен на рыло доступ запрёщён ???




от имени Администратор
c:\>cacls aaa.exe
c:\>cacls aaa.exe BUILTIN\Администраторы:F
NT AUTHORITY\SYSTEM:F
BUILTIN\Пользователи:R

c:\>cacls aaa.exe /g SYSTEM:F
разрешение поменялось....

теперь допустим
c:\>cacls aaa.exe /g Администратор:F
а так работает.............

так что получается что Администратор имеет большие привелегии чем SYSTEM ?

пробовал получать привелегии SE_SECURITY_NAME
тоже не какой реакции тоже самое...

вот код
bool SetFileOnlyForSystem(unsigned char *FileName)
{
SID_IDENTIFIER_AUTHORITY IdentifierAuthority=SECURITY_NT_AUTHORITY;
SID *Sid;
ACL *Acl;
SECURITY_DESCRIPTOR *SecurityDescriptor;

if(FileName==NULL)return false;
if(!strlen(FileName))return false;

Acl=LocalAlloc(LPTR,sizeof(*Acl));
SecurityDescriptor=LocalAlloc(LPTR,sizeof(*SecurityDescriptor));

if(!AllocateAndInitializeSid(&IdentifierAuthority,1,SECURITY_LOCAL_SYSTEM_RID,0,0,0,0,0,0,0,&Sid))
{
FreeSid(Sid);
LocalFree(Acl);
LocalFree(SecurityDescriptor);
return false;
}

if(!InitializeAcl(Acl,(sizeof(*Acl)+sizeof(ACCESS_ALLOWED_ACE)+GetLengthSid(Sid)-sizeof(unsigned long)),ACL_REVISION))
{
FreeSid(Sid);
LocalFree(Acl);
LocalFree(SecurityDescriptor);
return false;
}

if(!AddAccessAllowedAce(Acl,ACL_REVISION,0xFFFFFFFF,Sid))
{
FreeSid(Sid);
LocalFree(Acl);
LocalFree(SecurityDescriptor);
return false;
}

if(!InitializeSecurityDescriptor(SecurityDescriptor,SECURITY_DESCRIPTOR_REVISION))
{
FreeSid(Sid);
LocalFree(Acl);
LocalFree(SecurityDescriptor);
return false;
}

if(!SetSecurityDescriptorDacl(SecurityDescriptor,true,Acl,true))
{
FreeSid(Sid);
LocalFree(Acl);
LocalFree(SecurityDescriptor);
return false;
}

if(!SetFileSecurity(FileName,DACL_SECURITY_INFORMATION,SecurityDescriptor))
{
FreeSid(Sid);
LocalFree(Acl);
LocalFree(SecurityDescriptor);
return false;
}

FreeSid(Sid);
LocalFree(Acl);
LocalFree(SecurityDescriptor);

return true;
}

ну а так я пробывал получать привелегии...(хотя тут не только SE_SECURITY_NAME)

bool GetPrivilegeForProcess(void *Handle)
{
void *hToken;
TOKEN_PRIVILEGES Luid0;
TOKEN_PRIVILEGES Luid1;
TOKEN_PRIVILEGES Luid2;

if(Handle==NULL)return false;

if(!OpenProcessToken(Handle,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))return false;

if(!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Luid0.Privileges[0].Luid))
{
CloseHandle(hToken);
return false;
}

if(!LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&Luid1.Privileges[0].Luid))
{
CloseHandle(hToken);
return false;
}

if(!LookupPrivilegeValue(NULL,SE_SECURITY_NAME,&Luid2.Privileges[0].Luid))
{
CloseHandle(hToken);
return false;
}

Luid0.PrivilegeCount=1;
Luid0.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
Luid1.PrivilegeCount=1;
Luid1.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
Luid2.PrivilegeCount=1;
Luid2.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;

if(!AdjustTokenPrivileges(hToken,false,&Luid0,0,(PTOKEN_PRIVILEGES)NULL,0))
{
return false;
}

if(!AdjustTokenPrivileges(hToken,false,&Luid1,0,(PTOKEN_PRIVILEGES)NULL,0))
{
CloseHandle(hToken);
return false;
}

if(!AdjustTokenPrivileges(hToken,false,&Luid2,0,(PTOKEN_PRIVILEGES)NULL,0))
{
CloseHandle(hToken);
return false;
}

CloseHandle(hToken);

return true;
}
кто оунер? 08.11.05 20:07  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка>
всё я понел по чему это проесходит... 08.11.05 20:59  
Автор: Tamas Статус: Member
<"чистая" ссылка>
1






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2019 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach