数据感知防御:高效勒索软件检测

数据感知防御(DaD):迈向一种通用且实用的勒索软件防御措施

摘要

我们提出了 Malware-O-Matic分析平台以及基于实时数据采集的 Data Aware Defense勒索软件防御措施,其对系统性能的影响尽可能小。我们的解决方案通过新的妥协指标监控(并在必要时阻断)所有用户态线程的文件系统活动。在90%的情况下,我们成功检测到798个活跃勒索软件样本中的99.37%,每个样本线程最多丢失70MB数据;在70%的情况下,丢失数据少于7MB。通过对少量假阴性的仔细分析,我们发现一些勒索软件作者正试图刻意隐藏正在进行的加密行为。我们采用免费(免费啤酒意义上的免费)的事实行业标准基准进行测试,以评估本方案的影响并实现公平比较。除最严苛的测试外,在所有其他测试中,其影响均微乎其微。

1 引言

勒索软件是一种恶意软件,它阻止合法用户访问其设备或文件,并要求支付费用以恢复受感染计算机的功能。勒索软件分为两类:“简单锁机类”,即阻断计算机的使用;以及“加密类”,即对计算机上的文件进行加密。对于基于加密的勒索软件,用户数据只能通过攻击过程中使用的密钥恢复。

这类恶意软件已经存在了几十年[32],但攻击数量在过去几年中急剧增加[25]。最近的著名案例是想哭和NotPetya攻击。然而,最近的研究表明,NotPetya实际上是一种具有勒索软件外观的擦除软件。微软对勒索软件威胁表示担忧,并计划在下一次系统更新中加入受控文件夹访问功能[3]。

最近的进展推动了勒索软件的广泛传播。命令与控制(C&C)服务器可以通过使用域名来保护 1通常,加密密钥本身使用非对称密码系统进行加密,必须支付赎金才能获得相应的私钥。c©施普林格国际出版公司 2017 H. Lipmaa 等(编):NordSec 2017,LNCS 10674,第192–208页,2017年。https://doi.org/10.1007/978‐3‐319‐70290‐2_12

