随着 Python 2 即将于 2020 年 1 月 1 日终止支持,CAPEv1 将逐步淘汰。请尽快升级到 Python 3 版本。
CAPE 是一个恶意软件沙箱。它源自 Cuckoo,旨在自动化恶意软件分析过程,目标是从恶意软件中提取载荷和配置。这使得 CAPE 能够基于载荷签名检测恶意软件,并自动化恶意软件逆向工程和威胁情报的许多目标。
有一个社区版在线可用,任何人都可以免费试用:
https://cape.contextis.com/submit
CAPE 能够在首次运行样本时检测多种恶意软件技术或行为,以及特定的恶意软件家族。此检测可能触发进一步运行特定包(package),以提取恶意软件载荷及其配置,用于进一步分析。
CAPE 通过专有的调试器和 API 钩子控制恶意软件运行。检测触发 CAPE 包可以基于 API 或 Yara 签名。调试器使用 Yara 签名或 API 钩子,以便在单个指令、内存区域或函数调用上设置断点。当到达感兴趣的区域时,可以操控并转储该区域以进行处理和分析,可能还包括配置解析。
CAPE 检测并拥有相应包的技术或行为包括:
针对这些行为的包将转储被注入、提取或解压的载荷,用于进一步分析。这通常是未打包形式的恶意软件载荷。
CAPE 会自动为每个进程创建进程转储,如果是 DLL,则转储 DLL 在内存中的模块映像。这对于使用简单加壳器的样本非常有用,因为模块映像转储通常已完全脱壳。Yara 签名可能会触发进程转储,可能结果是用特定包提交或进行配置解析。
CAPE 还有一个包,可以动态脱壳使用“hacked”(修改版)UPX 的样本,这在恶意软件作者中非常流行。这些样本在 CAPE 的调试器中运行,直到它们的原始入口点(OEP),随后被转储、修复并自动重建导入表,以备分析。
目前,CAPE 拥有针对以下恶意软件家族提取配置和载荷的特定包:
CAPE 拥有针对以下恶意软件家族的配置解析器/解码器,其载荷由行为包自动提取:
许多其他恶意软件家族的载荷由行为包自动提取,CAPE 使用 Yara 签名来检测这些载荷。这个列表正在增长,包括:
配置数据可以从家族包输出,也可以从行为包产生的载荷中输出。然后可以基于 Yara 检测进行配置解析,并使用 CAPE 的两个配置解析框架之一:来自 malwareconfig.com 的 RATDecoders 框架和 DC3-MWCP(国防网络犯罪中心 - 恶意软件配置解析器)。还包含了 malwareconfig.com 的许多解析器/解码器,包括但不限于:Sakula, DarkComet, PredatorPain, PoisonIvy。感谢 Kevin Breen/TechAnarchy 提供了这个框架和解析器(https://github.com/kevthehermit/RATDecoders),以及 DC3 提供了他们的框架(https://github.com/Defense-Cyber-Crime-Center/DC3-MWCP)。特别感谢 Jason Reaves (@sysopfb) 提供了 TrickBot 解析器,以及 Fabien Perigaud 提供了 PlugX 解析器。
还包含了实用包:'DumpOnAPI' 允许在模块调用特定的 API 函数时转储该模块,该 API 函数可在 Web 界面中指定。'DumpConfigRegion' 允许转储包含 C2 信息或其他配置数据的内存区域,针对常用 API 调用。这些包对于快速脱壳/转储新样本或配置很有用。'Trace' 包允许通过接受四个断点(RVA 值)设置在指令上来快速访问调试器,随后会输出简短的指令跟踪。可选的 'base-on-api' 参数允许通过 API 调用来设置映像基址。
CAPE 调试器允许在内存地址或区域上进行读、写或执行时设置断点,以及单步模式。这允许精细控制恶意软件的执行,直到可以转储包含代码或配置数据的感兴趣内存区域。断点可以由包代码、API 钩子或 Yara 签名动态设置。感谢嵌入的 distorm 库,调试器可以在单步模式或命中断点时输出指令的反汇编,从而产生指令跟踪。
通过使用简单的 API,CAPE 可以转储进程、模块和内存区域。这些转储随后可以被扫描和解析以获取配置信息。可执行模块在转储时会被修复,并且它们的导入表也可能被自动重建(基于 Scylla:https://github.com/NtQuery/Scylla)。包可以基于 API 钩子、CAPE 调试器或两者的组合来编写。目前还在开发许多其他行为包和恶意软件家族包及解析器,敬请期待。
构成这些包基础的监控 DLL 的代码仓库是一个独立的仓库:https://github.com/ctxis/capemon。该仓库按各个包组织成不同的分支。
CAPE 源自 spender-sandbox (https://github.com/spender-sandbox),而 spender-sandbox 又源自 Cuckoo Sandbox (https://github.com/cuckoosandbox),因此感谢 Brad Spengler、Claudio Guarnieri、Jurriaan Bremer 以及无数其他 Cuckoo 贡献者,没有他们这项工作将不可能实现。它还依赖于 VirusTotal 的 Yara (https://github.com/VirusTotal/yara)。感谢 Decalage (@decalage2) 提供了 oletools,Didier Stevens 和 peepdf (@peepdf) 提供了 PDF 工具,MalwareCantFly 提供了 Vba2Graph,以及 Matt Holley (@mrmolley) 提供了 binGraph。还要特别感谢 doomedraven (@D00m3dR4v3n)、Sandor Nemes (@sandornemes)、Kevin Ross 和 Enzo (@enzok) 的支持和贡献。
请通过帮助创建针对更多恶意软件家族、加壳器、技术或配置解析器的新包来为这个项目做出贡献。或者,联系 @CapeSandbox 或 Kevin O'Reilly 以获取 CAPE 开发的更多详情。
sudo ./kvm-qemu.sh all <username>sudo ./cuckoo.sh all cape* 所有脚本都包含 帮助 -h,但请查看脚本以了解它们的作用。