我很早前研究anti-DDOS,其中就有追踪一块,可以在这里介绍一些,但是实际上只有很少技术被投入使用了,大多数都还是依然是实验室的东西,已经投入实用的我单独提出来。

追踪技术有:

·链级测试 (Link Testing)

多数的追踪技术都是从最接近victim的路由器开始,然后开始检查上流数据链,直到找到攻击流量发起源。理想情况下,这种过程可以递归执行直到找到攻击源头。这种技术假设攻击一直保持活动直到完成追踪,因此很难在攻击结束后、间歇性攻击或对追踪进行攻击调整等情况进行追踪。包括下面两种链级测试:

1、Input debugging 很多路由器都提供Input debugging特性,这能让管理员在一些出口端过滤特定的数据包,而且能决定可以达到那些入口。这种特性就被用来作traceback:首先,victim在确定被攻击时,要从所有的数据包中描述出攻击包标志。通过这些标志,管理员在上流的出口端配置合适的Input debugging。这个过滤会体现出相关的input端口,这个过滤过程可以一直朝上流进行,直到能够到达最初的源头。当然这种工作很多依靠手工,一些国外的ISP联合开发的工具能够在它们的网络中进行自动的追踪。 但是这种办法最大的问题就是管理花费。联系多个ISP并同他们合作需要时间。因此这种办法需要大量的时间,而且几乎不可能完成。

2、Controlled flooding Burch和 Cheswick提出的方法。这种方法实际上就是制造flood攻击,通过观察路由器的状态来判断攻击路径。首先应该有一张上游的路径图,当受到攻击的时候,可以从victim的上级路由器开始依照路径图对上游的路由器进行控制的flood,因为这些数据包同攻击者发起的数据包同时共享了路由器,因此增加了路由器丢包的可能性。通过这种沿路径图不断向上进行,就能够接近攻击发起的源头。 这种想法很有独创性而且也很实际,但是有几个缺点和限制。最大的缺点就是这种办法本身就是一种DOS攻击,会对一些信任路径也进行DOS,这个缺点也很难用程序实施。而且,Controlled flooding要求有一个几乎覆盖整个网络的拓扑图。Burch和 Cheswick也指出,这种办法很难用于DDOS攻击的追踪。这种方法也只能对正在进行攻击的情况有效。

现在CISCO的路由器的CEF(Cisco Express Forwarding)实际上就是一种链级测试,也就是说,要用CEF追踪到最终源头的话,那么整个链路上的路由器都得使用CISCO的路由器,而且支持CEF。就得要Cisco 12000或者7500系列的路由器了。(不知道现在怎么样,没查最新的CISCO文档),但是要用这个功能是很费资源的。

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

1、当发现目的被攻击,打开整个路由器上对目的地址的追踪,输入命令 ip source-track。 2、每个Line Card为要追踪的目的地址创建特定的CEF队列。对于line card或者端口适配器用特定的ASIC作包转换,CEF队列用于将包置入line card或者port adapter的CPU。 3、每个line card CPU收集关于要追踪目的的通讯信息 4、所产生的数据定时导出到路由器。要现实这些流信息的摘要,输入命令:show ip source-track summary。要显示每个输入接口的更多的细节信息,输入命令show ip source-track 5、统计被追踪的IP地址的细目表。这可用于上游路由器继续分析。可以在当前路由器上关闭IP source tracker,输入命令:no ip source-track。然后在上游路由器上再打开这个功能。 6、重复步骤1到5,直到找到攻击源。

这差不多能够解答securitytest提的了吧。

·Logging

这种方法通过在主路由器上记录数据包,然后通过数据采集技术来决定这些数据包的穿越路径。虽然这种办法可以用于对攻击后的数据进行追踪,它也有很明显的缺点,比如可能要求大量的资源(或者取样),并且对付大量数据的综合问题。

·ICMP追踪

这种方法主要依靠路由器自身产生的ICMP跟踪消息。每个路由器都有很低的概率(比如:1/200000),数据包可能会把内容复制到一个ICMP消息包中,并且包含了到临近源地址的路由器信息。当flood攻击开始的时候,victim就可以利用这些ICMP消息来重新构造攻击者的路径。这种方式同上面介绍的比较,有很多优点,但是也有一些缺点。比如:ICMP可能被从普通流量中过滤掉,并且,ICMP追踪消息还要同input debugging特性(将数据包同数据包input端口和/或者要到达的MAC地址关联的能力)相关,但是,可能一些路由器就没有这样的功能。同时,这种办法还必须有一种办法来处理攻击者可能发送的伪造ICMP Traceback消息。也就是说,我们可以把这种方式同其他办法一起使用来让跟踪机制更有效。(IETF iTrace)

