链级测试(LinkTesting)的问题就是管理方法及管理

链接测试

大多数跟踪技术从距离受害者最近的路由器开始,然后开始检查上游数据链路,直到找到攻击流量的来源。理想情况下,这个过程可以递归执行,直到找到攻击源。该技术假定攻击在跟踪完成之前一直处于活动状态,因此难以在攻击、间歇性攻击或对跟踪的攻击调整后进行跟踪。包括以下两个链级测试:

1、输入调试

许多路由器提供输入调试功能,允许管理员过滤某些出口端口上的特定数据包并确定可以到达哪些入口点。该特性用于回溯:首先,受害者在确定受到攻击时,必须从所有数据包中描述攻击包标志。使用这些标志,管理员可以在上游出口端配置适当的输入调试。这个过滤将反映相关的输入端口,过滤过程可以继续上游,直到可以到达原始源。当然,这项工作很多都依赖于人工,一些国外的 ISP 已经联合开发了工具来在他们的网络中自动跟踪它们。

但这种方法最大的问题是管理成本。联系多个 ISP 并与他们合作需要时间。因此,这种方法需要大量的时间,几乎不可能完成。

2、受控泛滥

Burch 和 Cheswick 提出的方法。这种方法实际上是泛洪攻击,通过观察路由器的状态来判断攻击路径。首先,应该有一个上游路径图。当被攻击时,受害​​者的上层路由器可以根据路径图控制上游路由器的泛洪,因为这些数据包与攻击者同时发起的数据包共享路由器。因此,增加了路由器丢包的可能性。通过沿着路径图继续向上,您可以接近攻击源。

这个想法巧妙而实用,但有几个缺点和局限性。最大的缺点是这种方法本身就是一种DOS攻击,也会对一些信任路径进行DOS攻击。这个缺点也很难用程序来实现。此外,受控泛洪需要一个几乎覆盖整个网络的拓扑图。Burch 和 Cheswick 还指出,这种方法很难跟踪 DDOS 攻击。此方法也仅在攻击正在进行时才有效。

现在CISCO路由器的CEF(Cisco Express Forwarding)其实是一个链级的测试,也就是说如果用CEF来追踪最终的源头,那么整个链路上的路由器都必须使用CISCO路由器并且支持CEF。您必须拥有 Cisco 12000 或 7500 系列路由器。(不知道现在怎么样了,没查最新的CISCO文档),但是使用这个功能非常耗费资源。

IP 源跟踪在 CISCO 路由器(支持 ip source-track 的路由器)上按以下步骤实现:

1、当发现目标被攻击时,在整个路由器上开启对目标地址的跟踪,输入命令ip source-track。

2、每个线路卡都会为要跟踪的目标地址创建一个特定的 CEF 队列。对于使用特定 ASIC 进行数据包转换的线卡或端口适配器,CEF 队列用于将数据包放入线卡或端口适配器的 CPU。

3、每个线卡CPU收集通信信息用于跟踪目的

4、生成的数据定期导出到路由器。要显示这些流信息的摘要,请输入命令:show ip source-track summary。要显示每个输入接口的更详细信息,请输入命令 show ip source-track

5、跟踪的 IP 地址的统计细分。上游路由器可以使用它来继续分析。要在当前路由器上禁用 IP 源跟踪器,请输入命令:no ip source-track。然后在上游路由器上再次开启此功能。

6、重复步骤 1 到 5,直到找到攻击源。

这几乎可以回答securitytest提到的内容。

日志记录

该方法在主路由器上记录数据包,然后通过数据采集技术确定这些数据包的遍历路径。虽然这种方法可以用来跟踪攻击后的数据,但它也有很大的缺点,例如可能需要大量资源(或采样),以及处理合并大量数据的问题。

ICMP 跟踪

这种方法主要依靠路由器自身产生的ICMP跟踪报文。每个路由器具有低概率(例如:1/200000))数据包可以将内容复制到ICMP消息数据包中并将路由器信息包括到附近的源地址。当洪水攻击开始时,受害者可以使用这些 ICMP 消息来重构攻击者的路径。与上述相比,这种方法有很多优点,但也有一些缺点。例如:ICMP 可能会从普通流量中过滤出来,并且 ICMP 跟踪消息还与输入调试功能(将数据包与输入端口和/或数据包要到达的 MAC 地址相关联的能力)相关联,但有些路由器可能不具备此功能。同时,这种方法必须有一种方法来处理攻击者可能发送的虚假 ICMP Traceback 消息。也就是说,我们可以将此方法与其他方法结合使用,以使跟踪机制更加高效。(IETF iTrace)

这就是 yawl 关于 IETF 工作组研究的说法,当时我给了 Bellovin 一些意见,但没有得到答复。例如:

1、虽然发送了1/20000个随机trace包,但是在伪造TRACEBACK包的情况下,路由器的效率会受到一定的影响。

2、跟踪包裹认证并不能解决伪造问题。因为要判断是否是假包,必须经过认证,增加了工作量。

