Драйверы Win32API/Win: как определить доступ к файлу

Я хотел бы создать что-то вроде "файл honeypot" на ОС Windows.

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

  1. Я могу периодически проверять файл - не нравится это решение. Хотелось бы, чтобы какое-то событие управлялось без необходимости беспокоить процессор каждые несколько мс. Но может работать, если файл достаточно большой, поэтому его нельзя прочитать между проверками.

  2. Я мог бы исключительно открыть файл myselve и каким-то образом определить, доступен ли файл. Но я понятия не имею, как это сделать.

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

Спасибо

2 ответа

Решение

Отслеживание (и, возможно, предотвращение) доступа к файловой системе в Windows осуществляется с помощью драйверов фильтра файловой системы. Но вы должны знать, что код режима ядра (руткиты и т. Д.) Может обойти стек драйверов фильтров и отправить запрос непосредственно в файловую систему. В этом случае только сам драйвер файловой системы может регистрировать или перехватывать доступ.

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

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

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

Единственный механизм, управляемый событиями, который мне известен, это драйвер фильтра. Это специализированная часть драйвера, которая может быть вставлена ​​в цепочку драйверов и контролировать доступ к файлам. С учетом приведенных выше ограничений, это надежное решение проблемы за счет того, что писать довольно сложно.

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

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

Если мои предположения неверны, пожалуйста, отредактируйте свой вопрос и предоставьте дополнительную информацию.

Другие вопросы по тегам