Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2008, 09:34   #1
M.A.R.K
 
Аватар для M.A.R.K
 
Регистрация: 02.02.2008
Сообщений: 9
По умолчанию OpenProcessToken для процессов LOCAL SERVICE и NETWORK SERVICE

При обработке процессов (получение привилегий) все работает нормально, но если этот процесс от NETWORK SERVICE и LOCAL SERVICE то доступ блокируется.
1) Возможно моему процессу нехватает привилегии (какой?).
2) Возможно OpenProcessToken имеет неправильный флаг доступа, я использую TOKEN_QUERY = &H8.
Как считаете, что не так?
- Копирование лицензионного диска - это пиратство?
- Нет, т.к. пиратство подразумевает наличие: моря, корабля и абардажной команды.
M.A.R.K вне форума Ответить с цитированием
Старый 29.03.2008, 10:04   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,808
По умолчанию

1) попробуй включить для себя привилегию SeDebugPrivilege
2) TOKEN_ALL_ACCESS пробовал?
rpy3uH вне форума Ответить с цитированием
Старый 31.03.2008, 07:21   #3
M.A.R.K
 
Аватар для M.A.R.K
 
Регистрация: 02.02.2008
Сообщений: 9
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
1) попробуй включить для себя привилегию SeDebugPrivilege
2) TOKEN_ALL_ACCESS пробовал?
1) Сразу попробовал...
2) Естественно пробовал...

Как ты думаешь,что если добавить и подключить SeTcbPrivilege?
- Копирование лицензионного диска - это пиратство?
- Нет, т.к. пиратство подразумевает наличие: моря, корабля и абардажной команды.
M.A.R.K вне форума Ответить с цитированием
Старый 31.03.2008, 18:49   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,808
По умолчанию

ну попробуй
rpy3uH вне форума Ответить с цитированием
Старый 01.04.2008, 15:43   #5
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Если код ошибки = ERROR_ACCESS_DENITED, значит у этого токена выставлены такие разрешения, которые запрещают тебе его открывать. И сделать ты ничего не сможешь.

Последний раз редактировалось Ins; 01.04.2008 в 15:48.
Ins вне форума Ответить с цитированием
Старый 02.04.2008, 08:27   #6
M.A.R.K
 
Аватар для M.A.R.K
 
Регистрация: 02.02.2008
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Ins Посмотреть сообщение
Если код ошибки = ERROR_ACCESS_DENITED, значит у этого токена выставлены такие разрешения, которые запрещают тебе его открывать. И сделать ты ничего не сможешь.
Тогда, как быть с "LsaOpenPolicy" и "LsaAddAccountRights"?
- Копирование лицензионного диска - это пиратство?
- Нет, т.к. пиратство подразумевает наличие: моря, корабля и абардажной команды.
M.A.R.K вне форума Ответить с цитированием
Старый 02.04.2008, 12:23   #7
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Цитата:
Тогда, как быть с "LsaOpenPolicy" и "LsaAddAccountRights"?
А причем тут они? С помощью этих функций ты сможешь добавить привилегии учеткам, которые будут включены в маркер при следующем логоне. Но привилегии - это одно, их список ограниченный и назначение определенное, а разрешения, выставленные в DACL - это другое.
Тебе вообще слова маркер доступа (Token), дескриптор защиты (SD), список контроля доступа (DACL) что либо говорят? Если ты думаешь, что обладая нужными привилегиями, ты сможешь обходить все механизмы защиты, ты ошибаешься. Если не говорят, то рекомендую почитать Соломона с Руссиновичем, или на худой конец это:
http://www.delphikingdom.com/asp/vie...catalogid=1322

PS: Хотя, честно говоря, у меня есть одна мысль по поводу того, как все-таки будучи админом, можно заполучить хэндл нужного тебе маркера. Вот только не уверен, будет ли работать, но попробовать можно. Прежде, чем тебе эту мысль сказать - рекомендую почитать статью, ссылку на которую я привел выше, иначе ты мою мысль просто не поймешь.
Ins вне форума Ответить с цитированием
Старый 04.04.2008, 09:46   #8
M.A.R.K
 
Аватар для M.A.R.K
 
Регистрация: 02.02.2008
Сообщений: 9
По умолчанию

Ins, большое спасибо! статья просто замечательная...
Какая твоя мысль?
- Копирование лицензионного диска - это пиратство?
- Нет, т.к. пиратство подразумевает наличие: моря, корабля и абардажной команды.
M.A.R.K вне форума Ответить с цитированием
Старый 04.04.2008, 10:33   #9
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Ну а мысль - такая.
1. У администратора есть привилегия:
SE_TAKE_OWNERSHIP_NAME = 'SeTakeOwnershipPrivilege';
Правда она находится в отключенном состоянии (необходимо включать явно через AdjustTokenPrivilege). Эта привилегия позволяет ему стать владельцем (Owner) любого объекта. Зачем нам становиться владельцем? Об этом ниже.
2. Система защиты устроена таким образом, что не только DACL определяет кому и какой вид доступа предоставить. Ключевую роль также играет владелец. А именно - за владельцем всегда остается право менять разрешения на свое усмотрение. Таким образом, если доступ нам запрещен, но мы являемся владельцем - мы можем этот доступ себе включить.

Т.е. последовательность действий:
1. Включаем привилегию SE_TAKE_OWNERSHIP_NAME.
2. OpenProcessToken с маской доступа WRITE_OWNER. Нам будет разрешено из-за наличия привилегии
3. SetSecurityInfo (второй параметр - SE_KERNEL_OBJECT) - назначаем владельцем себя
4. Закрываем токен - CloseHandle
5. Снова открываем токен с маской WRITE_DAC. Нам будет разрешено, так как мы являемся владельцем.
6. Создаем DACL и добавляем туда ACE, дающий над доступ типа TOKEN_QUERY
7. SetSecurityInfo - назначаем объекту DACL
8. Закрываем токен - CloseHandle
9. Открываем токен с маской TOKEN_QUERY и работаем. Нам будет разрешено, так как это явно записано в DACL

Если получится (эх, не уверен я...) - маякнешь, интересно

Последний раз редактировалось Ins; 04.04.2008 в 10:47.
Ins вне форума Ответить с цитированием
Старый 16.04.2008, 07:51   #10
M.A.R.K
 
Аватар для M.A.R.K
 
Регистрация: 02.02.2008
Сообщений: 9
По умолчанию

Ins, мысль тоже замечательная...
Пробую реализовать...
- Копирование лицензионного диска - это пиратство?
- Нет, т.к. пиратство подразумевает наличие: моря, корабля и абардажной команды.
M.A.R.K вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
директивы в MASM - INVOKE, PROTO, LOCAL fermat_c Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 05.04.2008 17:25
И снова Service! Shurik Hacker Общие вопросы Delphi 5 27.01.2008 21:36
MSXML 4.0 Service Pack 2 Nevil Общие вопросы Delphi 1 16.09.2007 17:15