基于深度学习的放大攻击归因技术*
2019-12-11刘东明李林森邹福泰
刘东明,李林森,邹福泰,吴 越
(上海交通大学 网络空间安全学院,上海 200240)
0 引 言
分布式拒绝服务(Distributed Denial of Service,DDoS)攻击是一种耗尽被攻击对象资源的网络攻击方式。攻击者通过大流量攻击、有针对性的漏洞攻击等,以耗尽目标主机资源的方式达到拒绝服务的目的。而利用多个服务器以及反射技术进行DDoS攻击的攻击力度远大于传统的DDoS攻击。分布式反射拒绝服务(Distributed Reflection Denial of Service,DRDoS)攻击已成为当今最流行也最危险的分布式拒绝服务攻击之一[1]。这种攻击不需要攻击者为被攻击对象安装木马,只需花费攻击者较少的资源,通过发送带有被攻击对象IP地址的数据包到开放的Internet服务(如DNS或NTP服务器)发动攻击。过去的事件已经证明,DRDoS攻击可以产生数百吉比特每秒的攻击流量[2]。
由于DRDoS的IP欺骗特性,真正的攻击源一直隐藏在背后。因此,受害者并不知道与谁联系以阻断攻击,也无法对攻击发起者提出法律诉讼。更糟糕的是,从受害者的角度来看,作为反射放大的第三方服务器更像是攻击的来源,从而得到错误的归因结果。
长期以来,IP追溯和数据包标记方案一直是检测IP欺骗流量来源的主要方法[3-5],但这些设计方案需要分散在世界各地的互联网服务运营商之间进行协调,所以没有得到大规模部署,以致不能在全球范围内判断真正的IP归属。Krupp等人提出了一种将反射放大攻击链接到引导服务的理论[6]。本文在该理论之上,提出了一种使用MLPNN进行归因的技术方案,并使用Santanna等人在2016年收集的反射放大引导服务攻击流量进行验证[7]。结果显示,包括DNS和CharGen协议在内的9种引导服务的归因准确率达到了95%以上。
文章第1部分定义了本文考虑的DRDoS攻击的威胁模型和道德考虑,第2部分介绍了实验使用的数据集与归因技术使用的深度学习网络,第3部分给出了实验结果并进行分析,第4部分讨论了攻击者可能在哪些方面逃避此归因机制,以及其可行性和归因方案的局限性,第5部分进行总结。
1 介 绍
本节将定义本文考虑的威胁模型与道德考虑。
1.1 威胁模型
本文考虑的重点是DRDoS攻击。DRDoS攻击使用大量流量充斥目标网络来使系统或网络无法使用,最终导致网络瘫痪。攻击者可以利用各种网络协议中的放大矢量,经由Internet服务器(例如DNS或NTP)向目标发送许多数据包,达到反射放大的效果。目前,至少有14个协议存在这样的设计缺陷,导致大量服务器可以被用作放大器。鉴于UDP的无连接性质,攻击者可以简单修改请求中的源IP地址将服务器响应重定向到受害者。根据已有调查[8],反射放大攻击的放大倍数为5~4 500倍,即某个以兆比特每秒速率发送请求的攻击可能导致吉比特每秒规模的攻击流量。
最近提出的一种特殊类型的攻击者——引导服务,通常在“压力测试”的掩盖下提供DDoS攻击服务,客户可以使用少量费用订阅各种类型的攻击,然后引导服务将使用其基础设施(放大器)启动攻击。因此,威胁模型考虑了4个方面——委托攻击的客户、进行实际攻击的引导服务(攻击者)、被用来放大网络流量的服务器(反射放大器)和攻击的目标(受害者),如图1所示。
图1 DRDoS攻击威胁模型
本文的目的是从受害者或放大器的角度观察,将攻击归因于引导服务。这是一项具有挑战性的任务,因为从受害者的角度来看,攻击似乎仅仅来源于放大器。同样,从放大器的角度来看,由于引导服务使用了修改的源IP地址,请求似乎是受害者的合法请求。虽然追溯DDoS攻击的最终目标是识别委托攻击的客户,但实际上只有引导者、放大器和受害者直接参与整个攻击流程。由于引导者与客户有业务关系,因此查明攻击背后的引导服务是实现最终目标的重要一步。
另外,攻击者可能利用僵尸网络发动反射放大攻击,但之前的工作证明绝大多数反射放大攻击来自单一来源[7],这与本文的研究结果一致。下文将假设引导者仅使用单个系统来发动攻击。
1.2 道德考虑
实验使用的数据集是Santanna等人在2016年收集的,目的是为了其他研究人员能够深入了解引导服务的工作原理,使用这些攻击流量来验证DRDoS归因方法,并不用作其他有害服务。
在互联网上很容易找到各种引导服务,任何用户都可以通过google检索轻松找到引导服务的综合列表,并通过订阅获取攻击服务。但是,出于道德原因,Santanna等人决定匿名化获取的引导服务名称,故在本文中也将匿名化所使用的全部引导服务。
2 引导服务归因技术
2.1 数据集
实验使用了Santanna等人在2016年收集的引导服务数据集。在总共订阅的14个引导服务中,有9个引导者按要求执行,共计超过250 GB的流量。对该数据集进行攻击特征分析,其中7种是基于DNS的攻击,2种是涉及CharGen协议的攻击。这一结果显示,DNS和CharGen是两种最常见的基于UDP的攻击类型。
这两种类型的攻击(DNS和CharGen)都属于反射放大攻击。这些攻击基于以下原则:攻击者向服务器发送较小的请求,使用攻击目标的欺骗性IP地址(反射)作为请求的源地址,而得到的响应远大于请求数据包(放大)。例如,在基于DNS的情况下,攻击者发送相对较小的DNS查询(40~60 B),将得到4 kB或更大的响应。在CharGen的情况下,RFC 864定义了对服务器的请求应该以大小为512 B的随机回复来响应。
表1显示数据集中每种攻击的平均速率、执行攻击时涉及的总放大器数量、每个放大器的平均数据包数量以及攻击涉及的协议类型。
表1 引导服务细节描述
从表1可以看到,虽然B5拥有最多的放大器数量,但是攻击速率是所有引导服务中最低的(6.11 Mb/s),平均每个放大器只发送了261.8个数据包,大小分布在20~900 B,表明攻击中使用的放大器数量不一定是攻击强度的对应指标。实际上,攻击的大小是使用的放大器数量,每个放大器发送的数据包数量和放大系数的函数。例如,尽管B3使用的放大器比B7使用的数量少100多倍,但是产生的攻击流量却几乎相同,这可能是因为发送的数据包数量的不同造成的。
2.2 特征提取
pcap文件是一种常用的数据存储格式,里面的数据按照特定格式存储,用wireshark等抓包工具可以正常打开或生成这种文件。本文中使用的数据集攻击流量都存储为pcap文件格式。首先按照五元组(源IP地址,源端口,目的IP地址,目的端口,协议)将pcap文件转换成flow文件并获取特征,主要包括数据包长度、DNS域名、放大器IP数量、攻击端口熵值以及数据包存活时间(Time to Live,TTL)等。
2.3 多层感知器神经网络
多层感知器神经网络(Multilayer Perceptron Neural Network,MLPNN)是最常用的前馈神经网络,操作快速,易于实施,且训练集要求较小。MLPNN由输入层、隐层和输出层3个连续层组成,如图2所示。隐层处理输入信息并将其传输到输出层。隐层中神经元数量不足或者过多,可能会导致不良泛化和过度拟合的问题。但是,现在并没有用于确定隐层中神经元数量的分析方法,因此只能通过反复试验得到。本文根据数据集的特征,使用的MLPNN模型包含4个隐层,每层神经元个数递减,分别为1 280、960、480和320。
图2 实验使用的MLPNN模型结构
隐层中的每个神经元j的权重wji乘以它们的输入信号并加上一个偏移量求和,输出如下:
其中f是对输入加权求和的激活函数,主要作用是提供网络的非线性建模能力。激活函数可以是简单的阈值函数,如sigmoid函数、relu函数或者双曲正切函数,本文使用relu函数作为激活函数。
3 实验结果
实验使用Santanna等人[7]提供的pcap文件,根据流量的五元组将其转换为flow文件,并提取各类统计特征用作MLPNN模型的输入。用MLPNN模型对实验样本进行实验,为了防止模型过拟合,使用重复随机子采样交叉验证。该验证方法随机选取数据集合进行训练、测试和验证。利用训练数据对模型进行训练,利用验证数据计算模型的预测精度。当预测精度开始下降时,停止训练,达到最佳的模型方案。
共进行3类实验,首先分别对DNS协议的7种引导服务和CharGen协议的2种引导服务进行多次训练,最后在同样的网络参数下得到较好的分类结果,如图3和图4所示。
图3 DNS协议分类结果混淆矩阵
图4 CharGen协议分类结果混淆矩阵
可以看出,针对CharGen协议,由于引导服务种类较少,分类准确率相对较高,可以达到96%以上。而对于DNS协议的分类,booter1~booter4以及booter6都能得到几乎完美的分类结果,而booter5和booter7的分类准确率却较低。对这两种booter service进行分类,了解到这两种攻击流量来自相关联的两个引导服务,所以在提取流量特征后,这两种攻击有一定的相似性。
最后,在同样的网络参数条件下,对所有的9种引导服务进行实验。9种引导服务的多分类归因结果的混淆矩阵如图5所示,总分类准确率达到95%以上,也说明本方案具有可扩展性,即使新的攻击流量协议不相同,也能在此网络模型中得到较高的分类准确率。
图5 混合协议分类结果混淆矩阵
4 讨 论
描述一些不法分子试图逃避此归因机制可能使用的方法,并讨论归因方法的局限性。
4.1 逃避机制
提出的归因方法已经被证明可以良好运行,但是依然会在一定程度被不法分子逃避。攻击者可以通过遵循一定的方法归因于其他引导服务,即学习其他引导者的攻击配置并复制其行为。例如,攻击者可以使用与其他引导服务相同的一组放大器进行攻击。然而,本文对引导服务的归因方法并不只考虑攻击者所使用的放大器集合,其他维度的攻击配置如攻击数据包生存时间等很难被复制,因为它们对引导服务的位置进行了编码。虽然这种模仿攻击有可能存在,但考虑到复杂性和攻击开销,并不认为大部分攻击者会在实践中试图触发这种虚假归属的攻击方式。
另外,由于攻击者可以完全控制它们产生的流量,因此他们可以在攻击流量中增加噪声。例如,攻击者随机化攻击中使用的放大器,或者在可行的范围内发送异于正常攻击的流量。虽然目前还没有收集到这种逃避方法的数据流量,但有可能可以增加额外的功能来丰富分类标准,如IP数据包ID、DNS事务ID等。此外,选择性响应扫描请求的蜜罐也可以在这种随机化攻击过程中正确捕获引导服务攻击流量,即使攻击者随机化了一组放大器,任何放大器集合仍然是扫描器映射的子集。最后,随机化攻击流量也会给攻击者带来性能开销,因为他们无法重复使用预先生成的数据包。
4.2 局限性
归因源覆盖范围。本文方案在真实环境中将受到一定的限制,即归因源的覆盖范围。目前,攻击归因范围仅限于已知的反射放大攻击,实验主要针对的是目前的两个主要协议DNS和CharGen。但是,该方案具有良好的可扩展性,将来收集到的新的放大攻击数据集可以继续添加到模型中,并不断扩大归因源覆盖范围。
多源归因。之前假设了攻击都是由单一来源即引导者发起的。如果反射放大攻击是通过僵尸网络发起的,归因功能将变得不稳定。本文所使用的数据集中只有不到5%的攻击出现了超过2个的TTL值,即绝大部分攻击都是来自于单一源,在实验环境中也删除了多源反射放大攻击的实验数据。
其他攻击类型。其他类型的DDoS攻击如TCP泛洪或基于应用层的DDoS攻击,并不使用反射放大器,因此无法使用本文提出的方案进行归因。但是,反射放大攻击是最常见的DDoS攻击之一,可产生的攻击流量大且所需要的攻击资源小,几乎所有的引导服务都大力宣传反射放大攻击,而其他攻击类型并不受欢迎也证明了这一事实。
5 结 语
krupp等人[6]首次提出了将反射放大DDoS攻击归因于引导服务,并针对自攻击流量提出了两种简易技术进行有效性验证。本文的工作在krupp等人的基础上做了一定扩展,使用Santanna等人[7]提供的更大的数据集提取800多项特征,对之前的工作进行进一步完善,并首次使用深度神经网络对实验数据进行训练、测试及验证。结果显示,本文的归因技术准确率达到95%以上。从受害者的角度提取网络流量与特征,并对引导服务进行归因。运用此技术,受害者可以了解他们遭受的攻击的真正来源,甚至可以比较两次攻击以确定它们是否是由同一引导程序发起的。