这就是yawl说的IETF的工作组研究的内容,当时我给Bellovin提出一些意见,但是没有得到答案。比如: 1、尽管是随机1/20000发送追踪包,但是,对于伪造TRACEBACK的包情况下,对路由器的效率将有一定的影响。 2、追踪包的认证并不能解决伪造问题。因为要判别是否是伪造包,那么必须去认证,加大了工作量。 3、即便使用NULL 认证,同样能够达到目的(有认证的情况下)。而且也不会有太大影响。 4、itrace的本来目的是去对付DOS的欺骗源问题,但是现在的设计仿佛让我们更关心的是路径而不是源头。难道路径比源头更对我们解决DOS问题有用么?

等等,还有一堆问题,都是我觉得iTrace将会面临的很难处理的问题。

·数据包标记

这种技术构想(因为现在没有实用)就是要在现有协议的基础上进行修改,而且修改很小,不象iTrace的想法,个人认为比iTrace更好一些。这种追踪技术有很多细节研究,形成多种标记算法,但是最好的还是经过压缩的边缘取样算法。

这种技术原理就是修改IP头中,重载其中的identification域。也就是如果没有使用到identification域的话,将这个域定义为标记。

将16bit的idnetification分成:3bit的offset(可允许8次分片),5bit的distance,以及8bit的边缘分片。5bit的distance可以允许31级路由,这对于目前的网络来说已经足够了。

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

Marking procedure at router R: let R = BitIntereave(R, Hash(R)) let k be the number of none-overlappling fragments in R for each packet w let x be a random number from [0..1) if x<p then let o be a random integer from [0..k-1] let f be the fragment of R at offset o write f into w.frag write 0 into w.distance wirte o into w.offset else if w.distance=0 then let f be the fragment of R at offset w.offset write f⊕w.frag into w.frag increment w.distance

Path reconstruction procedure at victim v:

let FragTbl be a table of tuples(frag,offset,distance) let G be a tree with root v let edges in G be tuples(start,end,distance) let maxd:=0 let last:=v for each packet w from attacker FragTbl.Insert(w.frag,w.offset,w.distance) if w.distance>maxd then maxd:=w.distance for d:=0 to maxd for all ordered combinations of fragments at distance d construct edge z if d!=0 then z:= z⊕last if Hash(EvenBits(z))=OddBits(z) then insert edge(z,EvenBits(z),d) into G last:=EvenBits(z); remove any edge(x,y,d) with d!=distance from x to v in G extract path(Ri..Rj) by enumerating acyclic paths in G

实验室情况下这种标记技术只需要victim能够抓到1000到2500个包就能够重构整个路径了,应该说结果是很好的,但是没有投入到实用中,主要是需要路由器厂商和ISP支持。

差不多ip traceback的已经实用的技术和实验室技术,或者已经死掉的,就主要是这些,虽然还有其他的一些。

已经很长时间没有搞DDOS防范这一块了,国内也有黑洞这样的产品,以前也了解一些国外的,比如floodguard、toplayer、radware等。受securitytest提示,又了解到riverhead的,我就立刻看了看他们的白皮书。

因为前面bigfoot提出的主要是ip traceback的题目,securitytest也又到防御的问题。针对DDOS的问题ip traceback和Mitigation是不一样的,ip traceback主要是进行追踪,因为DDOS主要是spoof,而很难判别到真正的攻击源,而且如果能够很容易找到真正的攻击源,不仅仅对付DDOS,对付其他的攻击也很有帮助,比如法律问题等。而Mitigation是从受害者的角度,因为victim一般是没有能力去调查整个网络,找出source,而且,即便能够找到source,也得有法律或者一些沟通的手段来让source停下来(攻击的source并不是source的攻击者),这种意味着大量的沟通、跨ISP、跨过等类似的非技术问题,所以,通常很难处理。但是从victim的角度来说,必须得有所解决办法,所以就需要Mitigation。

这又正好是我以前研究的范围,所以,又会说出一大堆。对于Mitigation,其实,技术的根本就是要能从众多的流量中将攻击包和合法包分离出来,把攻击包抛弃掉,让合法包通过就性了。这就是根本,所以实际运用的技术就是要如何尽可能识别出攻击包,而又尽可能小地影响正常包。这又得来分析DDOS(甚至DOS)的方式和原理。基本又下面几种形式: 1、系统漏洞形成的DOS。这种特征固定,检测和防御也容易 2、协议攻击(一些跟系统处理相关,一些跟协议相关)。比如SYN FLOOD,碎片等。特征还好识别,检测和防御相对容易。比如SYN COOKIE、SYN CACHE,碎片可以抛弃。比如land攻击、smurf、teardrop等 3、bandwidth FLOOD。垃圾流量堵塞带宽,特征不好识别,防御不容易 4、基本合法的FLOOD

此文转载至 http://www.2cto.com/Article/200411/1755.html