本文档由 funstory.ai 的开源 PDF 翻译库 BabelDOC v0.5.10 (http://yadt.io) 翻译,本仓库正在积极的建设当中,欢迎 star 和关注。

数据感知防御(DaD) 193

生成算法或洋葱路由器(TOR)网络。流行的应用程序已被从其合法用途转向:Imgur [27], Twitter API[1],和Telegram机器人API [12]已被用于实现命令与控制(C&C)。比特币和其他加密货币(例如,Zcash、以太坊)便于勒索处理和操作。与大多数现代恶意软件类似,当前勒索软件通过加壳、虚拟化、Windows管理规范(WMI)查询或混淆的API调用阻碍检测和分析。在3月28日,趋势科技发现Cerber家族使用了一种新技术来规避静态机器学习解决方案 [28]。一种通用且高效的防御机制似乎具有挑战性,但基于加密的勒索软件具有一种明确的共同语义特征可以利用:它们加密用户数据。

与近期报告了令人满意的检测率的方法类似,我们提出监控文件活动。由于该方法在检测方面已被证明有效,本文的主要目标是表明可以在对系统性能几乎没有影响的情况下实现较高的检测率。为此,我们将监控范围限制到最小。

为了在降低误报率的同时减少对检测的影响,我们采用卡方拟合优度检验而非香农熵(即对压缩的数据块敏感 [17])。此外,通过对所有用户态线程的整个文件系统进行监控,我们实现了系统完整性和细粒度。为了在真实条件下评估我们的原型实现数据感知防御(DaD),我们开发了一个裸机分析平台恶意软件-o-马蒂克(MoM),并在一个规模大且异构性高(相较于现有文献)的实时勒索软件样本集合上运行。我们使用事实上的行业标准基准来获得对性能开销的恰当且可重现的评估。

相关工作在第2节中介绍。3节比较了不同的统计检验方法及其检测加密的有效性。DaD,我们的勒索软件防御措施,在第4节中提出,并投入了大量努力以解决性能瓶颈问题。我们在第5节评估其对受保护系统性能的影响,在第6节评估其有效性,同时描述了我们的裸机自动化恶意软件分析平台MoM以及对研究结果的讨论。第7节总结全文。

2 相关工作

恶意软件检测至关重要。目前主要采用的方法是基于静态模式的签名或在沙箱环境中动态检查的行为特征签名。遗憾的是,这些方法很少能覆盖新的恶意软件,甚至无法覆盖已知恶意软件的新变种。挑战在于设计能够覆盖大量样本且无误报的快速检测方案。

勒索软件防御措施这一子领域相对较新。除了传统恶意软件方法之外,还可以依赖勒索软件的特定共性行为:它们会加密受害者的文件。文献中提到的动态解决方案如Kharraz等人[14]所建议的,分为两部分:加密原语钩子(即用户空间)和低级磁盘活动监控(即内核空间)。前者将加密原语作为勒索软件的关键入口进行针对性防护,而后者则关注系统层面的影响。

1996年,Young 等人[33]基于微软加密API(CryptoAPI)实现了一个概念验证的“加密病毒勒索”方案。如今,大量勒索软件确实使用CryptoAPI执行文件加密。该API支持使用特定的加密提供程序,Palisse 等人[20]实现了他们自己的加密提供程序,并强制使用它以追踪所有加密操作。 PayBreak[15]该实时解决方案利用了动态和静态加密钩子。系统实现了密钥托管系统,可实现完整文件恢复。然而,作者指出,该方案仅考虑了对称密钥加密,且某些混淆技术会使其钩子失效。此外,静态钩子需要预先了解相关库。这两篇论文都存在两个关键局限性:任何嵌入自身加密原语的勒索软件都能绕过该方案(例如 AES‐NI [22]),并且无法阻止勒索软件检测到钩子或重定向行为。

其他方法(如我们的方法)通过文件系统驱动程序关注磁盘活动。UNVEIL[13]通过计算同一进程读取和写入磁盘的数据之间的香农熵增加来检测勒索软件,还能够检测桌面锁屏这一良性勒索软件类型。 Crypto-Drop[23]也依赖于香农熵,同时还考虑了文件类型变化和文件相似度评分。ShieldFS[5]将机器学习应用于磁盘活动,特征选自从正常使用和勒索软件攻击中收集的数百万条磁盘I/O请求。该解决方案由三个驱动程序组成:一个负责文件恢复,对每个写入和重命名操作对应的文件进行备份;第二个检测进程中嵌入的加密材料;最后一个通过结合增量模型的随机森林进行检测,并考虑进程的短生命周期和长生命周期。

这三项研究在其各自的数据集上均报告了良好的检测率,超过96%,且几乎没有误报。关于对系统性能的影响,UNVEIL和 CryptoDrop提供的信息很少。前者被描述为一种分析工具而非实时解决方案;后者的作者“相信通过未来优化,CryptoDrop可以在具有较小开销的实时系统上运行”,并报告每次写入操作有9毫秒开销,但未说明其评估过程。关于 ShieldFS的性能开销有更多相关信息。测量了打开并读取或打开并写入大小递增的文件(从1KB到128MB)所需时间。使用硬盘驱动器时,如果需要备份文件,则开销为180%到380%;如果不需要,则为30%到90%。他们还报告了一个“典型”开销,但遗憾的是评估过程不明确且难以复现:他们从五个用户的IRP日志中推算出典型开销,得出平均估计开销为26%。

对文件系统活动的动态监控似乎是防御勒索软件最有前景的方法。事实上,Intel AES‐NI指令使得以加密库为中心的方法(如[15,20]中提出的)失效。

数据感知防御(DaD) 195

剩下的挑战在于实时系统上的高效实现。一种方法是限制监控的范围,首先专注于单个高效的区分器,只需对可疑线程进行密切监控。

3 用于勒索软件攻击检测的统计检验

勒索软件涉及大量密文通过文件系统;为了检测此类行为,可以使用统计检验。主要思想是密文内容分布应该是均匀的。单样本拟合优度(GOF)检验用于衡量一个信息源与理论概率分布函数(也称为“模型”)的接近程度。在实践中,将一个数据集 F 与已知的分布函数 G 进行比较,并验证或否定原假设 H0: ∀x, F(x) = G(x)。

我们并未证明这两个数据集来自同一个分布函数,而是证明它们之间没有显著差异。目标是找出哪些妥协指标最适用于实时检测勒索软件攻击。

香农熵

它是随机变量不确定性的度量。无序程度越高,熵值越高;结构化数据则熵值较低。来自字母表 Ω={x1, x2,…, xn} 的离散随机变量,其概率分布函数为 p(xi)在 xi处的熵为: H(X) = −∑n i=1 p(xi)log p(xi)。

卡方

卡方拟合优度检验(χ2)是一种用于检验分布准确性的方法,它衡量一组数值与特定分布的接近程度。它是一种非参数统计检验,意味着对样本的分布不做任何假设。观测数据序列被视为离散的,并排列成频率直方图 [[0;255]]自由度 v等于 255(即可能结果数减一)。假设 Ni 是在区间 i中观察到的命中次数,而 ni 是根据已知分布函数得出的期望次数。计算单侧 χ2 检验的公式为:

χ2=∑ i (Ni − ni) 2 ni (1)

大值表明零假设不太可能成立,Ni无法从 ni得出。该检验的显著性水平记为 αTW,是在原假设为真时拒绝它的概率。传统上,实验人员使用0.05水平(例如生物学),因此我们选择相同的水平。将观测检验统计量与一个称为临界值的边界值进行比较,该临界值由自由度(或等价地,字母表大小)和期望显著性水平唯一确定。如果 χ2结果比临界值更极端[10],则拒绝原假设。

讨论

测试的稳健性需要在现实世界条件下(即小样本和大样本)进行验证。先前的研究论文[5,13,23],使用插件法(即直方图区间中的离散符号)来估计香农熵。然而,对TorrentLocker的研究[17]表明,香农熵并不是一个良好的区分器,特别是在涉及JPEG压缩时2。在已经具有高熵的压缩文件上实现加密检测是一项非平凡的任务。相比之下,该 χ2测试能够区分随机性(或加密)与某些压缩方案,因此是一个更相关的统计量,如附录表4和 5所示。因此,我们将在接下来的章节中使用它来检测可疑行为。此前尚未有对嵌入该 χ2统计量的勒索软件解决方案的广泛研究,但该统计量已在众多应用程序中得到应用 [6,31]。

一个实际问题仍然存在,与所有统计检验一样, χ2检验在小样本上并不准确。一个好的做法是确保直方图的每个区间中至少有五个元素,但我们完全可以想到这种情况不会经常发生。在这种情况下,检验统计量只能反映期望频率的微小幅度。为了解决这个问题,我们选择通过同时对小数据计算 χ2检验,使方案更倾向于产生误报而非漏报。此外,参与计算的字节数限制为10,000。事实上,如果我们不设置限制,攻击者可能利用压缩炸弹 [11]来崩溃或减慢我们的解决方案。

4 迈向一种通用且实用的勒索软件防御措施

本节详细介绍了Data Aware Defense的架构,这是一种用于微软Windows的文件系统驱动程序。该贡献的一个重要部分是解决方案的可用性,而且它还可用于防御零日勒索软件。

4.1 文件系统活动监控

窗口作为大多数现代操作系统,将其内存划分为多个区域,每个区域具有不同的权限要求。内核模式(ring 0)具有较高的特权级别,负责管理磁盘操作等任务。

标准应用程序在用户空间(ring 3)中运行,权限较低,无法直接执行磁盘操作。相反,它们调用Windows内核中的相应服务,由内核管理特权操作,然后再安全地返回到用户空间的应用程序代码。这种隔离机制确保了用户空间的代码无法直接管理系统中的关键操作。为了完善这一安全特性,操作系统64 位版本要求所有内核模式代码必须由微软签名才能被系统接受。

迄今为止,据我们所知,勒索软件存在于用户空间。这就是为什么内核空间中的对策不会被恶意的 他们使用了Kullback‐Leibler散度,但没有介绍具体实现。

数据感知防御(DaD) 197

代码是完全透明的。用户与文件的交互最终被映射为内核中的操作。在此堆栈顶部是 I/O 管理器,底部是文件系统驱动程序(ntfs.sys)。微软提供了一个文件系统驱动程序框架[18]允许第三方开发者在上述两层之间添加功能。此类组件称为文件系统微过滤器驱动程序,并由过滤管理器进行管理。每个微过滤器驱动程序在 I/O 堆栈中的位置由其“海拔”定义。执行全盘加密的微过滤器驱动程序位于防病毒过滤器之下,从而避免对勒索软件类行为的误报检测。微过滤器驱动程序可以检查所有针对磁盘的操作,无论请求的操作是 I/O 请求包 (IRP)还是快速 I/O。在此上下文中,我们能够监控写入、读操作等。然而必须巧妙地使用这些功能,否则将导致显著的性能开销[23]并且该解决方案无法在现实世界中部署。我们的文件系统微过滤器驱动程序已在 Windows 7 和 10 的 32 位和 64位版本上进行了广泛测试,并遵循 Windows 驱动程序模型 (WDM)。

4.2 实现设计

为了高效捕捉恶意行为,我们将监控范围限制在写操作和信息操作上。我们希望证明,仅通过两个I/O请求的回调即可实现勒索软件行为的检测,而此前的解决方案[5,13,23]至少需要两倍数量的回调。所谓信息操作,是指更改文件对象的各种信息、创建硬链接、更改文件位置或文件名等操作。一旦某个线程被标记为恶意,我们将阻断所有信息操作,以防止激进的文件重命名行为。但在没有恶意活动的情况下,信息操作始终被允许,并且不会用于构建我们的入侵指标。对于每次被拦截的写操作,我们仅收集必要信息,以最小化回调函数中的处理时间。我们只关注通过文件系统堆栈传递的缓冲区内容、其大小、偏移量、对应的绝对文件名、进程名、进程ID以及线程ID。这些信息随后被复制到非分页内存中,并传递给一个不属于文件系统堆栈的新专用线程。我们仅复制必要的数据,而不复制来自该操作的线程上下文。因此,写操作可以立即被授权通过。此类特征使我们能够监控所有文件系统树,而无需排除某些被认为可信的线程。迄今为止,我们是首个以线程粒度检查I/O操作的方案。这对于良性进程中发生恶意代码注入的情况而言是一项重要改进。Cerber 勒索软件已使用一种名为进程空心化[28]的特定代码注入技术。所有高成本计算都被推迟到以最低内核优先级运行的线程中执行。该模型解决了统计计算的时间限制以及在共享资源上的同步死锁问题。

一旦在相应数据上获得妥协指标(例如, χ 2),我们将更新与该线程行为相关的内部结构中的非分页部分

198 A. Palisseet 等

内存。该结构存储于每个进程的每个线程中。为了减少内存占用,我们实现了自己的垃圾回收器。所有在内存中跟踪的信息都可以导出为磁盘上的JSON文件。

4.3 一个被攻破的单一指标

为了构建一个高效的过滤器,我们计算最近五十次写操作的滑动中位数。该基本统计量的目的是针对每个线程捕捉正在进行的文件系统行为:它为我们提供了一个集中趋势的度量。该方法不对观察到的I/O模式做任何假设。这一基础统计量成本较低,且不涉及复杂的计算。此外,通过监控整个文件系统,我们更有可能仅丢失不属于用户重要路径的文件(例如,Windows Defender、Python库、$ Recycle.Bin)。

在运行时,如果 χ2中位数超过阈值,我们将暂停相应进程并收集事后分析所需信息。我们利用进程暂停(即恶意代码无法察觉)来从内存中转储该进程线程所属的可移植可执行(PE)文件和已提交的内存页。所有进程线程都将被停止,以确保内存转储的一致性,特别是在存在自修改代码的情况下。最后,触发转储的线程将被标记为恶意的,并且该特定线程的所有后续写入和重命名操作都将被阻断。

第3节介绍了 χ2测试。显著性水平 αTW设为较小值(即 0.05)。它对应于在原假设为真时拒绝它的概率(即 I 类错误)。该参数也称为“单次检验” alpha,适用于一个给定的假设检验。滑动中位数基于连续五十次χ2测试。因此,“试验整体”alpha 是指在所有假设检验中发生一次或多次 I 类错误的概率。试验整体错误率可使用邦弗罗尼阈值 [2]按如下方式计算:

αEW= 1 −(1 − αTW)K (2)

K是在αTW水平上进行检验的不相关假设的数量。然而,当对给定数据集仅检验一个假设时,试验整体错误率与单次检验错误率相同。此外,对于每个线程而言,其写操作之间很可能是相互关联的。因此,试验整体错误率等于 0.05。

5 实验:性能评估

本文的一个重要贡献是解决了性能开销问题。本节表明,我们的解决方案是首个基于文件系统驱动程序的实时勒索软件应对措施,能够解决性能瓶颈。工作负载模型为办公工作。在此配置下,该解决方案几乎不会被察觉。在接下来的部分中,将讨论该解决方案对系统的全局影响

数据感知防御(DaD) 199

系统使用行业公认的标准软件进行测试3。尚未开展关于内存占用的正式研究,但在消费类计算机上可认为其影响 negligible(即小于 50 Mb)。所有测试均在配备 4GB内存 和固态硬盘 的 Windows 7 系统下运行4。为了专注于性能测试而不干扰基准测试结果,我们关闭了本方案的阻断机制。

5.1 磁盘性能

为了精确测量驱动程序对磁盘的影响,我们使用了Windows性能工具包( WPT)[19]。它可以生成Windows操作系统的深入性能分析报告。我们设置了两个半小时的微过滤器I/O活动场景,共记录到11348次写入操作,这些操作在文件系统驱动程序中总共耗时 ≈ 133 ms。因此,每次操作的平均耗时为 11.7µs。在性能分析期间,模拟了正常的办公工作活动,包括使用办公软件套件、下载和压缩操作。 CryptoLock[23]每写入操作引入9毫秒的开销,即使不了解其测试流程,也可以合理地认为性能已显著提升了数百倍。

此外,还基于一款免费软件CrystalDiskMark [7],进行了一项测试。考虑了两种类型的写操作:“顺序”对应于大块连续的数据,“随机”则针对小 (4K)数据块向随机位置写入。如表1所示,在随机4K测试中,我们的解决方案导致性能显著下降,但9.5 MB/s的带宽仍然合理。在硬盘驱动器(HDD)上,寻道时间和旋转延迟构成了瓶颈。因此,随机4K测试将受限于HDD的机械局限性(即,最快HDD为2.5MB/s5),而非文件系统驱动程序。另一方面,在处理大数据块时未观察到性能损失。推动解决方案在磁盘访问上的极限不会产生不良影响(例如,卡顿)。

写入测试 解决方案关闭 解决方案开启 影响
顺序 136.3 134.2 −1.5%
顺序 Q32T1 135.7 135.8 +0.07%
随机 4K 55.28 9.581 −82.66%
随机 4KQ32T1 122.0 65.48 −46.32%

3为了确保相关性和可承受的可重复性,我们仅限于使用免费(如免费啤酒)软件来评估个人计算机的性能。 4 Windows 7 SP1 6.1.7601、英特尔至强 W3550、NVIDIA Quadro FX 1800、4 Gb DDR3、Intel SSD 120 Go SATA III。5 http://hdd.userbenchmark.com/WD-Black-6TB-2015/Rating/3519。

200 A. Palisseet 等

5.2 CPU性能

由于完成异步任务的线程数量较多,需要考虑系统负载。为此我们使用了 Geekbench 4[9],它包含一个集成测试,涵盖不同的工作负载模型,以及被公认为行业标准基准的PCMark 8[21]。有关软件执行的底层测试的更多详细信息,请参阅其技术报告。我们最初(未启用保护时)测得Geekbench整体分数为6625(多核),启用保护后为5841,性能损失为11.83%。与之前的测试不同,PCMark的系统影响较小。我们执行了两个内置场景:“工作”,用于测量办公设备上的基本工作任务;“家庭”,更侧重于媒体功能(例如游戏、照片、聊天)。如表2所示,差异非常小(小于1%)。

Test 解决方案关闭 解决方案开启 性能损失
工作 conventional 2.0 2859 2845 −0.49%
家庭 conventional3.0 2728 2705 −0.84%

5.3 讨论

与其他贡献的精确比较[5,23]很难:我们无法复制他们的评估过程(如果有的话),也无法应用我们自己的评估过程6。尽管如此,仅在使用固态驱动器时对要求最高的测试产生显著影响的情况下,我们可以安全地认为相比之前的工作有显著改进,并报告DaD是实用的。

6 实验:勒索软件检测

本节中的实验表明,数据感知防御(DaD)能够实时检测并阻断样本集中绝大多数勒索软件(即99.37%),且丢失的字节数较少。随后,我们讨论了导致误报的勒索软件类行为,最后回顾了两起通过模仿攻击绕过该对策的假阴性案例。

在深入探讨下一节中我们方法的实验评估以及对勒索软件行为的分析之前,让我们先介绍用于进行这些实验的恶意软件分析平台。

6.1 恶意软件‐O‐马蒂克

我们设计并构建了恶意软件-o-马蒂克(MoM),一个不使用虚拟机的自动化分析平台,同时保留了常规分析框架的所有主要功能。这种完全的裸金属平台基于两个开源软件 Clonezilla [4]和 Viper [29]构建,具有可复现性。该平台由一台主服务器和多个从机构成,每个从机并行运行分析循环。整个系统位于专用网络中,在网络自治系统(AS)的监管下,并直接连接到互联网,以模拟典型的家庭网络。该循环本身包含几个简单的步骤:监控环境设置、恶意软件执行、结果收集与存储、清理。在第一步中,从机从主服务器下载一个脚本,该脚本将作为如何进行下一次分析的指令。一旦过程完成,从机会设置其下一个环境并通过重启进行清理。清理过程仅包括将干净的磁盘镜像刷入从机的磁盘。目前,MoM 仅用1台服务器和5台从机每天最多可分析360个恶意软件。该平台的最终目标是不间断运行,从而实现样本分析的自动化。

6.2 实验设置

MoM在实验中以两种不同模式使用:“被动”或“主动”。第一种模式下载样本并执行,根据用户文件上预先确定的加密哈希值,若哈希值发生变化则将样本标记为active(主动),否则丢弃。第二种模式使用被标记为active(主动)的样本评估DaD勒索软件防御措施(即文件系统驱动程序)。在此场景下,分析完成后会将一组信息(例如PE文件)发送到远程服务器。为避免分析过程中出现规避行为,利用Digital Corpora语料库[8]和手动添加内容构建了一个看似合理用户环境的文件语料库。同时,模拟了一组用户交互(例如鼠标、键盘)。

每次运行持续十五分钟。选择Windows 7 SP1 32位快照作为待感染的操作系统,用户以管理员身份登录且用户账户控制(UAC)已禁用。

实验基于从2016年8月到2017年3月期间长期收集的样本集。我们使用了一个专门针对勒索软件的VirusShare存档,并结合对在线仓库的每日爬取[16,30]。这种组合方式使我们获得了一个包含798个主动勒索软件(即会加密用户文件)的异构勒索软件集合,涵盖二十多个家族,并包含大量单一样本。先前的研究由于采用虚拟化分析环境,无法运行Cerber样本7。我们的数据集不受反虚拟化技术的限制。样本标签通过AVclass 工具 [24]完成。有关该样本集的详细信息可参见附录中的表3。对于每个样本,我们根据其JSON日志文件进行了人工分析,以识别无关样本以及误报和漏报情况。

6.3 检测结果

DaD 仅关注磁盘上的写操作,以线程为粒度,且不依赖于任何签名。这一特性使该方案具有通用性,从而能够应对零日勒索软件。该方案成功检测出我们 99.37%的勒索软件样本,仅有五个样本绕过了该对策。在评估过程中模拟了以下活动:鼠标移动、键盘输入和网页浏览器使用。如图1所示,仅出现了一次误报。在样本评估期间,最多监控了23.8万个线程。一个非常重要的点是, DaD 的分类错误率非常低:7.08e−05。

监控的可疑(1)和不可疑(0)线程相关的混淆矩阵。)

