Вот это странно. Еще один тест: гостевая шара (пускающая без...25.05.09 22:04 Число просмотров: 2709 Автор: amirul <Serge> Статус: The Elderman Отредактировано 25.05.09 22:06 Количество правок: 1
> Фуф, вот тока руки дошли проверить советы... > > > Есть вопрос: access denied случается > > даже если доступ к шаре (реальной) уже получен (net > use > > \\server\share, или просто зайти туда напрямую)? > > Отлуп происходит полюбому. Вот это странно. Еще один тест: гостевая шара (пускающая без пароля) - пускает или нет.
> EaBuffer, EaLength -- это они? Они
> А что в EaBuffer лежит? Я пока рою сайт самого MS, пока > ничего путного не нашел... Там пары ключ (текстовый)/значение. Можно передавать файловой системе любую метаинформацию. NTFS ее сохраняет и в дальнейшем можно вычитывать. Ну а SMB использует эти атрибуты для авторизации, насколько я помню. Для твоих целей нужно просто сравнить содержимое eabuffer-а до и после репарса. Если там инфа теряется, то для авторизации на стороне сервера просто нет данных
Есть драйвер фильтр файловых операций. Он просто перенаправляет обращения к одной шаре на другую шару с другого компа. Но... Юзер всегда отхватывает "Access denied", т.е. на прямую доступ есть, а вот при перенаправлении уже нет.
Ну иначе как от "имени системы" драйвер и не запустится. Или я что-то путаю?
Я понимаю о чем вы хотите сказать, что мол раз драйвер запускается под SYSTEM аккаунтом, то и права он имеет соотв и все его запросы тоже, но в запросе (запрос на дисковую операцию) есть поле типа
IO_SECURITY_CONTEXT SecurityContext
так вот в нем есть токен и этот токен описывает именно того юзера который стучится к этой шаре. И этот юзер имеет нужные права.
Вот и получаем:
приходит запрос с нужными правами, в запросе подменяеться только путь и возвращается нужный код для репарза, но далее "аксес денайд". Хотя после репарза в запросе SecurityContext не отличается от изначального.
Все верно20.05.09 20:00 Автор: amirul <Serge> Статус: The Elderman
> Ну иначе как от "имени системы" драйвер и не запустится. > Или я что-то путаю? Ничего не путаешь. Есть вопрос: access denied случается даже если доступ к шаре (реальной) уже получен (net use \\server\share, или просто зайти туда напрямую)?
> Я понимаю о чем вы хотите сказать, что мол раз драйвер > запускается под SYSTEM аккаунтом, то и права он имеет соотв > и все его запросы тоже, но в запросе (запрос на дисковую > операцию) есть поле типа > IO_SECURITY_CONTEXT SecurityContext > так вот в нем есть токен и этот токен описывает именно того > юзера который стучится к этой шаре. И этот юзер имеет > нужные права. С редиректорами все чуть не так, насколько я помню. То есть совершенно по фигу какие права дала ЛОКАЛЬНАЯ система этому запросу, важно то, что об этом думает удаленная (собственно сервер).
> Вот и получаем: > приходит запрос с нужными правами, в запросе подменяеться > только путь и возвращается нужный код для репарза, но далее > "аксес денайд". Хотя после репарза в запросе > SecurityContext не отличается от изначального. В данном случае гораздо важнее смотреть на экстендед атрибуты (собственно SystemBuffer и Parameters.Create.EaLength), в которых передается инфа, необходимая СЕРВЕРУ для авторизации данного клиента. К сожалению с минифильтрами не работал никогда и понятия не имею как они реализуют репарс, но на уровне object manager-а open packet (с инфой об этих самых ea) @#$ится и репарснутое открытие уже происходит без них.
Фуф, вот тока руки дошли проверить советы...25.05.09 16:36 Автор: sasha_s Статус: Незарегистрированный пользователь
> Есть вопрос: access denied случается > даже если доступ к шаре (реальной) уже получен (net use > \\server\share, или просто зайти туда напрямую)?
Отлуп происходит полюбому.
> С редиректорами все чуть не так, насколько я помню. То есть > совершенно по фигу какие права дала ЛОКАЛЬНАЯ система этому > запросу, важно то, что об этом думает удаленная (собственно > сервер).
Это ясно. Но после репарза что-то происходит и запросс уже совсем непонятно от чьего имени идет. Скорее всего от систем...
> В данном случае гораздо важнее смотреть на экстендед > атрибуты (собственно SystemBuffer и > Parameters.Create.EaLength), в которых передается инфа, > необходимая СЕРВЕРУ для авторизации данного клиента. К > сожалению с минифильтрами не работал никогда и понятия не > имею как они реализуют репарс, но на уровне object > manager-а open packet (с инфой об этих самых ea) @#$ится и > репарснутое открытие уже происходит без них.
Так, я немного не в теме что в этих полях храниться.
typedef union _FLT_PARAMETERS {
//
// IRP_MJ_CREATE
//
struct {
PIO_SECURITY_CONTEXT SecurityContext;
//
// The low 24 bits contains CreateOptions flag values.
// The high 8 bits contains the CreateDisposition values.
//
PVOID EaBuffer; //Not in IO_STACK_LOCATION parameters list
LARGE_INTEGER AllocationSize; //Not in IO_STACK_LOCATION parameters list
} Create;
EaBuffer, EaLength -- это они?
А что в EaBuffer лежит? Я пока рою сайт самого MS, пока ничего путного не нашел...
Вот это странно. Еще один тест: гостевая шара (пускающая без...25.05.09 22:04 Автор: amirul <Serge> Статус: The Elderman Отредактировано 25.05.09 22:06 Количество правок: 1
> Фуф, вот тока руки дошли проверить советы... > > > Есть вопрос: access denied случается > > даже если доступ к шаре (реальной) уже получен (net > use > > \\server\share, или просто зайти туда напрямую)? > > Отлуп происходит полюбому. Вот это странно. Еще один тест: гостевая шара (пускающая без пароля) - пускает или нет.
> EaBuffer, EaLength -- это они? Они
> А что в EaBuffer лежит? Я пока рою сайт самого MS, пока > ничего путного не нашел... Там пары ключ (текстовый)/значение. Можно передавать файловой системе любую метаинформацию. NTFS ее сохраняет и в дальнейшем можно вычитывать. Ну а SMB использует эти атрибуты для авторизации, насколько я помню. Для твоих целей нужно просто сравнить содержимое eabuffer-а до и после репарса. Если там инфа теряется, то для авторизации на стороне сервера просто нет данных
Может я ламер, но как сделать шару именно гостевой?29.05.09 19:42 Автор: sasha_s Статус: Незарегистрированный пользователь
> > Отлуп происходит полюбому. > Вот это странно. Еще один тест: гостевая шара (пускающая > без пароля) - пускает или нет.
Может я ламер, но как сделать шару именно гостевой?
> Там пары ключ (текстовый)/значение. Можно передавать > файловой системе любую метаинформацию. NTFS ее сохраняет и > в дальнейшем можно вычитывать. Ну а SMB использует эти > атрибуты для авторизации, насколько я помню. Для твоих > целей нужно просто сравнить содержимое eabuffer-а до и > после репарса. Если там инфа теряется, то для авторизации > на стороне сервера просто нет данных
Хм...
Я в непонятках. Посмотрел до репарза: в этих полях NULL.
Data->Iopb->Parameters.Create.EaBuffer -- NULL
Data->Iopb->Parameters.Create.EaLength -- 0
где Data -- PFLT_CALLBACK_DATA Data
Я вообще правильно смотрю?
Я делал это давно - помню только, что через secpol.msc ->...30.05.09 01:57 Автор: amirul <Serge> Статус: The Elderman
> Может я ламер, но как сделать шару именно гостевой? Я делал это давно - помню только, что через secpol.msc -> Local Policies.
> Хм... > Я в непонятках. Посмотрел до репарза: в этих полях NULL. > Data->Iopb->Parameters.Create.EaBuffer -- NULL > Data->Iopb->Parameters.Create.EaLength -- 0 > где Data -- PFLT_CALLBACK_DATA Data > Я вообще правильно смотрю? Вроде правильно. Если бы по уже установленным сессиям ходило нормально, я бы был почти уверен, что дело в этом. А так даже не знаю.
Полагаю, что нужно получить контекст безопасности с целевой системы, на которую делается редирект.26.05.09 01:40 Автор: Den <Денис Т.> Статус: The Elderman
Вообще, я писал подобный редиректор, но не минифильтр, а обычный фильтр. И у меня тоже была проблема с access denied, вот только когда клиент уже установил сессию с сервером все проходило на ура.