Подтвердить что ты не робот

Как антивирус Windows подключается к процессу доступа к файлу?

Тема говорит все. Обычный антивирус должен перехватывать все обращения к файлам, сканировать файлы, а затем опционально отказывать в доступе к файлу (возможно, даже отображая приглашение пользователю). Как это можно сделать?

Мне известен метод, называемый API-подключением, но этот действительно грязный недокументированный взлом - и, как таковой, не очень надежный. Какой "официальный" способ сделать это?

В качестве альтернативы мне было бы интересно перехватить загрузку исполняемых модулей (.DLL,.EXE и т.д.), а не только произвольные чтения файлов.

4b9b3361

Ответ 1

В последних версиях окон (по крайней мере, XP) существует концепция "фильтры", которую можно просмотреть с помощью MS Filter Manager (fltmc.exe из командной строки)

Это обеспечивает крючок ввода-вывода низкого уровня, который AV-программы могут получать и автоматически регистрировать для передачи всех запросов ввода-вывода в файловую систему. Это комплект, в котором вы можете получить драйверы для разработки собственных фильтров.

http://www.microsoft.com/whdc/driver/filterdrv/default.mspx является отправным местом для получения подробной информации.

Ответ 2

Как вы уже отметили, перехват - это ключ к тому, что готовит программное обеспечение AV с защитой "в реальном времени".

Вы могли бы взглянуть на (широко обсуждаемый) winpooch, который уже выполняет API Hooking, но в этом программном обеспечении есть некоторые серьезные недостатки. Sourceforge of Winpooch

Существует также статья о Codeproject при подключении API, предоставляющая некоторую библиотеку сделать крючок "в трех слоях". Dll Injection - это несколько сложно, так как вы можете образ. CodeProject: EasyHook, переосмысление API Hooking

Поскольку вы, вероятно, интересуетесь антивирусными стратегиями, я также предлагаю посмотрите на ClamAV или WinClam, который является openource (под GPL) ClamAV для Windows

Но у меня нет понятия, как подключиться к API с помощью С#, я должен признать. В C/С++ это (довольно) легко...

ДОБАВИТЬ Вас могут заинтересовать источники FileMon, широко известного Файлового Монитора, который был однажды SysInternals и теперь Microsoft: Он использует API-интерфейс Driver-Filter от Microsoft, который по меньшей мере известен как хрупкий.

Ссылка может быть найдена здесь на форуме Sysinternals

Ответ 4

Контроль доступа к файлам осуществляется с помощью драйвера фильтра файловой системы, который работает в режиме ядра. Фильтрующие драйверы могут быть не только уведомлены о действиях файловой системы, но и изменяют данные, передаваемые через фильтры, или отклоняют запросы файловой системы.

Вы можете создать минифильтр самостоятельно, но обслуживание и поддержка вашего кода в режиме ядра могут быть нетривиальными, особенно без использования режима ядра. Одной из проблем является конфликт между различными фильтрами.

Наша компания предлагает продукт CallbackFilter, который предоставляет готовый к использованию драйвер и позволяет писать бизнес-логику, связанную с фильтрацией, у пользователя Режим.

Ответ 5

В общем, эти продукты перехватывают функции, чтобы получить РУЧКУ для процесса, такого как OpenProcess или NtOpenProcess. Они также перехватывают функции CreateRemoteThread и распределение памяти в удаленном процессе: VirtualAlloc и VirtualProcect. Некоторые AV-устройства также подключают функцию SetWindowsHookEx для обнаружения глобальных перехватчиков, чтобы избежать блокировки ключевых слов.

Подхватывая эти API, они могут контролировать, какие модули (или dll) могут обращаться к удаленным процессам и разрешать только те, которые пользователь знает, что они делают.

Вы можете использовать HookShark, чтобы узнать, какие функции пользовательского режима перехватываются каждым AV-продуктом.

Чтобы сделать свои собственные пользовательские перехватчики, вы можете использовать библиотеку обходных файлов, но вам нужно разработать агент для запуска ваших крючков в процессе, а затем связаться с сервером-агентом. Вы также можете использовать Deviare API Hook, который является основой, которая делает весь сложный персонал, чтобы вы могли кодировать свои крючки в своем собственном процессе с использованием любого языка программирования.

Ответ 6

Вы можете прочитать библиотеку обходных файлов с помощью microsoft и попробовать ее бесплатно - это позволяет вам писать переходы пользовательского режима в С#. Вам не нужно узнавать о драйверах:]

Однако - для крючков режима ядра - вам нужно знать c и играть с DDK - atleast afaik: [

И самое современное антивирусное программное обеспечение перехватывает довольно много вызовов - реестр apis, thread и process apis и т.д. - а не только файловая система api. Опять - афайк.

edit: Есть также несколько руткитов с открытым исходным кодом - google и посмотреть, как они выполняют свою работу, это будет образовательный, я думаю.