【THM】CAPA:The Basics( CAPA基础知识)-学习
本文相关的TryHackMe实验房间链接:https://tryhackme.com/r/room/capabasics
本文相关内容:学习使用 CAPA 来识别恶意软件的恶意功能。

介绍
分析潜在恶意软件的挑战之一是,我们的机器或环境在运行疑似恶意的软件时可能会面临被入侵的风险,除非我们拥有沙箱或完全隔离的环境,它们可以用来测试所有我们想要测试的功能。一般来说,恶意软件分析可分为两种类型:动态分析和静态分析。本文将重点介绍如何使用名为 CAPA 的工具来进行静态分析。

CAPA(Common Analysis Platform for Artifacts-通用攻击痕迹分析平台)是由FireEye Mandiant团队开发的一款工具。它旨在识别可执行文件中存在的功能,例如可移植可执行文件(PE-Portable Executables)、ELF二进制文件、.NET模块、shellcode 甚至沙箱报告。它通过分析文件并应用一组描述常见行为的规则来实现这一点,从而确定程序能够执行哪些操作,例如网络通信、文件操作、进程注入等等。
CAPA的优点在于,它将多年的逆向工程知识封装成一个自动化工具,即使不是逆向工程专家也可以轻松上手使用它。这对于分析师和安全专业人员来说非常有用,这使得他们能够快速了解潜在的恶意软件的功能,而无需手动对代码进行逆向工程。
该工具在恶意软件分析和威胁狩猎(搜寻)中特别有用,了解一个二进制文件的功能对于事件响应和防御措施至关重要。
学习目标
- 探索什么是 CAPA;
- 学习如何有效地使用 CAPA;
- 了解使用该工具可以呈现的常见字段和结果;
- 利用该工具来识别程序的潜在活动。
前置学习基础
建议在开始学习本文内容之前先熟悉一下MITRE ATT&ACK框架,但这并非强制要求;你可以查看并完成下面这个与MITRE ATT&ACK框架相关的实验房间:
部署实验虚拟机
在与本文相关的TryHackMe实验房间页面中,点击如下所示的Start Machine按钮。

我们将使用TryHackMe所提供的目标实验机器内部的工具。该实验虚拟机将以分屏视图启动。如果你想通过远程桌面(RDP)访问此计算机,你可以在你的攻击机上使用下面的凭据来进行远程登录访问。
tips:在本文中,我们全程使用实验虚拟机进行操作即可。
- Username:
Administrator - Password:
letmein123! - IP Address:
MACHINE_IP

请注意,在这个实验虚拟机内,TryHackMe已经为我们安装好了CAPA,所以我们可以体验运行该工具并进一步尝试不同的命令参数。然而,使用实验虚拟机完成相关的命令执行操作可能需要等待很长时间,为了方便起见,TryHackMe已经为我们对有关报告进行了预处理,如下所示:
- cryptbot.txt(执行
capa.exe .\cryptbot.bin命令所对应的输出结果); - cryptbot_vv.txt(执行
capa.exe -vv .\cryptbot.bin命令所对应的输出结果); - cryptbot_vv.json(执行
capa.bin -j -vv .\cryptbot.bin > cryptbot_vv.json命令所对应的输出结果)。
它们被放置在实验虚拟机的 C:\Users\Administrator\Desktop\capa 目录下,我们在本文中需要使用到的几乎所有文件都保存在这个目录中。

工具概述:CAPA的工作原理
在本小节中,我们将了解如何使用CAPA。运行该工具就像1..2..3一样简单。首先,打开PowerShell ,注意可能需要一段时间才会出现终端提示符。接下来,请确保你位于正确的目录中(C:\Users\Administrator\Desktop\capa);然后你需要在终端中输入capa或capa.exe 并且指向你想要分析的二进制文件即可。
在这个示例中,我们将使用cryptbot.bin作为分析目标;请注意,针对该文件的静态分析结果将在后续小节中进行讨论。
#在Powershell终端中执行命令
cd C:\Users\Administrator\Desktop\capa
capa.exe .\cryptbot.bin
运行上述命令后,等待结果,这可能需要几分钟时间。我们并不打算就此结束,而是让你体验一下运行该工具的感觉,因此我们建议你在CAPA运行时继续执行任务或者直接停止处理。此外,还有其他方法可以分析结果。
PS C:\Users\Administrator\Desktop\capa> capa.exe .\cryptbot.bin
loading : 100%|████████████████████| 485/485 [00:00<00:00, 1108.84 rules/s]
/ analyzing program...

除了-h命令(能够为我们提供有关该工具的可用参数的更多信息)之外,我们还可以使用两个最常用的参数,即-v和-vv ,这将为我们提供更加详细的结果,然而,这也会增加处理时间。我们将在接下来的内容中讨论使用这些参数选项的结果。
| 选项 | 描述 | 示例语法 |
|---|---|---|
-h 或--help |
显示相关的帮助消息并退出 | capa -h |
-v 或--verbose |
启用详细的结果文档 | capa.exe .\cryptbot.bin -v |
-vv 或--vverbose |
启用非常详细的结果文档 | capa.exe .\cryptbot.bin -vv |
上述示例命令的输出将如下所示。请注意,实际的命令执行结果可能会有所不同。如果你针对某些文件运行CAPA命令,它可能不会提供与下面相同的信息。
PS C:\Users\Administrator\Desktop\capa> capa.exe .\cryptbot.bin
┌─────────────┬────────────────────────────────────────────────────────────────────────────────────┐
│ md5 │ 3b9d26d2e7433749f2c32edb13a2b0a2 │
│ sha1 │ 969437df8f4ad08542ce8fc9831fc49a7765b7c5 │
│ sha256 │ ae7bc6b6f6ecb206a7b957e4bb86e0d11845c5b2d9f7a00a482bef63b567ce4c │
│ analysis │ static │
│ os │ windows │
│ format │ pe │
│ arch │ i386 │
│ path │ /home/strategos/Room-CAPA/cryptbot.bin │
└─────────────┴────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────┬───────────────────────────────────────────────────────────────────────────┐
│ ATT&CK Tactic │ ATT&CK Technique │
├──────────────────────┼───────────────────────────────────────────────────────────────────────────┤
│ DEFENSE EVASION │ Obfuscated Files or Information [T1027] │
│ │ Obfuscated Files or Information::Indicator Removal from Tools [T1027.005] │
│ │ Virtualization/Sandbox Evasion::System Checks [T1497.001] │
│ DISCOVERY │ File and Directory Discovery [T1083] │
│ EXECUTION │ Command and Scripting Interpreter::PowerShell [T1059.001] │
│ │ Shared Modules [T1129] │
│ IMPACT │ Resource Hijacking [T1496] │
│ PERSISTENCE │ Scheduled Task/Job::At [T1053.002] │
│ │ Scheduled Task/Job::Scheduled Task [T1053.005] │
└──────────────────────┴───────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────┬────────────────────────────────────────────────────────────────────┐
│ MAEC Category │ MAEC Value │
├─────────────────────────────┼────────────────────────────────────────────────────────────────────┤
│ malware-category │ launcher │
└─────────────────────────────┴────────────────────────────────────────────────────────────────────┘
┌──────────────────────────┬──────────────────────────────────────────────────────────────────────────┐
│ MBC Objective │ MBC Behavior │
├──────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ ANTI-BEHAVIORAL ANALYSIS │ Virtual Machine Detection [B0009] │
│ ANTI-STATIC ANALYSIS │ Executable Code Obfuscation::Argument Obfuscation [B0032.020] │
│ │ Executable Code Obfuscation::Stack Strings [B0032.017] │
│ COMMUNICATION │ HTTP Communication [C0002] │
│ │ HTTP Communication::Read Header [C0002.014] │
│ DATA │ Check String [C0019] │
│ │ Encode Data::Base64 [C0026.001] │
│ │ Encode Data::XOR [C0026.002] │
│ DEFENSE EVASION │ Obfuscated Files or Information::Encoding-Standard Algorithm [E1027.m02] │
│ DISCOVERY │ File and Directory Discovery [E1083] │
│ EXECUTION │ Command and Scripting Interpreter [E1059] │
│ FILE SYSTEM │ Create Directory [C0046] │
│ │ Delete File [C0047] │
│ │ Read File [C0051] │
│ │ Writes File [C0052] │
│ MEMORY │ Allocate Memory [C0007] │
│ PROCESS │ Create Process [C0017] │
└──────────────────────────┴──────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┬──────────────────────────────────────────────┐
│ Capability │ Namespace │
├──────────────────────────────────────────────────────┼──────────────────────────────────────────────┤
│ reference anti-VM strings │ anti-analysis/anti-vm/vm-detection │
│ reference anti-VM strings targeting VMWare │ anti-analysis/anti-vm/vm-detection │
│ reference anti-VM strings targeting VirtualBox │ anti-analysis/anti-vm/vm-detection │
│ contain obfuscated stackstrings (2 matches) │ anti-analysis/obfuscation/string/stackstring │
│ reference HTTP User-Agent string │ communication/http │
│ check HTTP status code │ communication/http/client │
│ reference Base64 string │ data-manipulation/encoding/base64 │
│ encode data using XOR │ data-manipulation/encoding/xor │
│ contain a thread local storage (.tls) section │ executable/pe/section/tls │
│ get common file path │ host-interaction/file-system │
│ create directory │ host-interaction/file-system/create │
│ delete file │ host-interaction/file-system/delete │
│ read file on Windows (4 matches) │ host-interaction/file-system/read │
│ write file on Windows (5 matches) │ host-interaction/file-system/write │
│ get thread local storage value │ host-interaction/process │
│ create process on Windows │ host-interaction/process/create │
│ allocate or change RWX memory │ host-interaction/process/inject │
│ reference cryptocurrency strings │ impact/cryptocurrency │
│ link function at runtime on Windows (5 matches) │ linking/runtime-linking │
│ parse PE header (4 matches) │ load-code/pe │
│ resolve function by parsing PE exports (186 matches) │ load-code/pe │
│ run PowerShell expression │ load-code/powershell/ │
│ schedule task via at │ persistence/scheduled-tasks │
│ schedule task via schtasks │ persistence/scheduled-tasks │
└──────────────────────────────────────────────────────┴──────────────────────────────────────────────┘
我们知道CAPA命令的处理时间可能需要几分钟,因此我们可以选择直接查看位于C:\Users\Administrator\Desktop\capa中名为cryptbot.txt的预处理文件。或者我们也可以在TryHackMe实验房间中,点击本小节页面右上角的按钮Download Task Files来下载给定的预处理文件 。完成文件下载之后,我们可以打开另一个PowerShell终端并使用命令Get-Content cryptbot.txt来查看此文件的内容。

