Tor隐藏服务DoS攻击方法研究

2022-08-23 06:49杨欢乐刘志天
网络安全与数据管理 2022年7期
关键词:敌手中继客户端

杨欢乐,刘志天

(北京交通大学 计算机与信息技术学院,北京 100044)

0 引言

随着匿名通信的发展与普及,Tor逐渐成为保护用户隐私的主流通信工具。它由8 000多个洋葱路由器组成,每天为数百万用户提供服务,能够隐藏用户真实地址、避免网络监控及流量分析。由于Tor网络具有节点发现难、服务定位难、用户监控难、通信关系确认难等特点,其在为用户提供隐私保护的同时,也被大量恶意隐藏服务用于掩盖自身的非法网络行为。

随着Tor网络的广泛应用,对Tor的攻击研究受到了越来越多的关注。Tor隐藏服务涉及多种网络节点资源和链路,面临较大的安全威胁。目前已有的研究主要是对Tor隐藏服务地址的溯源攻击,还没有专门针对Tor隐藏服务的DoS攻击的研究。本文通过利用目前Tor隐藏服务协议的特点,提出对Tor中的隐藏服务进行DoS攻击的方法。由于Tor隐藏服务在服务发布、链路建立以及数据传输不同阶段需要隐藏服务目录节点、引入节点、隐藏服务守卫节点以及隐藏服务器等隐藏服务相关的网络和终端节点,因此对这些网络节点实施DoS攻击就能降低隐藏服务本身的可用性。为了对这些节点实施DoS攻击,需要确定这些网络节点地址。本文首先介绍了确定这些节点地址的方法,然后采用文献[1]的攻击技术,对上述节点分别实施基于带宽和基于内存的DoS攻击,并进行了实验验证和理论分析。其中带宽攻击是利用在Tor中允许用户自定义构建最多为8跳路径的协议漏洞,最多可以将守卫节点3次包含在同一电路中,对于客户端通过这个路径进行大量的数据传输,可以放大对于相关网络节点的攻击效果,降低攻击者的带宽成本。对隐藏服务器节点本身的带宽攻击主要采用HTTP POST方法上传大量数据的方式进行。而内存级别的DoS攻击是利用Tor的应用程序级拥塞和流控制机制,使Tor隐藏服务相关网络节点缓存大量的数据。仿真实验和分析表明,Tor隐藏服务面临较大的DoS攻击威胁。

1 相关工作

目前国内外对于DoS攻击的研究主要集中在针对明网中DoS攻击的检测与过滤,明网中的DoS攻击手段主要是围绕五层网络架构进行的,如网络传输层的SYN洪泛攻击[2]和UDP洪泛攻击[3],是利用TCP/UDP协议对目标主机的连接资源进行消耗,同时还有反射型DoS攻击[4],利用伪造IP来对攻击进行反射和放大。应用层的DoS攻击如CC攻击[5],通过僵尸网络模拟正常用户访问网页来消耗服务器的内存。这些攻击手段是被大众所公知的。同时,还有针对不同方式DoS攻击的检测与过滤方案。如多阶段异常检测框架[6]、基于BP神经网络的DDoS攻击检测模型[7]、多信息融合的检测模型[8]和布隆过滤器机制[9]。然而,Tor暗网与明网在网络架构与通信协议方面是有所不同的,明网中的攻击和检测手段在Tor中并不完全适用。

