Драйверы Win32API/Win: как определить доступ к файлу
Я хотел бы создать что-то вроде "файл honeypot" на ОС Windows.
Проблема, на которую я хотел бы ответить, заключается в следующем: мне нужно определить, что к файлу обращаются (вредоносное ПО хочет прочитать файл, чтобы отправить его через Интернет), чтобы я мог на него отреагировать. Но я не знаю, как точно решить эту проблему.
Я могу периодически проверять файл - не нравится это решение. Хотелось бы, чтобы какое-то событие управлялось без необходимости беспокоить процессор каждые несколько мс. Но может работать, если файл достаточно большой, поэтому его нельзя прочитать между проверками.
Я мог бы исключительно открыть файл myselve и каким-то образом определить, доступен ли файл. Но я понятия не имею, как это сделать.
Есть идеи о том, как эффективно решить эту проблему? Может быть, создание специализированного драйвера может помочь, но у меня мало опыта в этом.
Спасибо
2 ответа
Отслеживание (и, возможно, предотвращение) доступа к файловой системе в Windows осуществляется с помощью драйверов фильтра файловой системы. Но вы должны знать, что код режима ядра (руткиты и т. Д.) Может обойти стек драйверов фильтров и отправить запрос непосредственно в файловую систему. В этом случае только сам драйвер файловой системы может регистрировать или перехватывать доступ.
Я собираюсь предположить, что то, что вы пишете, является относительно простой приманкой. Целостность системы, в которой вы работаете, не пострадала, нет вредоносного ПО, устанавливающего руткит или драйвер фильтра, и не запущен процесс, который может реализовать меры предотвращения или предотвращения.
Наиболее вероятный сценарий, который я могу придумать, заключается в том, что серверный процесс, выполняющийся на компьютере, подвергается некоторому внешнему контролю, который позволяет удаленно читать файлы, содержащие конфиденциальные данные. Это может быть веб-сервер, почтовый сервер, FTP-сервер или что-то еще, но я предполагаю, что ничто другое на компьютере не было скомпрометировано. И задача сейчас состоит в том, чтобы посмотреть конкретные файлы и посмотреть, читает ли их что-нибудь.
С этими предположениями наблюдатель файловой системы не поможет. Он может контролировать части системы для создания новых файлов или изменения или удаления существующих, но, насколько я знаю, он не может контролировать доступ только для чтения.
Единственный механизм, управляемый событиями, который мне известен, это драйвер фильтра. Это специализированная часть драйвера, которая может быть вставлена в цепочку драйверов и контролировать доступ к файлам. С учетом приведенных выше ограничений, это надежное решение проблемы за счет того, что писать довольно сложно.
Если механизма опроса достаточно, я вижу два пути. Одним из них является попытка заблокировать файл исключительно, который не удастся, если он открыт. Это легко, но медленно.
Другой - следить за дескрипторами открытых файлов. Я знаю, что это может быть сделано, потому что я знаю программы, которые делают это, но я не могу сказать вам, как без некоторых исследований.
Если мои предположения неверны, пожалуйста, отредактируйте свой вопрос и предоставьте дополнительную информацию.