#这里是在实验虚拟机中使用powershell终端命令查看给定文件的内容
PS C:\Users\Administrator\Desktop\capa> Get-Content .\cryptbot.txt
如果我们将这个预处理文件的内容加载到PowerShell中,将会从PS终端中得到与上述命令执行结果相同的输出。
但是这些结果是什么?我们又该如何解读它们呢?

-----------------------+-------------------------------------------------------------------------------------
¦ md5 ¦ 3b9d26d2e7433749f2c32edb13a2b0a2 ¦
¦ sha1 ¦ 969437df8f4ad08542ce8fc9831fc49a7765b7c5 ¦
¦ sha256 ¦ ae7bc6b6f6ecb206a7b957e4bb86e0d11845c5b2d9f7a00a482bef63b567ce4c ¦
¦ analysis ¦ static ¦
¦ os ¦ windows ¦
¦ format ¦ pe ¦
¦ arch ¦ i386 ¦
¦ path ¦ C:\Users\Administrator\Desktop\capa ¦
------------------------+------------------------------------------------------------------------------------
------------------------+------------------------------------------------------------------------------------
¦ ATT&CK Tactic ¦ ATT&CK Technique ¦
------------------------+------------------------------------------------------------------------------------
¦ DEFENSE EVASION ¦ Obfuscated Files or Information T1027 ¦
¦ ¦ Obfuscated Files or Information::Indicator Removal from Tools T1027.005 ¦
¦ ¦ Virtualization/Sandbox Evasion::System Checks T1497.001 ¦
+------------------------+------------------------------------------------------------------------------------¦
¦ DISCOVERY ¦ File and Directory Discovery T1083 ¦
+------------------------+------------------------------------------------------------------------------------¦
¦ EXECUTION ¦ Command and Scripting Interpreter::PowerShell T1059.001 ¦
¦ ¦ Shared Modules T1129 ¦
+------------------------+------------------------------------------------------------------------------------¦
¦ IMPACT ¦ Resource Hijacking T1496 ¦
+------------------------+------------------------------------------------------------------------------------¦
¦ PERSISTENCE ¦ Scheduled Task/Job::At T1053.002 ¦
¦ ¦ Scheduled Task/Job::Scheduled Task T1053.005 ¦
------------------------+------------------------------------------------------------------------------------
------------------------+------------------------------------------------------------------------------------
¦ MAEC Category ¦ MAEC Value ¦
------------------------+------------------------------------------------------------------------------------
¦ malware-category ¦ launcher ¦
------------------------+------------------------------------------------------------------------------------
------------------------+------------------------------------------------------------------------------------
¦ MBC Objective ¦ MBC Behavior ¦
------------------------+------------------------------------------------------------------------------------
¦ ANTI-BEHAVIORAL ANALYSIS ¦ Virtual Machine Detection [B0009] ¦
+-----------------------------+-------------------------------------------------------------------------------¦
¦ ANTI-STATIC ANALYSIS ¦ Executable Code Obfuscation::Argument Obfuscation [B0032.020] ¦
¦ ¦ Executable Code Obfuscation::Stack Strings [B0032.017] ¦
+-----------------------------+-------------------------------------------------------------------------------¦
¦ COMMUNICATION ¦ HTTP Communication [C0002] ¦
¦ ¦ HTTP Communication::Read Header [C0002.014] ¦
+-----------------------------+-------------------------------------------------------------------------------¦
¦ DATA ¦ Check String [C0019] ¦
¦ ¦ Encode Data::Base64 [C0026.001] ¦
¦ ¦ Encode Data::XOR [C0026.002] ¦
+-----------------------------+-------------------------------------------------------------------------------¦
¦ DEFENSE EVASION ¦ Obfuscated Files or Information::Encoding-Standard Algorithm [E1027.m02] ¦
+-----------------------------+-------------------------------------------------------------------------------¦
¦ DISCOVERY ¦ File and Directory Discovery [E1083] ¦
+-----------------------------+-------------------------------------------------------------------------------¦
¦ EXECUTION ¦ Command and Scripting Interpreter [E1059] ¦
+-----------------------------+-------------------------------------------------------------------------------¦
¦ FILE SYSTEM ¦ Create Directory [C0046] ¦
¦ ¦ Delete File [C0047] ¦
¦ ¦ Read File [C0051] ¦
¦ ¦ Writes File [C0052] ¦
+-----------------------------+-------------------------------------------------------------------------------¦
¦ MEMORY ¦ Allocate Memory [C0007] ¦
+-----------------------------+-------------------------------------------------------------------------------¦
¦ PROCESS ¦ Create Process [C0017] ¦
------------------------+------------------------------------------------------------------------------------
------------------------+------------------------------------------------------------------------------------
¦ Capability ¦ Namespace ¦
------------------------+------------------------------------------------------------------------------------
¦ reference anti-VM strings ¦ anti-analysis/anti-vm/vm-detection ¦
¦ reference anti-VM strings targeting VMWare ¦ anti-analysis/anti-vm/vm-detection ¦
¦ reference anti-VM strings targeting VirtualBox ¦ anti-analysis/anti-vm/vm-detection ¦
¦ contain obfuscated stackstrings (2 matches) ¦ anti-analysis/obfuscation/string/stackstring ¦
¦ reference HTTP User-Agent string ¦ communication/http ¦
¦ check HTTP status code ¦ communication/http/client ¦
¦ reference Base64 string ¦ data-manipulation/encoding/base64 ¦
¦ encode data using XOR ¦ data-manipulation/encoding/xor ¦
¦ contain a thread local storage (.tls) section ¦ executable/pe/section/tls ¦
¦ get common file path ¦ host-interaction/file-system ¦
¦ create directory ¦ host-interaction/file-system/create ¦
¦ delete file ¦ host-interaction/file-system/delete ¦
¦ read file on Windows (4 matches) ¦ host-interaction/file-system/read ¦
¦ write file on Windows (5 matches) ¦ host-interaction/file-system/write ¦
¦ get thread local storage value ¦ host-interaction/process ¦
¦ create process on Windows ¦ host-interaction/process/create ¦
¦ allocate or change RWX memory ¦ host-interaction/process/inject ¦
¦ reference cryptocurrency strings ¦ impact/cryptocurrency ¦
¦ link function at runtime on Windows (5 matches) ¦ linking/runtime-linking ¦
¦ parse PE header (4 matches) ¦ load-code/pe ¦
¦ resolve function by parsing PE exports (186 matches) ¦ load-code/pe ¦
¦ run PowerShell expression ¦ load-code/powershell/ ¦
¦ schedule task via at ¦ persistence/scheduled-tasks ¦
¦ schedule task via schtasks ¦ persistence/scheduled-tasks ¦
------------------------+------------------------------------------------------------------------------------
答题
阅读本小节内容并回答问题。
如果你需要检查该工具还可以使用哪些其他参数,你应该使用什么命令行选项来进行探索?请使用短格式表示相关的命令行选项。
-h
使用什么命令行选项可以帮助我们查找有关恶意软件功能的详细信息?请使用短格式表示相关的命令行选项。
-v
你可以使用什么命令行选项来查找有关恶意软件功能的非常详细的信息?请使用短格式表示相关的命令行选项。
-vv
你可以使用什么 PowerShell 命令来读取指定的文件的内容?
Get-Content