由于Tor通信协议的特殊性,目前对于Tor的研究方向主要集中在去匿名化和识别Tor用户的通信内容等方面。对于Tor暗网的DoS攻击的研究目前相对较少。目前针对Tor的DoS攻击有三种:去匿名DoS攻击、降低特定节点的服务质量、降低Tor网络整体服务质量。在去匿名DoS攻击方面,Pappas等人[10]提出了一种针对Tor中继节点的非对称包自旋DoS攻击。攻击者首先在Tor网络中植入恶意中继节点,然后利用恶意中继创建一个循环Tor电路,电路的起点和终点都在恶意中继处,从而在恶意中继处构成循环。他们利用此攻击的目的是去匿名化,没有考虑对其他Tor组件的破坏性。Borisov等人[11]对DoS攻击进行了应用,攻击者可以在Tor网络中植入一些受控节点,并选择性地对一些诚实Tor中继进行DoS攻击,从而增加攻击者的中继将被选作守卫节点的可能性,来降低大部分Tor电路的匿名性。自此,Tor部署了路径偏差检测系统来减轻DoS攻击对Tor匿名性的影响。在降低特定节点的服务质量方面,Evans等人[12]利用了旧版本Tor中电路长度没有上限的缺陷,利用高带宽中继节点构建任意长度的循环电路来进行带宽放大DoS攻击。这种创建循环电路的漏洞已被官方修复,Tor协议在电路中限制了最多只能有8个中继节点,本文中采用的带宽级别的DoS攻击就是基于此修改来展开的。Geddes等人[13]提出了利用Tor传输协议漏洞的套接字攻击。通过实验表明,攻击者可以通过耗尽套接字文件描述符来破坏任意中继,并阻止合法连接电路。但是,该攻击已不适用于新版本的Tor网络。在降低Tor网络整体服务质量方面,Barbera等人[14]提出了针对Tor中继节点的非对称DoS攻击,利用需要公钥解密的CREATE信元对目标中继进行洪泛攻击,该研究表明通过策略性地对重要的中继节点进行攻击,会引起未受到DoS攻击的其余中继节点负载增加,从而降低整个Tor网络的速度。2019年Jansen等人[1]在Shadow仿真环境[15]下通过使用基于带宽的DoS攻击分别对网桥节点、TorFlow负载均衡器及普通的中继节点进行了攻击并构建了成本模型,从攻击成本的角度探究了针对不同的Tor网络组件实施带宽DoS攻击的效果。但针对于其他Tor网络组件,论文并未进行相关实验论证。

从目前国内外研究现状来看,目前还没有对隐藏服务的守卫节点及其他网络组件进行DoS攻击的相关探索。本文对隐藏服务的守卫节点进行攻击研究,采用文献[1]中提出的带宽及内存DoS攻击方法来放大攻击效果,并从攻击者成本、守卫节点性能以及隐藏服务的性能变化三方面来对攻击效果展开分析,同时也对直接向隐藏服务发起POST请求的攻击效果进行了探究,最后对Tor中的引入节点和隐藏目录服务器在DoS攻击下对Tor网络产生的影响进行了理论分析。

2 基本原理介绍

隐藏服务通过6跳电路接受来自Tor客户端的访问(访问明网服务只需要3跳节点)。如图1所示的网络拓扑图[16],客户端和隐藏服务分别构造多个3跳的电路,并从中选择出一个电路。这3跳电路分别是入口节点、中间节点和出口节点,并通过内部协议选择出一个汇合节点IPO来连接这两个独立电路。其中隐藏服务或者客户端的上一跳节点(入口节点)通常被称为守卫节点,通常每2~3个月更换一次,它对用户和隐藏服务的性能和匿名性起着至关重要的作用。Tor在传输数据时会使用电路中每个节点的共享密钥来对数据进行层层加密。接收数据的每个节点都“剥离”一层加密并传递数据。在电路中,每个节点只知道自己的上一个节点和下一个节点。每个节点依次将数据传递给下一个节点,最后一个节点将数据发送到服务端。

图1 Tor网络拓扑图

3 攻击策略

3.1 对Tor隐藏服务DoS攻击准备

根据Tor网络的通信协议,目前与Tor隐藏服务相关的资源包括:Tor隐藏服务器、守卫节点、隐藏目录服务器、引入节点,对其中任意一种资源的攻击都会导致隐藏服务质量的下降。

隐藏目录服务器与引入节点这两种网络组件对于隐藏服务至关重要。隐藏服务器在加入Tor网络时需要按照一定规则选择3个Tor的中继节点作为自身的引入节点,并同时分别与引入节点建立3跳链路,接着隐藏服务器将隐藏服务描述符上传至隐藏目录服务器,其中隐藏服务描述符包含RSA密钥和引入节点的信息。当客户端访问隐藏服务时,首先需要建立起到达引入节点的连接来与隐藏服务协商出汇合节点,这样客户端才能通过汇合节点与隐藏服务进一步建立起连接。

