打印

DDOS的攻击原理和对CNN攻击的小节

本主题由 小力 于 2008-7-25 01:03 移动

DDOS的攻击原理和对CNN攻击的小节

呵呵,好象发这篇文章有点晚了.有点长,大家耐心点看.
    在这看到好多朋友对DDOS不是很了解哦.上周记得全国各地都有人发动对CNN的攻击,(谁叫CNN做人不厚道呢?)在这里就简要说下DDOS攻击的原理吧,以及对上周攻击CNN的总结.

   
进入2000年以来,网络遭受攻击事件不断发生,全球许多著名网站如yahoocnnbuyebayfbi,包括中国的新浪网相继遭到不名身份的黑客攻击,值得注意的是,在这些攻击行为中,黑客摈弃了以往常常采用的更改主页这一对网站实际破坏性有限的做法,取而代之的是,在一定时间内,彻底使被攻击的网络丧失正常服务功能,这种攻击手法为 DDoS,即分布式拒绝服务攻击(Distributed denial of service )
  
简单的讲,拒绝服务就是用超出被攻击目标处理能力的海量数据包消耗可用系统,带宽资源,致使网络服务瘫痪的一种攻击手段。在早期,
拒绝服务攻击主要是针对处理能力比较弱的单机,如个人pc,或是窄带宽连接的网站,对拥有高带宽连接,高性能设备的网站影响不大,但在99年底,伴随着DDoS的出现,这种高端网站高枕无忧的局面不复存在,与早期的DoS攻击由单台攻击主机发起,单兵作战相较,DDoS实现是借助数百,甚至数千台被植入攻击守护进程的攻击主机同时发起的集团作战行为,在这种几百,几千对一的较量中,
网络服务提供商所面对的破坏力是空前巨大的。

  
拒绝服务攻击自问世以来,衍生了多种形式,现将两种使用较频繁的TCP-SYN flood UDP flood做一个介绍
TCP-SYN flood又称半开式连接攻击,每当我们进行一次标准的TCP连接(WWW浏览,下载文件等)会有一个一个三次握手的过程,首先是请求方向服务方发送一个SYN消息,服务方收到SYN后,会向请求方回送一个SYN-ACK表示确认,当请求方收到SYN-ACK后则再次向服务方发送一个ACK消息,一次成功的TCP连接由此就建立,可以进行后续工作了,如图所示
:




  
TCP-SYN flood在它的实现过程中只有前两个步骤,当服务方收到请求方的SYN并回送SYN-ACK确认消息后,
请求方由于采用源地址欺骗等手段,致使服务方得不到ACK回应,这样,服务方会在一定时间处于等待接收请求方ACK消息的状态,一台服务器可用的TCP连接是有限的,如果恶意攻击方快速连续的发送此类连接请求,则服务器可用TCP连接队列很快将会阻塞,系统可用资源,网络可用带宽急剧下降,无法向用户提供正常的网络服务。

   Udp在网络中的应用也是比较广泛的,比如DNS解析、realaudio实时音乐、网络管理、联网游戏等,基于udp的攻击种类也是比较多的,如目前在互连网上提供wwwmail等服务的设备一般为使用unix操作系统的服务器,他们默认是开放一些有被恶意利用可能的udp服务的,如:echo,chargen. echo服务回显接收到的每一个数据包,而原本作为测试功能的chargen服务会在收到每一个数据包时随机反馈一些字符,如果恶意攻击者将这两个udp服务互指,则网络可用带宽会很快耗尽。

  
99年后半年开始,DDoS攻击不断在Internet出现,并在应用的过程中不断的得到完善,在Unixnt环境上截至目前已有一系列比较成熟的软件产品,如TrinooTFNTFN2KSTACHELDRATH等,他们基本核心及攻击思路是很相象的,下面就通过Trinoo对这类软件做一介绍。

   Trinoo是基于UDP flood的攻击软件,它向被攻击目标主机随机端口发送全零的4字节UDP包,被攻击主机的网络性能在处理这些超出其处理能力垃圾数据包的过程中不断下降,直至不能提供正常服务甚至崩溃。

   Trinoo攻击功能的实现,是通过三个模块付诸实施的,

   1:攻击守护进程(NS) 2:攻击控制进程(MASTER) 3:客户端(NETCAT,标准TELNET程序等)

  
