本文研究对象是stealthy malware,这种恶意软件难以检测的原因在于:因为恶意软件通常不会在文件中暴露其恶意负载(payload),而是将其恶意行为隐藏在进程的良性行为中。
1. 概述
stealthy malware
1.stealthy malware将其恶意逻辑隐藏在良好信任进程的内存空间中,或者将其存储在很少有人关注的位置,如Windows注册表或服务配置。
2.stealthy malware最小化了常规文件系统的使用,相反,只使用网络缓冲区、注册表和服务配置的位置,以逃避传统的基于文件的恶意软件扫描
3.基于静态或行为特征的检测方法无法跟上stealthy malware的发展。
如何进行有效的防御
基于以上特征作者认为有效的防御应该满足一下几点:
1.防御技术不应该基于静态文件级的指示器,因为它们无法被隐蔽的恶意软件识别。
2.该技术应该能够检测出良好信任程序的异常行为,因为它们很容易受到具有stealthy malware的攻击
3.该技术应该是轻量级的,以便在不损害可用性的情况下从每个主机详细捕获每个目标程序的行为。
所以作者认为应该使用Kernel-level (i.e.,OS-level) provenance analysis ,即系统级别的溯源分析。在这种情况下即使恶意软件可以使用他的恶意逻辑劫持良性进程,但是它仍然会留下溯源数据。本文提出了PROVDETECTOR,有一下特征技术:
1.采用kernel-level的溯源检测,嵌入物源数据,建立异常检测模型,该模型检测程序运行时那些偏离了之前观察到的良性执行历史的行为,因此可以检测到之前未见过的攻击。
2.使用神经嵌入模型[69],将流程源图中的不同分量投影到多维的数值向量空间中,相似的分量在地理位置上更接近,然后利用基于密度的新颖性检测(density-based novelty detection)[11]方法检测起源图中的异常因果路径。
但是使用溯源数据分析需要解决以下两个问题:
1.基于模拟的隐形恶意软件往往只会导致其恶意行为的边际偏差(只有很小的误差),所以它可以融入良性程序的正常行为,传统的模型学习很可能将这一小部分行为视为为可以忽略的背景噪声,从而导致对恶意行为的错误分类。
解决方法:Provdetector将起源图分解为因果路径,并使用因果路径作为检测的基本组件。
2.溯源图的增长和规模很大,基于 single-hop relation scale 的缩减无法捕捉本模型中的嵌入语义,而基于 multi-hop relation会导致很大的计算和存储开销
解决方法:Provdetector只处理溯源图中的可疑部分。这是通过一种新颖的路径选择算法(§V -C1)实现的,该算法只选择起源图中最不常见的那些。
2. 背景和动机
Living Off the Land and Stealthy Attacks
Living Off the Land:在之前读的论文中重点介绍了这个名词,运用已经存在或者易于安装的本地二进制文件实现攻击,Stealthy Attacks中大量使用了这种技术来逃避检测。
下面介绍了几种攻击模式:
1.Memory Code Injection内存代码注入
2.Script-based Attacks脚本攻击
3.Vulnerability Exploits漏洞利用
Existing Detection Methods for Stealthy Malware(现存的检测方法)
现有的Anti-virus (AV) software, 大多是使用以下几种方法的混合:
1.Memory Scanning(内存扫描):这类技术在加载点即时扫描内存或以预定的方式扫描内存。然而,这种方法本质上是在内存中寻找已知的有效负载。敌人可以自定义或模糊攻击负载,以避免被发现。
2.Lockdown Approaches(封锁方法):如应用程序控制或白名单,由于秘密恶意软件经常利用的管理工具或其他应用程序,通常是在公司的白名单的受信任的应用程序。防御者无法完全阻止对这些程序的访问以阻止攻击。
3.Email Security and Network Security(网络邮件攻击):攻击有效载荷(Payload)很容易被修改以避免被发现。
Detecting Stealthy Malware Using Provenance Analysis(溯源分析)
现有的恶意软件的检测大都是基于特征的检测,但是恶意软件有多重特征可以用来逃避检测
本文提出的检测是基于行为的检测:更具体地说,我们的方法跟踪和分析与一个程序相关的系统起源数据,以根据行为差异追踪隐蔽攻击。
如下图所示:
被恶意软件利用了的MS Word额外运行了cmd.exe,它进一步生成了几个powershell.exeprocesses。这种行为与良性的行为非常不同。使用溯源图根据行为分析恶意软件可行,但是存在以下问题:
1.由于隐形攻击利用的是系统中已经运行的进程,因此它们的恶意行为可能隐藏在进程的良性行为中。
2.为了使攻击隐身,恶意软件可以模仿和混合现有的良性行为。因此,如何准确地从来源图中捕获健壮稳定的特征,从而有效地区分恶意行为和良性行为是一个主要的挑战。
3. THREATMODEL AND ASSUMPTIONS(威胁模型和实验假设)
研究范围:
在本文中,我们关注的是隐身恶意软件(或隐身攻击),它模仿或滥用受害者主机上已经存在的合法工具或服务,或利用可信的外壳应用程序(例如,企业入侵检测系统白名单中的应用程序)执行恶意活动。传统的恶意软件需要将一个自定义的恶意软件二进制文件放入受害者的机器来执行其有效载荷,这超出了我们的范围。
实验假设:
1.首先假设底层操作系统和起源跟踪器是可信的。
2.我们也不考虑使用隐式流(侧通道)执行的攻击,这些流绕过系统调用接口,因此无法被底层的来源跟踪器捕获。
3.由于需要区别良性和恶行软件的区别,我们假设我们的系统对每个被监控的程序都有良性的起源数据,以描述其正常行为。
4.PROBLEM DEFINITION AND BASIC ASSUMPTIONS(问题定义和基本假设)
基本的溯源图的定义:
System Entity and System Event:
System Provenance Graph:给定一个进程p,进程p的溯源图包括所有有控制依赖或者数据依赖的系统实体。
Process Instance(进程实例):我们将需要监视的程序(或应用程序)称为程序。例如,一些可信的应用程序,如MS Word。进程是一个程序的执行。程序的进程实例是在程序执行过程中创建的进程。
Tips说明:我们将恶意的进程实例称为被恶意软件劫持或滥用的