针对统计代码混淆检测器的规避攻击
苏佳伟(B)、达尼洛·瓦斯康塞洛斯·瓦尔加斯和樱井浩一
九州大学,日本福冈{jiawei.su,vargas,sakurai}@inf.kyushu‐u.ac.jp
1 引言
1.1 背景
在信息安全领域,尤其是网络安全领域,代码混淆经常被攻击者滥用,以隐藏其恶意内容,从而逃避常用签名匹配系统的检测。混淆的JavaScript、VB代码和恶意软件是这一现象的常见例子。以JavaScript为例,由于存在良性混淆,因此混淆本身并不能充分指示其恶意性,故不能仅通过是否存在混淆来直接识别恶意JavaScript。为此,已提出一种两阶段系统结构来解决此问题[1]。具体而言,前端会部署一个混淆检测器,用于快速检查一段JavaScript是否经过混淆。若结果为否,则可将其转发至简单的签名匹配系统,甚至可作为良性代码直接丢弃,因为几乎所有的恶意JavaScript都经过了混淆。若结果为是,则将其发送至后端系统进行分析,后端系统将执行高开销计算,例如动态分析,或使用复杂解码器。这种组合系统相比单独使用签名匹配系统(其检测容易被混淆绕过)更为有效,同时相比仅依赖高开销检测系统也更加高效,后者必须对所有输入的JavaScript进行分析,无论其是否可疑(即是否混淆),这需要更多的计算资源。
在实践中,防御者可能更倾向于让混淆检测器激进地将输入判定为混淆,因为在当前情况下,误报与漏报之间的权衡是不平衡的[1,13]。粗略地说,误报只会导致对被错误分类的非混淆代码进行详细分析时产生额外的资源开销,而漏报则可能导致暴露于混淆的恶意代码之下。
在本文中,我们仅关注检测混淆阶段,特别是基于字母统计特征(例如 n‐gram)的一类检测器。统计检测已被证明在检测自然混淆方面有效,并且由于所需JavaScript特定知识较少,具有易于实现的优势。然而据我们所知,其在应对带有对抗性修改的混淆时的有效性仍不清楚。因此,我们构建了这样一个目标检测系统,以测试其在本文所创建的逃避攻击下的鲁棒性。为简化起见,我们假设该系统使用一元语法或一元特征。我们进一步将目标系统限定为一种新颖性检测器。
假设采用新颖性检测方案的原因在于混淆算法可以被定制化。程序员能够自由控制其混淆代码的表面形式(例如,字母可以任意组合形成具有无数种可能方式的混淆字符串),因此从逻辑上讲,可能的混淆类型是无穷无尽的,试图通过字母的统计特征将所有可能的混淆归入一个或几个聚类(即家族)是不现实的。另一方面,非混淆代码必须遵循JavaScript和英语语言的语法,这使其具有较高的相似性。因此,将非混淆视为一类而将混淆视为异常值的新颖性检测方案,比多分类[13]更适合此场景,因为每种混淆不仅明显不同于非混淆,而且通常也明显不同于大多数其他混淆。本文使用一种简单的类聚类分类器进行新颖性检测,我们相信即使采用其他新颖性检测分类器(如一类支持向量机、常规无监督聚类和神经网络),所得结果仍会保持一致。尽管本文主要针对混淆的JavaScript展开讨论,但由于其他类型的混淆代码具有类似的特性和目的,因此只需基于领域知识稍作修改,本文的评估方案和结果也有望推广至其他类型的混淆代码。
1.2 相关工作:统计混淆检测器
由于恶意性与混淆之间存在密切关系,检测代码混淆已成为信息安全领域的一项常见任务。除了混淆的恶意JavaScript之外,混淆的恶意软件也是此类现象的一个常见例子[12]。大致来说,目前主要有两种混淆检测方法:基于规则和基于统计。其中后者被认为有效,原因是许多混淆代码包含不可读的混淆字符串,因而整体字母频率异常。
由于JavaScript具有自定义和混淆的特性,检测恶意JavaScript一直是一个难题。与恶意软件变种类似,许多恶意JavaScript具有相似的功能,因此如果未经过混淆,可能被特征匹配系统捕获。另一方面,尽管良性混淆的数量相对较少,但其存在使得混淆成为检测恶意性的一个必要但不充分的证据。已有若干基于机器学习和自然语言处理统计特征的系统被提出,用于检测混淆或混淆的恶意性。例如[2]利用了一些基本的统计特征,如字符串熵和关键词与词的比例,来检测混淆的恶意JavaScript。[6]使用字母和词元(即由相邻字母组成的元组)的n元语法来检测混淆的JavaScript。[7]使用了字符串的三个统计特征:熵、特定可疑字母的频率以及密度来发现混淆,这与[8]的方法类似,后者实现了n元语法而非简单的频率统计。[13]利用了一系列信息论度量间接寻找混淆与非混淆JavaScript的统计特征。这些检测器主要依赖于混淆与非混淆之间文本字符频率上的明显差异,并通过直接比较每个词元的观测频率,或使用统计度量间接进行比较来衡量这种差异。
1.3 动机与挑战
之前的几乎所有工作都未深入讨论此类基于统计的检测方法可能存在的弱点。从逻辑上讲,攻击者有可能构造出具有相似统计特征的混淆恶意代码,而挑战在于寻找是否存在一种有效且高效的方法,使攻击者能够获知其试图规避的目标系统所使用的统计特征。根据通用的安全评估流程,需要进行假设分析,在合理假设环境约束、攻击者资源、信息和能力的前提下,评估潜在的安全问题是否真的会使系统在实际中变得脆弱,如果会,其脆弱程度如何,以及攻击者可能造成多大损害,这构成了本研究的主要动机与挑战。
1.4 我们的贡献
本文的主要贡献包括:
– 我们系统性地提出了统计混淆检测器的潜在漏洞,这些检测器已被广泛用于过滤可疑的混淆代码;同时,我们还形式化了防御者与复杂对手之间的标准攻击场景。
– 我们根据该场景提出了两种可能的攻击方法。
– 我们针对这两种攻击进行了实验,结果表明,即使在对攻击者而言近乎最坏情况场景下,统计混淆检测器确实存在漏洞。
2 混淆的JavaScript
JavaScript混淆是指用其他字符串替换原始代码,以隐藏其原始意图。此类字符串或混淆载荷通常是由随机组合的、对人类不可读的无意义字母序列构成。这是因为只要能够有效隐藏恶意性以逃避检测,混淆载荷无需遵循任何语法规则,因此这种生成混淆的方式常常导致混淆载荷中文本字母的观测频率异常。例如,混淆字符串通常由大量重复且简短的文本模式组成,这在非混淆情况下极为罕见。在实际中,攻击者通常将混淆的恶意JavaScript注入合法网站,或者将其嵌入PDF格式文件中,以发起Drive‐by‐Download攻击。图1和2给出了混淆与非混淆的对比。
3 攻击场景
3.1 假设
攻击者的主要目标是使其恶意混淆能够逃避统计混淆检测器的检测,从而使混淆代码被直接丢弃或发送到签名匹配系统,而根据上述两阶段检测场景,签名匹配系统总是可以被混淆所欺骗。我们对目标统计混淆检测器的结构做出一个假设:它们均采用类聚类的新颖性检测方案进行检测,具体而言,决策边界是在94维空间(即94个一元语法,每个均为JavaScript中的合法字母)中的一个球体,其质心由训练数据的平均值计算得出,半径则通过自定义获得。一元语法是常用n元语法模型中最简单的情况,下文讨论中将可以看出,我们的方法和结果也可以推广到其他n元语法模型。在测试阶段,位于该簇内部的任何点都被判定为非混淆。我们也将这些混淆检测器称为攻击者希望攻破的目标检测器。
所假设的新颖性检测器与K均值聚类非常相似,主要区别在于簇数量,K均值通常具有多个簇。由于其轻量级特性和易于实现,K均值不仅在安全任务中被广泛实施。它还与其他常用的新颖性检测分类器(如一类支持向量机和k近邻)具有许多相似的特性,例如某些常见的一类支持向量机也在高维特征空间中使用类似的球形决策边界[18,19]。因此,即使该方案较为简单,我们的类聚类的新颖性检测方案仍能代表野外常见的检测器。
3.2 访问系统信息
目标检测器的信息是攻击者规避这些检测器所必需的。因此,我们总结了攻击者可以访问系统信息的三种场景:
- 一个目标检测器被公开分发(例如,作为浏览器插件),以便终端用户可以调整其设置,例如决策边界的紧密度(承受漏报的程度)。在这种情况下,攻击者可以使用他们自己复制的检测器,在不同参数设置下自由探测混淆检测器的质心和决策边界。
- 检测器由某些服务器托管为公开可访问的服务,攻击者可以发送他们的JavaScript并接收反馈(即恶意或良性的分类结果)。在这种情况下,攻击者可以利用反馈来标注数据,并最终训练他们自己的替代分类器,而无需了解原型的参数设置信息。此情况的一个示例是一些网站可能维护其自身的两阶段恶意JavaScript检测器,其中包含混淆检测器组件,并允许用户上传their codes for testing if it is malicious. Adversaries can identify the label of their obfuscation(i.e. obfuscation or not) through the output of the system (i.e. malicious or not).
- 检测器被秘密托管,且完全不向外部返回任何反馈,因此无法通过探测获取任何信息。这种情况的示例如一些能够承担计算成本的用户,会基于自己的数据集和自定义的参数设置维护自己训练的混淆检测器。这样做可能不仅是为了防护,还用于观测目的(例如研究人员希望收集恶意JavaScript样本以进行报告和分析)。这种情况类似于过滤垃圾邮件领域中终端用户各自训练自己的垃圾邮件过滤器[14]。
3.3 攻击者的知识
根据[16]中定义的框架,在对抗环境中,攻击者访问训练数据和进行探测的能力是损害分类系统的两种主要方式。
在上述提到的三种情况中,攻击者几乎无法访问原始训练数据。在情况1中,通常训练数据不会直接提供给终端用户,而只会提供训练好的分类器本身(例如,仅提供质心和半径),除非某些分类器必须保留部分训练数据用于分类(例如支持向量机的支持向量)。然而,实际访问训练数据的可能性确实值得怀疑。具体而言,本地存储训练数据并允许访问可能会导致以下问题:(1)终端用户可能无法承担计算成本,特别是当分类器需要定期重新训练并更换训练数据时;(2)厂商可能不愿意公开其训练数据;(3)出于安全考虑,以避免容易被逆向工程。而在情况2和情况3中,目标检测器的训练数据完全不对外开放访问。总之,在所有情况下,攻击者几乎都无法访问训练数据,这意味着直接逆向工程分类器是毫无希望的。
攻击者可能会改用通过探测获得的反馈,特别是在情况1和2中,当反馈可用时。然而,在常见的“路过式下载”(Drive‐by‐Download)攻击场景中,例如攻击者希望大规模分发其恶意软件或广告时,探测变得不切实际,因为攻击者的目标始终是同时逃避尽可能多的不同目标检测器,而这些检测器大多根据上述三种情况分别训练而成。因此,单独探测情况1和2中的任何特定目标检测器都是无意义的。此外,攻击者不仅需要逃避用于防护的目的而部署的目标检测器,还需要避免安全研究人员察觉其恶意JavaScript的存在,尤其是当该恶意性为新创建时;而大多数用于观测的目标检测器无疑是私有部署的,并且如情况3所述不会提供任何反馈,这意味着攻击者无法简单地忽略这种情况。根据[16]中定义的方案,这将被定义为探索性完整性无差别攻击。
同样,只要特定的检测器被广泛分发,使得即使进行针对性攻击仍能确保足够的受害者,攻击者就可能会考虑针对情况1和2中描述的特定检测器发起针对性攻击。然而据我们所知,目前尚不存在广泛分发的混淆检测插件或服务。
然而,无法探测和直接访问训练数据并不意味着攻击者无法获取有关目标分类器的任何信息。由于非混淆训练数据是从野外收集的,攻击者同样可以自由地从类似的数据资源中收集数据,从而有可能训练出针对目标的替代分类器。
在我们的情况下,攻击者可以从野外收集一些非混淆样本,分析这些样本中的一元频率分布,并据此修改其原始混淆代码以实现逃避。因此,即使无法进行探测,也可以通过访问公开暴露的公共数据源间接获得训练数据。这种策略看似简单,但在下文中我们将讨论实际中的约束如何使问题变得复杂。
攻击者可能已经掌握了原始混淆的恶意JavaScript。一旦他们通过探测找到了能够逃避目标检测器的统计特征的优化值,就可以通过向原始代码中添加更多内容(例如注释、自定义或无用代码等不具有实际功能的内容)来相应地调整其原始代码的统计特征,只要保持原有的恶意功能不变;或者,如果攻击者能够承担相关成本,他们也可以完全重写其恶意代码以适应他们发现的统计信息。无论哪种方式,他们都必须评估并逼近目标系统用于检测混淆所使用的统计特征(例如新颖性检测器的质心和决策边界)。
3.4 攻击者的处境和约束
我们假设理想情况下存在一些完美混淆检测器,它们使用完整的非混淆JavaScript集合进行训练,每个JavaScript根据其在互联网上的流行度(即热门网站上的JavaScript具有更高的权重)在某一时间片内被赋予适当的权重,因为流行的JavaScript在统计上应能代表常见的JavaScript。每个新颖性检测器的决策边界半径经过适当选择,以实现低误报率,同时尽可能保证可忽略的漏报率(即对于两阶段系统而言,漏报的代价更高)。在实践中,JavaScript的权重难以准确确定,因此只能采用一种接近理想检测器的经验性解决方案,即仅使用那些出现在具有一定流行度以上的网站中的JavaScript来训练检测器(对应于理想检测器中高权重的样本),例如嵌入在Alexa网站排名列表前列网站中的JavaScript[11]。在此情况下,每个JavaScript具有相同的权重。在本研究中,我们假设所有真实混淆检测器都以相同的方式进行训练,但质量不同。
具体而言,实际目标检测器的训练数据应包含一些高质量非混淆JavaScript样本,这些
在统计上对常见的 JavaScript 具有代表性,并且具有较高的流行度权重值,以及一些在统计上较为罕见的低质量样本。
即使可能存在多个理想检测器,根据[13]中非混淆产生非常相似的统计行为的结果,可以合理假设这些理想检测器彼此非常相似。具体而言,这些检测器在质心位置和半径上可能略有不同,但对任何输入样本都会做出相同的预测。
因此,大多数训练良好的真实混淆检测器作为理想检测器的近似,也应当非常相似,从而存在一些能够被包含在大多数真实混淆检测器决策边界内(即被分类为非混淆)的共同点。为了验证这一点,我们首先使用多维缩放[17],一种将数据点从原始特征空间投影到另一空间的方法,在投影过程中尽可能保持对象之间的距离(例如欧几里得距离)。图3所示的映射结果支持了我们的假设,因为数据点确实表现出相似性并聚集在一个单一簇内。该假设还通过第5节中讨论的实验结果得到了进一步验证。
因此,攻击者的目标就是尽可能准确地创建他们自己对理想检测器的近似,这与构建许多其他真实混淆检测器的方法完全相同。具体而言,攻击者将根据他们收集的所有样本中一元语法的平均频率计算出其近似的质心,并自定义半径。只要目标和攻击者的数据源相似,这种近似就是可行的。一旦近似达到一定程度的准确性,攻击者就可以在其近似检测器内找到一些合适的数据点,这些数据点有望成为许多其他目标检测器的公共点,从而发动逃避攻击。
因此,对攻击者而言,一种经验优化解决方案就是尽可能多地使用非混淆样本,并通过不断增加公共训练数据来近似真实混淆检测器。这也是因为攻击者无法评估其近似与真实混淆检测器之间的距离。
对于其他真实混淆检测器而言,攻击者无法准确判断需要多少样本才能实现达到特定精度的近似。然而,只要攻击者持续增加其训练集的规模,特别是添加更多高质量的样本(即权重较高的JavaScript),从经验上看,所得到的近似有望接近大多数目标检测器。在收集完样本并完成近似检测器的构建后,攻击者必须确定实际发起攻击的具体位置点。根据最大熵的思想,由于没有确切信息来选择最佳点,因此最佳选择是近似检测器的质心,或在质心周围较小区域内随机选取的若干个点。这些点包含了能够逃避大多数检测器所需的统计特征,攻击者可据此修改其恶意代码。
然而,混淆检测器应尽可能减少漏报,因为漏报的代价远高于误报,因此新颖性检测器的单类区域将相当小(例如,半径较小的球体)。此外,尽管非混淆的JavaScript比混淆代码具有更多的语法约束,但其自定义程度也允许任意两个非混淆JavaScript之间的统计特征存在相当大的差异。因此,随机的非混淆JavaScript仍有可能被检测器误判为混淆代码,所以攻击者也不容易找到能够成功逃避大多数检测器的合适统计信息,这需要高质量近似(图 4)。
3.5 攻击者的策略
我们假设攻击者仅知道存在某些但并非具体的利用一元特征的统计混淆检测器。
根据上述讨论,发动逃避攻击的最佳方式是尽可能多地收集高质量的非混淆样本,通过在所有样本上评估统计特征(例如,计算每个一元词符的平均频率作为其近似的质心),构建对理想检测器的近似,并在该近似的决策边界内选择点进行逃避攻击,且仅进行一次有把握的尝试(即,由于探测不现实,多次尝试毫无意义,而失败的尝试甚至可能暴露攻击者的意图;此外,每次攻击者想要尝试时,都必须根据当前最佳知识修改其原始恶意代码。因此,多次尝试会使攻击者付出更高的成本,却毫无收获)。大致而言,他们收集的样本越多,由于与目标分类器之间的公共训练数据增加,其对目标检测器的近似效果就越好。然而,攻击者在收集样本时也需要付出成本,假设他们只能收集 m个样本,那么他们的最佳策略就是充分利用全部 m个样本来尽可能提高近似的准确性。
假设攻击者可以从 m样本中获取的统计信息为 I(m),用于生成近似,从而给出攻击者通过执行 I将原始的混淆的恶意JavaScript p修改为 p′的相应方法 I。然而,I(m)可能包含由低质量训练样本引起的噪声,这对近似会产生负面影响,接下来我们将展示如何通过数据净化来减轻这种影响。这使得 p′成为根据 I(m)的优化而变化的变量,以应对以下优化问题。
假设有 N 个真实混淆检测器,每个检测器 di对攻击者具有重要性权重值 wi。攻击者的目标是最小化 p′的统计特征(表示为 Xp′)与某个真实检测器 di的质心 ci之间的距离 D,从而形成以下优化问题:
$$
\arg_{p’} \min \sum_{i=1}^{N} D(X_{p’}, c_i) w_i. \tag{1}
$$
由于攻击者无法评估任何特定的 wi,因为他们甚至不知道其存在,因此无法通过分析找到(1)的理想解决方案 p′。攻击者可能转而求解一个近似问题:
$$
\arg_{p’} \min \sum_{i=1}^{N} D(X_{p’}, c_i) \frac{1}{N}. \tag{2}
$$
根据最大熵的思想,通过为所有目标检测器分配相同的权重来同等对待它们。
实际上,任何特定的 ci也无法被准确评估。对于那些被赋予更高权重的目标检测器,例如安全研究人员建立的用于观测的先进检测器,由于需要优先规避,因此预期会使用更高质量的训练数据进行更好的训练。如果攻击者也能获得高质量的训练数据,那么他们得到的近似结果将偏向于高权重的目标检测器,从而使得 p′的相应解能够经验性地逼近(1)的最优解,即使在不知道确切权重值的情况下。
3.6 攻击
我们根据上述形式化的场景以及对攻击者能力的假设,定义了两种类型的攻击。
基本攻击。 发动逃避攻击最简单的方法是收集足够的非混淆样本,计算每个一元语法的平均频率作为近似的质心,并相应地修改恶意代码以逃避检测器,这一点在上文已讨论过。
具备先验知识和数据净化的高级攻击。
基本攻击未考虑两个重要因素:
–
先验知识
:攻击者可能也对非混淆中一元语法的频率具有粗略的了解。例如,某些标点符号在非混淆中非常罕见。
–
一些收集到的样本可能对近似的准确性产生负面影响
(即,这些样本实际上是非混淆的,但在统计上并不具有常见样本的代表性)。另一方面,那些能够提高近似速度的样本应被赋予更大的权重。
通过考虑这些因素,高级攻击可以如下进行:在完成从野外收集非混淆样本后,首先计算每个一元语法在样本集上的平均频率,形成一个称为“标准分布” P的分布,这与basic attack方法的解决方案完全相同。然后计算P与每个收集到的样本 Xj之间的KL散度,以及先验分布 Z。接着,在所有样本加上先验的基础上再次计算每个一元语法的平均频率,每个频率由其对应样本与 P之间的KL散度值加权。KL散度值越高,该样本的权重越低。
此处先验分布旨在减轻过拟合,并对整体近似带来积极影响。另一方面,Kullback-Leibler (KL) 散度作为一种衡量两个概率分布之间非对称距离的方法,被用于评估单个观测到的非混淆样本与“标准分布” P之间的差异。P实际上是目标一元语法分布的经验期望。如果一个样本接近该期望,则会在最终的加权平均计算中被赋予更高的权重,从而贡献更大。
假设已将 m非混淆收集为训练数据,首先我们计算 P。每个一元语法 xi在 P中的概率 pi计算如下:
$$
p_i = \frac{1}{m + 1} \left( \sum_{j=1}^{m} x_{ij} + z_i \right), \tag{3}
$$
其中zi是 xi在先验中的概率,xij是 xi在样本 Xj中的概率。
然后计算每个收集的样本与 P之间的K-L散度 DKL。具体来说,我们计算 DKL(P||Xj),因为K-L散度中的权重应取自 P。
$$
D_{KL}(P||X_j) = \sum_{i=1}^{|\chi|} p_i \log_2 \frac{p_i}{x_{ij}}, \tag{4}
$$
其中 |χ| 表示一元特征的大小。
对于特定样本 Xr的权重πr,根据为具有较小KL散度值的样本分配更大权重的思想来计算,该KL散度值相对于 P。
$$
\pi_r = \frac{\exp(-D_{KL}(P||X_r))}{\sum_{j=1}^{m} \exp(-D_{KL}(P||X_j))}, \tag{5}
$$
所以
$$
\sum_{r} \pi_r = 1. \tag{6}
$$
并且每个一元语法 xi的最终加权平均值计算如下:
$$
p’
i = \sum
{j=1}^{m} \pi_j x_{ij} + \pi_z z_i, \tag{7}
$$
其中πz是先验的权重。
还可以看出,基本攻击是高级攻击的一种特殊情况,其中所有样本的权重相等且不包含先验。此外,这两种攻击方法都是基于复杂对手希望发起无差别攻击的假设而提出的,但实际上它们也适用于可以进行探测的定向攻击。唯一的区别在于,在无差别攻击中,攻击者的最优策略是利用所有收集的样本来实现一次确信的逃避;而在仅针对特定目标检测器的定向攻击中,攻击者可以根据探测到的反馈,在收集到一定数量的样本后每次尝试逃避,直至成功。
4 实验与结果
在假设的新颖性检测方案下,此类统计混淆检测器的训练数据(即仅需非混淆良性样本)是从野外随机收集的,因为防御者必须确保检测器对公共环境中的 JavaScript具有良好的泛化能力。同时,收集到的训练样本的质量必须在一定程度上得到保证,以确保它们在统计上确实能够代表常见的非混淆JavaScript。
我们设计实验以测试两种攻击对目标系统的有效性。所使用的数据集包含 2750个非混淆样本和400个混淆样本,分别来自Alexa排名[11]和VirusTotal [10],收集时间为2015年12月至2017年1月。其中,非混淆样本来自不同类别(如体育、教育和科学)的顶级网站,以确保多样性。我们手动确认了每个样本的标签,并确保没有重复样本。
首先,使用2000个随机选择的非混淆样本训练10个目标新颖性检测器,以模拟10个实际的混淆检测器。每个系统随机分配1000个样本用于训练,因此每两个系统之间存在未知重叠,以模拟实践中每两个检测器之间的未知相似性。
所有系统均使用94个一元语法标记的频率作为特征。每次训练仅通过计算所有训练样本上一元频率的平均值,得到球形检测系统的质心,其半径是自定义的。任何位于该球体内的未来数据点都被判定为非混淆。
如前所述,攻击者的目标是同时近似多个目标系统。我们使用三种不同规模的数据集:50、100和200个样本,分别对20次近似训练针对10个目标系统。在每次尝试中,将执行两种类型的攻击以比较其有效性差异。近似精度通过攻击者的近似质心与目标质心之间的KL散度值间接衡量。对于每一次近似,从目标系统的2000个训练样本中随机选择75%训练样本,其余为不在训练集中的非混淆样本,被视为非代表性样本,同时还包含少量混淆样本。这两类异常样本及其数量也随机选取。
这种实现基于以下事实:攻击者能够访问与目标系统以及理想检测器相同的数据源,因此其数据质量在一定程度上是有保障的,特别是当目标系统进行周期性训练,而攻击者从近期网站收集样本时,双方的数据均为最新新鲜数据。同样事实是,由于采集成本限制,攻击者所能收集的数据量仅占理想检测器的一小部分。此外,目标系统的半径在攻击中并不重要,因此无需考虑。
近似的结果如图5所示。我们将攻击者的近似检测器与不同大小的训练集以及10个模拟的真实混淆检测器之间的KL散度值进行比较,以间接量化近似精度。
通过增加更多样本,整体精度得到提升,但当在已有的100个样本基础上再增加100个样本时,其效果下降,表明收敛速度在样本数量上并非线性。此外,数据净化的效果是明显的,因为可以看出,在数据净化后,近似精度更高且更稳定,说明它能够持续可靠地去除数据集中包含的噪声,用于近似。
5 讨论
根据图5所示的结果,我们在前几章中所做的假设——大多数真实混淆检测器在统计上彼此相似——通过攻击者的近似与我们大多数模拟目标检测器之间较小的KL散度值得到了验证。似乎这种近似可以相当容易地实现。攻击者仅需使用收集的小型数据集,即可对大多数模拟系统获得准确的近似。然而在实践中,存在一些潜在的限制因素,可能阻止攻击者获得如此理想的结果:
- 在实际中,当处理许多真实混淆检测器所使用的更大规模数据集时(例如,通过大规模爬取获得的超过10万的训练样本),这种近似可能要困难得多。需要更多的样本来获得足够的近似精度。
- 攻击者无法测量对理想检测器或大多数目标检测器的近似质量,而这在最初是被假设成立的。因此,即使攻击者可能已经拥有了足够精确的近似,他们也无法得知这一点。最佳策略仍然是尽可能多地添加样本以进行近似。
图5所示的数据净化的有效性意味着攻击者甚至不需要手动进行数据清洗以去除低质量样本,这使得他们的攻击完全自动化。此外,实验中使用的先验仅仅是均匀分布。在实际中,攻击者可以选择更好的先验,甚至可以根据他们的先验知识专门指定常量权重作为先验。
我们在此工作中假设使用一元语法,但显然,攻击场景的形式化和所提出的攻击方法可以直接移植到其他n元语法中,并且我们推测其他n元语法系统也可以以相同的方式被欺骗,因为在此场景下我们并未发现n元语法相比一元语法具有任何鲁棒性上的优势。还值得一提的是,n元语法检测的失效并非孤立现象,这也可能使得基于大多数间接统计度量(如熵)的检测方法同样失效,因为这些度量也是基于原始的n元语法特征。
根据我们的评估,统计检测方案对人工构造的混淆的JavaScript几乎没有抵抗力。然而在实践中,由于统计方法确实被证明对检测自然混淆有效,我们建议将统计方法与其他检测方法(例如JavaScript特定特征)结合使用,以便攻击者在创建对抗样本时面临更多约束,从而减少可能解的数量和质量。
6 结论和未来工作
在本研究中,我们形式化了统计混淆检测器的安全场景,并提出了两种标准攻击方法来评估模拟目标检测器的有效性。结果表明,即使在对熟练的攻击者极端受限的条件下,他们仍然能够以完全自动的方式实施精确的逃避攻击。
本文所使用的目标系统基于若干假设,以统一和简化分类方案及所采用的特征,这为未来工作留下了测试更复杂分类系统的空间。例如,在真实检测器使用不同n元语法模型或更复杂的分类器的情况下。我们相信,此类安全问题在更复杂的场景中仍然无法消除,但其模式可能会根据特定约束而发生变化,且攻击者在逃避时可能面临比本研究中的简单系统更多的复杂性。此外,还可以将此工作扩展到其他类型的混淆,例如混淆的恶意软件,预计其场景与混淆的 JavaScript类似。
本文仅关注统计方法,实际上还有其他基于不同特征的检测方法,从简单的可疑函数出现到复杂的JavaScript抽象语法树特征提取。[20]我们也将把非统计方法的鲁棒性评估及其与统计方法的比较作为未来工作。另一方面,尽管我们已经证明统计方法可以被单独欺骗,但攻击者是否能够创建出可逃避同时使用统计和非统计特征的组合系统的混淆方式仍不清楚(即,能够成功逃避统计检测的人工混淆是否仍然能够逃避非统计特征的检测)。对此问题的评估也可以进一步开展,以更深入地理解此类对抗场景。
16

被折叠的 条评论
为什么被折叠?