1Ko 10Ko 100Ko 1Mo 10Mo 100兆
0
0.5 0.7 0.9
丢失的字节数
F n (x )

为了评估DaD的有效性,图2展示了在整个勒索软件样本集中丢失的字节数估计。可以看出,对于70%的样本线程,最多有6.5兆字节(MB)被加密,这对大多数用户来说是可以接受的。然而,当考虑90%的样本集时,在最极端的情况下每线程会丢失70兆字节(MB)。根据用户需求,这种损失可能可以容忍,但对企业而言可能是不可接受的。大多数样本是单线程的,占比分别为76.88%。

检测受到探索路径性质的影响,可能在阻断恶意线程时快慢不一。事实上,加密文件数量较少的文件夹会使滑动中位数远高于检测阈值,这是由于勒索信泛滥所致。即便在此类情况下,恶意线程仍能被成功阻止,这表明对整个文件系统的监控使我们的解决方案具备较强的抗攻击能力。此外,如果线程活动少于一半用于文件加密,则基于最近五十次写操作的 χ2滑动中位数这一被攻破指示信号可能被绕过。

我们发现的一个重要观察结果是,磁盘上可以区分出不同的 χ2“层”,每 一层对应一种特定行为,例如附加到文件中的勒索信和元数据。这些模式为区分可逆勒索软件与不可逆勒索软件提供了一种判断标准。事实上,加密过程中附加到文件的元数据在文件系统中是可见的,这表明数据有可能被恢复(例如,作者实现了解密例程)。此外,对于以下三项任务——文件加密、勒索信生成以及元数据处理——均未观察到分离成独立线程的情况。

