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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Все верно 20.05.09 20:00  Число просмотров: 2207
Автор: 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) @#$ится и репарснутое открытие уже происходит без них.
<operating systems>
filter driver, проблема с правами 20.05.09 11:19   [Den]
Автор: sasha_s Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Есть драйвер фильтр файловых операций. Он просто перенаправляет обращения к одной шаре на другую шару с другого компа. Но... Юзер всегда отхватывает "Access denied", т.е. на прямую доступ есть, а вот при перенаправлении уже нет.

Вот код перенаправления:

PFILE_OBJECT FileObject = Data->Iopb->TargetFileObject;

// allocate memory for file name
if(FileObject->FileName.MaximumLength < Real->Length) {
PWCHAR Buffer = (PWCHAR)ExAllocatePool(NonPagedPool, Real->MaximumLength);
if(NULL == Buffer) {
ERROR(ExAllocatePool, STATUS_INSUFFICIENT_RESOURCES);
return FLT_PREOP_SUCCESS_NO_CALLBACK;
}

ExFreePool(FileObject->FileName.Buffer);

FileObject->FileName.Buffer = Buffer;
FileObject->FileName.MaximumLength = Real->MaximumLength;
}

// update name in file
FileObject->FileName.Length = Real->Length;
memCopy(FileObject->FileName.Buffer, FileObject->FileName.MaximumLength, Real->Buffer, Real->Length);

FltSetCallbackDataDirty(Data);

// reparse information
Data->IoStatus.Status = STATUS_REPARSE;
Data->IoStatus.Information = IO_REPARSE;

Real -- это путь куда идет перенаправление.

Что это за такая хитрая ишью? Есть рецепты?
Драйвер запускается от имени системы? 20.05.09 16:17  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
Ну иначе как от "имени системы" драйвер и не запустится. Или... 20.05.09 16:29  
Автор: sasha_s Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Ну иначе как от "имени системы" драйвер и не запустится. Или я что-то путаю?
Я понимаю о чем вы хотите сказать, что мол раз драйвер запускается под 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.
//

ULONG Options;

USHORT POINTER_ALIGNMENT FileAttributes;
USHORT ShareAccess;
ULONG POINTER_ALIGNMENT EaLength;

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 <Denis> Статус: The Elderman
<"чистая" ссылка>
Для не-домена этого и сделать то нельзя 26.05.09 07:07  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Вообще, я писал подобный редиректор, но не минифильтр, а обычный фильтр. И у меня тоже была проблема с access denied, вот только когда клиент уже установил сессию с сервером все проходило на ура.
1




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


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