如何可靠地观察可执行文件正在访问哪些路径?

在 Linux 或 macOS 中,有没有办法观察 x86-64 可执行文件试图访问哪些路径,以便:

  1. 我可以看到每个文件访问的路径,并且可执行文件无法直接或间接读取任何文件的内容,而我对此一无所知。

  2. 可执行文件无法检测到它正在被观察,或者我可以检测到该可执行文件正在尝试检测它是否正在被观察。

我知道有两种机制:seccomp 和 strace。 Seccomp/BPF 在第 1 点失败,因为它看到指针参数,但不能可靠地取消引用它们。 Strace 在第 2 点上失败了,因为对其进行了一些本身无法追踪的琐碎检查。

可执行文件将在容器或虚拟机中运行,但我仍然想知道它们在沙箱周围窥探了多少。


背景:我所写的基本上是一种基于启发式的防病毒软件。我想根据我的规范检查 3rd 方程序是否“表现良好”。我深知这是傻瓜的差事,虚假的安全感,逃避这种检查的方法数不胜数。我的目标是抓住明显的企图,并将剥削和逃避的门槛提高到至少比“对任何孩子来说都微不足道”高出一个档次。我知道正确的方法是首先不要使用任意的可执行代码,但那部分不在我的控制范围内,我只是试图让糟糕的情况变得不那么糟糕。

bo329127283 回答:如何可靠地观察可执行文件正在访问哪些路径?

在 Linux 上,您可以使用 fanotify 来监控所有进程打开/关闭的所有文件,然后在用户空间中,您可以将其过滤到您想要监控的进程。

可能需要一些特殊的工作来确保监视器进程作为容器位于正确的挂载命名空间中。

本文链接:https://www.f2er.com/5331.html

大家都在问