Конференция "WinAPI" » перехват копирования [WinXP]
 
  • mrAlert (18.12.07 14:29) [0]
    Здравствуйте.
    пишу службу для перехвата копирования любых файлов в windows
    ставил хуки на wm_copy,wm_copydata - не то.
    подскажите пожайлуста, как реализовать перехват копирования
  • Сергей М. © (18.12.07 14:40) [1]

    > как реализовать перехват копирования


    Для начала поясни, оно тебе зачем ?
  • mrAlert (18.12.07 14:51) [2]
    чисто админские функции: кто, Что и куда (флешка) копирует
  • Сергей М. © (18.12.07 14:56) [3]

    > чисто админские функции


    Чисто дурацкие это функции.

    В пределах определенных админом локальных и групповых политик безопасности юзер вправе копировать все что захочет и куда захочет.
  • mrAlert (18.12.07 15:01) [4]
    не спорю на счет дурацких, но проконтралировать вынос файлов надо
  • Сергей М. © (18.12.07 15:07) [5]
    А причем здесь тогда copy ?
    Перехватывать нужно ф-ции создания/записи файла.
  • mrAlert (18.12.07 15:17) [6]
    в процессе изучения темы, я так понял:
    сначала вызывается ф-я копирования, а потом она вызывает ф-ю создания (а если замена файла?), потом read, write и так в процессе копирования большого файла много раз.
    при одновременном копировании не могу отследить где какое копирование.
    т.к хэндлы (create,read,write)постоянно меняются -это я понял с пом. проги FILMON.
    а вот отследить вызов ф-ии копирования не знаю как
  • Сергей М. © (18.12.07 15:19) [7]

    > сначала вызывается ф-я копирования


    Это какая же ?
  • Riply © (18.12.07 15:24) [8]
    > [4] mrAlert   (18.12.07 15:01)
    > не спорю на счет дурацких, но проконтралировать вынос файлов надо

    Путем перехвата неимоверно сложно.
    Я даже не берусь сосчитать сколько разных ф-ий придется перехватывать :)

    P.S. В случае драйвера не знаю.
  • Сергей М. © (18.12.07 15:28) [9]

    > Riply ©   (18.12.07 15:24) [8]


    > P.S. В случае драйвера не знаю.


    Драйвер уж точно этим не занимается.

    Его задача ввод/вывод, а уж что там юзер или система "вводит-выводит, то драйверу строго фиолетово)
  • Riply © (18.12.07 15:33) [10]
    > [9] Сергей М. ©   (18.12.07 15:28)
    > Драйвер уж точно этим не занимается.

    Я сделала эту оговорку, только потому, что я с драйверами "на Вы" :)
  • Сергей М. © (18.12.07 15:37) [11]

    > Riply ©   (18.12.07 15:33) [10]


    Короче, упомянула всуе)
  • Riply © (18.12.07 15:44) [12]
    > [11] Сергей М. ©   (18.12.07 15:37)
    > Короче, упомянула всуе)

    Нет. Не хотела на свой пост услышать возражения типа:
    "При помощи драйвера это легко реализуется" :)
  • slow!alfamoon!com (18.12.07 17:25) [13]
    Конечно, для контроля копирования файлов (кроме копирования с шар) вполне достаточно перехвата NtCreateFile,NtReadFile,NtWriteFile. Сделать это можно как в ядре (править экспорт ядра, возможно какие-то функции не экспортируемые), так и в юзермоде.
    Но надо понимать, что при таком контроле даже из юзермода вполне спокойно можно скопировать файлы как минимум двумя способами
  • J_f_S (19.12.07 02:47) [14]
    Перехват фукнций ядра, причем как раз на примере  NtOpenFile и NtCreateFile.
    http://wasm.ru/article.php?article=tracknapi
  • Slym © (19.12.07 04:10) [15]
  • mrAlert (19.12.07 11:58) [16]
    я думаю, что можно обойтись без ломания ядра. прога filmon ничего не правит, но отслеживает почти все события в системе на winapi.
    что-то слышал про создание com-сервера для icopyhook, но не смог разобраться.
  • mrAlert (19.12.07 14:00) [17]
    еще разбирался с программой filmon, что такое irp_mj_query_information, irp_mj_create ... и т.д.
    они обязательно присутствуют при операциях копирования
  • Сергей М. © (19.12.07 14:03) [18]

    > mrAlert   (19.12.07 14:00) [17]


    Твоя задача в общем случае не решаема.
  • mrAlert (19.12.07 15:06) [19]
    с пом. filmon наткнулся на следующее:
    при создании файла во время копирования explorer обязательно обращается по адресу 00130196, (если через cmd copy ...  то другое)
    при простом создании файла (пкм-создать....) по адресу 0012019F
    ну для других операций другие постоянные адреса

    но как отследить их вызов???
  • Сергей М. © (19.12.07 15:29) [20]

    > mrAlert   (19.12.07 15:06) [19]



    > как отследить их вызов


    "их" - это кого ?
  • Riply © (19.12.07 16:25) [21]
    > [19] mrAlert   (19.12.07 15:06)
    В твоей постановке "не спорю на счет дурацких, но проконтралировать вынос файлов надо",
    задача практически не решаема. Можно "скпировать" тысячью различных способов и explorer
    здесь совершенно не при чем. IMHO не трать время.
  • DVM © (19.12.07 22:00) [22]
    паранойю лечить надо.
  • DVM © (19.12.07 22:05) [23]

    > не спорю на счет дурацких, но проконтралировать вынос файлов
    > надо

    Отключить USB-флэшки, отключить ком от инета, убрать все внешние накопители и приводы жисков, корпус опечатать. Права админа отобрать, политики настроить.

    Но даже в этом случае юзер может вынести информацию просто запомнив ее или сфотографировав монитор :)
  • Dib@zol © (19.12.07 22:08) [24]
    Надо на монитор повесить такую штукенцию как у Людей в черном: типа нажал -  туц, вспышка - и нифика не помнишь... А против фотиков - поставить рядом с монитором пару мощных магнетронов от микроволновок
    %))))
  • DVM © (20.12.07 00:06) [25]

    > поставить рядом с монитором пару мощных магнетронов

    Это и против юзеров эффективно - все тайны юзеры просто будут уносить в могилу. т.к. умирать будут часто.
  • mrAlert (20.12.07 07:35) [26]
    дошел до следующего:
    при копировании файла любым доступным методом винды, обязательно используется CopyFileExW(...) из kernel32.dll
    вопрос: как её (не copyfileex из windows.dcu) перехватить????
  • DVM © (20.12.07 08:43) [27]

    > mrAlert   (20.12.07 07:35) [26]

    Я вот не понимаю, что ты хочешь добиться? Чтобы юзер мог читать, но не мог скопировать файл? А создавать новые файлы юзер имеет право?
    Если он имеет право читать и создавать - то все что надо он унесет куда угодно.
  • DVM © (20.12.07 08:43) [28]
    И без функции копирования вообще
  • DVM © (20.12.07 08:45) [29]
    Если уж чего и перехватывать, то это CreateFile и то что ниже ее.
  • Сергей М. © (20.12.07 10:14) [30]

    > любым доступным методом винды


    И каковые же, позволь полюбопытствовать, "методы винды" относятся к "доступным" ?

    Что это вообще за "методы" ?
    Подозреваю, что к оным причислены лишь телодвижения юзера в окнах Эксплорера ..
  • miek (20.12.07 10:16) [31]
    >Я вот не понимаю, что ты хочешь добиться?

    он хочет проследить - что куда копируется.

    >задача практически не решаема

    задача практически решаема.

    одно мне непонятно - почему бы просто не поставить аудит на успех на эту папку и потом смотреть логи.
  • Сергей М. © (20.12.07 10:43) [32]

    > задача практически решаема


    Ну поделись своими соображениями по поводу "решаемости")

    Условие, например, вот такое простейшее - некий процесс открыл файл-оригинал, прочитал его содержимое куда-либо во врем.буфер и закрыл файл, после чего в некий последующий момент времени создал где-то некий файл с неким совершенно иным именем и записал в него содержимое того буфера. Факт копирования содержимого файла-оригинала неоспорим, однако как определить цель открытия файла-оригинала на момент его открытия ? Что при таком условии может выступать однозначным признаком преследования процессом цели копирования ?
  • Сергей М. © (20.12.07 10:54) [33]

    > miek   (20.12.07 10:16) [31]


    Задача решаема на столько же, насколько, к примеру, эвристический анализатор в составе какого-либо антивирусного софта способен распознать скрытые вредоносные алгоритмы в исследуемом коде.
    Добиться 100%-го распознавания практически невозможно.
  • Riply © (20.12.07 14:08) [34]
    > [26] mrAlert   (20.12.07 07:35)
    > дошел до следующего:
    > при копировании файла любым доступным методом винды,
    > обязательно используется CopyFileExW(...) из kernel32.dll

    Чушь собачья. :)

    P.S. Это не грубость - это правда :)
  • Сергей М. © (20.12.07 14:55) [35]

    > Riply ©   (20.12.07 14:08) [34]


    > Чушь собачья.
    > Это не грубость


    При всех "пысы" рискуешь, уважаемая, получить подобно мне пожизненный ярлык хама)
  • Riply © (20.12.07 15:04) [36]
    > [35] Сергей М. ©   (20.12.07 14:55)
    > При всех "пысы" рискуешь, уважаемая,
    > получить подобно мне пожизненный ярлык хама)

    Ну... тогда... чушь человеческая :)
  • Cj © (20.12.07 15:33) [37]

    > При всех "пысы" рискуешь, уважаемая, получить подобно мне
    > пожизненный ярлык хама)


    да не, вы справедливый(мне во всяком случае помогали)

    У вас анкета не найдена!
  • Сергей М. © (20.12.07 15:40) [38]

    > У вас анкета не найдена


    Мне просто настодолбенило ее реанимировать, извини уж)
  • slow!alfamoon!com (20.12.07 21:29) [39]
    :дошел до следующего:
    :при копировании файла любым доступным методом винды, обязательно :используется CopyFileExW(...) из kernel32.dll
    :вопрос: как её (не copyfileex из windows.dcu) перехватить????

    Вы делаете мне смешно. Я же вам все уже написал..
  • mrAlert (21.12.07 08:40) [40]
    все, хватит умничать- проблема решена
    подключаю rernel32.dll определяю адрес copyfileExW, createFileA, createfileW
    и отслеживаю их вызов
    понятно, что можно скопировать файл так, чтобы не отследили, но в моем случае до такого никто из юзеров не дойдет.
    а на
    > Условие, например, вот такое простейшее - некий процесс
    > открыл файл-оригинал, прочитал его содержимое куда-либо
    > во врем.буфер и закрыл файл, после чего в некий последующий
    > момент времени создал где-то некий файл с неким совершенно
    > иным именем и записал в него содержимое того буфера. Факт
    > копирования содержимого файла-оригинала неоспорим, однако
    > как определить цель открытия файла-оригинала на момент его
    > открытия ? Что при таком условии может выступать однозначным
    > признаком преследования процессом цели копирования ?


    используем хук на wm_copydata и wm_copy ну и на paste.
    да, и не давите, я ведь решаю техническую, а не организационную задачу

    если интересно позже выложу код
  • mrAlert (21.12.07 08:51) [41]
    подскажите, можно-ли код службы и код библы для перехвата объединить в одну длл
  • Сергей М. © (21.12.07 09:08) [42]

    > используем хук на wm_copydata и wm_copy ну и на paste


    Какой нафиг "хук" ? Ты в условие вчитался ? Где там хоть какое-либо упоминание об окнах ?


    > можно-ли код службы и код библы для перехвата объединить
    > в одну длл


    Можно.
  • mrAlert (23.12.07 06:16) [43]

    > Какой нафиг "хук" ? Ты в условие вчитался ? Где там хоть
    > какое-либо упоминание об окнах ?

    нет разницы, все-равно при копировании через буфер используются эти сообщения
  • Сергей М. © (24.12.07 11:08) [44]

    > все-равно при копировании через буфер


    Что мешает юзеру копировать не через буфер ?
  • hero (26.01.08 12:14) [45]

    > mrAlert   (21.12.07 08:40) [40]

    выложи будет очень интересно ознакомиться
  • clickmaker © (28.01.08 18:05) [46]

    > [40] mrAlert   (21.12.07 08:40)

    а интернет перекрыл юзерам?
  • Игорь Шевченко © (28.01.08 22:45) [47]
    Дети Ивана Кулибина. Просто удивительно, сколько энергии тратится на увеличение энтропии во вселенной.
    Лучше за это время окончить архитектурный институт или изобрести самодвижущееся пресс-папье.
  • Бегущий человек © (08.02.08 06:33) [48]
    Обратите внимание - человек сам поставил, сам решил задачу, и сообщил об этом. :-D
  • ketmar © (08.02.08 06:45) [49]
    причём поставил задачу идиотскую, решил по-идиотски и похвастался примерно так же.

    ---
    Understanding is not required. Only obedience.
  • Lomonos (22.02.08 22:17) [50]
    Удалено модератором
  • Сергей М. © (23.02.08 21:26) [51]

    > правильно сделал, что код не показывает


    Конечно правильно)

    Тут и без этого очередного "шедевра" дерьма хватает)
 
Конференция "WinAPI" » перехват копирования [WinXP]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]