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