информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetВсе любят медСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[ntddk]почему так происходит? (ntcreatefile) 10.07.02 13:52  Число просмотров: 1145
Автор: NeuronViking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> могу предположить что т.к. файл открывается редиректором то
> он использует не вызов Zw/NtCreateFile а посылку
> соответствующего IRP нужному устройству, или вызывает
> IoCreateFile.
>
> cb.

Есть у меня предположение что система при получении сетевого запроса на открытие/чтение файла от редиректора клиента не использует "по назначению" Zw/NtCreateFile(тогда нафиг их вообще использовать), а использет связку TDI(сервера) -> FSD(сервера) судя по протоколу CIFS. Т.е. при получении сетевого запроса от клиента транспорт TDI напрямую вызывает функции FSD(и соответственно не использует Zw/NtCreateFile). Либо другая возможность - TDI использует ИРПы, имхо это маловероятно.
Единственная непонятность - нафига при этом система использует вызовы Zw/NtCreateFile ?!!
Наверное я что-то где-то упустил.... все это весьма странно :(

Забыл еще добавить, что та же самая петрушка происходить при вызове Zw/NtReadFile, Zw/NtWriteFile ....
<programming>
[ntddk]почему так происходит? (ntcreatefile) 10.07.02 09:33  
Автор: NeuronViking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Перехватываю вызовы NtCreateFile и при необходимости блокирую их. Если вызовы локальные(т.е. приложение и файл на той же машине) то все ок, но если скажем расшарена папка и удаленный клиент открывает файл то несмотря на болкировку вызова NtCreateFile - файл открывается. В этом случае NtCreateFile вызывается, я вижу что за файл и что его пытается открыть удаленный клиент, я просто возвращаю управление из функции !не! вызывая оригинальную NtCreateFile, НО! пользователь серавно может открыть этот файл! Че за нафиг? Локально все замечательно работает, а вот с удаленными клиентами что-то непонятное творится.
Неужели для открытия используются какие-то другие функции?!

[ntddk]почему так происходит? (ntcreatefile) 10.07.02 10:17  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
могу предположить что т.к. файл открывается редиректором то он использует не вызов Zw/NtCreateFile а посылку соответствующего IRP нужному устройству, или вызывает IoCreateFile.

cb.
[ntddk]почему так происходит? (ntcreatefile) 10.07.02 13:52  
Автор: NeuronViking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> могу предположить что т.к. файл открывается редиректором то
> он использует не вызов Zw/NtCreateFile а посылку
> соответствующего IRP нужному устройству, или вызывает
> IoCreateFile.
>
> cb.

Есть у меня предположение что система при получении сетевого запроса на открытие/чтение файла от редиректора клиента не использует "по назначению" Zw/NtCreateFile(тогда нафиг их вообще использовать), а использет связку TDI(сервера) -> FSD(сервера) судя по протоколу CIFS. Т.е. при получении сетевого запроса от клиента транспорт TDI напрямую вызывает функции FSD(и соответственно не использует Zw/NtCreateFile). Либо другая возможность - TDI использует ИРПы, имхо это маловероятно.
Единственная непонятность - нафига при этом система использует вызовы Zw/NtCreateFile ?!!
Наверное я что-то где-то упустил.... все это весьма странно :(

Забыл еще добавить, что та же самая петрушка происходить при вызове Zw/NtReadFile, Zw/NtWriteFile ....
[ntddk]почему так происходит? (ntcreatefile) 10.07.02 16:42  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
> Есть у меня предположение что система при получении
> сетевого запроса на открытие/чтение файла от редиректора
> клиента .... использет связку
> TDI(сервера) -> FSD(сервера) судя по протоколу CIFS.
> Т.е. при получении сетевого запроса от клиента транспорт
> TDI напрямую вызывает функции FSD(и соответственно не
> использует Zw/NtCreateFile).

Это маловероятно, т.к. если бы это было так то filemon загруженный после старта tdi & FS drivers не перехватывал бы IRP на открытие файла. А filemon их прекрасно ловит (проверил пару часов назад)

>Либо другая возможность - TDI
> использует ИРПы, имхо это маловероятно.

вот это как раз наиболее вероятно...

> Единственная непонятность - нафига при этом система
> использует вызовы Zw/NtCreateFile ?!!

что значит использует? тебе приходит вызов Zw/NtCreateFile с тем именем файла который пытаешься закрыть?

> Забыл еще добавить, что та же самая петрушка происходить
> при вызове Zw/NtReadFile, Zw/NtWriteFile ....

странно все это... однако факт остается фактом - при перехвате доступа к FS через IoAttachDeviceToDeviceStack/IoAttachDevice или путем подмены обработчиков в DRIVER_OBJECT ты можешь контролировать все запросы.... (у меня это работает)

cb.
[ntddk]почему так происходит? (ntcreatefile) 10.07.02 17:02  
Автор: NeuronViking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Т.е. при получении сетевого запроса от клиента
> транспорт
> > TDI напрямую вызывает функции FSD(и соответственно не
> > использует Zw/NtCreateFile).
>
> Это маловероятно, т.к. если бы это было так то filemon
> загруженный после старта tdi & FS drivers не перехватывал
> бы IRP на открытие файла. А filemon их прекрасно ловит
> (проверил пару часов назад)

Да, filemon перехватывает ИРПы, согласен.

> >Либо другая возможность - TDI
> > использует ИРПы, имхо это маловероятно.
>
> вот это как раз наиболее вероятно...
Я уже начинаю в это верить...

> > Единственная непонятность - нафига при этом система
> > использует вызовы Zw/NtCreateFile ?!!
>
> что значит использует? тебе приходит вызов Zw/NtCreateFile
> с тем именем файла который пытаешься закрыть?
Да, мне прриходят эти вызовы когда удаленный клиент открывает файл.
Я их глушу(не вызываю оригинальную функцию), но тем не менее файл клиентом серавно открывается. То же самое для функций чтения/записи.

> странно все это... однако факт остается фактом - при
> перехвате доступа к FS через
> IoAttachDeviceToDeviceStack/IoAttachDevice или путем
> подмены обработчиков в DRIVER_OBJECT ты можешь
> контролировать все запросы.... (у меня это работает)

так и будет работать ибо ниже ИРПов ничего нету ;) ... просто не хочется мне с ними трахаться... а видно все таки придется :(
1




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


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