根据Tor通信协议的描述[17],隐藏服务根据自身的隐藏服务描述符ID和隐藏目录服务器通过指纹来确定隐藏目录服务器是否存储其描述符,它利用自身公钥的SHA-1摘要标识作为自身的指纹将对应的隐藏目录服务器排成一个封闭的哈希环,并选择三个最接近的正向中继作为隐藏目录服务器。也就是说,如果隐藏服务的描述符ID位于某两个隐藏目录服务器HSDirk-1和HSDirk之间,则选择HSDirk,HSDirk+1和HSDirk+2来存储描述符。敌手能够通过此种规则计算得出隐藏目录服务器的位置。

对于引入节点身份信息的获取,敌手可以通过访问隐藏服务目录服务器,利用自身的计算资源解析后获得查询结果,得到其中的引入节点。由于隐藏服务器是通过公开列出的一组长期存活的引入节点来访问的,如果一个节点被选择作为隐藏服务的引入节点,敌手将很容易地从隐藏目录服务器通过检索引入节点的可用性来发现节点。

在已经获取得到相关身份信息的情况下,可以对Tor中的引入节点和隐藏目录服务器进行DoS攻击。

用户与隐藏服务建立连接、下载和上传文件的过程中,会一直使用到隐藏服务的守卫节点。针对Tor隐藏服务守卫节点的攻击分为两种情况,一种是敌手不知道Tor隐藏服务守卫节点身份信息的情况直接攻击,另一种是已经通过其他手段获取得到Tor隐藏服务守卫节点身份信息的情况。

针对敌手不知道Tor隐藏服务守卫节点情况,可以对隐藏服务本身发起DoS攻击的同时消耗其守卫节点的带宽,因此这也是对隐藏服务守卫节点实施了DoS攻击。显然,当守卫节点的可用带宽小于隐藏服务的可用带宽,那么守卫节点将成为性能瓶颈。

敌手可以通过多种方法获取隐藏服务的守卫节点,其中一种方法就是文献[18]提出的侧信道攻击方法。该方法中敌手可以通过受控客户端持续地向隐藏服务发送数据包,来使原有通信链路上守卫节点的吞吐量产生变化。在一段时间以后,通过解析历史共识文档来获取到Tor中所有节点的带宽信息并经过筛选来获取到隐藏服务的守卫节点。

对隐藏服务器本身的攻击也可以分为两种情况。一种是不知道隐藏服务的IP地址时,就只能通过隐藏服务onion地址发起攻击;另一种是通过隐藏服务地址溯源获取隐藏服务IP地址,从而可以采用明网的攻击方法对其DoS攻击。

3.2 对Tor隐藏服务目标节点的DoS攻击实施

本文在敌手已经获取到Tor隐藏服务各类网络节点的地址信息情况下对它们发起DoS攻击。攻击策略与文献[1]中采用的攻击策略类似。对于带宽级别的DoS攻击,通过自定义构建8跳长路径的方式来对目标守卫节点发起DoS攻击,在这种攻击策略下守卫节点最多可出现在同一电路中3次,对于客户端通过电路下载文件传输的数据流,将多次经过守卫节点,这能够放大带宽攻击效果。对于内存级别的DoS攻击,首先创建一个TCP连接,使用目标守卫节点作为入口节点创建电路,从某个公共服务器发送一个大数据块请求,然后指示客户端停止从电路的TCP连接到入口节点的读取,接着向电路的另一侧发送SENDME信元,来保证出口节点不断地从数据源读取数据,这样守卫节点会持续缓冲数据,不断地占用内存。

就隐藏服务本身而言,相较于开放的明网在链路建立以及访问资源速度方面性能并不出色,直接向隐藏服务发送大量POST请求会进一步降低隐藏服务性能,同样也会影响到整个系统的安全性,用户很可能会不愿等待更长的加载时间而更换链路或弃用Tor浏览器。因此,本文对于直接向隐藏服务发起POST请求的攻击效果进行了探究,发送POST请求的攻击方法相比于其他类型的DoS攻击,攻击思路和过程并不复杂。最重要的一点,这种发送POST请求的攻击方法在Tor暗网中通常不会被被攻击者发现,一方面原因是Tor网络是动态变化的,另一方面向目标隐藏服务发送POST请求,往往会被当作用户的正常行为。在敌手构建的攻击电路中会不断地消耗目标隐藏服务的资源,这样会导致被选中的目标隐藏服务器性能下降,最终影响到其他正常用户对目标服务器的正常访问。