攻击守护进程NS是真正实施攻击的程序,它一般和攻击控制进程(MASTER)所在主机分离,在原始C文件ns.c编译的时候,需要加入可控制其执行的攻击控制进程MASTER所在主机IP,(只有在ns.c中的IP方可发起ns的攻击行为)编译成功后,黑客通过目前比较成熟的主机系统漏洞破解(如rpc.cmsdrpc.ttdbserverrpc.statd)可以方便的将大量NS植入因特网中有上述漏洞主机内。ns运行时,会首先向攻击控制进程(MASTER)所在主机的31335端口发送内容为HELLOUDP包,标示它自身的存在,随后攻击守护进程即处于对端口27444的侦听状态,等待master攻击指令的
到来。

  
攻击控制进程(MASTER)在收到攻击守护进程的HELLO包后,会在自己所在目录生成一个加密的名为...的可利用主机表文件, MASTER的启动是需要密码的,在正确输入默认密码gOrave后, MASTER即成功启动,它一方面侦听端口31335,等待攻击守护进程的HELLO包,另一方面侦听端口27665,等待客户端对其的连接。当客户端连接成功并发出指令时, MASTER所在主机将向攻击守护进程ns所在主机的27444端口传递指令。

  
客户端不是trinoo自带的一部分,可用标准的能提供TCP连接的程序,如TELNETNETCAT等,连接MASTER所在主机的27665端口,
输入默认密码betaalmostdone后,即完成了连接工作,进入攻击控制可操作的提示状态。

  
目前版本的trinoo有六个可用命令,mtimer:设定攻击时长,如mtimer 60,攻击60秒,如果不设置的话,默认是无限。dos:对某一目标主机实施攻击,如dos 12.34.45.56 mdie:停止正在实施的攻击,使用这一功能需要输入口令killmemping:请求攻击守护进程NS回应,监测ns是否工作。mdos
对多个目标主机实施攻击,msize:设置攻击UDP包的大小。 Trinoo运行的总体轮廓可用下图说明
:





我们来看一次攻击的实例
:
  
被攻击的目标主机victim IP
:12.23.34.45
   ns被植入三台sun的主机里,他们的IP对应关系分别为
client1:11.11.11.11
  
client2:22.22.22.22
  
client3:33.33.33.33
   master所在主机为
masterhost:11.22.33.44
  
首先我们要启动各个进程,在client123上分别执行ns,启动攻击守护进程,

  
其次,在master所在主机启动
master
  
masterhost# ./master
   ?? gOrave (系统示输入密码,输入gOravemaster成功启动
)
   trinoo v1.07d2+f3+c [Mar 20 2000:14:38:49] (连接成功
)
  

  
在任意一台与网络连通的可使用telnet的设备上,执行

  
telnet 11.22.33.44 27665
  
Escape character is '^]'.
   betaalmostdone (输入密码
)
  
trinoo v1.07d2+f3+c..[rpm8d/cb4Sx/]
   trinoo> (进入提示符
)
   trinoo> mping (我们首先来监测一下各个攻击守护进程是否成功启动
)
  
mping: Sending a PING to every Bcasts.
  
trinoo> PONG 1 Received from 11.11.11.11
  
PONG 2 Received from 22.22.22.22
   PONG 3 Received from 33.33.33.33 (成功响应
)
   trinoo> mtimer 60 (设定攻击时间为60
)
  
mtimer: Setting timer on bcast to 60.
  
trinoo> dos 12.23.34.45
  