6.4 类勒索软件应用

实验结果表明,该解决方案在阻止感染方面是有效的,但我们尚未讨论其局限性,特别是误报和漏报问题。主要目的是将DaD设计为一种针对勒索软件的实用高效的首道防线。

误报

通过观察 χ2显著性水平为0.05的滑动中位数,αEW可以在大多数传统应用程序中消除大量误报。当用户与其机器交互时,DaD监控大约数十个进程和数百个线程。仅有少数应用程序被阻断,在这些情况下,它仅禁用特定任务(例如更新),而不是整个进程。此外,只有非常特定的应用程序能够表现出恶意的文件系统行为:如文件压缩或加密、安全文件删除、浏览器启动等,如图3所示。

0 50 100
500
1,000
写操作
C h i-S q u a r e

、7‐zip()、GPG4Win()和 μTorrent(◦)。)

实际上,该解决方案还无法区分压缩和加密,使用7‐Zip、GPG4Win或 μTorrent时会产生误报。不过,正如第3节所述,我们可以区分JPEG压缩。通过Mogrify软件重写的图像对应的 χ2统计量远离临界值(即293.24)。无论如何,可以得出一个主要观察结论:仅存在单个“层”。仅靠 χ2统计量不足以避免误报。勒索软件的商业模式基于勒索,为了获得支付,他们需要使勒索信尽可能显眼。未来工作应重点关注这一思路。