剖析CAPA结果1: 基本信息、MITRE和MAEC
如上一小节中所述,我们将会对“针对cryptbot.bin文件运行CAPA命令”所得到的结果进行讨论,因此我们将按区块(block)以及按主题逐一分析这些结果。
CAPA结果的第一个区块包含的是文件的基本信息,这包括以下内容:
- 加密算法的计算值,如
md5和sha1/256的结果值。 analysis字段将告诉我们 CAPA 是如何对文件进行分析的,如静态分析(static)。os字段会揭示适用于已识别功能的操作系统(OS)上下文环境是什么,如windows。arch字段允许我们确定是否正在处理的是与 x86 架构相关的二进制文件,如i386架构。path是被分析的文件所在的路径,如 /home/strategos/Room-CAPA/cryptbot.bin 。
┌─────────────┬────────────────────────────────────────────────────────────────────────────────────┐
│ md5 │ 3b9d26d2e7433749f2c32edb13a2b0a2 │
│ sha1 │ 969437df8f4ad08542ce8fc9831fc49a7765b7c5 │
│ sha256 │ ae7bc6b6f6ecb206a7b957e4bb86e0d11845c5b2d9f7a00a482bef63b567ce4c │
│ analysis │ static │
│ os │ windows │
│ format │ pe │
│ arch │ i386 │
│ path │ /home/strategos/Room-CAPA/cryptbot.bin │
└─────────────┴────────────────────────────────────────────────────────────────────────────────────┘
MITRE ATT&CK
MITRE ATT&CK(Adversarial Tactics, Techniques, and Common Knowledge-对抗策略、技术和常识)框架是一个全面的全球知识库,详细记录了威胁行为者在网络安全攻击的每一个阶段所使用的策略和技术。它作为战略手册,提供了关于攻击者所使用的方法的详细见解,从获取初始访问到维持权限、提升权限、规避防御、内网横向移动等。
Adversarial Tactics, Techniques, and Common Knowledge-入侵者战术、技术和共有知识库
CAPA将使用这种格式输出结果。请注意,某些结果可能包含也可能不包含 技术标识符 和 子技术标识符。
| 格式 | 样本 | 解释 |
|---|---|---|
| ATT&CK Tactic::ATT&CK Technique::Technique Identifier | Defense Evasion::Obfuscated Files or Information::T1027 | DEFENSE EVASION = ATT&CK Tactic Obfuscated Files or Information = ATT&CK Technique T1027 = Technique Identifier |
| ATT&CK Tactic::ATT&CK Technique::ATT&CK Sub-Technique::Technique Identifier[.]Sub-technique Identifier | Defense Evasion::Obfuscated Files or Information::Indicator Removal from Tools T1027.005 | DEFENSE EVASION = ATT&CK Tactic Obfuscated Files or Information = ATT&CK Technique Indicator Removal from Tools = ATT&CK Sub-Technique T1027 = Technique Identifier 005 = Sub-Technique Identifier |
┌──────────────────────┬───────────────────────────────────────────────────────────────────────────┐
│ ATT&CK Tactic │ ATT&CK Technique │
├──────────────────────┼───────────────────────────────────────────────────────────────────────────┤
│ DEFENSE EVASION │ Obfuscated Files or Information [T1027] │
│ │ Obfuscated Files or Information::Indicator Removal from Tools [T1027.005] │
│ │ Virtualization/Sandbox Evasion::System Checks [T1497.001] │
│ DISCOVERY │ File and Directory Discovery [T1083] │
│ EXECUTION │ Command and Scripting Interpreter::PowerShell [T1059.001] │
│ │ Shared Modules [T1129] │
│ IMPACT │ Resource Hijacking [T1496] │
│ PERSISTENCE │ Scheduled Task/Job::At [T1053.002] │
│ │ Scheduled Task/Job::Scheduled Task [T1053.005] │
└──────────────────────┴───────────────────────────────────────────────────────────────────────────┘
在CAPA的最终输出中,它们引用了 MITRE 框架。这有助于分析师或防御者将文件的行为映射到攻击者的playbook(行动手册),这有助于缩小事件响应期间的调查范围。如果想更深入地了解该主题,你可能需要查看并完成TryHackMe提供的 MITRE ATT&CK 框架实验房间。
MAEC
MAEC(Malware Attribute Enumeration and Characterization-恶意软件属性枚举和特征描述)是一种专用语言,旨在编码和传递有关恶意软件的复杂细节。它包含广泛的属性,包括行为特征、攻击痕迹和不同恶意软件实例之间的关联性。这种语言作为一种标准化的系统,可以用于跟踪和分析恶意软件的复杂性。
┌─────────────────────────────┬────────────────────────────────────────────────────────────────────┐
│ MAEC Category │ MAEC Value │
├─────────────────────────────┼────────────────────────────────────────────────────────────────────┤
│ malware-category │ launcher │
└─────────────────────────────┴────────────────────────────────────────────────────────────────────┘
让我们检查下表,看一下CAPA最常用的MAEC值:Downloader 和 Launcher。
| MAEC值 | 描述 |
|---|---|
| Launcher | 呈现出与恶意软件行为相似的可触发特定动作的特征 |
| Downloader | 呈现出下载并执行其他文件的行为特征,此类行为通常见于更复杂的恶意软件中 |
当 CAPA 使用“ launcher -启动器”MAEC值标记文件时,它表明该文件会表现出类似于但不限于以下的行为(侧重代码激活):
- 投放附加的恶意载荷;
- 激活持久化机制;
- 连接C2(命令与控制-command-and-control)服务器/初始化C2通信;
- 执行特定恶意功能。
这很有趣!其中一些行为也会存在于恶意软件行为目录(MBC-Malware Behavior Catalogue)和功能区块中,我们将在下一个小节中进行讨论!
此外,当 CAPA 使用“Downloader-下载器”MAEC值标记文件时,它表明该文件会表现出类似于但不限于以下的行为(侧重文件投放):
- 从互联网获取其他有效载荷或资源;
- 拉取更新(例如攻击模块更新);
- 执行第二阶段代码(secondary stages);
- 获取配置文件。
答题
阅读本小节内容并回答问题。
cryptbot.bin的sha256值是什么?
ae7bc6b6f6ecb206a7b957e4bb86e0d11845c5b2d9f7a00a482bef63b567ce4c
混淆文件或信息(Obfuscated Files or Information)的技术(Technique)标识符是什么?
T1027
什么是Obfuscated Files or Information::Indicator Removal from Tools的子技术(Sub-Technique)标识符?
T1027.005
当 CAPA 使用什么 MAEC 值标记文件时,可以表明该文件表现出类似于但不限于Activating persistence mechanisms(激活持久化机制)的行为?
launcher
当 CAPA 使用什么 MAEC 值标记文件时,可以表明该文件表现出类似于但不限于Fetching additional payloads or resources from the internet(从互联网获取其他的恶意载荷或资源)的行为?
Downloader

