本篇文章是对 CAPE 沙盒的一个了解,文章中解释了一些基本的恶意软件分析概念,什么是 CAPE,以及它如何应用到恶意软件分析。

沙盒

维基百科对沙盒给出的定义:

在计算机安全领域中,沙盒是用于隔离正在运行的程序的一种安全机制,它通常用于执行未经测试的代码,或来自未经验证的第三方、供应商、不受信任的用户、网站、程序等。

这个概念也适用于恶意软件分析的沙盒,我们的目标是在隔离的环境中运行未知且不受信任的应用程序或文件,并获取有关该文件功能的信息。

恶意软件分析沙盒是动态分析方法的实际应用,它不是静态分析二进制文件,而是实时执行和监控。

这种方法显然有利有弊,但它是一种获取恶意软件更多细节 (例如网络行为) 的有效技术手段。因此,在检查恶意软件时,最好同时进行静态和动态分析,以便更深入地了解恶意软件。

使用沙盒

在开始安装、配置和使用 CAPE 之前,应该花一些时间来思考一下用它来实现什么以及如何实现。应该问自己一些问题:

  • 我想要分析什么类型的文件?
  • 我希望能够处理多少量的分析?
  • 我想使用哪个平台来作支撑?
  • 我想要分析文件的什么信息?

隔离环境 (虚拟机) 的创建可能是沙盒部署中最关键和最重要的部分,应该谨慎地进行并作出适当的规划。在选择虚拟化产品之前,应该有一个设计计划:

  • 使用哪种操作系统,哪种语言和补丁级别;
  • 安装哪些软件及它们的版本 (在分析漏洞时尤为重要);

考虑到自动化恶意软件分析并非确定性,其成功性可能取决于多个因素,比如让恶意软件在虚拟化环境中运行要像在原生系统中一样运行,这可能很难实现,而且并非总能成功。目标应该是创建一个能够满足所有需求的系统,并使其尽可能符合实际。

可以考虑留下一些正常使用的痕迹,例如浏览历史记录、cookies、文档、图片等,如果恶意软件样本目的在操作、操纵或窃取此类文件,这样方便我们注意到它。

虚拟化环境通常会存在许多明显特征,这样使得环境很容易被恶意软件检测到,这个问题需要重视,并尽可能地隐藏,网上有很多关于虚拟化检测技术和应对的措施文章。

完成所需系统原型的设计和准备后,便可去创建和部署,虽可以及时进行更改或做略微改动,但请记住,良好的规划总是意味着长远来看可以减少麻烦。

什么是 CAPE

CAPE 是一个开源的恶意软件分析沙盒,沙盒用于在隔离环境中执行恶意文件,检测其动态行为并收集信息。CAPE 源自 Cuckoo v1,具有以下核心功能:

  • 基于 API Hooking 的行为检测;
  • 捕获执行期间创建、修改和删除的文件;
  • 捕获网络流量并存为 PCAP 格式;
  • 基于行为和网络特征的恶意软件分类;
  • 截取恶意软件在执行期间的桌面截图;
  • 完整的内存转储;

CAPE 通过几个关键的附加功能补充了 Cuckoo 的传统沙盒输出:

  • 自动对恶意软件解包;
  • 对已解包的 payload 进行 Yara 特征匹配;
  • 静态和动态恶意软件配置提取;
  • 可通过 Yara 特征进行编程的自动调试器,允许自定义解包、配置提取器,动态反沙盒对策,指令跟踪;
  • 交互式桌面;

发展历程

Cuckoo 沙盒于 2010 年作为 Google Summer of Code 项目启动 (Honeynet 项目参与),它最初是由 Claudio Guarnieri 设计和开发,第一个测试版本于 2011 年发布,2014 年 1 月,Cuckoo v1.0 发布。


Honeynet Project

蜜网项目 (Honeynet Project) 是一家领先的国际 501(c)(3) 非营利安全研究组织,致力于调查最新攻击并开发开源安全工具,以提升互联网安全。分会遍布全球,志愿者们为抵御恶意软件 (例如 Confickr)、发现新型攻击以及开发供全球企业和政府机构使用的安全工具做出了贡献。

Claudio Guarnieri