DDOS与DDOS追踪的介绍的更多相关文章

  1. [推荐]DDOS攻击与防范知识介绍

    [推荐]DDOS攻击与防范知识介绍 DDOS攻防体系建设v0.2(淘宝-林晓曦)     http://wenku.baidu.com/view/39549a11a8114431b90dd866.ht ...

  2. diy作品——视觉追踪小车介绍

    最近刚刚完毕了一个追踪功能的小车.大体功能例如以下:小车能通过网线给电脑传图(抱歉.临时没搞wifi驱动).并在电脑端通过鼠标选中待跟踪的目标,然后小车就開始追踪.由于追踪框有缩放功能.所以也能推断物 ...

  3. 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!

    DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!——和一个句子的分词算法CRF没有区别!注:传统DDos检测直接基于IP数据发送流量来识别, ...

  4. Blazor Bootstrap 组件库地理定位/移动距离追踪组件介绍

    地理定位/移动距离追踪组件 通过浏览器 API 获取定位信息 DEMO https://www.blazor.zone/geolocations 小提示 注意: 出于安全考虑,当网页请求获取用户位置信 ...

  5. ZAmbIE [DDoS Attacks](DDOS攻击)

    在youtube上发现的一个视频 这是一个开源项目 git clone https://github.com/zanyarjamal/zambie.git chmod -R 777 zambie cd ...

  6. Azure上Linux VM DDOS攻击预防: 慢速攻击

    在上篇博客(http://www.cnblogs.com/cloudapps/p/4996046.html)中,介绍了如何使用Apache的模块mod_evasive进行反DDOS攻击的设置,在这种模 ...

  7. 实战分享:如何成功防护1.2T国内已知最大流量DDoS攻击

    作者:腾讯云宙斯盾安全团队&腾讯安全平台部 引言: DDoS攻击势头愈演愈烈,除了攻击手法的多样化发展之外,最直接的还是攻击流量的成倍增长.3月份国内的最大规模DDoS攻击纪录还停留在数百G规 ...

  8. Linux下防御DDOS攻击的操作梳理

    DDOS的全称是Distributed Denial of Service,即"分布式拒绝服务攻击",是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求.耗尽目标主机资源 ...

  9. 修改Linux SSH连接端口和禁用IP,安装DDoS deflate

    测试系统:centos7 修改连接端口 修改配置文件 vi /etc/ssh/sshd_config 去掉port 22的注释,添加新的端口配置 port your_port_num 自定义端口选择建 ...

随机推荐

  1. PHP 表单 - 4(验证邮件和URL)

    PHP 表单 - 验证邮件和URL 本章节我们将介绍如何验证 names(名称), e-mails(邮件), 和 URLs. PHP - 验证名称 以下代码将通过简单的方式来检测 name 字段是否包 ...

  2. JDBC五数据源和数据池(web基础学习笔记十一)

    一.为什么使用数据源和连接池 现在开发的应用程序,基本上都是基于数据的,而且是需要频繁的连接数据库的.如果每次操作都连接数据库,然后关闭,这样做性能一定会受限.所以,我们一定要想办法复用数据库的连接. ...

  3. ONVIFclient搜索设备获取rtsp地址开发笔记(精华篇)

    概要:           眼下ONVIF协议家族设备已占领数字监控行业半壁江山以上.亲,作为开发人员的你还在犹豫是否了解下吗?本文介绍了ONVIFclient从设备搜索,鉴权,能力获取,媒体信息获取 ...

  4. Java程序猿学习C++之数组和动态数组

    数组: #include <iostream> using namespace std; //模板函数 template <class T> void dump(T val) ...

  5. eclipse 关闭web项目无用校验

      eclipse 关闭web项目无用校验 CreateTime--2018年4月8日16:21:01 Author:Marydon 1.关闭javascript校验 1.1 切换到视图Navigat ...

  6. 简单四步開始树莓派上的Docker之旅

    大概这篇博文发表之后,应该算是我个人的第一篇翻译作品了,翻译的可能不是非常到位,望各位看官大刀砍过来. 原文链接:http://resin.io/blog/docker-on-raspberry-pi ...

  7. 【Oracle】迁移含有BLOG类型的字段的表

    日常数据库迁移过程中,发现dmp文件中的表,如果表含有blog类型的字段,无法进行迁移. 以下是我迁移含有blog类型字段表的经验分享' 使用PLSQL Developer进行导出 接着选择需要导出的 ...

  8. 在JQuery中获取URL中的参数值

    添加一个js文件,代码如下 // * jQuery url get parameters function [获取URL的GET参数值] // *character_set UTF-8 // * au ...

  9. highstock K线图 深入研究

    K线图,相信每个股民都不陌生,如何用SVG画好一个K线图是一个难题. 我选择用highstock做为画图组件,适当的修改了一下源码,参考了数个财经网站的案例,完成了一个不太成熟的K线图,欢迎大家批评指 ...

  10. iOS升级swift3 遇到Overriding non-open instance method outside of its defining module的解决方案

    最近将我之前的一个swift项目升级swift3,说多了都是泪... 其中,遇到这样一个错误: 这是用的三方:ENSwiftSideMenu时引出的 报了两个错: 1.Cannot inherit f ...