剖析CAPA结果2: 恶意软件行为分类体系
在本小节中,我们将涵盖以下主题:
- MBC:恶意软件行为分类体系/恶意软件行为目录(Malware Behavior Catalogue);
- Objective:目标;
- Micro-Objective:原子级目标;
- MBC Behaviors:MBC 行为;
- Micro-Behavior:原子级行为;
- Methods:方法。
让我们继续了解CAPA结果中的下一个区块,以下终端内容也可在第二小节中看到:
#Malware Behavior Catalogue-恶意软件行为分类体系(它可以与ATT&CK框架形成互补关系)
┍━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┑
│ MBC Objective │ MBC Behavior │
┝━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┥
│ ANTI-BEHAVIORAL ANALYSIS │ Virtual Machine Detection [B0009]
├─────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
│ ANTI-STATIC ANALYSIS │ Executable Code Obfuscation::Argument Obfuscation [B0032.020] │
│ │ Executable Code Obfuscation::Stack Strings [B0032.017] │
├─────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
│ COMMUNICATION │ HTTP Communication [C0002] │
│ │ HTTP Communication::Read Header [C0002.014] │
├─────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
│ DATA │ Check String [C0019] │
│ │ Encode Data::Base64 [C0026.001] │
│ │ Encode Data::XOR [C0026.002] │
├─────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
│ DEFENSE EVASION │ Obfuscated Files or Information::Encoding-Standard Algorithm [E1027.m02] │
├─────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
│ DISCOVERY │ File and Directory Discovery [E1083] │
├─────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
│ EXECUTION │ Command and Scripting Interpreter [E1059] │
├─────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
│ FILE SYSTEM │ Create Directory [C0046] │
│ │ Delete File [C0047] │
│ │ Read File [C0051] │
│ │ Writes File [C0052] │
├─────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
│ MEMORY │ Allocate Memory [C0007] │
├─────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
│ PROCESS │ Create Process [C0017] │
┕━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┙
MBC
MBC(Malware Behavior Catalogue-恶意软件行为目录)旨在支持恶意软件分析的各个方面,例如标记、相似性分析和标准化报告。从本质上讲,它将充当恶意软件目标和行为的一个目录。MBC还可以链接到 ATT&CK 方法,并记录在恶意软件分析过程中发现的所有行为和代码特征。需要重点注意的是,MBC行为的名称可能会与相应的ATT&CK技术匹配,也可能不匹配。行为页面上的信息可以补充ATT&CK页面上的内容;换言之,在记录恶意软件行为时,MBC用户会引用ATT&CK,但是MBC 不会重复ATT&CK信息。
tips:Malware Behavior Catalogue-恶意软件行为分类体系(它可以与ATT&CK框架形成互补关系)。
下面的MBC内容可以用两种格式表示。
| 格式 | 样本 | 解释 |
|---|---|---|
| OBJECTIVE::Behavior::Method[Identifier] | ANTI-STATIC ANALYSIS::Executable Code Obfuscation::Argument Obfuscation [B0032.020] | Anti-static Analysis = OBJECTIVE Executable Code Obfuscation = BEHAVIOR Argument Obfuscation = METHOD BOO32.020 = IDENTIFIER |
| OBJECTIVE::Behavior::[Identifier] | COMMUNICATION::HTTP Communication:: [C0002] | COMMUNICATION = OBJECTIVE HTTP Communication = BEHAVIOR C0002 = IDENTIFIER |
这两种格式之间的区别在于:第一种格式包含被称为 METHOD (方法) 的附加详细信息,它也可以作为一种子技术。
为了更好地理解这一部分,我们还必须讨论与恶意软件功能相关的Objective(目标)、Behavior(行为)和Methods(方法)。
Objective(目标)
Objective(目标)是基于恶意软件行为背景下的 ATT&CK 策略,但并非所有策略都包括在内。此外,MBC还会包含反行为分析和反静态分析。这些目标是为恶意软件分析而量身定制的,可用于描述恶意软件的特征。下表对各种目标进行了说明。
| Objective | 解释 |
|---|---|
| Anti-Behavioral Analysis(反行为分析) | 恶意软件试图通过使用沙箱或调试器等工具阻碍行为分析来避免被检测到 |
| Anti-Static Analysis(反静态分析) | 恶意软件试图阻碍或增加静态分析的复杂性,使安全专业人员更难识别和理解其恶意行为和意图 |
| Collection(收集) | 恶意软件专注于识别和收集目标机器或目标网络的信息 |
| Command and Control(命令与控制-C2) | 恶意软件通常会通过各种方法(例如C2服务器、点对点网络或其他方式)与受感染的系统建立通信。这种通信使得恶意软件能够控制受感染的系统,从而使攻击者能够执行命令、窃取数据或者进行其他恶意活动 |
| Credential Access(凭据访问) | The primary aim of malware is to steal account credentials, such as usernames and passwords.恶意软件的主要目的是窃取帐户凭证,例如用户名和密码 |
| Defense Evasion(防御规避) | 恶意软件旨在绕过和规避系统内存在的各种检测机制和安全机制,以避免被检测到或者被缓解危害性 |
查看更多目标(Objective):
| Objective | 解释 |
|---|---|
| Discovery(发现) | 恶意软件试图收集有关系统或网络环境的配置和设置的详细信息,包括硬件、软件和网络基础设施 |
| Execution(执行) | 恶意软件旨在未经用户同意,在目标计算机系统上执行未经授权的命令或代码。这可能包括各种有害活动,例如窃取个人信息、损坏文件或者获取对系统的未经授权的访问权限 |
| Exfiltration(数据渗出/数据外泄) | 恶意软件旨在渗入计算机系统或网络,窃取并提取敏感数据。这些数据可能包括个人信息、财务信息以及存储在目标系统或网络上的任何其他有价值的数据 |
| Impact(影响) | 恶意软件旨在操纵、破坏或损坏计算机系统和数据。它可以通过受感染的电子邮件、被入侵的网站和其他欺骗性手段进入计算机,导致财务损失、隐私泄露以及造成系统不稳定 |
| Lateral Movement(横向移动) | 恶意软件试图通过网络传播,要么主动地通过机器访问,要么被动地,例如通过恶意电子邮件进行传播 |
| Persistence(持久化) | 恶意软件是经过精心设计的,具备长时间保持不被发现并可在计算机系统上运行的功能 |
| Privilege Escalation(权限提升) | 恶意软件试图渗入计算机系统或网络,以获取更高的权限或控制。一旦进入目标环境,恶意软件就会试图提升权限、访问敏感信息或者控制系统资源以用于实现恶意目的 |
Micro-Objective(原子级目标)
原子级目标与原子级行为相关,原子级行为指的是潜在的恶意软件所表现出的一个或多个操作,这些操作不一定是恶意的,并且可能服务于各种目标。示例二进制文件——例如消息应用程序中的二进制文件。然而,需要注意的是,这些行为经常会被滥用,这就是 CAPA 可能标记此类行为的原因。
| Micro-Objective(原子级目标) | 描述 |
|---|---|
| PROCESS(进程) | 表现出与进程相关的行为,包括但不限于创建进程、设置线程上下文、终止进程和检查互斥锁 |
| MEMORY(内存) | 表现出包括但不限于分配内存、更改内存保护和释放内存等行为 |
| COMMUNICATION(通信) | 表现出包括但不限于DNS ,FTP ,HTTP ,ICMP,SMTP等网络流量的行为 |
| DATA(数据) | 表现出包括但不限于检查字符串、压缩、解码和编码数据的行为 |
在CAPA的最终输出中,目标和原子级目标仅会显示在Objective(目标)列下。
MBC Behaviors
MBC 行为(Behaviors)列包含了行为和原子级行为(有或者没有其方法和标识符)。请查看 MBC 摘要链接以获取所有 MBC 内容的列表。
以下是行为/原子级行为及其标识符的一个经过编辑的解释版本。
| Objective(目标) | Behavior(行为) | 标识符 | 解释 |
|---|---|---|---|
| ANTI-BEHAVIORAL ANALYSIS(反-行为分析) | Virtual Machine Detection(虚拟机检测) | B0009 | 恶意软件会检查自身是否在虚拟环境中运行。在系统侦察过程中,恶意软件会检查各种用户和系统信息(痕迹) |
| ANTI-STATIC ANALYSIS(反-静态分析) | Executable Code Obfuscation(可执行代码混淆) | B0032 | 可执行代码会被故意进行混淆处理,以阻碍静态代码分析。这是与恶意软件样本的可执行代码(包括其数据部分和文本部分)相关的特定行为 |
| EXECUTION(执行) | Command and Scripting Interpreter(命令和脚本解释器) | E1059 | 恶意软件可以利用命令和脚本解释器来运行恶意命令、脚本或二进制文件。它的目的是利用目标系统内置的解释器,例如Windows上的 cmd.exe 或 PowerShell ,以及类 Unix 系统上的 Bash。攻击者还可能会使用其他脚本语言,例如 Python、Perl 或 JavaScript等 |
| DISCOVERY(发现) | File and Directory Discovery(文件和目录发现) | E1083 | 恶意软件能够通过枚举文件和目录来搜索特定位置中的特定文件 |
| ANTI-STATIC ANALYSIS, DEFENSE EVASION(反-静态分析,防御规避) | Obfuscated Files or Information(混淆文件或信息) | E1027 | 恶意软件可以通过编码、加密或其他方式混淆文件或信息,使其变得难以分析。恶意软件本身也可以对恶意软件样本进行编码或加密 |
Micro-Behavior(原子级行为)
在恶意软件分析中,“low-level behaviors-低级别行为”一词指的是恶意软件所表现出的 不一定是恶意的 但可能会服务于各种目标(objectives)的操作。这些行为在恶意软件行为特征 (Malware Behavior Characteristics) 分析中通常会被记录为“原子级行为”。此类低级别行为的示例包括创建TCP套接字和评估字符串中的特定条件。需要注意的是,仅仅因为某种行为被归类为低级别并不意味着它是无害的 ,因为它仍然可能是更大规模的恶意计划的一部分。
| Micro-Objective(原子级目标) | Micro-Behaviors(原子级行为) | 标识符 | 解释 |
|---|---|---|---|
| MEMORY(内存) | Allocate Memory(分配内存) | C0007 | 恶意软件经常会利用内存分配作为其策略的一部分来unpack(脱壳)自身并执行其恶意活动 |
| PROCESS(进程) | Create Process(创建进程) | C0017 | 恶意软件可通过 WMI 或 shellcode 创建进程,它还可以创建被挂起的进程 |
| COMMUNICATION(通信) | HTTP Communication(HTTP通信) | C0002 | 恶意软件能够发起 HTTP 通信 |
| DATA(数据) | Check String(检查字符串) | C0019 | 恶意软件可以检查字符串以识别特定的特征,例如 ASCII 内容、信用卡号和字符串长度 |
查看更多表格内容:
| Micro-Objective | Micro-Behaviors | 标识符 | 解释 |
|---|---|---|---|
| DATA(数据) | Encode Data(编码数据) | C0026 | 恶意软件能够使用 base64 和 XOR 对数据进行编码 |
| FILE SYSTEM(文件系统) | Create Directory(创建目录) | C0046 | 恶意软件可以创建目录 |
| FILE SYSTEM(文件系统) | Delete File(删除文件) | C0047 | 恶意软件具有删除文件的能力 |
| FILE SYSTEM(文件系统) | Read File(读取文件) | C0051 | 恶意软件可以读取文件 |
| FILE SYSTEM(文件系统) | Writes File(写入文件) | C0052 | 恶意软件具有写入文件的能力 |
请注意,在 CAPA 的最终输出中,行为和原子级行为仅会显示在Behavior(行为)列下。
Methods(方法)
最后,我们来查看一下METHODS(方法) 。下面是前述示例结果中所包含的一些方法。方法与行为密切相关,因此,要完整地查看所有方法,请参考每个感兴趣的具体行为/原子级行为。
| Behavior(行为) | Methods or sub-technique(方法或子技术) | 标识符 | 解释 |
|---|---|---|---|
| Executable Code Obfuscation(可执行代码混淆) | Argument Obfuscation(参数混淆) | B0032.020 | API 调用的简单数字或字符串参数在运行时会被计算,这使分析变得更加困难 |
| Executable Code Obfuscation(可执行代码混淆) | Stack Strings(堆栈字符串) | B0032.017 | 每次使用时都在堆栈上构建和解密字符串,然后丢弃以避免明显的引用 |
| HTTP Communication(HTTP通信) | Read Header(读取标头) | C0002.014 | HTTP 读取标头 |
| Encode Data(编码数据) | Base64 | C0026.001 | 恶意软件可能会使用 Base64 对数据进行编码 |
| Encode Data(编码数据) | XOR(异或) | C0026.002 | 恶意软件可能会使用 XOR 来编码数据 |
| Obfuscated Files or Information(混淆文件或信息) | Encoding-Standard Algorithm(编码标准算法) | E1027.m02 | 对恶意软件样本、文件或其他信息使用标准算法(例如 base64)进行编码 |
现在我们对 MBC 的内容有了很好的概述和了解,我们应该能够解释前述示例的输出结果了。因此,让我们快速回顾一下示例输出结果中的一部分内容。
tips:Malware Behavior Catalogue-恶意软件行为分类体系(它可以与ATT&CK框架形成互补关系)。
#Malware Behavior Catalogue-恶意软件行为目录/恶意软件行为分类体系
┌─────────────────────────────┬──────────────────────────────────┐
│ MBC Objective │ MBC Behavior │
├─────────────────────────────┼──────────────────────────────────┤
| DATA │ Encode Data::Base64 [C0026.001] │
└─────────────────────────────┴──────────────────────────────────┘
以下是对上述结果的解释,见下表。
| Label(标签) | Value(值) | 解释 |
|---|---|---|
| MBC Objective(MBC 目标) | DATA(数据) | 表现出包括但不限于检查字符串、压缩、解码和编码数据等行为 |
| MBC Behavior(MBC 行为) | Encode Data(编码数据) | 恶意软件能够使用 base64 和 XOR 对数据进行编码 |
| Method(方法) | Base64 | 恶意软件可能会使用 Base64 对数据进行编码 |
| Identifier(标识符) | C0026.001 | 标识符可以传递有关行为的信息,它也可以用作一个标签 |
知道了这些信息,你可以简单地说这个文件在使用base64编码方案。
答题
阅读本小节内容并回答问题。
什么是恶意软件目标和行为的目录?(MBC)
Malware Behavior Catalogue
哪个领域是基于恶意软件行为背景下的 ATT&CK 策略?
Objective
“创建进程”原子级行为的标识符是什么?
C0017
标识符B0009的行为是什么?
Virtual Machine Detection
恶意软件可以使用 Base64 和 XOR 来混淆数据,与之相关的原子级行为是什么?(查找标识符 C0026)
Encode Data
哪个原子级行为是指“Malware is capable of initiating HTTP communications(恶意软件能够发起HTTP通信)”?(检查带有 C0002 的标识符)
HTTP Communication

