[翻译]拒绝服务攻击详解之基础篇
文章翻译:冰血封情 [E.S.T](桂林电子科技大学)
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])
目录
绪论
拒绝服务三大类
五花八门的拒绝服务攻击手法
包欺骗和原始套接
防止拒绝服务攻击
尾声
相关连接
免责条款
绪论:
这份资料是为那些对拒绝服务(Denial of Service,DoS)有一些了解的网络管理员准备的,资料中涉及到了大量关于拒绝服务攻击(Denial of Service attacks)的基础以及相关知识。
互联网上的拒绝服务攻击正变得越来越常见。发起一场拒绝服务攻击对于一个老练的黑客来说已经不是什么难事儿,甚至是一个非常普通的脚本小子都可以通过使用从互联网上下载的工具做到。由于可以被轻易上演,拒绝服务攻击已经逐渐成为当今因特网上的严峻问题。很多网上银行和娱乐站点由于拒绝支付黑金而被不法份子采用拒绝服务的手段攻击,调查显示攻击速度几乎可以达到1G/s,而且问题仍然在恶化。目前,大概一些攻击者已经可以达到1T/s,而仅仅1G/s的攻击强度就足够让雅虎(yahoo.com)和亚马逊(amazon.com)这样的大站倒塌了。
您无法防止恶徒对您进行拒绝服务攻击,但是多了解一点儿这种手法,以便当您的服务器遭到拒绝服务攻击的时候能尽可能的阻止他或者把损失降到最低却是很有必要的。
这篇文章的作者是Aelphaeis Mangarae,中文翻译由冰血封情[E.S.T]完成。
拒绝服务三大类:
DoS:
DoS攻击是一种攻击者自他或她自己的机器发起的攻击。通过对远程计算机发送攻击数据包,每发送一个远程的计算机收到一个。这种攻击已经比较罕见了,因为大多数情况下这种攻击不能得手,并且在攻击的时间段上很容易被追踪。
一般的说,使用DoS攻击手段的大多数都是那些喜欢用“黑客工具”而没有大脑的业余脚本小子,他们异想天开的以为有机会用自己的破电脑搞塌一台web服务器。多数情况下这些脚本小子最终会发觉自己信赖的攻击工具没有效果,从而转而使用一种新的所谓的“黑客工具”或者很可能使用工具发动一场分布式拒绝服务(Distributed Denial Of Service)攻击。
DDoS:
分布式拒绝服务(Distributed Denial of Service,DoS)攻击是拒绝服务攻击者群体中最常用的手法了。
如果一个攻击者想发动一场拒绝服务攻击,他可以召唤数千甚至是数万数十万被安装了傀儡软件(一种类似IRC客户端的程序,但是功能可就牛了,有些时候被称做DDoS蠕虫)的机器(后面叫肉机)。通常情况下这些客户端会从肉机上登录到一个IRC聊天室,等待攻击者发号施令。攻击者只要键入类似如下的命令”$flood ICMP [url]www.yahoo.com[/url]”后,这些IRC聊天室里的客户端接收命令并且开始向目标发送ICMP包。由于攻击者有足够的客户端安装在很快的服务器肉机上,那么很轻易就造成了远程目标掉线或者是拒绝合法用户的访问
通常,攻击者选择手工添加可以用来攻击的肉机,他们通常把IRC攻击程序客户端作成网页木马的方式,通过利用社会工程学诱使他人访问那张网页。通过利用IE的某一个漏洞(通常IE的安全性都很差劲儿),在对方计算机上下载并执行客户端。
目前,组建一直庞大的亏累军团用于攻击已经不是什么难事儿,因特网上有很多傀儡软件可供下载,比如Forbot、RxBot以及Agobot。这些傀儡软件通过扫描特定的服务或端口并且尝试渗透并感染远程计算机(有点象蠕虫),如果这些傀儡终端使用了0day exploit来运做那将是非常实用的。
DoS客户端一般都支持标准的洪水攻击,比如ICMP,UDP,TCP以及SYN洪水。
DRDoS:
分布式反映射拒绝服务(Distributed Reflected Denial of Service,DRDoS)是相当罕见的一种拒绝服务攻击种类,因为攻击一台大型服务器都没必要使用DRDoS,尽管这种手法仍然曾经一度被声名狼藉的Mafia Boy用来攻击cnn.com、yahoo.com、amazon.com和ebay.com。
DRDoS的原理是攻击者命令他的肉机使用伪造的包去洪水攻击一个特殊的媒介主机而引发的。打个比方,攻击者命令他手下一半数量的肉机去使用伪造的ICMP包洪水攻击yahoo.com,同时再命令他手下另外一半数量的肉机去使用伪造的ICMP包洪水攻击ebay.com,由于这些伪造的攻击数据包都看起来象是来自microsoft.com。那么yahoo.com和ebay.com就会在不知觉中洪水攻击microsoft.com,因为伪造的ICMP数据包都标识为源地址是microsoft.com,那么yahoo.com和ebay.com将向这个伪造的地址(也就是微软)进行回复。可是大家知道,任何一个精心伪造的ICMP数据包发送到yahoo.com和ebay.com的时候,yahoo.com和ebay.com可能有数千台机器在这同一个IP地址上,而每台机器都将对这个伪造的地址进行回复,因此这个攻击效果将被放大很多倍。下面我专门附带了一张图示用来说明DRDoS是怎样运做的。
红线:是连接攻击者和肉机的,攻击者通过这条线路去命令肉机发动攻击。
蓝线:肉机发送伪造的ICMP包,这些ICMP包都看起来象是来自受害者的因特网中枢路由。
绿线:连接到ebay.com,yahoo.com,cnn.com和Amazon.com的任何一个计算机都回复这个伪造地址,于是,受害者遭到了攻击。
注意:我怀疑某些人将利用cnn.com或者是其他的类似站点做媒介主机,其实所有的大网络都可以被利用来做反映射包的转换媒介。
五花八门的拒绝服务攻击手法:
ICMP:
ICMP洪水攻击几乎是拒绝服务攻击中最常用的手段,由于几乎所有的站点都响应ICMP包,所以很轻易就可以放倒他们。
ICMP洪水是通过对目标机发送大量的ICMP包,由于远程计算机每一个包都回复,这意味着将耗光目标机器的带宽导致合法用户无法访问服务器。
发送ICMP包最常见的就是ping命令,一般主要用来探测远程计算机是否在线。
UDP:
UDP洪水攻击的实现方法是发送垃圾包从UDP端口到远程计算机的UDP端口,有丈于UDP是一个无连接协议所以这种攻击手法将效果显著。
TCP:
TCP洪水攻击可以通过和远程计算机建立数以千计的连接,远超过远程计算机可以接受的最大限度来实现。另外一种TCP洪水攻击是攻击者连接已经存在的TCP并发送垃圾数据来堵塞远程计算机。
TCP SYN:
当一个计算机想要同远程计算机建立连接的时候,将会完成我们通常称之为3次握手的事件。首先,想要建立连接的计算机发送SYN包,远程计算机收到后回复一个ACK包来确认之前的SYN包,于是连接计算机开始尝试建立连接。
可以看见,如果是采用SYN包洪水攻击远程计算机,它将会发送ACK包来浪费带宽,如果远程计算机一直不主动建立连接,那么目标计算机将会一直等待连接,这样很可能耗费掉目标计算机所有的连接请求,这种攻击方法时常可以达到事半功倍的效果。
邮件×××:
这种拒绝服务攻击方式经常为业余脚本小子所使用,邮件×××就是攻击者向目标邮件地址发送数以千计的垃圾邮件,这种攻击经常相当无没效果。然而这种手法通常会耗费光您的邮箱空间或者是给特定的ISP带来烦恼。
我认为关于这种洪水攻击能用来做什么还得从长计议,毕竟都是一些我亲爱的业余脚本小子在恶作剧中使用,干不了什么大票儿(我知道你一定觉得很可笑)。
这种攻击根本不占用带宽,它可以做的,也仅仅是浪费硬盘的空间和人的时间,让人不得不尽快删除数千封email。值得一提的是,有些免费的web email服务,只让你一封封的删email,那要删除这么多邮件可真是件遭罪的事情。
这种攻击一般都很容易跟踪,你需要做的只是设法获得这些垃圾email的源IP地址,找出攻击者使用的ISP信息,并且email通知他们就可以了。
其他的:
其实还有很多拒绝服务攻击手法,所有的拒绝服务攻击,说白了就是攻击者利用带宽去耗费别人的带宽,或者是利用自己其他的资源去耗费目标的其他资源。其中还有一种方法,攻击者可以用他的肉鸡不断重复的加载web服务器的页面,这样也可以耗费掉他的带宽。
不久以前Blackcode.com就被拒绝服务攻击过,攻击者使用肉机不断的加载Blackcode.com论坛的php模块,造成了当机。
有一个防止部分拒绝服务攻击的种类的好方法就是不要允许同一IP建立超过一个的连接数,这样肉机就不会占用你太多的带宽,除非他用很多肉机洪水攻击群K你。
包欺骗和原始套接:
原始套接和普通套接很相似,除非你想控制发送更高质量的包(这句真是感谢cnbird的提示)。在普通的套接字你可以提供目的地址和要发送的信息,但是在原始套接字中,你完全可以自己构造一个包含伪造的源地址和TTL(Time to Life)值的包。
Linux的所有版本都支持原始套接,然而却只有Windows 2000、XP和2003(Winsock Version 2)支持原始套接。这个世界还有哪个缺心眼的还在用Windows 9x?
所以如果你有个合适版本的Windows他将会支持原始套接,我想大家都对Steve Gibson aka略有所闻吧?那个喜欢胡说八道的人——我就这么称呼他的。我并不是想说更多关于Steve Gibson的事和他的胡说八道,但是那混蛋说:
脚本小子总喜欢利用Windows XP来发动DoS攻击,因为XP支持原始套接,这样脚本小子就可以用一些黑客工具来构造ip欺骗。
如果你读了这文章你就会大概了解,脚本小子的攻击并没有Steve这丫胡扯的那种效果,而且正象Steve胡诌的那样原始套接在Service Pack 2以后已经被禁止了。
你根本不用担心这些攻击者利用XP肉机给你发送欺骗包,因为SP2不支持原始套接,因此他们湖可能伪造IP(此时我觉得他们还没有找到解决SP2的这个糟糕问题的方法)。
然而,脚本小子知道了SP2禁止原始套接,所以明显他们是不会去下载它的。
原始套接也一直被在DDoS中使用,我相信拒绝服务傀儡软件的编写者会很快找到解决SP2禁止原始套接的办法。如果他们一直无法决绝这个问题,那么使用欺骗手段的攻击者很容易被逆向追踪(只要根据他发来的包就可以了)。
依靠原始套接你可以完全构造一个包,如下就是一个IP包头的图例:
这表我是从Black Sun Research Facility找来的,就先顶顶用用吧。
防止拒绝服务攻击:
保护您的电脑不成为肉机:
很多拒绝服务攻击者都是依仗大量的肉机来对web服务器发送攻击,我们可以大家都来帮忙,首先能做的就是保证自己的计算机不被做成肉机(不被安装傀儡软件或者是蠕虫感染)。
如果出现以下几种现象,那么很可能您的计算机已经成为了恶徒的帮凶:
1.检查您的电脑是否有很多6667端口的连接(这个端口是IRC使用的),并且您根本没有使用IRC客户端也没有在任何已知情况下访问IRC。您可以通过netstat –n来查看端口(命令将会反馈IP地址和端口号)。
2.您的反病毒程序(例如:杀毒软件)提示您已经被病毒感染,或者是提示你因为不明原因关闭了。这些都是被木马或者是DoS蠕虫感染的现象,也就是为什么你的反病毒程序会关闭了。
3.某时您的网络带宽突然占用很高,并且系统莫名其妙的变的慢了。
4.您的防火墙询问您是否允许一些不明程序访问网络,企图连接某个特定的域名,并且企图向它发送ICMP包。
5.您的防火墙提示您的windows资源管理器或者是其他的系统重要文件被劫持或者是被修改了,并且它们试图访问某个域名或者向这个域名发送ICMP包。
6.您的操作系统并没有持续更新到最近的安全补丁并且软件也版本陈旧,如果是这样您的计算机将会有更大的几率被蠕虫感染。这些傀儡终端(或者是DoS蠕虫)经常使用0day exploits,所以很有必要把您的操作系统和软件经常更新,最好给您的机器再添加一个防火墙。
7.您的计算机显示发起了数千个连接到其他的计算机,这种情况很可能是傀儡终端(或者是蠕虫)在连接某个远程受害者,想耗费掉他所有的连接请求以便让他拒绝服务。
防止您的机器成为反映射媒介:
分布式反映射拒绝服务(Distributed Reflected Denial of Service,DRDoS)是威力很大的,一些攻击者经常是使用100MB的带宽,通过借用中间主机反映射可以把攻击效果放大到数十吉(gigabytes,G),所以加入您是一个网络管理员,你应该尽最大的可能确保您的网络不会被利用来做反映射攻击。
有一个确保你的网络不会反映射包到其他的网络的好方法,就是设置您的网络只转发包到你自己网络上的计算机。你可以通过设置您的路由只转发包到特定的IP地址,比如您自己的网络内的站点IP上,当然您也可以设置转发到如下的IP地址:
0.0.0.0/8 - Historical Broadcast
10.0.0.0/8 - RFC 1918 Private Network
127.0.0.0/8 - Loop back
169.254.0.0/16 - Link Local Networks
172.16.0.0/12 - RFC 1918 Private Network
192.0.2.0/24 - TEST-NET
192.168.0.0/16 - RFC 1918 Private Network
224.0.0.0/4 - Class D Multicast
240.0.0.0/5 - Class E Reserved
248.0.0.0/5 - Unallocated
255.255.255.255/32 – Broadcast
如果您使用了网络地址转换(Network Address Translation,NAT),那么您应该在NAT设备和ISP之间找到一个合适的过滤平衡点。
如果您当初组网的时候很不幸的选择了开启了定向广播,那么开启定向广播就意味着招让击者使用您的网络来进行反映射攻击。禁止定向广播将会阻止所有连接到您的网络的计算机对同样的包进行回复,因此就达到了防止扩大DDoS攻击的效果。
好了,在加固您的网络以避免成为反映射攻击的帮凶之后,做个检测来确认您的加固成果是个绝对的好主意,这里我们提供几个检测地址如下:
[url]http://www.netscan.org[/url]
[url]http://www.powertech.no/smurf/[/url]
(冰血封情注:这两个地址可以用来检测自己 同样可以用来检测其他的网络 所以它可以做安全辅助也可以让脚本小子用来探测远程站点是否可以用来做反映射攻击的媒介 安全真是双刃剑)
注意,如果您的站点回复了反映射数据包,那么将成为攻击者利用来做放大攻击的站点黑名单中的一员,所以如果您存在这种成为帮凶的隐患,请立刻加固你的网络。
为您的网络中每台机器增加一个防火墙或者是入侵检测系统(IDS)也是一个好主意,这样不但可以更加降低您成为反映射攻击帮凶的几率,而且还能够让您的系统在一定程度上防范黑客的渗透。
以下的系统默认设置就是禁止了定向广播的,这意味着他们不会被用来反映射包:
Cabletron ×××
FreeBSD
Microsoft Windows Workstation & Server 3.5 & 3.5.1
然而下面这些系统在默认情况下是开启了定向广播的。
Windows NT 4
Cisco
Bay
作为一个大网络的超级管理员(甚至是个小网络的超级管理员),禁止您的网络的定向广播,以便攻击包不会从您的网络反映射出去是很重要的一件事情。假如确实是需要开启定向广播,那么您任何时候都应该小心谨慎的管理。
您的服务器正在被攻击,咋整?
拒绝服务攻击是非常难防止的,尤其是你拿不准攻击者是否在攻击,但是如果您的站点正在被攻击。那么请立刻!
为了临时阻止攻击者拖慢或者是搞宕您服务器,有几件事情您的做。
如果攻击者采用ICMP洪水攻击您的服务器,那么最有效的办法就是您的服务不要对ICMP包作出响应,防火墙也是个不错的选择,当然您最好在第一现场。
微软最近就这么做了,所以他们的网站(microsoft.com)不会再响应ICMP数据包了。
如果攻击者采用耗费掉你所有的连接请求的方法,你可以通过设置每个IP地址只能建立一个连接来轻松解决,或者您可以中断与傀儡机器(肉机)所使用的IP的连接。
当然,攻击者可能会通过让他或者她的肉机采用多线程长时间的下载您站上的某个文件来耗费您的连接,对付这种方法的绝招就是黑手封IP。
你也可以把他们在下的那个东西删除或者是移动到其他的地方,这样也可以临时阻止攻击者,不过很有可能攻击者将找到那个东西的地址又继续命令他的肉机去下载,但是你把这些东西到处移动也可以阻止他。
恶意攻击者的另一种耗费连接的攻击手法就是频繁的访问你服务器上的某个服务,这个服务也许是不常用的,如果你发现攻击者正试图访问你很少使用的服务,那么停止那个服务(至少如果攻击持续你就得这么做)。尽可能少的的运行服务也是很重要的,并且在拒绝服务攻击的时候转换服务(比如转换FTP)。
最后一种方法,就是利用对您服务器上正在运行的某个存在安全问题的软件进行攻击。
保持您的计算机系统经常更新是很重要的(我已经唠叨好多次了),因为拒绝软件的服务漏洞是源源不断的,就算是象Apache的web服务器软件也一样经常爆洞。最好您能订阅一份象Bugtraq这样的安全邮件,这样你就可以时刻了解最新的安全漏洞信息了。
攻击者亲密接触:
很多人放任DDoS攻击发生并且在过后也不对攻击进行分析,如果你被攻击了,那么追踪攻击者以及分析他们的攻击目的是很有必要的,因为这些攻击者通常都是一些脚本小子,如果你对他们使用的工具有所了解的话,很容易沿着足迹追踪到他们,下面就是追踪攻击者的一些常用步骤。
1.看看DoS攻击是来自什么地方,你很可能注意到攻击是来自上千个IP地址,而且很多地址都是静态的,因为这些肉机都保持着ADSL连接。而这些肉鸡是不会伪造包头的IP地址的,所以你找到的IP地址是正确的,使用Whois查询几个你找到的IP,并且和他们的ISP取得联系,然后通过他们找到肉机的主人,或者是让ISP通知肉机的主人来联系你。
联系到肉机的主人后,你可以帮助他来找到安装在他机器上的DoS攻击傀儡终端,这个可以简单的通过告诉他安装一个反病毒软件来找出来,然后让肉机的主人把那个傀儡终端发给你。
2.你现在拥有这个终端了,一个曾经被利用来攻击你的服务器的终端,不过现在还不是找凶手的时候,你现在需要如下的工具来辅助你追凶。
一个包嗅探工具 (我推荐ethereal.com)
你得到的攻击傀儡终端
一台感染了这个终端的机器
Netstat或者类似的工具(可选)
IRC客户端
好的,现在你用你得到的傀儡终端感染你的机器,最好先断开网络。现在启动Ethereal,开始嗅探你计算机发出的包,如果你不知道如何使用Ethereal,这里有很多教程:
[url]http://www.ethereal.com/[/url]
现在把你的计算机连接到因特网,不的包嗅探器将会显示程序访问网络的情况和他们发送的数据包,我建议你不要运行其他的网络程序,尽量保持系统的洁净。
现在你会看见这个终端去连接IRC服务器并且发送密码,而且可以看见这个终端连接到什么地方并且发送了什么东西,现在你仔细查找一些类似URL或者是静态DNS的信息,现在你将拥有IRC服务器的地址和登录密码,这些都是非常有用的信息。当然,嗅探工具也有可能得到一堆垃圾数据,因为一些终端可能会利些没用的信息去迷惑那些想追查攻击者的人,而且连接的地点也可能是乱七八糟。我的一个朋友曾经想试图通过傀儡终端追踪攻击者,但是嗅探器提示他这个终端竟然跑去下载一个.swf文件,很有可能就是这个终端在试图迷惑我的那个朋友。
我也曾经发现有的时候DoS终端会去下载一个包含需要连接的IRC地址信息的.txt文件,如果是这样你真是太幸运了。因为我们这一步要做的就是找出txt文件并且下载他,然后在里面找到IRC服务器的信息。有的时候,终端可能会去下载一些.jpg文件,然而这些文件可能象txt一样包含了IRC服务器的信息在里面,只要你用记事本(Notepad)打开这些文件就会发现一些有趣的信息在里面。
经常也许你都不需要嗅探软件就可以找到信息,你可以等待终端和IRC服务器建立联系后,使用一些类似Netstat(Windows自带)的程序去查看你的TCP/UDP连接,然后查看连接到IRC服务器的那一条就可以了,默认的IRC连接是建立在6667端口的。
3.现在你拥有傀儡服务端的信息了,恭喜,现在可以切断傀儡终端的连接,在你登录到IRC之前我建议你先在终端上找找还有什么有用的信息,如果没有,那么现在你就可以把它删除了。你可以使用反病毒程序清除它,如果你搞不定可以直接和一些反病毒公司取得联系:
Kaspersky(卡巴斯基):
[url]http://www.kaspersky.com/contacts[/url]
Trend Micro(趋势科技):
[url]http://subwiz.trendmicro.com/SubWiz/UndetectedMalware-form.asp?TMsessionid=F1862F527EDA4DDEAF07CC9154AFB956&proc=7[/url]
H+BEDV (AntiVir):
[url]http://www.free-av.com/p_w_picpaths/buttons/contact.htm[/url]
Panda Software(熊猫杀毒):
[url]http://www.pandasoftware.com/about/contact/[/url]
当你把傀儡终端的样本送到反病毒公司后,那么你已经完成了大部分了,当你把病毒样本交给反病毒公司的同时,你应该非常礼貌的询问他们是否可以向你提供该病毒的详细信息,这样他们就很有可能回复你并且告诉你这个终端的一些信息,也许是关于IRC服务器或者更多。如果你之前自己什么信息也没找到,这个时候反病毒公司正好帮了大忙。
现在反病毒公司已经可以检测这个傀儡程序了,这样就会促使攻击者的肉机很快消失。因为很多肉机是装了杀毒软件,但是由于病毒数据库里没有这个资料,所以检测才失败的。所以,把傀儡终端的样本发送到反病毒公司是使脚本小子计划失效的最好方法。
Example: Agobot bot commands
现在如果你得到了反病毒公司的回复,他们很有可能告诉你这是某个病毒或者DoS傀儡终端的变种(经常这样),那么这个终端的使用方法将会和原版是通用的,所以现在你需要做的就是在google上搜索他的命令
例如:Agobot bot commands
你将会得到很多信息,找到有关这个终端的信息,现在就是你登录到IRC服务器的时候了,启动IRC客户端并且连接到DoS终端所用的网络,并且键入
/join #channel password
进入后你将看见在IRC里有很多同样的肉机终端连接着,显示的情况会比较类似如下的模式
Bot1
Bot2
……
现在,把你的名字修改成类似Bot1061的样子
进入后,你就一直在那挂着,若干时间之后这些傀儡的主人,也就是攻击你的人进来了,这臭小子绝对不会发觉你在角落窥视他。如果你想龌龊一把,那么你可以通过更新傀儡终端使用的IRC隧道来抢走他的肉机,当然你也可以发送一个卸载命令(极少数的攻击程序有这种命令)让他的肉们彻底解放。
他要是还老攻击你的服务器,只要你愿意,你可以将这丫的一举一动都记录下来并且用于日后恐吓他。
尾声:
在看完这篇文章后,您应该对什么是拒绝服务攻击、怎样对抗拒绝服务攻击以及怎样追踪凶手有了大概的了解了。
拒绝服务攻击一旦发生是很难阻止的,最好的方法其先决条件就是不要让恶意的攻击着掌握肉机,所以作为一个网络管理员,您应该确保您的网络里没有计算机被DoS蠕虫感染或者是没有机器被装傀儡终端成为攻击者的傀儡。