阅读: 29,894
在DDoS的领域里面,攻击工具扮演着一个重要的角色,因为事实上的DDoS攻击,都是依靠攻击工具来实施的。因此对它们进行全面的分析,了解其产生的攻击类型、攻击实施的方式特点,将有助于采用更准确有效的清洗方法来对应攻击的威胁。
攻击类型
DDoS存在的原因主要是以太网TCP/IP协议栈的设计漏洞,即任何连接网络的主机都可以发送任意的IP报文,无须进行身份认证。IP网络是”尽力发送”网络,只要网络带宽足够大,就可以发送大量报文,攻击工具正是利用这特性得以存在和发展。
对攻击工具工作原理的分析,并不是去了解它们的实现设计,而是分析其所产生的攻击类型,深入了解攻击类型才是研究工具的核心。通常攻击分类可以从协议层面和被攻击目标的影响方式不同来划分。
协议层别划分的攻击类型主要有传输层攻击和应用层攻击。传输层攻击比较典型的代表就是SYN flood、ACK flood、UDP Flood,而应用层攻击的代表则是HTTP flood,DNS flood,SIP flood。另外一种是依据对目标服务器影响的不同方式来划分的攻击类型,它们分别是以消耗目标服务器资源和消耗网络带宽为目的的攻击。消耗目标服务器资源的攻击通常对协议栈原理有更深入的理解,比如SYN flood攻击,就是利用被攻击目标对SYN 报文分配资源没有释放的缺陷而达到目的,实施这种攻击无须大流量。以消耗目标服务器带宽资源的攻击则是以流量大取胜,比较典型的有UDP flood。从表1列出的工具可以看出,大多数工具是产生的攻击是以目标资源消耗型为目标,而且有能够模拟协议栈行为,比如完成TCP的三次握手。
攻击实施方式特点
攻击工具要体现出更大的威力,通常会设计一种良好的流量攻击方式,让攻击更难于防护和发现。比较常见的方式就是利用僵尸网络发起攻击。如果僵尸网络主机数量比较庞大,那么不管是在应用层还是传输层,对目标服务器的资源消耗和网络带宽的影响都会比较大。如果攻击工具能够模拟完整的协议栈,那么防护设备的防御难度越大,因为大部分防护技术都是基于协议栈的动态交互来实现身份认证的。比如SYN flood防护中的SYN COOKIE 算法,如果客户端能够完成正常3次握手,就可以突破这个算法。虽然大多数攻击工具能够完成传输层协议栈的模拟,但实现完整应用层协议栈的模拟则比较少,主要原因在于应用层协议比较复杂。 如表1所示的SlowHTTPTest能够完成正常的三次握手,然后利用应用层协议漏洞发起攻击。
总结起来攻击工具的发展有如下几个特点:
- 利用应用层协议栈漏洞发起的工具比较多。大部分集中在基于web业务的攻击,其它应用层协议如DNS、SIP相对比较少。
- 能够模拟协议栈行为包括应用层和传输层的攻击工具是未来发展的趋势,实现应用层协议模拟的防御难度会更大。
- 攻击工具已经逐渐朝更加隐蔽的方式,以能操纵更大规模的僵尸网络为目标方向挺进,比如DirtJumper。
- 基于应用层协议漏洞的攻击工具会越来越多,由于能够通过较少流量达到攻击目的,对业务的危害比较大。
攻击工具的防御
攻击工具的防御,一方面可以从基础设施的改进来缓解攻击影响,比如带宽扩容,增强服务器的处理性能、采用合理的网络部署结构等。另外一方面可以在网络边界出入口采用专用的防御技术。目前行之有效的防护方法主要有4大类:
1.动态挑战算法
模拟传输层和应用层协议栈行为,代替服务器回应数据报文,对正常的客户端发送挑战报文,只有完成挑战认证的客户端的流量才能放行。动态挑战算法比较常用的有SYNCookie, DNS Ncookie和SIP cookie。
2.多层次限速
基于各种粒度和层次,分别从源IP、目标IP、传输层和应用层session,对IP流量进行限制。这是对流量型攻击常用的防护方法,比如UDP Flood,ICMP Flood。
3.智能的访问控制
从三层到7层灵活的访问控制策略。从IP地址到7层应用层协议,比如HTTP协议,可对报文的URL,user-agent,cookie设置丢弃、信任和限速策略,而对DNS协议,则可对报文中QUERY名字、类型、RR记录设置类似策略。
4.行为分析和信誉机制
基于数据分析技术对IP行为和流量特征建模分析,建立通用信誉库包括IP、URL和文件信息,输出异常流量特征指纹,自动完成流量清洗。这对僵尸网络以及报文发送异常的攻击工具防护都非常有效,比如Slowloris Header。
虽然DDoS攻击方式在不断发生变化,但攻击的类型并不会发生质的改变,攻击工具对业务系统带来的最大威胁,并不在于新的工具名称的出现,而在于尚未发现而且能够被利用的已知或未知协议漏洞。面对未来新工具的出现,准确把握好其产生的攻击类型以及攻击方式特点,并基于此采用反制措施能将攻击危害控制到最小。
工具名称 |
描述 |
攻击类型 |
LOIC |
LOIC是一款专著于web应用程序的Dos/DDOS攻击工具,它可以用TCP数据包、UDP数据包、HTTP请求于对目标网站进行DDOS/DOS测试,不怀好意的人可能利用LOIC构建僵尸网络。LOIC是用C#语言写的,这是一个C#新手的练手作品,靠GUI界面吸引了不明真相的小白们使用。由于程序设计上”有意或无意”留下的BUG导致” 一旦开始攻击在退出进程前无法真正停止攻击“,潜在增大了攻击效果。攻击手段主要是以无限循环方式发送大量数据,并无其它特色。针对单个IPAndroid平台下LOIC 程序主界面如下,攻击测试选取的是HTTP |
UDP/TCP/HTTP GET |
Xoic |
相对于LOIC的多平台(GNU/Linux, Windows, Mac OS以及Android),XOIC可运行的环境则少的多,仅支持win7以上的Windows平台。攻击方式上多了ICMP FLOOD。下面是作者列出的工具特色:和LOIC相比,工具主打的还是流量型攻击,不过相比前者增加了Testmode模式,可以测试攻击主机的性能。 另外,在实际的测试中发现了工具的一个小BUG。反编译后的关键代码如下: |
TCP/UDP/ICPM/HTTP GET |
HOIC |
HOIC是High Orbit Ion Cannon(高轨道离子炮)的缩写,一款用RealBasic开发的DoS工具。最初一些人使用LOIC进行DoS,后来这些人被捕了,另外一些人开发了HOIC以示抗议。(在工具的攻击包中,有一个说明:Brothers one of our aids has been arrested and detained for merely using the loic we must show them that this is a mistake) RealBasic是一种类似VB6的编程语言,可以生成在Windows、Linux、Mac OS上运行的应用程序。HOIC是完全开源的,zip包中的hoic.rbp是RealBasic源码HOIC会从目标URL从一个Array中随机抽取,Referer、User-Agent分别从一个Array中随机抽取,另有一些随机的HTTP Headers。所有内容都是可定制的,发送出去的HTTP请求有很多变种HOIC只能发动合法的HTTP攻击。HOIC的HTTP攻击报文内容是通过一个.hoic文件进行控制的,这个.hoic文件里可以添加多个目标URL、Refer、User-Agent等内容。HOIC的攻击报文会从这些目标URL、Refer等字段中随即抽取,组成一个http攻击报文发送.HOIC攻击实际是靠大量正常HTTP请求进行DoS,如果有基于某些阈值的异常行为检测方案,完全可以有效检测、阻断HOIC攻击。类似NSFOCUS ADS系列的专业DDoS防护产品完全可以应对HOIC攻击。 |
HTTP GET |
HULK |
HULK是一种web的拒绝服务攻击工具。它能够在web服务器上产生许多单一的伪造流量,能绕开引擎的缓存,因此能够直接攻击服务器的资源池。hulk的特别之处在于:对于每一个请求都是独特的,能够绕开引擎的缓存直接作用于服务器的负载。hulk使用的技术:源客户的混淆——通过一个User Agent的已知列表,每http一个请求的用户代理都是随机来自于已知列表。引用伪装——指向请求的referer是伪造的,要么指向主机自己,要么指向主要的已知站点。referer是产生请求的url。粘附性——使用标准的http请求去请求服务器,使用变化的的keep-alive时间窗保持连接建立不使用缓存——这是一个前提,向HTTP server请求no-cache,一个没有在背后cache service使用的server会呈现一个单独的页面。URL的独特组成——为了避免缓存和其他优化工具,HULK伪造了常见的参数名称和参数值,为了单一性,他们都是根据每个请求随机生成的,使得服务器就得处理每个事件的响应。 |
HTTP GET |
srDOS |
该工具在与服务端建立连接后,在等待服务端发送数据,然后才会发送自己的攻击报文,这也是为什么没有后续的攻击报文通过查看反汇编的代码发现,该工具里有https握手相关的攻击 |
TCPSSL |
DirtyJumper |
Dirt Jumper 是一个通过botnet发动DDoS 攻击的toolkit.整体来看,由Dirt Jumper及其变种程序发起的攻击呈上升态势。原因不仅仅在于程序的简单易用,同时地下产业链相对成熟,从而得以广泛传播。从攻防角度上讲,Dirt Jumper攻击并没有引入新的方式,采用了比较传统的网络层和应用层攻击手段,防护并不困难。 |
http gethttp postsyn flood |
Darkddoser |
通过僵尸网络发起的http 攻击 |
HTTP GET/POST/TCP/UDP |
Slowhttptest |
Slowhttptest是一个可以灵活配置的应用层攻击工具,它能发起诸如slowloris、Slow http post、slow read、slow range等工具实现的低带宽应用层拒绝服务攻击工具利用了http协议的一个特点——等待完整的http请求收到才会进行处理。如果一个http请求不完整,或者是在网络上慢速传递,http服务器会一直为这个请求保留资源等待它传输完毕。如果http服务器有太多的资源都在等待,这就构成了DosS |
HTTP |
sslhamer |
模拟僵尸网络的攻击行为,与客户端建立三次握手之后,发送大量的垃圾报文。Copyright by NSFOCUS |
TCP/SSL |
hyenae |
可以安装在linux和windows下的攻击发包工具,灵活指定IP和发包速率,并且支持TCP/UDP/HTTP等多种协议;支持IPv6 |
TCP/UDP/HTTP |
killemall |
这套攻击软件是用python编写完成,主要用来进行cc攻击。作者宣称可以绕过ADS设备的HTTP redirect、HTTP Cookie、Javascript、CAPTCHA(图片验证码攻击)防护算法该攻击工具对HTTP redirect、HTTP Cookie的绕过速度比较快;该攻击工具需要借助v8引擎才能绕过javascript防护,而v8引擎的安装比较复杂; 在绕过CAPTCHA的概率上来说,该攻击工具绕过ADS的概率还是比较大的,但由于需要预先生成数据库,耗时较大;一旦ADS更新了图片验证码,则该工具就不能再继续绕过;该攻击工具只能使用本地真实源ip进行攻击,不能伪造源ip; |
HTTP |
dossim |
Ddosim可以模拟几个僵尸主机 (局域网内随机IP地址)。 它创建完整的TCP连接到目标服务器. 在完成连接后, ddosim启动应用程序的对话与聆听 (如. HTTP服务器)ddosim是用C写的。Ddosim是通过发送报文、监听报文、回复报文这几个过程来模拟几个僵尸主机的。ddosim目前的攻击包括:(1)使用有效HTTP请求的DDoS(2)使用无效请求HTTP DDoS攻击 (类似的DC 攻击)(3 )DDoS攻击的SMTP(4)随机端口上的TCP连接攻击。 |
HTTP |
pyloris |
PyLoris是一个测试服务器的脆弱性和连接拒绝服务(DoS)攻击的脚本工具,用python语言编写。 PyLoris可以利用SOCKS代理和SSL连接,并可以针对如HTTP,FTP,SMTP,IMAP和远程登录等协议进行测试,这里主要关注HTTP攻击。PyLoric的http攻击是通过”request body”进行控制的,”request body”的内容可以自己修改。PyLoric首先和服务器建立连接,然后将”request body”里的内容拆分成一个字符一个字符的发送,每一个http报文只包含一个字符。 |
HTTP漏洞型 |
Slowloris header |
简单的来说是对HTTP服务器送出不完全的HTTP请求,并且试着让它保持不被HTTP服务器超时,如此一来HTTP服务器可开启的最大socket就会 满了,最后导致HTTP服务器无法提供服务。Slowloris是用perl脚本编写的。slowloris在这里又被称为slow headers,攻击截图如下: 攻击的数据包如下: 其基本原理是制造不完整的header。完整的http请求头结尾应该是“0d0a0d0a”,而但攻击工具只发送“0d0a”。然后以固定的时间间隔,反复发送随机的key-value键值对,迫使服务器持续等待(至超时)。最终通过不间断的并发连接耗尽系统的最大连接数直至服务端DOS。 切换至HEX显示如下: |
HTTP |
Slow read |
Slow read攻击简单说就是,通过调整TCP协议头中的window size来控制双方的数据流速率,尽可能长的保持单次连接的交互时间,直至超时。 要使这种攻击效果更加明显,请求的资源要尽量大,比如我这里的测试图片test.png,其大小为4M多。如果目标网站没有这么大的资源,但若其支持http_pipelining的话,可以采用在同一连接中多次请求同一资源的方法来增大返回内容。从捕获的数据包中可以看出,当请求 test.png资源时,客户端window size被刻意设置为1120字节。客户端缓冲区在被来自服务的数据填满后,发出了[TCP ZeroWindow]告警,迫使服务端等待。从交互开始到断开,单个连接耗费了14秒。捕获的数据: |
HTTP |
Slowlaris post |
Slow http post也称为Slow body。顾名思义,攻击的着眼点放在了发送内容的过程中。 攻击数据包: 切换至HEX显示如下: 可以看到在这种攻击中,http header数据已被完整发送(注意0d0a0d0a),只是将http header中content-length字段设置为一个很大的值(这里是8192),同时不在一个包中发送完整post数据而是每间隔10秒(此值攻击者可以调整)发送随机的key-value键值对。可以看出,任何可以接收http post请求的网站,都有可能遭受此类攻击。 |
HTTP |
torshammer |
Tor’s Hammer是一个能发起缓慢 post dos攻击的测试工具。Torshammer也可以运行在tor网络中(此时会假定您通过127.0.0.1:9050运行tor)。通过一台机器,Torshammer就可以kill掉大多数没有受到保护的Apache和IIS服务器:Kill掉Apache 1.X 和老版本的IIS,只需要启用~128个线程,kill掉Apache2.X和 新版本的IIS,需要启用~256个线程可以通过Torshammer 直接发起HTTP post攻击(不支持get), 也可以通过Tor网络发动攻击。Torshammer的HTTP post攻击是首先向服务器发送一个post报文请求,如图6-1,然后再发送一系列随机的字符串(分多个报文发送,每个报文包含两个字符)。 |
HTTP |
anonymous |
是一个工具集合,包含:HOIC,LOIC,DDOSIM,PYLORIS,SLOWLORIS,TORSHAMMER,SLOWHTTPGET |
N/A |
THC-IPV6 |
针对IPV6的攻击工具集合 |
|
kadiaoni |
此类攻击的原理是通过Post一个字节的字符,保持住服务器的连接不断开,直到耗尽服务器的资源。 |
HTTP |
glodeneye |
GoldenEye(最新版本为2.1)是一个主打应用层(http flood)攻击的工具,从Hulk项目发展而来,同Hulk一样它也使用python编写,支持多平台运行,攻击方式上支持http get 、http post和random。工具特色:– 支持KeepAlive 和 NoCache功能- 随机化的http header- 可定义的User-Agent列表(默认随机)- 支持Android(GoldenEye 4 Android)平台 |
HTTP |
DAVOSET |
最新版本为1.2)是一个perl脚本,有perl执行环境即可。与前面介绍的直连式的GoldenEye不同,它又被称之为Proxy Attacks,是借助有漏洞的、合法的第三方身份实施攻击而做到自身的隐藏,可以看作是更广泛意义上的反射攻击。而且Proxy Attacks可利用的反射点众多, 也使得这种攻击更加难以封堵。工具特色:- 利用代理发动攻击,一定程度上可以隐藏自身- 不定期更新可用的反射点- 反射点通常有较强的可交互性,容易绕过目标防护措施实施这种攻击最重要的是有众多可利用的反射点,攻击者可自己网络搜索,也可利用工具附带的完整列表。 |
Proxy |
R.U.D.Y |
R-U-Dead-Yet是一个HTTP post DOS攻击工具。它执行一个DOS攻击长表单字段,通过POST方法提交。 这个工具提供了一个交互式控制台菜单,检测给定的URL,并允许用户选择哪些表格和字段应用于POST-based DOS攻击。 |
HTTP |
THC SSL DOS |
通过SSL-RENEGOTIATION的漏洞耗尽服务器资源 |
SSL |
ZARP |
Zarp是采用Python编写的、类似MSF的一款网络攻击测试框架。工具采用模块化设计,集漏洞扫描、嗅探、DDoS压力测试于一身。Zarp主要接口是一个CLI驱动的图形界面,采用多层菜单,使用起来相当方便。目前运行平台只限于linux,同时在安装之前要确保系统存在python2.7.x、git以及scapy。程序执行界面。 |
TCP |