剖析CAPA结果3: 命名空间
接下来,我们的讨论将分为两个主要的主题:功能 (Capability) 和命名空间 (Namespace )。 在本小节中,我们将重点讨论命名空间 (Namespace)。
下面,你将看到使用capa分析指定文件的输出结果。请注意,这部分内容也可以在第二小节中看到。
#Capability and Namespace 功能和命名空间
┌──────────────────────────────────────────────────────┬──────────────────────────────────────────────────────┐
│ Capability │ Namespace │
├──────────────────────────────────────────────────────┼──────────────────────────────────────────────────────┤
│ reference anti-VM strings │ anti-analysis/anti-vm/vm-detection │
│ reference anti-VM strings targeting VMWare │ anti-analysis/anti-vm/vm-detection │
│ reference anti-VM strings targeting VirtualBox │ anti-analysis/anti-vm/vm-detection │
│ contain obfuscated stackstrings (2 matches) │ anti-analysis/obfuscation/string/stackstring │
│ reference HTTP User-Agent string │ communication/http │
│ check HTTP status code │ communication/http/client │
│ reference Base64 string │ data-manipulation/encoding/base64 │
│ encode data using XOR │ data-manipulation/encoding/xor │
│ contain a thread local storage (.tls) section │ executable/pe/section/tls │
│ get common file path │ host-interaction/file-system │
│ create directory │ host-interaction/file-system/create │
│ delete file │ host-interaction/file-system/delete │
│ read file on Windows (4 matches) │ host-interaction/file-system/read │
│ write file on Windows (5 matches) │ host-interaction/file-system/write │
│ get thread local storage value │ host-interaction/process │
│ create process on Windows │ host-interaction/process/create │
│ allocate or change RWX memory │ host-interaction/process/inject │
│ reference cryptocurrency strings │ impact/cryptocurrency │
│ link function at runtime on Windows (5 matches) │ linking/runtime-linking │
│ parse PE header (4 matches) │ load-code/pe │
│ resolve function by parsing PE exports (186 matches) │ load-code/pe │
│ run PowerShell expression │ load-code/powershell/ │
│ schedule task via at │ persistence/scheduled-tasks │
│ schedule task via schtasks │ persistence/scheduled-tasks │
└──────────────────────────────────────────────────────┴──────────────────────────────────────────────────────┘
这个区块的内容可以用下面的格式表示。
| 格式 | 样本 | 解释 |
|---|---|---|
| Capability(Rule Name)::TLN(Top-Level Namespace)/Namespace | reference anti-VM strings::Anti-Analysis/anti-vm/vm-detection | Reference anti-VM strings = Capability(Rule Name) Anti-Analysis = TLN or Top-Level Namespace anti-vm/vm-detection = Namespace |
Namespaces
CAPA 会使用命名空间对具有相同目的的项目进行分组。
| Top-Level Namespace (TLN-顶级命名空间) | 解释 |
|---|---|
| anti-analysis(反-分析) | 包含一组专门用于检测恶意软件为规避分析而表现出的行为的规则。这些行为包括混淆、加壳和反调试技术 |
| collection(收集) | 包含一组与数据相关的规则,恶意软件可能会枚举并收集信息以用于数据泄露或其他目的。可以将其视为恶意软件行为的“数据收集”方面 |
| communication(通信) | 包含一组与恶意软件所展现的不同通信行为相关的规则。这涵盖了恶意软件如何与网络交互,包括数据传输和接收、命令与控制(C2)通信以及其他与网络相关的行为 |
| compiler(编译器) | 包含一组规则和配置,用于识别生成可执行文件时所使用的特定构建环境或编译器。这些命名空间本质上是识别程序编译过程的唯一“签名” |
| data-manipulation(数据操作) | 包含一组规则,用于管理可执行文件中涉及更改数据的行为。此方面可以被视为恶意软件行为的“数据转换”部分,涵盖了字符串加密和数据编码等操作 |
查看更多表格内容:
| Top-Level Namespace (TLN) | 解释 |
|---|---|
| executable(可执行文件) | 包含一组与可执行文件中的属性相关的规则,这些属性包括与可执行文件相关的 PE 段(sections)或调试信息 |
| host-interaction(主机交互) | 包含一组与主机系统交互行为相关的规则。这涵盖了恶意软件如何与其环境交互。具体来说,此命名空间中的规则可以捕获与读取、写入或修改磁盘文件相关的行为,包括创建、删除或修改文件和目录 |
| impact(影响) | 包含一组与程序行为的潜在后果或影响相关的规则。可以将其视为关注该恶意软件可能造成的危害的方面。它可能包括与建立远程访问、数据泄露、破坏或修改相关的行为 |
| internal(内部) | 系统中包含的规则并且不打算供分析师直接使用或用于报告。相反,这些规则仅供 CAPA 工具内部使用,作为规则制定和执行的幕后环节 |
| lib | 用于创建其他规则的构建块 |
| linking(链接) | 包含用于识别在程序执行期间涉及链接或动态加载外部代码或动态加载库的行为的规则。这是其主要功能,并且对程序的安全性至关重要。了解链接行为是必要的,原因有几个。恶意软件通常会依赖外部库或组件(例如 OpenSSL、Zlib 或其他第三方库)来执行特定任务。检测这些依赖关系有助于分析人员了解恶意软件的功能。外部库还会引入额外的攻击面。如果链接库中存在漏洞,那么它可以被恶意软件或防御者在分析过程中利用 |
| load-code(加载代码) | 包含一组与程序执行期间动态加载或执行代码的行为相关的规则和规定。此概念可以等同于恶意软件行为中的“运行时代码注入”方面,即涉及在程序执行期间引入了未经授权的代码 |
| malware-family(恶意软件家族) | 包含一组与特定恶意软件家族或组织所关联的行为相关的规则。它可以用来识别与已知的恶意软件家族相关的独特特征或“签名”,从而能够更准确地检测和分类潜在的威胁 |
| nursery | 这是一个包含了尚未完善的规则的集结地 |
| persistence(持久化) | 包含与在受感染的系统中维持访问或实现持久化所关联的行为相关的规则。此命名空间主要致力于了解恶意软件如何在受感染的环境中建立并维持访问,从而使其能够在较长时间内持续存在并且执行恶意活动 |
让我们通过查看下表来了解其工作原理。
| Top-Level Namespace (TLN) | Namespaces | Rule YAML File | 解释 |
|---|---|---|---|
| Anti-Analysis(反-分析) | anti-vm/vm-detection | reference-anti-vm-strings-targeting-virtualbox.yml reference-anti-vm-strings-targeting-virtualpc.yml | “anti- vm / vm -detection” 命名空间包含用于检测虚拟机 ( VM ) 环境的规则。这些规则专注于识别恶意软件常用的特定字符串或模式,以检测正在运行的虚拟机。使用这些规则,CAPA 可以识别恶意软件是否会搜索 VMware特定的注册表项、VMware工具的存在情况或其他与虚拟机相关的元素。 |
| obfuscation(混淆) | obfuscated-with-dotfuscator.yml obfuscated-with-smartassembly.yml | 恶意软件经常会使用混淆技术来增加分析难度。这些技术包括字符串加密、代码混淆、加壳和反调试技巧等方法。obfuscation命名空间旨在处理这些技术,否则它们会隐藏或模糊代码的真实目的 |
为此,我们仅使用Anti-Analysis作为 TLN(顶级命名空间)。在此 TLN 下,我们对命名空间进行了分组,例如anti-vm/vm-detection和obfuscation。每个命名空间内部都有一组规则,这些规则也被分组在一起。对于anti-vm/vm-detection ,我们有下面这些规则及其配置文件,例如:
- reference-anti-vm-strings-targeting-virtualbox.yml
- reference-anti-vm-strings-targeting-virtualpc.yml
obfuscation命名空间也是如此,我们的规则也是分组的,例如:
- obfuscated-with-dotfuscator.yml
- obfuscated-with-smartassembly.yml
再次注意,它们仍然处于 TLN Anti-Analysis(反-分析)之下。
请参考下图:

