Overview
这篇论文是针对0day攻击的检测,主要方法是利用编码器解码器神经网络,编码器解码器可以将payload编码之后再还原,那么拿很多正常数据报训练之后,还原输出的结果,如果还原的结果和正常数据报相似度高,那么就是正常数据报,否则就是异常数据报。
零日网络攻击是网络安全的最严重威胁之一,因为它们是未知的,所以很难被基于签名的网络应用防火墙(WAF)检测到。文章提出了一种名为ZeroWall的无监督方法,该方法可以与现有的WAF协同工作,有效地检测零日网络攻击。ZeroWall使用历史网络请求(大多数是良性的)来训练一个自编码翻译机器,以捕捉良性请求的语法和语义模式。在实时检测中,如果WAF未能检测到的零日攻击请求不能被自编码翻译机器很好地理解,并且不能被机器翻译回原始请求,则被声明为攻击。在对8个真实世界的数据集(包含14亿个网络请求)的评估中,ZeroWall成功地检测到了WAF漏掉的真实零日攻击,并且取得了超过0.98的高F1分数,显著优于所有基线方法。
Related Work
基于异常的web攻击检测方法可以分为以下三种:
- 点异常检测:这类方法侧重于单个数据包的异常。ZeroWall也属于这一类,它侧重于利用单个HTTP请求中的语法和语义。一种简单的方法是将HTTP请求“句子”分割成单词,恶意请求中使用的单词集合与良性请求中的单词集合可能存在差异,这些差异可以作为检测攻击的指标。
- 基于上下文的上下文异常检测:这类方法利用请求之间的上下文信息。然而,对于零日Web攻击检测来说,这些方法通常不太有效,因为零日攻击数据包在上下文中和统计数据中通常不会被反映出来。
- 基于统计的集体异常检测:这些方法依赖于大量数据的集体和统计信息,但在检测零日Web攻击方面不太有效,因为零日Web攻击在大量Web请求中非常罕见。
而基于点异常的检测,又有着以下一些具体的解决方案:
- 基于HMM的方法:例如,Spectrogram是一个基于隐马尔可夫模型(HMM)的方法,用于重建内容流并从数据包中提取特征。Hmmpayl是一个基于HMM的入侵检测系统,用于从有效载荷中检测攻击。然而,HMM模型在处理复杂请求时表现不佳,因为序列长度不适合时会导致性能下降。
- 基于深度学习的方法:提出了基于深度学习的方法来学习复杂的HTTP请求日志。这些方法包括使用神经网络优化反向传播用于入侵检测系统,以及提出多种针对不同类型攻击的深度学习方法。还有基于卷积神经网络(CNN)模型来训练请求中的单词。
- 无监督方法:例如,使用n-gram和堆叠自动编码器的无监督方法来学习HTTP请求。然而,这种方法直接使用编码器输出(降维)结果进行异常检测,这可能导致异常样本的输出与正常样本无法区分,从而限制了性能。
Core Idea
在这篇论文的”核心思想和系统概述(CORE IDEA AND SYSTEM OVERVIEW)”部分,作者详细介绍了ZeroWall的设计目标、核心思想和整体架构。这一部分内容可以分为以下几个关键点:
设计目标
- 与现有WAF协同工作:ZeroWall旨在作为现有基于签名的Web应用防火墙(WAF)的补充,而不是完全取代它们。这种设计允许ZeroWall在不增加额外开销的情况下,与WAF一起部署,共同提高Web安全。
- 检测单个HTTP请求中的零日Web攻击:ZeroWall选择使用无监督方法,因为它不需要事先知道攻击的确切模式,因此比有监督方法更有潜力检测到零日攻击。
核心思想
- 基于异常检测的无监督方法:ZeroWall的训练数据来自于WAF允许的历史Web请求,这些请求大多数被认为是良性的。作者使用编码器-解码器循环神经网络作为基础训练算法,这些网络在训练足够的句子后能够“理解”这种语言,从而可以将输入句子翻译成潜在的表示,然后再翻译回原语言。
- 将零日Web攻击检测问题转化为机器翻译质量评估问题:ZeroWall的核心观察是,HTTP请求遵循HTTP协议,可以被视为“HTTP请求语言”中的一句话。通过训练,网络能够将良性输入Web请求“翻译”成潜在表示,然后“翻译”回接近原始请求的输出Web请求。如果翻译质量高,请求则被认为是良性的;否则,被认为是攻击。
系统概述
- 离线定期重新训练:定期(例如,每天)或手动触发离线训练,以利用最新WAF规则过滤的最新请求数据。这个过程包括构建词汇表、将HTTP请求日志转换为令牌序列,并训练编码器-解码器神经网络。
- 在线检测:在线检测阶段,ZeroWall实时检测HTTP请求是否为良性或恶意(即零日攻击)。这个阶段包括令牌解析器、编码器-解码器网络、异常检测和手动调查等组件。给定一个HTTP请求作为输入,ZeroWall首先使用离线构建的词汇表将请求转换为令牌序列,然后编码器-解码器网络重建恢复的令牌序列。异常检测组件通过计算原始和恢复令牌序列之间的BLEU分数来决定请求是良性还是恶意的。
- 手动调查:为了处理无监督异常检测可能产生的误报,被标记为“恶意”的请求将由安全工程师手动调查。确认的误报将被加入白名单,以避免未来因相同模式的请求而产生的误报。确认的真实零日攻击将用于更新WAF规则。
DESIGN DETAILS
A. Token Parser(令牌解析器)
Token Parser负责将HTTP请求字符串转换为令牌序列。这个过程包括三个主要步骤:
- 构建词汇表(Vocabulary):首先,系统通过分隔符(如标点和空格)将请求字符串分割成多个“单词”。然后,过滤掉无用的词(如变量和停用词),并使用词嵌入技术来表示这些词。词汇表中的每个词都与一个唯一的标记ID关联。
- 生成令牌序列(Token Sequence):一旦词汇表构建完成,系统就可以将请求转换为令牌序列。这个过程通过保留词汇表中的词并过滤掉其他词来完成。例如,变量和停用词被替换为占位符。
- 令牌嵌入(Token Embedding):每个令牌由其在词汇表中的ID表示,这可能会忽略令牌的含义。因此,系统添加了一个嵌入层,将这些标记ID映射到潜在的向量空间中,使用向量之间的距离来表示它们之间的逻辑关系。
B. Encoder-Decoder Network(编码器-解码器网络)
编码器-解码器网络的核心功能是将一个序列映射到另一个序列。在ZeroWall中,输入是原始令牌序列,输出是网络学习后重建的令牌序列。
- 编码器(Encoder):编码器是一个LSTM(长短期记忆)网络,它读取令牌序列并构建一个固定维度的向量来表示原始序列。
- 解码器(Decoder):解码器是另一个LSTM网络,它使用编码器的表示来计算输出序列的概率。解码器的输出是一个概率向量,每个元素代表词汇表中某个标记的概率。解码器选择概率最高的标记作为输出。
- 重建(Reconstruction):网络试图使用相同的词汇表中的标记重建原始令牌序列,这代表了相同的信息。重建的序列与原始序列之间的差异用于后续的异常检测。
C. Anomaly Detection(异常检测)
异常检测的核心思想是,编码器-解码器网络能够更准确地重建良性令牌序列。对于零日Web攻击请求,网络输出将与输入大相径庭。为了进行异常检测,系统比较原始令牌序列和恢复令牌序列之间的相似性,并将其用作异常指标。
- 使用BLEU指标:BLEU(Bilingual Evaluation Understudy)指标用于计算两个序列之间的相似度。BLEU值范围从0到1,值越高表示源序列和目标序列之间的相似度越高。
- 恶意分数(Malicious Score):为了检测异常,系统定义了恶意分数(1 - BLEU)作为估计器。较高的恶意分数意味着网络无法重建给定序列,表明输入序列可能是恶意的。
- 阈值判断:恶意分数与特定阈值进行比较,以确定请求是良性还是恶意的。