导读-- 这一节的目的是讲述Naptha攻击的基本结腹,以便研究者可以验证我们所说的∶这样的攻击是可能的而且应当被相当认真的对待......
Naptha工作原理:
===============
这一节的目的是讲述Naptha攻击的基本结腹,以便研究者可以验证我们所说的∶这样的攻击是可能的而且应当被相当认真的对待。当然以前在这方面已经有人做过一些研究,但还没有人发布类似的工具,它能使目标主机处在任一TCP连接状态(例如"ESTABLISHED"和"FIN-WAIT-1"等等),并可以使用一种多
组件体系(允许在不同的主机上发起攻击)Naptha攻击可以通过分布式的方式来实现,因此使其变得更为有效。
攻击的第一部分要从一个伪造IP地址的所有可能端口向目标主机发送一系列的SYN报文。如果考虑单个攻击的情况,这个程序在同一主机上的多份拷贝可以同时被用来攻击不同的主机,也可以使用多台主机攻击单一目标。这听起来像是一种SYN Flood攻击,实际上并不是这样的。
第二部分需要运行在刚才伪造IP所在的局域网中。程序首先确保
路由器的ARP表中有这台"幻影主机"(就是伪造的IP地址)。接下来,它会在混杂模式下监听从目标主机发往"幻影主机"的报文。这个程序会使用合 的标志以及序列号来响应那些报文。例如,它监听SYN/ACK报文,然后发送ACK报文,它也可以在报文中设置FIN标志,以便让连接处于FIN-WAIT-1状态。为了让连接存活时间更长,它也会监听某些定期发送的数据报文或者'keep alive'(确保连接存活)的报文,然后发送ACK报文回复。单个攻击程序可以同时攻击多个目标主机。
使用'幻影主机'是为了让跟踪攻击来源更为困难。
为了实现在资源耗费上的不对等,这样的攻击程序必须不能在攻击主机的内核中设置任何的TCB(传输控制块)。这有助于保证攻击者的活动不会收到攻击主机系统内核限制的束缚。另外客户端程序进程的数目应当不会随着连接数目的增加而增加。Naptha通过完全避免使用系统的TCP/IP堆栈而是自己腹造raw socket报文来实现上述要求。事实上,在进行高速的Naptha攻击时,所受到的限制更多的是来自
网络带宽而不是攻击主机的资源。
Naptha也支持对连接速率的限制。在某些情况下,连接可以被高速建立,目标主机上会被快速打开成千上丌的端口,在连接超时之前所有的资源就被耗尽了。而在另一种情况下,连接也可以以一种较慢的速率建立,以避免触发目标主机上(或
防火墙)的SYN Flood保护机制。
为了完成有效的DoS,所要求建立连接的数目以及速率依赖于一些因素。不同的
操作系统对连接数目,打开文件数目,进程使用
内存等有不同的限制。不同端口上运行的应用程序也有自己的资源控制等级。有些应用程序为每一个连接开启一个新进程来处理。系统的CPU速度以及内存大小也影响它对Naptha攻击的抵抗能力。最后网络本身也会对攻击造成一定影响。
总之,Naptha攻击表明了资源耗尽攻击的严重性。针对这个问题,还没有一个显而易见的解决方法。下面的部分只是提供了一些改进的思路。