除了上面的表格中所提到的内容之外,TLN Anti-Analysis(反-分析)下还有一些命名空间及其对应的规则。如果你想进行深入了解,请查看此链接 。
如果你对其他 TLN 或顶级命名空间感兴趣(例如collection、compiler、 persistence、linking和impact),请查看此链接 。
答题
阅读本小节内容并回答以下问题。
哪个顶级命名空间包含一组专门用于检测行为的规则,包括恶意软件为规避分析而表现出的混淆、加壳和反调试技术?
anti-analysis
哪个命名空间包含检测虚拟机 (VM) 环境的规则?请注意,这不是 TLN 或顶级命名空间。
anti-vm/vm-detection
哪个顶级命名空间包含与在受感染的系统内维持访问或实现持久化所关联的行为相关的规则?该命名空间的重点是了解恶意软件如何在受感染的环境中建立和维持访问,从而使其能够在较长时间内持续存在并且执行恶意活动。
persistence
哪个命名空间涉及诸如字符串加密、代码混淆、加壳和反调试技巧之类的技术,这些技术能够隐藏或模糊代码的真正用途?
obfuscation
哪个顶级名称空间是尚未完善的规则的集结地?
Nursery

剖析CAPA结果4: 功能
在本小节中,我们将继续上一小节的讨论。
Capability
下面是一个表格,其中包含 Capability 及其相关的 TLN(顶级命名空间)、命名空间以及与 yaml 文件相关联的规则 。请仔细查看。
| Capability | Top-Level Namespace (TLN) | Namespaces | Rule YAML file | Notes |
|---|---|---|---|---|
| reference anti-VM strings(引用anti-VM字符串) | Anti-Analysis(反-分析) | anti-vm/vm-detection | reference-anti-vm-strings.yml | 要检查此命名空间下的所有规则,请点击此处 |
| reference anti-VM strings targeting VMWare(引用anti-VM字符串,针对VMWare) | Anti-Analysis(反-分析) | anti-vm/vm-detection | reference-anti-vm-strings-targeting-vmware.yml | 要检查此命名空间下的所有规则,请点击此处 |
| reference anti-VM strings targeting VirtualBox(引用anti-VM字符串,针对VirtualBox) | Anti-Analysis(反-分析) | anti-vm/vm-detection | reference-anti-vm-strings-targeting-virtualbox.yml | 你可以检查 TLN(顶级命名空间)。 |
| reference HTTP User-Agent string(引用HTTP User-Agent字符串) | Communication(通信) | http/client | reference-http-user-agent-string.yml | 要检查此命名空间下的所有规则,请点击此处 ) |
| check HTTP status code(检查HTTP状态码) | Communication(通信) | http | check-http-status-code.yml | 要检查此命名空间下的所有规则,请点击此处 |
查看更多功能:
| Capability | Top-Level Namespace (TLN) | Namespaces | Rule YAML file | Notes |
|---|---|---|---|---|
| reference Base64 string(引用Base64字符串) | Data Manipulation(数据操作) | encoding/base64 | reference-base64-string.yml | 要检查此命名空间下的所有规则,请点击此处 |
| encode data using XOR(使用XOR编码数据) | Data Manipulation(数据操作) | encoding/XOR | encode-data-using-xor.yml | 要检查此命名空间下的所有规则,请点击此处 |
| contain a thread local storage (.tls) section | Executable(可执行文件) | pe/section/tls | contain-a-thread-local-storage-tls-section.yml | 你可以检查 TLN(顶级命名空间)以了解更多规则 |
| get common file path(获取公共文件路径) | Host-Interaction(主机交互) | file-system | get-common-file-path.yml | 你可以检查 TLN(顶级命名空间)以了解更多规则 |
| create directory(创建目录) | Host-Interaction(主机交互) | file-system/create | create-directory.yml | 你可以检查 TLN(顶级命名空间)以了解更多规则 |
| delete file(删除文件) | Host-Interaction(主机交互) | file-system/delete | delete-file.yml | 要检查此命名空间下的所有规则,请点击此处 |
| read file on Windows(在Windows上读取文件内容) | Host-Interaction(主机交互) | file-system/read | read-file-on-windows.yml | 要检查此命名空间下的所有规则,请点击此处 |
| write file on Windows(在Windows上写入数据到文件) | Host-Interaction(主机交互) | file-system/write | write-file-on-windows.yml | 要检查此命名空间下的所有规则,请点击此处 |
| get thread local storage value(获取线程本地存储值) | Host-Interaction(主机交互) | process | get-thread-local-storage-value.yml | 该规则位于 TLN Nursery 下,这是未完善规则的集结地 |
| allocate or change RWX memory(分配或更改RWX内存) | Host-Interaction(主机交互) | process/inject | allocate-or-change-rwx-memory.yml | 要检查此命名空间下的所有规则,请点击此处 |
| create process on Windows(在Windows上创建进程) | Host-Interaction(主机交互) | process create | create-process-on-windows.yml | 要检查此命名空间下的所有规则,请点击此处 |
| reference cryptocurrency strings(引用加密货币字符串) | Impact(影响) | impact/cryptocurrency | reference-cryptocurrency-strings.yml | 该规则位于 TLN Nursery 下,这是未完善规则的集结地 |
| link function at runtime on Windows | Linking(链接) | runtime-linking | link-function-at-runtime-on-windows.yml | 要检查此命名空间下的所有规则,请点击此处 |
| parse PE header(解析PE标头) | load-code(加载代码) | load-code/pe | parse-pe-header.yml resolve-function-by-parsing-pe-exports.yml | 要检查此命名空间下的所有规则,请点击此处 |
| resolve function by parsing PE exports | load-code(加载代码) | load-code/pe | resolve-function-by-parsing-pe-exports.yml | 要检查此命名空间下的所有规则,请点击此处 |
| run PowerShell expression(运行PowerShell表达式) | load-code(加载代码) | load-code/PowerShell | run-powershell-expression.yml | 要检查此命名空间下的所有规则,请点击此处 |
| schedule task via at | persistence(持久化) | scheduled-tasks(计划任务) | schedule-task-via-at.yml | 你可以检查 TLN(顶级命名空间)以了解更多规则 |
| schedule task via schtasks | persistence(持久化) | scheduled-tasks(计划任务) | schedule-task-via-schtasks.yml | 你可以检查 TLN(顶级命名空间)以了解更多规则 |
为了进一步解释,让我们检查上面表格中的第一个功能(capability):“ reference anti-VM strings ”。
-
我们注意到相关的 YML 格式的规则是 reference-anti-vm-strings.yml;
-
它在命名空间 anti-vm/vm-detection之下;
-
它也在顶级命名空间Anti-Analysis之下。
这告诉我们,CAPA能够使用reference-anti-vm-strings.yml规则yaml文件来识别潜在的恶意软件是否会搜索VMware的特定注册表项、 VMware工具的存在情况或其他与VM相关的元素。恶意软件这样做的原因是为了避免被检测到,这就是CAPA为什么会标记此类行为。
我们再举一个例子。我们来看看“ schedule task via schtasks”功能。
-
我们注意到相关的 YML 格式的规则是 schedule-task-via-schtasks.yml;
-
它在命名空间 scheduled-tasks 下;
-
它也在顶级命名空间persistence下。
这告诉我们,CAPA可以识别Windows操作系统中与计划任务相关的行为。它可能具有可识别的模式,表明可执行文件使用了在Schedule-task-via-schtasks.yml 中已经定义的规则将自身注册为计划任务,以维持持久化。
等等!你注意到什么了吗?
没错!Capability(功能)下的项目与Rules下的YML文件基本同名,只是在空格之间加了一个短划线 (-)。很简单,因为 Capability 就是规则的名称。
现在,我们要注意一些例外情况。如果功能或规则不在其命名空间下会怎么样?我们可以从上表中查看功能reference cryptocurrency strings,它应该在Impact顶级命名空间下,对吗?但是,如果你浏览文件夹,你将会发现你找不到相应的规则,它其实是位于Nursery TLN 下,这是尚未完善的规则的占位符。
现在,我们对 Capability 和 Namespace 的内容有了很好的概述和了解,我们应该能够解释前面提及的示例输出结果了。因此,让我们快速回顾一下示例输出结果的一部分内容。
#Malware Behavior Catalogue 恶意软件行为分类体系/恶意软件行为目录
┌───────────────────────────────────────────┬───────────────────────────────────────────┐
│ Capability │ Namespace │
├───────────────────────────────────────────┼───────────────────────────────────────────┤
│ reference Base64 string │ data-manipulation/encoding/base64 │
└───────────────────────────────────────────┴───────────────────────────────────────────┘
以下是对上述结果的解释,见下表。
| 标签 | 值 | 解释 |
|---|---|---|
| Capability(功能) | reference base64 string(引用base64字符串) | 恶意软件具有使用 base64方案对数据进行编码的功能 |
| Top-Level Namespace(顶级命名空间) | data-manipulation(数据操作) | 包含一组规则,用于管理可执行文件中涉及更改数据的行为。这一方面可以被视为恶意软件行为的“数据转换”部分,涵盖字符串加密和数据编码等操作 |
| Namespace(命名空间) | encoding/base64(编码/base64) | 该命名空间包含使用 Base64 和 XOR 对数据进行编码和解码的规则 |
| Rule YAML File Matched?(是否匹配规则YAML文件) | reference-base64-string.yml | 请记住,功能的名称也会是规则的名称,但规则名称在单词的空格之间有一个额外的破折号 (-) |
知道了这些信息之后,你可以简单地说这个文件在使用base64编码方案。
现在我们已经完成了对于前文的示例运行结果的完全分析!
答题
阅读本小节内容并回答问题。
如果功能或规则的名称是check HTTP status code(检查HTTP状态码),那么应该匹配什么规则 yaml 文件?
check-http-status-code.yml
如果规则 YAML 文件是reference-anti-vm-strings.yml,那么相关的功能名称是什么?
reference anti-VM strings
Which TLN or Top-Level Namespace includes the Capability or rule name run PowerShell expression?
哪个TLN或顶级命名空间包含名称为run PowerShell expression(运行 PowerShell 表达式)的功能或规则?
load-code
查看此链接以检查check-for-windows-sandbox-via-registry.yml规则文件里面的条件。它正在查找的以Ex结尾的 API 值是什么?