4 实验与分析

4.1 实验环境及实验数据

本实验是在Tor官方公认的开源网络仿真软件Shadow上进行的。实验硬件平台为:处理器为1.4 GHz四核Intel Core i5,内存为16 GB,显卡为Intel Iris Plus Graphics645 1 536 MB,操作系统为Ubuntu-20.04.3,使用流量生成器Tgen以及可在Shadow中运行的真实私有Tor网络模型工具Tornettools来进行仿真实验[15]。使用的数据是Tor官网2020年11月的共识文件,服务器描述符、带宽信息以及中继信息作为构建本地仿真Tor网络的数据。本地生成的仿真Tor网络是1%规模的真实Tor网络。

4.2 实验结果及分析

如图2所示,本文将长路径攻击策略与普通的带宽攻击进行了对比,敌手控制的每个客户端都配置为2 MB/s的吞吐量,每种攻击策略都通过构建20个电路来进行攻击。目标守卫节点在无攻击的情况下平均吞吐量大约为1.05 MB/s,普通的带宽攻击下目标守卫节点的平均吞吐量达到了1.65 MB/s,而通过构建自定义长路径攻击策略在中位数处能令目标守卫节点的吞吐量增至2.24 MB/s。图3显示了在这样的攻击强度下,普通客户端在两种攻击策略下通过电路下载1 MB文件的所需时间,在无攻击的情况下,下载时间中位数为9 s左右,而在普通的带宽攻击下,下载时间中位数达到了19 s,在放大长路径攻击策略下,下载时间中位数达到了30 s。综合图2和图3结果可以得出,利用Tor构建自定义的8跳路径的带宽攻击方式能够明显地放大对目标守卫节点的带宽消耗。在停止读内存级别的攻击下,客户端下载时间为21 s,在攻击填满目标守卫节点内存前,在消耗带宽资源方面与普通带宽DoS攻击的效果并无区别。因此,本文对内存级别的停止读攻击分别构造10个、20个、40个电路进行了实验,如图4所示,随着构建电路数量的增加,内存级别的DoS攻击对目标守卫节点的内存消耗速度也逐渐变大。对比无攻击的情况,内存级别的停止读攻击能够在短时间内明显地对目标节点进行内存消耗,在目标守卫节点的内存填满以后,会导致目标节点的Tor客户端崩溃而被迫终止程序。同时如图5所示,由带宽消耗结果可以得出,每构建一个内存级别的停止读攻击连接,在中位数处消耗敌手的下行带宽和上行带宽分别为41.3 KB/s和66.8 KB/s。实验结果表明,内存级别的DoS攻击方法使敌手能够相对容易地利用自身的带宽资源去消耗目标守卫节点的内存资源并取得可观的效果。

图2 不同带宽攻击策略对守卫节点吞吐量的影响

图3 不同攻击策略下客户端下载文件时间

图4 内存攻击策略对守卫节点的影响

图5 敌手进行内存DoS攻击的带宽消耗率

本文同样探究了对隐藏服务直接发起POST攻击时下载文件错误率的变化情况。在模拟实验中,在一段时间后敌手对隐藏服务直接发起POST攻击会占用隐藏服务的连接资源,这样会导致正常客户端向隐藏服务构建通信连接时下载文件的错误率急剧增加,最后趋于稳定。结合图6可以分析得出,对隐藏服务直接发起POST攻击偏向于占用隐藏服务的连接资源,这样会导致其他用户连接隐藏服务失败率变高,但是此种攻击对隐藏服务的带宽消耗并不明显。

图6 隐藏服务在POST攻击的下载失败率

4.3 对各类Tor资源攻击的分析

基于上述针对守卫节点的攻击实验,可以对Tor隐藏服务相关的资源包括隐藏服务目录服务器和引入节点等的攻击效果进行分析。