DoS: Packeting 12.23.34.45......

  
至此一次攻击结束,此时ping 12.23.34.45,会得到icmp不可到达反馈,目标主机此时与网络的正常连接已被破坏。

  
由于目前版本的trinoo尚未采用IP地址欺骗,因此在被攻击的主机系统日志里我们可以看到如下纪录
:

  
Mar 20 14:40:34 victim snmpXdmid: Will attempt to re-establish connection.
  
Mar 20 14:40:35 victim snmpdx: error while receiving a pdu from 11.11.11.11.59841: The message has a wrong header type (0x0)
  
Mar 20 14:40:35 victim snmpdx: error while receiving a pdu from 22.22.22.22.43661: The message has a wrong header type (0x0)
  
Mar 20 14:40:36 victim snmpdx: error while receiving a pdu from 33.33.33.33.40183: The message has a wrong header type (0x0)
  
Mar 20 14:40:36 victim snmpXdmid: Error receiving PDU The message has a wrong header type (0x0).
  
Mar 20 14:40:36 victim snmpXdmid: Error receiving packet from agent; rc = -1.
  
Mar 20 14:40:36 victim snmpXdmid: Will attempt to re-establish connection.
  
Mar 20 14:40:36 victim snmpXdmid: Error receiving PDU The message has a wrong header type (0x0).
  
Mar 20 14:40:36 victim snmpXdmid: Error receiving packet from agent; rc = -1.

  
由上述日志,我们不难看出发起攻击的ip地址,这一问题,通过ip spoof在后期的软件tfntfn2k等软件中得到了解决,给被攻击者找出肇事者进一步增加了难度。

   TrinooDdoS攻击软件的出现,对网络的安全产生了巨大的挑战,借助这种在网上可以得到的公开软件,任何一个普通的上网者对网络的安全都构成了潜在的威胁,那么能不能做一些预防工作呢
?

  
有一些是可以做的,

  
首先,检测自己的系统是否被植入了攻击守护程序,最简单的办法,检测上述提到的udp端口,如netstat -a | grep udp 端口号,如果得到listen等激活状态,就要注意了,或者用专门的检测软件,这里推荐美国FBI专门研制的Find Distributed Denial of Service (find_ddos)
最新版本的可检测到tfn2k client tfn2k daemon trinoo daemon trinoo master tfn daemon tfn client stacheldraht master stacheldraht client stachelddraht demon tfn-rush client等目前几乎所有流行攻击软件。
它的运行很简单,解开包,运行find_ddos即可,下面为在一台可疑设备运行结果,

  
Logging output to: LOG
  
Scanning running processes...
  
/proc/795/object/a.out: trinoo daemon
  
/usr/bin/gcore: core.795 dumped
  
/proc/800/object/a.out: trinoo master
  
/usr/bin/gcore: core.800 dumped
  
Scanning "/tmp"...
  
Scanning "/"...
  
/yiming/tfn2k/td: tfn2k daemon
  
/yiming/tfn2k/tfn: tfn2k client
  
/yiming/trinoo/daemon/ns: trinoo daemon
  
/yiming/trinoo/master/master: trinoo master
  
/yiming/trinoo/master/...: possible IP list file
  
NOTE: This message is based on the filename being suspicious, and is not
  
based on an analysis of the file contents. It is up to you to examine the
  
file and decide whether it is actually an IP list file related to a DDOS
  
tool.
  
/yiming/stacheldrahtV4/leaf/td: stacheldraht daemon
  
/yiming/stacheldrahtV4/telnetc/client: stacheldraht client
  
/yiming/stacheldrahtV4/td: stacheldraht daemon
  
/yiming/stacheldrahtV4/client: stacheldraht client
  
/yiming/stacheldrahtV4/mserv: stacheldraht master

  
ALERT: One or more DDOS tools were found on your system.
  
Please examine LOG and take appropriate action.

  
看来这台设备的攻击守护程序还不少呢,系统管理员要注意啦
!
  
