freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

CAPA:自动识别恶意软件行为
2020-07-29 00:20:55

CAPA 是 FireEye 的 FLARE 团队最新的开源工具,该工具旨在编码、识别与共享恶意软件的行为,便于分析人员更好地分析恶意程序。

存在的问题

有经验的分析人员可以快速了解一个前所未见的文件并确定其分析优先级。即使是经验丰富的分析人员想要确认是否为恶意软件、在攻击中所扮演的角色、恶意软件的潜在功能等,也需要花费一定的时间来对文件进行全面、深入的了解才能正确的猜测恶意软件开发者的意图。

恶意软件分析专家可以快速了解文件,但经验不足的分析人员并不能快速区分异常点和正常部分。普通的恶意软件分析工具提供的信息层级又太低,无法提供更为高层的信息。

示例

使用《恶意代码分析实战》(Practical Malware Analysis)中的经典程序 Lab 01-01 作为例子,来了解如何理解程序的功能。下图显示了文件的字符串和导入表,图中高亮显示了应该关注的值:

通过这些可疑点,分析人员可以进行合理假设来推测程序的功能。该文件可能会创建互斥量、启动进程、与 127.26.152.13 进行网络通信。其中,Winsock(WS2_32) 函数的导入让我们对网络通信有所警觉。

动态分析此样本可以进一步确认这些猜测是否正确。但是沙盒和一般的动态分析工具只能在执行的代码路径中捕获恶意程序的行为。例如,这可能不包括成功连接 C&C 服务器后触发的任何功能,通常不建议使用真实的网络连接来分析恶意软件。

真正理解该文件需要进行逆向工程,下图显示了 IDA Pro 对程序的反编译结果。

如果对编程和 Windows API 有基本的了解,就可以发现:

 - 创建互斥量确保同时只有一个程序运行
 - 创建 TCP 套接字(2 = AF_INET、1 = SOCK_STREAM、6 = IPPROTO_TCP)
 - 连接 127.26.152.13 的 80 端口
 - 发送和接收数据
 - 接受的数据与 sleep 和 exec 进行比较
 - 创建一个新进程

并非所有的代码路径都可以在每次运行时被执行到,但是恶意软件实际上是具有执行这些行为的能力。综上所述,该软件应该是个后门程序,运行由 C&C 服务器指定的程序。

自动化识别

当然,实际的恶意软件不太可能如此简单。整个程序会包含数百乃至数千个函数,逆向工程的学习曲线实际上是非常陡峭的,对计算机底层知识(如汇编和操作系统等)都要扎实地掌握。

通过不断的实践,没有经验的分析人员就可以从 API 调用、字符串、常量和其他重复模式中识别程序的功能。而 CAPA 可以将这个过程自动化,提供一种通用的方式来描述专家知识。通过 CAPA 的预分析,可以发现推动后续调查的线索。

CAPA

运行 CAPA 分析示例程序时,下图的输出足以说明问题。左侧的条目描述了功能,右侧有助于对功能进行分组。

在我们的测试中,CAPA 的表现出气的好。下图显示了 CAPA 对“创建 TCP 套接字”的详细输出,提供了程序相关功能的确切位置。

运行原理

CAPA 有两个主要的部分组成,首先由代码分析引擎从文件中提取特征,例如字符串、反汇编和控制流。其次,逻辑引擎按照通用规则查找符合条件的特征组合。匹配成功时,报告结果。

特征提取

代码分析引擎从程序中提取低级特征,所有特征都与人类识别的特征(字符串或者数字)保持一致。主要分为文件特征与反汇编特征两类。

文件特征是从原始文件及其结构(如 PE 头)中提取的,除了上面提到的字符串和导入 API 还包括导出函数和节名称。

反汇编特征是通过静态分析提取的,要进行反汇编与控制流重建。下图显示了反汇编特征,包括 API 调用、指令助记符、数字和字符串引用。

在 CAPA 的设计之初就考虑到了灵活性和可扩展性,当前 CAPA 依赖 vivisect 分析框架。也可以通过 IDAPython 集成 IDA Pro 的能力运行 CAPA。但是必须注意的是,使用的代码分析引擎不同,会导致特征集不相同。

CAPA 规则

规则使用特征的结构化组合来描述程序的特征。CAPA 的规则使用 YAML 格式进行定义,包含元数据和逻辑语句树。规则支持逻辑运算符和技术。下图的“创建 TCP 套接字”规则表明:数字 6、1 和 2 以及函数 socket 或 WSASocket 的调用必须在单个基本块内。除基本块外,CAPA 还支持在函数与文件级别进行匹配。

下图显示了元数据部分,元数据用于向用户展示高层级的信息。描述了相关的特征和分类。使用文示例文件的偏移量用来做单元测试与功能验证。此外,CAPA 规则可以作为恶意软件行为的参考文档,后续的文章中将会探讨 CAPA 对 ATT&CK 和 Malware Behavior Catalog 的支持。

安装

我们提供了各个平台(Windows、Linux 和 OSX)的独立可执行文件,工具使用 Python 编写,源码托管在 GitHub 上,且提供了安装说明

用法

想要确定程序运行,可以如下所示:

$ capa suspicious.exe

CAPA 支持 PE 文件和 shellcode,只不过 shellcode 需要指定文件格式与体系结构。例如 32 位 shellcode:

$ capa -f sc32 shellcode.bin

CAPA 提供了两个级别的信息,想要得到更详细的信息,使用:

$ capa -vv suspicious.exe

如果只想关注特定的规则,可以过滤字段:

$ capa -t "create TCP socket" suspicious.exe

贡献

规则是 CAPA 的基础,如果有任何建议或者意见都可以在 GitHub 上提出来,让每个人都能通过社区的力量受益,规则格式文档也在其中。

结论

CAPA 是 FLARE 团队最新的开源框架,我们认为社区需要这种工具来调查、狩猎和分析大量的恶意软件。

希望可以尝试使用 CAPA,也希望 CAPA 可以为你提供有价值的信息。有任何问题或者意见都可以通过 GitHub 来与我们取得联系。

 参考来源

FireEye

# fireeye # 恶意软件分析 # malware # CAPA
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者