沙盒
关于沙盒技术
沙盒是一种用于恶意软件检测的系统,它可以在具有全功能操作系统的虚拟机 (VM) 中运行可疑对象,并通过分析其行为来检测该对象的恶意活动。如果对象在虚拟机中执行恶意操作,则沙盒会将其检测为恶意软件。虚拟机与真实的业务基础架构隔离。
沙盒可以在对象执行时对其行为进行分析,从而可以有效检测能够规避静态分析的恶意软件。同时,与其他行为分析设计相比,沙盒更加安全,因为它不会冒着风险在实际业务基础架构中运行可疑对象。
Kaspersky Sandbox
几年前,我们开发了自己的沙盒。在我们的基础架构中,它是用于恶意软件分析、研究和创建反病毒数据库的工具之一。沙盒也是 Kaspersky Anti-Targeted Attack Platform 和 Kaspersky Threat Intelligence Platform的一部分。它有助于将文件和 URL 评定为恶意或良性,并提供有关其活动的信息,这些信息对于创建检测规则和算法十分有用。
沙盒功能
- 沙箱基于硬件虚拟化,这使它既快速又稳定。
- 虚拟机可用于:
- Windows 操作系统(从 Windows XP 开始的所有个人计算机版本,从 Windows Server 2003 开始的所有服务器版本),
- Android 操作系统(x86、ARM 处理器架构)。
- 沙盒可监控相关进程与操作系统的交互。在可疑情况下,沙盒会更深入地进行监控。
- 沙盒从漏洞利用的早期阶段开始提供漏洞利用检测。它检测典型的漏洞利用行为,例如 ROP 链使用情况、堆喷射、堆栈转移、安全令牌更改、可疑内存保护更改等。沙盒甚至可以检测定向攻击中使用的高级漏洞。
可以执行的对象类型
- Windows:任何文件,例如:*.exe、*.dll、.NET 对象、MS Office 文件、PDF。
- Android:APK (DEX)。
- URL:沙盒转到 URL,并检测以下事件:下载、JavaScript、Adobe Flash 执行和其他事件。
恶意软件检测工作流程
- 沙盒接收另一个安全解决方案组件发出的对象(文件或 URL)扫描请求,并附带了说明:用于运行对象的操作系统和配置、对象的执行参数、虚拟机中安装的其他第三方应用程序、测试时间限制等。
- 运行测试对象。
- 沙盒在指定的时间范围内收集工件。如果对象与声誉已知的其他进程或 URL 进行交互,则沙盒将捕获此信息。
- 沙盒会分析工件,并将其裁定传递给发出请求的系统:恶意软件或良性软件。沙盒会将对象的数据添加到裁定中(ID、功能、日志、行为详细信息),这可能有助于进一步分析,而无需向沙盒发出新请求。
沙盒收集的工件
- 应用程序执行日志(API 函数调用及其参数、执行事件)
- 内存转储
- 加载的模块转储
- 文件系统、注册表中的更改
- 网络流量(PCAP 文件)
- 屏幕截图(在需要时可以更轻松地进行审核和人工分析)
- 漏洞利用活动的工件
防止规避
对于当今的恶意软件而言,尝试检测并规避沙盒是很常见的事情。一旦知道自己正在沙盒中运行,它可能会跳过执行任何恶意活动,从磁盘上擦除自身,终止自身进程或使用其他规避技术。
较为简单的硬件沙盒监控设计(例如,挂钩 API 函数)将留下痕迹,表明正在监控可疑进程。因此,我们实施了其他非侵入性的监控技术,使得扫描的对象无法看到任何痕迹。沙盒控制 CPU 和 RAM,但不修改进程操作、内存、磁盘和内存中的系统库,不会留下任何监控痕迹。
我们还会跟踪新兴的规避技术,并调整沙盒以应对这些技术,例如:
规避方法 A:沙盒环境是某些知名品牌沙盒的典型环境。恶意软件可以识别并规避检测。
反规避方法 A:我们的沙盒会在虚拟机启动之前将虚拟机环境随机化。
规避方法 B:恶意软件可以根据用户活动的缺乏来检测沙盒环境。为了让某些恶意软件运行,用户需要从电子邮件输入密码,点击向导或执行其他“人为”操作。许多沙盒无法模拟此过程,因此看不到恶意软件爆发。
反规避方法 B:我们的沙盒可模拟用户的操作:鼠标移动、滚动打开的文档。我们的沙盒还可执行用户为激活恶意软件所做的许多操作。
通过 Kaspersky Sandbox 发现的攻击
Kaspersky 基础架构产品中的沙盒在 2016-2017 年发现的新的定向攻击的示例:Sofacy(2017 年 10 月)、Zero.T(2016 年 10 月、11 月、2017 年 4 月)、Enfal(2016 年 9 月、10 月,11 月)、Freakyshelly (2016 年 10 月)、NetTraveller(2016 年 8 月)、CobaltGoblin(2016 年 8 月)、Microcin(2016 年 6 月),等等。