其次,封掉不必要的UDP服务,如echo,chargen,减少udp攻击的入口。

  
第三,在路由器连接骨干网络的端口结合采用CEFip verify unicast reverse-path,挡住一部分ip spoof,syn的攻击。同时使用access control lists将可能被使用的网络保留地址封掉。
借助使用CAR技术来限制 ICMP 报文大小。具体使用可查阅cisco网站。

  
第四,在敏感主机如www服务器使用ip filter软件。

  
截至目前,实际很彻底的防御手段还没有出现,但采用上述做法可以较大地减小不安全性。

   Internet的发展,永远是一场不会停止的网络安全攻与防的较量


[ 本帖最后由 88608842 于 2008-4-24 00:07 编辑 ]
本帖最近评分记录
  • yofx 金币 -6 发错地方 2008-4-24 12:11

TOP

其实真正想要发动一场成功DDOS攻击并不是光靠手上有肉鸡就可以了.对CNN的攻击那天晚上我也参与了.
你还得做很多准备.可以这么说,发动DDOS攻击和行军打仗一样.并不是你手上有了武器就可以打倒对方.一场战争不但要有武器,还要有出色的指挥官和士兵.
我想说19号晚上号召大家攻击CNN的战斗我们做得很不好....当然也和CNN封锁了中国地区的IP有关.但主要是我们没有准备好.为什么这么说呢?不知道那晚大家有没有发现CNN的IP在不停的跳动.其实像CNN这样的大站有那么多IP并不奇怪.但他的IP不管怎么变,始终有一个IP是主服务器的IP.为什么说我们没准备好.因为我们没能锁定对方的IP.
所谓知己知彼,百战百胜,我们连对方的IP都没能锁定,又谈何进攻?一场DDOS攻击至少会有两个小组,攻击组和扫描组.很多时候我们忽略了扫描组的存在.为什么?因为很多人觉得扫描组并不重要?确实,在攻击小站的时候扫描组确实体现不出它的作用,但攻击大站的时候扫描组有时候能起决定行的作用!
扫描组就像战争中的侦察兵,它会提供敌方一些很重要的信息,这些信息有时候会起到攻击成败的决定性作用.
那天晚上可以说我们败了.缺少了扫描组我们不知道该攻击哪个地方.拼掉了150000多只肉鸡依旧无法撼动对方.并不是说对方的带宽很宽能容下这些流量了,而是在多个IP分散了我们的攻击力.从攻击开始到结束,我们都没法锁定对方的IP.呵呵
所以说准备不充分咯
在攻击的时候还有一个组也很重要,顺便提下,那就是渗透组,如果说这三个小组互相协调好了.那就没有打不下的网站
好了,小结到这也差不多了
如果说得不好,还请见谅哈~毕竟本人水平有限.....

TOP

都没人看的....早知道我就不写了........

TOP

有,我在看。。。。可是技术不到家无能为力。
雷达组,间谍组,是很重要呀

TOP

内容不错

就是有些还是看不懂…
[url=http://286017867.qzone.qq.com]问题到这问!谢谢!/url]

TOP

好啊  !!!!::                                                   

TOP

顶啊!!支持下!         

TOP

呵呵 郁闷吧 居然说:发错地方 ??? 被扣分啦
我会看的

TOP

那是相当的郁闷....好不容易弄了出来不加分就算了
还要扣我分

TOP

文章写的很不错,就是我太菜了!

文章写的很不错,就是我太菜了有些看的不是很懂,向您请教一个问题:“有一个论坛,我想在里面下载一个东西,但是论坛需要积分才可以下载,但是我没有好么多的积分,我就想黑它,但是我看了他的网址后面是“org/index.php”,的后缀,我用啊D扫了一下,什么都没有得到,我很需要那个数据,但就是下载不了,请您帮帮忙,我要等到够积分那得需要很长的时间。”

TOP

Processed in 0.094427 second(s), 7 queries, Gzip enabled.