3、即使使用NULL认证,仍然可以达到目的(在认证的情况下)。而且不会有太大影响。

4、itrace最初的目的是为了处理DOS的欺骗源问题land攻击源端口目的端口,但现在的设计似乎让我们更关心路径而不是源。对于我们解决 DOS 问题,路径是否比源更有用?

等等,我认为 iTrace 将很难处理许多其他问题。

数据包标记

这个技术思路(因为现在不实用)是在现有协议的基础上进行修改,修改的很小。与iTrace的想法不同,我个人认为比iTrace更好。这种跟踪技术有很多细节,产生了多种标记算法,但最好的是压缩边缘采样算法。

该技术的原理是修改 IP 报头并重载标识字段。即如果不使用标识字段,则将该字段定义为标记。

将 16 位标识分为:3 位偏移(允许 8 个切片)、5 位距离和 8 位边缘切片。5bit的距离可以允许31级路由,对于现在的网络来说已经足够了。

标记和重建路径的算法是:

路由器 R 的标记过程: 令 R’ = BitIntereave(R, Hash(R)) 令 k 为 R’ 中每个数据包 w 中不重叠片段的数量 x 为来自 [0. 的随机数。1) 如果 xlet o 是来自 [0..k-1] 的随机整数,则 f 是 R’ 在偏移量处的片段 o 将 f 写入 w.frag 将 0 写入 w.distance 写入 o 到w.offset else if w.distance=0 then let f 是 R’ 在偏移量 w.offset 处的片段 将 f?w.frag 写入 w.frag 增量 w.distance

受害者 v 的路径重建过程:

令 FragTbl 为元组表 (frag, offset, distance) 令 G 为根为 v 的树 令 G 中的边为元组 (start, end, distance) 令 maxd:=0 令 last:=v 来自每个数据包 w攻击者 FragTbl.Insert(w.frag, w.offset, w.distance) if w.distance>maxd then maxd:=w.distance for d:=0 to maxd 对于距离 d 处的所有片段的有序组合构造边缘 z 如果d!=0 then z:= z?last if Hash(EvenBits(z))=OddBits(z) then insert edge(z, EvenBits(z), d) into G last:=EvenBits(z); 通过枚举 G 中的非循环路径,删除 G 中 d!=从 x 到 v 的距离的任何边 (x, y, d) 提取路径(Ri..Rj)

在实验室情况下,这种标记技术只需要受害者捕获 1000 到 2500 个数据包即可重建整个路径。应该说效果非常好,但还没有投入实际使用,主要是路由器厂商和ISP支持。

几乎所有的ip traceback技术和实验室技术已经使用过,或者已经死了,主要是这些,虽然还有其他的。

很久没有做DDOS防护了。国内也有黑洞之类的产品,我以前也知道一些国外的,比如floodguard、toplayer、radware等。受到securitytest的提示,了解了riverhead,我立马看了一下他们的白皮书。

因为bigfoot提出的主要话题是ip traceback,所以securitytest也是一个防御问题。对于DDOS,ip traceback和Mitigation是不一样的,ip traceback主要是为了跟踪,因为DDOS主要是spoof,很难识别真正的攻击源land攻击源端口目的端口,如果很容易找到真正的攻击源,不仅要对付使用 DDOS 处理其他攻击,例如法律问题也非常有帮助。缓解是从受害者的角度出发的,因为受害者一般不具备查全网查源的能力,而且即使能找到源头,也必须有合法的或者某种通讯手段来阻止源头(攻击源不是攻击源),这意味着很多非技术性的通信问题,跨ISP,交叉等,等等,往往很难对付。但从受害者的角度来看,必须有解决方案,因此需要缓解。

这正是我之前研究的范围,所以我会说很多。对于Mitigation来说,其实技术的根本就是能够从众多流量中分离出攻击包和合法包,丢弃攻击包,让合法包通过。这是根本,所以实际的技术是如何尽可能的识别出攻击包,尽可能少的影响正常的包。这又得分析DDOS(甚至DOS)的方式和原理。基本上有以下几种形式:

1、由系统漏洞创建的 DOS。这个特性是固定的,检测和防御也很容易

2、协议攻击(一些与系统处理有关,一些与协议有关)。比如SYN FLOOD、fragments等。特征也比较容易识别、检测和防御。例如,SYN COOKIE 和 SYN CACHE,可以丢弃片段。如陆攻、蓝精灵、泪珠等。

3、带宽泛滥。垃圾流量阻塞带宽,特征难以识别,防御不易

4、基本上合法的洪水。比 3 更难,比如分布式 Slashdot。

实际的 DDOS 通常以多种方式组合。例如,SYFLOOD 可能同时是带宽 FLOOD。

影响防御的主要因素是看能否获得特征。例如,1、2 相对容易解决。一些基本不受影响的FLOOD很容易被丢弃,比如ICMP FLOOD。但是,如果攻击包分发工具能够更好地将数据包伪装成合法包,则很难识别。

