Win32API / Win驱动程序:如何检测文件是否被访问

时间:2014-04-25 09:02:11

标签: security winapi driver honeypot

我想在Windows操作系统上创建类似“文件honeypot”的东西。

我想回答的问题是: 我需要检测该文件是否被访问(恶意软件想要读取文件以通过互联网发送)所以我可以对它做出反应。但我不知道如何妥协处理这件事。

  1. 我可以定期测试文件 - 不喜欢这种解决方法。想要一些事件驱动,而不需要每隔几毫秒打扰处理器。但是如果文件是巨大的,那么它可以工作,所以它不能在检查之间读取。

  2. 我可以专门打开文件myselve,并以某种方式检测文件是否被访问。但我不知道该怎么做。

  3. 有关如何有效解决此问题的任何想法?也许创建专门的驱动程序可能有所帮助,但我对此没什么经验。

    由于

2 个答案:

答案 0 :(得分:1)

使用文件系统过滤器驱动程序跟踪(并可能阻止)Windows上的文件系统访问。但是您必须意识到内核模式代码(rootkit等)可以绕过过滤器驱动程序堆栈并将请求直接发送到文件系统。在这种情况下,只有文件系统驱动程序本身可以记录或拦截访问。

答案 1 :(得分:1)

我会假设你正在写的是一个相对简单的蜜罐。您运行的系统的完整性没有受到损害,恶意软件没有安装rootkit或过滤器驱动程序,也没有可以实施避免或反避免措施的进程。

我能想到的最可能的情况是,计算机上运行的服务器进程受某种外部控制的约束,这将允许远程读取包含敏感数据的文件。它可能是一个Web服务器,一个邮件服务器,一个FTP服务器或其他东西,但我认为计算机上的其他任何东西都没有被破坏。当前的任务是观察特定文件,看看是否有任何内容正在阅读它们。

有了这些假设,文件系统观察者就无济于事了。它可以监视系统的各个部分以创建新文件或修改或删除现有文件,但据我所知它无法监视只读访问。

我所知道的唯一事件驱动机制是过滤器驱动程序。这是一个专门的驱动程序软件,可以插入驱动程序链并监视对文件的访问。由于上述限制,它是一个可靠的解决方案,但代价是难以编写。

如果投票机制足够,那么我可以看到两种途径。一种是尝试以独占方式锁定文件,如果文件打开则会失败。这很容易,但很慢。

另一种是监视打开的文件句柄。我知道它可以完成,因为我知道这样做的程序,但是如果没有一些研究我就不能告诉你。

如果我的假设有误,请编辑您的问题并提供其他信息。