RegOpenKeyEx

更多关于CAPA的信息
你难道不好奇规则里到底匹配了什么吗?嗯,我很好奇!
在本小节中,我们将尝试确定触发规则的原因及其所涉及的条件。我们将使用参数 -vv 或 very verbose 来实现此目的。
| 选项 | 描述 | 示例语法 |
|---|---|---|
-v or --verbose |
启用详细的结果文档 | capa.exe -v .\cryptbot.bin |
-vv or --vverbose |
启用非常详细的结果文档 | capa.exe -vv .\cryptbot.bin |
让我们运行它吧!
PS C:\Users\Administrator\Desktop\capa> capa.bin -vv .\cryptbot.bin
loading : 100%|████████████████████| 485/485 [00:00<00:00, 1108.84 rules/s]
/ analyzing program...
这将为我们提供更加详细的分析结果;然而,这也会花费大量时间。TryHackMe已经为我们在实验虚拟机上的C:\Users\Administrator\Desktop\capa目录中处理了此示例,并将输出文件命名为cryptbot_vv.txt。因此我们无需等待capa工具运行完成,这样做是为了让你大概了解该工具的运行过程以及其参数的作用。
在实验虚拟机上打开另一个 PowerShell 终端并使用命令 Get-Content cryptbot_vv.txt 查看该文件的内容。
PS C:\Users\Administrator\Desktop\capa> Get-Content .\cryptbot_vv.txt
那么,你打开了这个文件吗?里面有超过三千行的内容吗?