在Tor隐藏服务器运行时,将自身的RSA公钥和引入节点信息上传至选定的6个隐藏目录服务器让用户寻址。它们利用分布式哈希表来进行组织,作为其中的节点来存储数据。每个隐藏目录服务器负责部分范围的路由,并负责存储一部分数据,从而实现整个Tor网络的寻址和存储,由于不需要中心节点服务器而采用分散控制,即使组成的局部网络中的某个节点出现故障,也不会影响全局的操作,因而具有很高的可靠性。若敌手针对隐藏目录服务器进行DoS攻击,则无法使用针对隐藏服务守卫节点的内存级别和带宽级别的攻击手段来放大攻击效果,这是由于隐藏目录服务器不参与Tor链路的构建,因此就无法采用自定义构建路径的方式来进行DoS攻击,敌手只能采用常规的DoS攻击方式来消耗其资源。其次,隐藏目录服务器为了给Tor用户提供更好的服务,通常拥有高内存和高带宽的资源,对其进行攻击也将消耗敌手更多的资源。另外,由于隐藏目录服务器通常会在关键字最接近的节点上复制备份冗余信息,敌手仅对其中少数几个节点进行攻击,用户仍然能够通过其他隐藏目录服务器来获取得到隐藏服务。因此,敌手只有对组成分布式哈希表的6个隐藏目录服务器均进行攻击才能致使用户无法寻址获取到隐藏服务。因此,敌手想要通过攻击隐藏目录服务器来影响目标隐藏服务,将会令攻击代价达到最大化。

由于当客户端访问隐藏服务时,需要通过3个引入节点与隐藏服务协商出汇合节点来与隐藏服务进一步建立连接,敌手也可以通过对引入节点进行攻击来影响隐藏服务,其中引入节点是由隐藏服务从普通中继节点中选择得到的。但由于引入节点不需传输大量数据,通常相较于Tor其他中继节点拥有更多的空闲资源,敌手对其进行攻击需要消耗比其他中继节点更多的资源。另外,由于一个隐藏服务同时拥有3个引入节点,敌手需要对所有的引入节点进行攻击才能令客户端无法与隐藏服务通过汇合节点建立起连接。结合以上两方面,敌手若通过对引入节点攻击的方式来间接影响隐藏服务,同样将消耗自身的攻击成本,但并不会高于隐藏目录服务器。

5 防御措施建议

对于内存级别的攻击,可以给用户一个自定义的最大内存阈值,当Tor进程占用的内存达到了阈值时,一方面可以从缓存中释放内存,对于每个中继节点的描述符缓存、DNS缓存和统计缓存,检查各个部分是否超过阈值,从超过的部分进行缓存释放;另一方面可以从缓冲区中释放,释放数据后可以查看内存是否仍高于最大阈值,如果仍高于,可以尝试关闭电路和连接。在释放连接时,可以对连接和电路的连接时间进行排序,优先关闭最旧的连接和电路,释放缓存时也同时优先淘汰掉最久的缓存数据。对于带宽级别的攻击,可以通过修改协议来对缺陷进行修复。Tor协议为用户提供灵活构造电路的同时,可以增加一种用以监管的分布式共识服务器,这种服务器监控所有自定义构建链路的所有身份信息与带宽实时变化信息,同时设置电路对节点消耗带宽的上限值。如果一个电路中对于某个节点的带宽消耗高于上限值,则应该对该电路进行关闭或者采用限流的相关措施。另外,为隐藏服务设置多个守卫节点和多路径的策略也是一种防御DoS攻击的有效方法。

6 结论

本文提出了针对隐藏服务进行DoS攻击的策略。针对Tor隐藏服务的发布、链路建立以及数据传输不同阶段对隐藏服务目录、引入节点、隐藏服务守卫节点以及隐藏服务器等隐藏服务相关的网络节点实施基于带宽和内存的DoS攻击,达到降低隐藏服务可用性的目的。通过仿真实验进行了攻击验证,实验结果表明,对守卫节点的DoS攻击具有较好的攻击效果,采用带宽级别的DoS攻击能够通过大量消耗守卫节点带宽资源,进而极大地影响普通用户获取隐藏服务的延迟时间。采用内存级别的DoS攻击策略,敌手每构建一个内存级别的停止读攻击连接只需要消耗少量带宽资源就能大量消耗守卫节点内存。

猜你喜欢
敌手中继客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
与“敌”共舞
车联网中基于多参数决策的中继选择方案
不带着怒气做任何事
“鹊桥号”成功发射
Link—16中继时隙自适应调整分配技术研究
媒体客户端的发展策略与推广模式
新华社推出新版客户端 打造移动互联新闻旗舰
不带着怒气作战