完美的捕鼠器 - 沙盒系统可以设计成与实际计算机相同吗?

信息安全 恶意软件 攻击 攻击预防 操作系统 沙盒
2021-09-07 22:50:26

在测试恶意软件的可疑文件时,典型的方法是搜索已知的恶意代码。这就是零日恶意软件攻击如此危险的原因——它们的恶意代码以前不为防病毒软件所知。理想的解决方案是在使用之前测试沙箱中的每个文件和程序,并且已经尝试过,但据我所知,通常会出现异常进程,可以通过足够聪明的鼠标检测到。该恶意软件检测到它正在被沙盒化,并阻止其恶意行为以防止被发现。

问题是,是否有可能,更重要的是,构建一个与实际计算机相同的沙箱,然后在当今的操作系统(Windows、OS X、Linux、iOS、Android)中实现使用它的软件在运行之前测试所有内容,或者更好的是,将其用作该文件的运行环境?

4个回答

是的,它可以作为(理论上)每个“计算设备”在计算上等同于所有其他计算设备。如果您有兴趣,请查阅 Church-Turing 论文。

但是,您的问题是基于实践的,在这种情况下,答案是“是的,但它会花费太多”。当今虚拟化的努力旨在尽可能加快虚拟环境的速度,以至于检测是否在虚拟机中运行非常简单。这意味着复制运行 100%“本地”的系统的任何努力都受到与您相同兴趣的人数的限制。

换句话说,做你的目标几乎没有商业利益,投资回报率将仅限于少数对此事有兴趣的爱好者和公司。你愿意为这样的系统支付多少钱?你能投入多少时间?你知道有多少人愿意在这个项目上花费数年时间?

虽然有人努力对此进行研究,但我还没有看到一个运行速度不是很慢的完整系统。例如,Skype 采用了反调试技术来检测减速(参见本演示文稿的幻灯片 30)。我怀疑任何恶意软件都可以使用类似的技巧来测量针对固定时间服务器的执行情况,并检测它何时在(必然很慢)模拟器中运行。

我认为另一种方法在经济上会更合理:在实际机器上运行恶意软件样本,然后观察会发生什么。然后“重影”它的磁盘和内存,并用相同的“干净”样本查看差异。总体而言,与开发您心目中的模拟器相比,它可能需要更少的时间。

实际上,洛伦佐的回答并没有完全削减它。Church-Turing 论文只为我们提供了一个计算模型,它不能告诉我们任何关于虚拟化的信息,因为它不关心机器的其他方面。

但是Popek等人对机器的虚拟化能力进行了理论分析:http: //cs.nyu.edu/courses/fall14/CSCI-GA.3033-010/popek-goldberg.pdf

这就是说,当前的架构,最重要的是 x86-64 并不能满足这些要求。所以结论是,不幸的是,目前使用的 cpu 架构是不可能的。但是人们总是可以考虑新的 cpu 架构......

将实际计算机置于物理沙盒环境中。计算机本身不是沙盒,也不会虚拟化任何东西。

需要活动目录?将活动目录放在沙盒环境中。

进行测试,验证发生了什么变化,查看计算机和网络日志。

这比构建限制正常硬件功能的沙盒操作系统更实用。

...实际,构建一个与实际计算机相同的沙箱...在使用之前测试沙箱中的每个文件和程序...

我认为这是一个错误的问题。真正的挑战不是构建一个表现得像真实计算机的沙盒,而是一个表现得像目标用户使用的真实计算机的沙盒。

恶意软件实际上使用技术来检测用户的存在,有时甚至是特定用户(有针对性的攻击)。基于网络的路过式下载的一些可能技术是

  • 检查页面上的特定位置是否被点击或通过显示某种验证码等待某些输入。
  • 检查某些资源是否被缓存,而其他资源没有,从而检查是否存在人类实际使用一段时间的浏览器。
  • 检查用户是否登录到 facebook,是否可以访问某些特定的内部网站、资源等。