使用终端或文本编辑器访问如此大量的信息将非常具有挑战性——因为可能会出现卡顿问题。
为了更加轻松地分析此示例的结果,我们可以使用参数 -j 和-vv ,并将输出定向到 .json 文件。相关的命令为:
capa.bin -j -vv .\cryptbot.bin > cryptbot_vv.json
PS C:\Users\Administrator\Desktop\capa> capa.bin -j -vv .\cryptbot.bin > cryptbot_vv.json
loading : 100%|████████████████████| 485/485 [00:00<00:00, 1108.84 rules/s]
/ analyzing program...
同样,这将花费大量时间,与我们之前所运行的命令类似。TryHackMe也为我们处理好了此过程,并在“C:\Users\Administrator\Desktop\capa”中创建了一个名为 cryptbot_vv.json 的文件。请注意,你无需等待capa工具运行完成,这样做是为了让你大概了解该工具的运行过程以及其参数的作用。

接下来我们可以开始下一步了。
CAPA Web Explorer
我们要做的第二件事是将文件上传到 CAPA Explorer Web。我们可以使用此链接上的在线版本,也可以使用实验虚拟机中已经存在的离线版本。在实验虚拟机桌面上有一个名为capa_web_explorer_offline.html的Google Chrome浏览器可用的文件,或者你也可以使用常规的Chrome浏览器书签来访问它。
请注意,CAPA Explorer Web的本地页面可能需要等待一分钟才能在实验虚拟机上的 Chrome 中被完全加载。

现在,我们应该可以访问到CAPA Explorer Web的相关主页了!

找到上述页面左下角的“Upload from local-从本地上传”按钮,然后选择C:\Users\Administrator\Desktop\capa中的 cryptbot_vv.json 文件进行上传操作。完成文件上传后,你应该会看到类似于下面的输出结果。


这看起来是不是很棒,而且更容易使用?
现在,是时候探索这个工具的出色附加功能了。我们将回顾一些功能(capabilities),并检查规则中究竟匹配了哪些内容。这将使我们更好地了解规则的工作原理。
让我们来看第一个示例。功能(capabilities)是reference anti-VM strings targeting VMWare,相应的规则配置文件或yaml文件是reference-anti-vm-strings-targeting-vmware.yml。请注意下图中的方框部分内容。

然后 ,请查看下面所展示的关于规则内容的概述,并重点关注feature(功能) ,因为CAPA会使用下面的后续字符串来检查某些字符串是否在被分析的文件中。


rule:
meta:
name: reference anti-VM strings targeting VMWare
namespace: anti-analysis/anti-vm/vm-detection
authors:
- michael.hunhoff@mandiant.com
- "@johnk3r"
scopes:
static: file
dynamic: file
att&ck:
- Defense Evasion::Virtualization/Sandbox Evasion::System Checks [T1497.001]
mbc:
- Anti-Behavioral Analysis::Virtual Machine Detection [B0009]
references:
- https://github.com/LordNoteworthy/al-khaser/blob/master/al-khaser/AntiVM/VMWare.cpp
examples:
- al-khaser_x86.exe_
- b83480162ede09d4aa6d4850f9faa0a4c3834152752fd04cfdb22d647aa1f825:0x17D80
features:
- or:
- string: /VMWare/i
- string: /VMTools/i
- string: /SOFTWARE\\VMware, Inc\.\\VMware Tools/i
- string: /VMWare/i
- string: /VMTools/i
- string: /SOFTWARE\\VMware, Inc\.\\VMware Tools/i
- string: /vmnet\.sys/i
- string: /vmmouse\.sys/i
- string: /vmusb\.sys/i
- string: /vm3dmp\.sys/i
- string: /vmci\.sys/i
- string: /vmhgfs\.sys/i
- string: /vmmemctl\.sys/i
- string: /vmx86\.sys/i
- string: /vmrawdsk\.sys/i
- string: /vmusbmouse\.sys/i
- string: /vmkdb\.sys/i
- string: /vmnetuserif\.sys/i
- string: /vmnetadapter\.sys/i
- string: /\\\\.\\HGFS/i
- string: /\\\\.\\vmci/i
- string: /vmtoolsd\.exe/i
- string: /vmwaretray\.exe/i
- string: /vmwareuser\.exe/i
- string: /VGAuthService\.exe/i
- string: /vmacthlp\.exe/i
- string: /vmci/i
description: VMWare VMCI Bus Driver
- string: /vmhgfs/i
description: VMWare Host Guest Control Redirector
- string: /vmmouse/i
- string: /vmmemctl/i
description: VMWare Guest Memory Controller Driver
- string: /vmusb/i
- string: /vmusbmouse/i
- string: /vmx_svga/i
- string: /vmxnet/i
- string: /vmx86/i
- string: /VMwareVMware/i
- string: /vmGuestLib\.dll/i
- string: /vmGuestLib\.dll/i
- string: /Applications\\VMwareHostOpen\.exe/i
- string: /vm3dgl\.dll/i
- string: /vmdum\.dll/i
- string: /vm3dver\.dll/i
- string: /vmtray\.dll/i
- string: /VMToolsHook\.dll/i
- string: /vmmousever\.dll/i
- string: /VmGuestLibJava\.dll/i
- string: /vmscsi\.sys/i
你看到了吗?没错!在feature(功能)下,"string: /VMWare/i"被CAPA Web Explorer所引用。简单来说,CAPA的意思是,在这个命名空间下,我们可以通过使用规则中的条件和正则表达式来识别值为 VMWare 的字符串。
我们再举一个例子。 功能(capabilities)是reference the scheduled task via schtasks,对应的规则是schedule-task-via-schtasks.yml。请注意下图中的方框部分内容。

与我们的第一个示例类似,请查看下面所展示的关于规则的内容概述,并重点关注feature(功能),因为CAPA会使用下面的后续字符串来检查正在分析的文件中是否存在某些字符串。
rule:
meta:
name: schedule task via schtasks
namespace: persistence/scheduled-tasks
authors:
- 0x534a@mailbox.org
scopes:
static: function
dynamic: thread
att&ck:
- Persistence::Scheduled Task/Job::Scheduled Task [T1053.005]
examples:
- 79cde1aa711e321b4939805d27e160be:0x401440
features:
- and:
- match: host-interaction/process/create
- or:
- and:
- string: /schtasks/i
- string: /\/create /i
- string: /Register-ScheduledTask /i
在feature(功能)下,我们可以看到"string: /schtasks/i and /\/create /i"被CAPA Web Explorer所引用。简而言之,CAPA的意思是,在这个命名空间下,我们可以通过使用规则中的条件和正则表达式,来识别值为 schtasks 和 **create **的字符串。
全局搜索框
该工具的另一个很酷的功能是它的过滤选项和全局搜索框,这非常有用(注意在搜索时不要在搜索内容的末尾留有空格,否则可能会搜索失败)。

与任何文本编辑器相比,我们可以使用 CAPA Web Explorer 快速检查这些海量信息。
答题
阅读本小节内容并回答以下问题。
哪个参数允许你将 CAPA 结果输出到.json 文件中?
-j
什么工具可以让你在Web浏览器中以交互方式探索 CAPA 结果?
CAPA Web Explorer
CAPA Web Explorer 的哪个功能允许你过滤选项或结果?
Global Search Box

本文小结
在本文内容中,我们讨论了如何利用CAPA分析潜在的恶意或危险软件并使用静态分析主动搜索潜在的威胁,它在网络安全中发挥着关键的作用。CAPA通过自动化检测可执行文件中的复杂功能的过程,并以安全专家易于理解的格式呈现结果来实现这一点。这种复杂逆向工程概念的简化有助于快速理解潜在的有害软件,最终可以帮助我们加强事件响应和防御策略。

学习使用 CAPA 来识别恶意软件的恶意功能。
浙公网安备 33010602011771号