1

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

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

  1. 我可以定期测试文件 - 不喜欢这个解决方案。想要一些事件驱动,而无需每隔几毫秒打扰处理器。但是如果文件足够大,因此可以在检查之间读取它。

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

关于如何有效解决此问题的任何想法?也许创建专门的驱动程序会有所帮助,但我在这方面的经验很少。

谢谢

4

2 回答 2

1

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

于 2014-04-25T10:56:35.153 回答
1

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

我能想到的最有可能的情况是计算机上运行的服务器进程受到某种外部控制,这将允许远程读取包含敏感数据的文件。它可能是 Web 服务器、邮件服务器、FTP 服务器或其他东西,但我认为计算机上的其他任何东西都没有受到损害。手头的任务是查看特定文件,看看是否有任何东西在读取它们。

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

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

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

另一种是监视打开的文件句柄。我知道它可以做到,因为我知道可以做到这一点的程序,但如果没有一些研究,我无法告诉你如何做到。

如果我的假设是错误的,请编辑您的问题并提供更多信息。

于 2014-04-25T14:08:25.857 回答