假阴性

TheData Aware Defense勒索软件防御措施专注于磁盘上属于勒索软件行为但并非独有的特定活动。迄今为止,勒索软件所伴随的底层机制是众所周知并有据可查的:它们会加密文件。然而,勒索软件行业非常活跃,没有人能免于更隐蔽的行为,我们正面临一场军备竞赛。例如,引导扇区加密(如主引导记录)这一特定问题在本文中未被涉及,Talos小组 [26]提出了一个解决方案。此外,正如 Mbol 等人 [17],所述,如果使用一种保持原始文件分布特性的加密算法,则该方案将无法检测到此类攻击,因为随机性是检测的根本依据。

那些将恶意写入操作与看似非随机的无用或冗余操作循环交织在一起的勒索软件将能够通过DaD,如图4所示。在阻断恶意线程之前,DaD需要观察最近的五十次写操作。一个多线程勒索软件,若每个文件由独立线程加密,则可利用此局限性。最后,内核漏洞是一种潜在的漏洞,勒索软件可能利用它来卸载 DaD,更严重的是,在这种情况下,系统将被完全攻破。

样本集中的五个勒索软件样本(即 0.62%)绕过了该解决方案。三个索里斯特样本使用了弱加密算法(例如,Tiny Encryption Algorithm)。最后两个样本的行为与我们之前观察到的所有行为都不同。图4说明了这些陈述。

