Forecasting Malware Capabilities From Cyber Attack Memory Images论文解读

Forecasting Malware Capabilities From Cyber Attack Memory Images 论文解读

论文地址:https://www.usenix.org/conference/usenixsecurity21/presentation/alrawi-forecasting
实现地址:https://github.com/CyFI-Lab-Public/Forecast

Abstract

对正在进行的网络攻击的补救有赖于及时的恶意软件分析,其目的是发现尚未执行的恶意功能。不幸的是,这需要在不同的工具之间反复切换上下文,并给分析人员带来很高的认知负荷,减缓了调查的速度,使攻击者获得了优势。我们提出了预测,这是一种检测后的技术,使事件响应者能够自动预测恶意软件的执行能力。预测是基于一个概率模型,使预测能够发现能力,并根据其执行的相对可能性来衡量每个能力(即预测)。预测利用正在进行的攻击的执行背景(来自恶意软件的内存图像)来指导对恶意软件代码的符号分析。我们进行了广泛的评估,用6,727个真实世界的恶意软件和旨在颠覆预测的未来主义攻击,显示了预测恶意软件能力的准确性和稳健性。(Deepl翻译)

1. Introduction

这里就是对后面类容的一个介绍,建议看完所有后再重新看这里,

2. Overview

论文利用 DarkHotel APT 进行例子说明。此API利用鱼叉式网络钓鱼对系统进行感染,感染后便删除了原二进制文件,运行于内存中插入一个线程到Explorer,并和C&C服务器进行通信。入侵检测系统(IDS)会检测到异常活动,同时中断代理会捕获可疑进程的memory。事件响应人员必须利用取证工具,快速知晓恶意程序的功能来防止进一步的破坏。

一些利用沙盒的动态分析工具并不使用,C&C会关闭,源代码也会消除。通过取证工具(ie. Volatility)可以从内存影像中获得memory image codedata pages,之后再利用符号分析工具分析路径。但现有符号工具需要一个正确格式化的二进制文件,并且没有优化到与内存图像一起工作。

理想中,分析员可以重新构建整个代码。但是这样的工作会有很大的认知负担,而分析员还得面对路径爆炸,API Call模拟等可能不存在于memory image

2.1 Hybrid Incident Response

分别基于取证工具和符号分析都各自具有一定缺点(高误报率和路径爆照),Forecast则通过反馈循环将符号执行和内存取证结合起来

  • Context-Aware Memory Forensics.

    符号分析通过代码探索上下文来准确找出那些被内存取证忽略的数据(data artifacts是啥意思)。比如传统的取证工具会由于自定义编码而忽略C&C URL。但之后会对以这个URL作为参数的命令进行符号分析。

    同样内存影像为符号分析提供特定的值,防止路径爆炸等错误

  • Path Probability

    通过内存影像,Forecast可以预测可以得出一条路径相对于其他路径达到某种功能的概率。预测计算这种概率是基于建模,对具体和符号数据操作如何影响路径生成和选择(?)。Forecast还利用这一概率指标作为启发式方法来修剪具有最少具体数据的路径。

2.2 Incident Response with Forecast

通过DarkHotel APT进行说明,将内存影像放入Forecast中,然后经过6个步骤:

  1. Forecast对内存图像进行取证分析,并通过将最后的CPU和内存状态加载到一个符号环境中进行分析,重建先前的执行环境。在分析内存图像时,Forecast观察了加载的库,以确定导出的函数名称和地址。
  2. 预测开始探索可能的路径,利用内存图像中的可用具体数据来具体化路径约束。
  3. Forecast通过建模和权衡每个路径是如何被具体的数据诱发的,并且给生成的每个路径分发一个概率。
  4. 然后,Forecast使用这个概率作为权重来调整循环界限,并修剪错误的路径,使Forecast能够缩小与功能相关的路径。
  5. Forecast将确定的API与功能分析插件库(?)相匹配,以向分析人员报告功能。
  6. 最终,Forecast确定了三种能力,并从路径概率中得出它们的预测百分比分别为31%、15%和54%。

image

3. System Architecture

Forecast是一种检测后事件应急技术,只需要输入内存影像就能输出每个被发现的功能,预测概率,功能目标的文本你

重构执行环境:Forecast可以通过内存影像获得执行状态(eg. code pages,loaded API, 寄存器的值),对code pages进行静态分析,可以初始化符号分析

Forecast符号地执行被拆解的代码页的CPU语义,直到遇到一个无法确定的控制流。为了解决这个问题,Forecast递归地跟踪代码块以解决新的CFG路径。当到达一个library call时,library call被符号化。library call模拟为每个探索的状态引入了符号数据,从而增加了状态爆炸的可能性。然而,\(D_C(s)\)模型提供了优化指标,使预测公司能够动态地调整循环边界、符号控制流和路径修剪的参数。