Claudio Guarnieri 是一位经验丰富的安全研究员,也是 CitizenLab 的研究员。他参与的团队揭露了某国如何利用 Hacking Team 技术对付活动人士。他也是两款广泛使用的开源恶意软件分析工具 Cuckoo 和 Malwr 的开发者。


2015 年是关键性的一年,Cuckoo 项目的发展在此刻迎来重大转折。原版监控模块及 API 钩子技术的开发在主项目中正式停止,取而代之的是由 Jurriaan Bremer 开发的新型监控方案 —— 该方案采用基于 restructuredText 的签名格式,并通过 Linux 工具链编译。

大约在同一时间,Brad Spengler 创建了一个名为 cuckoo-modified 的分支,继续开发原版监控模块,并进行了重大改进,包括对 64 位的支持,更重要的是引入了 Microsoft 的 Visual Studio 编译器,Cuckoo-modified:

https://github.com/spender-sandbox/cuckoo-modified

同年,Context Information Security 公司的 Kevin O’Reilly 开始开发一款名为 CAPE 的动态命令行配置和 payload 提取工具,该工具的名称取自于 Config And Payload Extraction 的首字母缩写,最初的研究重点是使用微软 Detours 库提供的 API 钩子来捕获已解包的恶意软件 payload 和配置。然而实践表明,仅靠 API 钩子技术难以提供足够的能力和精度来从任意恶意软件中去解包 payload 及配置。

为此,我们开始研究一种创新的调试器方案,以便能够精确控制和检测恶意软件,同时避免使用微软的调试接口,从而尽可能地隐蔽。该调试器被集成到基于 Detours 的概念验证命令行工具中,并与 API 钩子相结合后展现出强大的分析能力。

当初研究表明可以用 cuckoo-modified 的 API 钩子引擎取代微软的 Detours 时,CAPE 沙盒的构想就此诞生,CAPE 沙盒添加了调试器、自动解包、基于 Yara 的分类和集成配置提取功能,后面逐渐完善。2016 年 9 月在 44con 上首次公开发布。

CAPE CTXIS -> https://github.com/ctxis/CAPE

2018 年夏天,该项目有幸迎来了 Cuckoo 长期贡献者 Andriy doomedraven Brukhovetskyy 的加入。2019 年,他启动了将 CAPE 移植到 Python3 的庞大工程,并于同年 10 月发布了 CAPE v2 版本。

CAPEv2 -> https://github.com/kevoreilly/CAPEv2

为应对恶意软件和操作系统技术的演进,CAPE 持续进行迭代升级。2021 年新增了通过动态 YARA 扫描在检测过程中实时编程调试器的能力,可动态绕过反沙箱检测技术。Windows 10 成为默认分析环境,其他重要更新包括:交互式桌面支持、AMSI (反恶意软件扫描接口) payload 捕获、基于微软 Nirvana 的 “系统调用钩接” 技术,以及基于调试器的直接/间接系统调用防护措施。

应用场景

得益于高度模块化的设计,CAPE 既可作为独立应用程序使用,也能集成到更大型的分析框架中。其典型分析对象包括:

  • Windows 可执行文件
  • DLL 动态链接库文件
  • PDF 文档
  • Microsoft Office 办公文档
  • URL 链接及 HTML 文件
  • PHP 脚本
  • CPL 控制面板项文件
  • Visual Basic (VB) 脚本
  • ZIP 压缩包
  • Java JAR 程序包
  • Python 脚本文件
  • 以及其他几乎所有文件类型

凭借模块化架构与强大的脚本扩展能力,CAPE 能实现的分析功能几乎没有边界!

架构

CAPE 沙盒由中央管理软件构成,负责样本执行与分析任务。每次分析均在全新的隔离虚拟机环境中启动。其基础架构包含两类核心组件:

  • 宿主机 (Host) – 运行管理软件的主控设备
  • 客户机 (Guest) – 执行分析的虚拟机集群

核心分工

  • 宿主机运行沙箱核心组件,统筹整个分析流程
  • 客户机作为隔离环境,安全执行并监控恶意软件样本

系统架构示意图如下:

推荐运行环境

  • 宿主机操作系统:GNU/Linux(优先选用 Ubuntu LTS 版本)
  • 客户机操作系统:Windows 10 21H2

我使用的是 Ubuntu 24.04.2 LTS 桌面版英文,以下是成功跑出的截图