2.5K 5K 10 2
10 4
10 6
写操作
C h i-S q u a r e
(a) Crysis

2.5K 5K
10 3
写操作
C h i-S q u a r e
(b) Purge

Crysis样本不会写入勒索信,在大约3,000次写操作之后,开始执行 218 字节的大规模写操作。这种使用零填充缓冲区的操作会重复多次。Purge样本则通过一组异构的写操作来隐藏其恶意行为。对于每个加密文件,勒索信会被拆分为128字节的块重新写入。在这两种情况下,滑动中位数都无法有效检测到底层的加密过程,这表明勒索软件作者有意将应用程序的主要目的隐藏在无用操作背后(即模仿攻击)。勒索软件不再能被视为一种简单的恶意软件版本,未来它们会伪装成在执行除加密文件之外的其他任务,而据我们所知,截至目前尚未出现此类情况。

7 结论

数据感知防御基于文件系统监控,且不对恶意I/O模式做任何假设。此外,我们在系统中实现了线程级控制,并不限制将文件保护局限于特定文件夹。 χ2 测试本身即可替代香农熵,并弥补其部分不足之处。而且,我们的对策效率高,可在Windows 7/10机器上部署,性能开销合理,在磁盘每次写操作上的平均延迟为 12µ秒,比以往方法小数百倍。我们的大量实验表明,更复杂的勒索软件已开始使用模仿攻击。然而,我们成功检测到了99.37%的样本,在90%的情况下每个样本的线程最多丢失70兆字节,在70%的情况下丢失少于7兆字节。

在性能和检测率方面取得的这些令人鼓舞的结果,得益于为系统中运行的所有进程的所有线程计算的一个单一简单指标,使我们能够特别跟踪代码注入攻击。误报似乎是该方法固有的:我们正在检测大规模写操作中的随机数据。但其速度和低负向率使其成为第一道防线的良好候选方案。一旦某个线程被判定为恶意,可以转而使用其他更高成本的指标来改善误报率,而不会影响整体性能,因为这些指标无需对所有其他线程进行计算。例如,未来工作应重点关注随机数据(加密文件)和恒定数据(勒索信)的分布情况。当误报率足够低时,通过与用户交互来消除最后剩余的误报似乎是合理的。事实上,勒索软件具有非常特定的行为,普通用户应当知道自己是否有意将所有文件加密。未来的应研究向用户报告哪些信息,以及该方法是否具备实用性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值