3.1 Modeling Concreteness to Guide Capability Forecasting

模型的主要思想时,使用符号化数据比例越少的路径越容易到达,这里用举的例子进行说明。

image

其中:

\[D_C(s_n) = 1 - \frac{\sum^{n}_{i=j}{\frac{|Sym\_Ops_i|}{|All\_Ops_i|}}}{|\tau_n|} \]

从CFG中可以看出,符号化的命令均为蓝色,每个\(D_C(s_n)\)\(1-符号命令数/总命令数\)的叠加和。由于\(BB_2\)为具体的值,所以\(BB_5\)没有达到

3.2 DC(s)-Guided Symbolic Analysis

一些抗符号执行的恶意软件会对现有符号执行工具造成困难,然而,通过对探索中不断变化的具体状态进行建模,Forecast可以在运行时动态地调整这些阈值。

  • Adapting Loop Bounds

    预测优化了循环,只在DC(s)表明随着时间的推移出现了严重的符号化状态时(具体来说,当DC(s)在10个状态转换后下降到0.10以下时)才强制一个界限。这种优化精确地衡量了一个循环对一个状态的影响程度,以决定何时对其进行约束。我们观察到,与无害的循环不同,引起爆炸的循环在两次或更多的转换后,DC(s)会收敛到0.10。

  • Adapting Loop Bounds

    当性能被过度的状态符号所淹没时,Forecast通过选择性能最差的状态来优先修剪。在DC(s)下,这种选择是小case(trivial不知道咋翻译)的,因为每个状态都有一个DC(s)得分,它被用来修剪具有沉重符号足迹的状态。在第4.6节中,与通过硬编码阈值修剪路径的工具相比,按需修剪使得Forecast走向更具体的路径--导致Forecast在选定的路径中进行更深入的探索。

  • Stack Backtrace Analysis

    符号分析中经常会出现错误继承路径。Forecast通过位于内存影像的栈的返回值来判断是否为错误路径,具体来说,堆栈回溯使预测能够通过比较回溯中的堆栈指针和返回地址与执行返回指令后的计算结果来验证流程正确性。

  • Address Concretization

    Forecast使用内存图像数据空间,将符号索引具体化到一个可操作的范围。此外,我们观察到错误的状态会进行非法的索引访问(索引超出进程的映射代码/数据空间)。Forecast使用这个指标来剪除这些状态。此外,Forecast的分析对地址空间布局随机化(ASLR)是透明的,因为ASLR是在进程加载时,在执行前完成的。

  • Library Function Simulation.

    预测分析内存图像中存在的库,以识别导出的函数。被识别的函数被钩住,将符号探索重定向到模拟程序。Forecast还通过调用LoadLibrary函数来处理动态库加载。如果在符号探索期间加载了一个库,Forecast会在内存中为加载的库创建一个新的部分。一旦调用GetProcAddress,就会在库的内存部分分配一个新的地址并挂起,然后返回这个地址。任何对这个地址的调用将被重定向到正确的模拟程序。

3.3 Forecasting Malware Capabilities

这里同样也从它给的例子开始讲解

image

主要的思路是通过记录API的调用,比较每个API输入和输入的约束(constraints),通过对比constraints,形成类似调用树的东西,最后再通过对比插件库中的大量路径(查表),找到特定行为的功能。

这里主要从sink(汇点)进行向后,比如File Exfiltration,最后的汇点为send API,通过send的输入参数,可以发现由ReadFileAPI产生的buf2,由此形成一个调用链,以此类推。

接下来论文描述了7个常见恶意软件功能的调用API思路,有File Exfiltration, Code Injection, Dropper, Key & Screen Spying, Persistence, Anti-analysis, C&C Communication

最后的功能预测由每条路径的概率,再进行归一化获得

\[\{\forall i \in C_{Paths}:C_{cast}(c_x) = \frac{P_{prob}(x)}{\sum_{i=1}^m P_{prob}(i)} \times 100\} \]

6. Limitations and Discussion

这个段从几个方向分析了Forecast的稳健性,可以去看原文,没啥好难理解的

  • Subverting Symbolic Analysis:稳健
  • Subverting Memory Artifacts
  • Virtualization-Based (VM) Packing:由于VM的复杂性,该Forecast无法使用
  • Adversarial Aware Attacks
posted @ 2022-09-10 20:42  iridescense  阅读(86)  评论(0)    收藏  举报