在 Linux 或 macOS 中,有没有办法观察 x86-64 可执行文件试图访问哪些路径,以便:
-
我可以看到每个文件访问的路径,并且可执行文件无法直接或间接读取任何文件的内容,而我对此一无所知。
-
可执行文件无法检测到它正在被观察,或者我可以检测到该可执行文件正在尝试检测它是否正在被观察。
我知道有两种机制:seccomp 和 strace。 Seccomp/BPF 在第 1 点失败,因为它看到指针参数,但不能可靠地取消引用它们。 Strace 在第 2 点上失败了,因为对其进行了一些本身无法追踪的琐碎检查。
可执行文件将在容器或虚拟机中运行,但我仍然想知道它们在沙箱周围窥探了多少。
背景:我所写的基本上是一种基于启发式的防病毒软件。我想根据我的规范检查 3rd 方程序是否“表现良好”。我深知这是傻瓜的差事,虚假的安全感,逃避这种检查的方法数不胜数。我的目标是抓住明显的企图,并将剥削和逃避的门槛提高到至少比“对任何孩子来说都微不足道”高出一个档次。我知道正确的方法是首先不要使用任意的可执行代码,但那部分不在我的控制范围内,我只是试图让糟糕的情况变得不那么糟糕。