一般的缓解方法是:

1、过滤器。对于明显的特征,比如一些蠕虫等,可以在路由器上完成。当然,过滤是最终的解决方案。只要识别出攻击包,就应该过滤掉这些包。

2、随机丢包。follower算法是相关的,一个好的算法可以让合法数据包的影响更小

3、SYN COOKIE、SYN CACHE等特殊防御方法。对一些固定的攻击方法进行防御和过滤。如ICMP FLOOD、UDP FLOOD。SYN COOKIE等都是为了避免spoof问题,至少TCP有3次握手,所以判断SPOOF就好

4、被动被动忽略。可以说,这也是一种确认是否被骗的方式。一般正常连接失败会再试,但攻击者一般不会尝试。所以可以暂时放弃第一个连接请求,接受第二个或第三个连接请求。

5、 主动发送RST。处理SYN FLOOD,比如一些IDS。当然,它实际上不起作用。

6、统计分析和指纹。这本来是研究的主要内容,但最后落到了算法的角,因为主要是算法问题。从统计分析的角度获取指纹,然后根据指纹丢弃攻击包,也是一种异常检测技术。说起来很简单,但是不容易影响合法包,也不会变成随机丢包。(其实当时考虑太复杂,需要详细分析攻击包和合法包。其实没必要。只要过滤掉足够多的攻击包,就算攻击包被过滤掉了。允许通过,只要不引起DOS就可以了。)这也很多。

现在回到securitytest提到的河头。关于河头的技术,我只从他们的白皮书中知道,但根据我的分析技术方法,并没有超出上述范围。

Riverhead的核心解决方案是检测Detection,转移Diversion和Remittance Mitigation,即检测到攻击,然后将流量转移到他们的产品Guard,然后通过Guard进行Mitigation。

其实施步骤为:

因为没有图片,所以我们先定义一下,说清楚:

#靠近DDoS源的路由器是远程路由器

#靠近受害者的路由器是近端路由器

#Riverhead 的 Guard 设备连接到作为连接路由器安装的路由器

防御步骤

1、首先检测到DDOS的发生,得知受害者

2、Guard 向远程路由器发送 BGP 通告(前缀设置在受害者的 BGP 通告中,并获得比原始 BGP 通告更高的优先级),表示从远程路由器到受害者有一条新路由,并且到Guard的环回接口的路由,到受害者的所有流量都通过辅助路由器转移到Guard

3、Guard 检查流量并清除攻击流量,然后将安全流量转发到附属路由器,然后返回给受害者

核心是Guard,技术是白皮书中描述的MVP架构(Multi-Verification Process),即以下五个层次

过滤:此模块包含静态和动态 DDOS 过滤。静态过滤,拦截非必要的流量,可以是用户自定义的,也可以由河头默认提供。动态过滤基于对流量的行为分析和详细分析,通过添加对可疑流量的确认或拦截已确认的恶意流量进行实时更新

Anti-Spoofing:该模块验证进入系统的数据包是否被欺骗。Guard 使用独特的专利来源验证机制来避免欺骗。它还使用一些机制来确认合法流量并消除被丢弃的合法数据包

异常识别:该模块监控所有未被过滤和反欺骗模块丢弃的流量,将流量与通常记录的基线行为进行比较,并发现异常。基本原理是通过模式匹配来区分黑帽通信和合法通信。该原则用于识别攻击的来源和类型,并为拦截此类流量提供指导。

异常检测包括:攻击流量速率、报文大小和端口分布、报文到达时间分布、并发流量数量、高层协议特征、出站和入站速率

流量分类:源IP源端口目的端口协议类型连接量(每日、每周)

协议分析:该模块处理异常检测中发现的可疑应用程序攻击,例如http攻击。协议分析还检测到一些协议不当行为。

Rate Limiting:主要处理资源消耗过多的源流量。

所以,其实主要的内容就是异常检测中的统计分析,但是从上面看好像没有太多特别的地方,但是一定要有好的算法。比如FILTER其实是用来处理一些大家熟悉的,特征明显的攻击,比如anti-spoofing,也就是处理syn flood。也许它也是一个 syn cookie 模块,但可能会有更多的专利技术。协议分析其实应该是比较弱的,但是对于一些常见协议中的具体攻击,一些协议错误行为的检测和识别只是协议验证,非常简单。限流是一种随机丢包,最无奈的方法,所以也是最后一级。

因为这个产品主要是为了缓解,而不是ip traceback。但可以确定还是有重要的问题,比如:

1、如何处理真正的带宽泛滥。但是如果路由器是千兆的,那么攻击流量已经占到了90%,只有10%的流量用于合法使用。路由器已经开始使用 Guard 随机丢包。(没办法,这是所有防御技术的瓶颈)

2、真正的攻击。真正的攻击很难或不可能识别。比如和范式基本一样,如果接近统计,就很难区分。还有一些攻击,例如反射式电子邮件攻击,它们是完全合法的,但很难分类。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论