一种SYN Flood DoS攻击工具的实现
2014-02-09潘鹏志
潘鹏志,胡 勇
(四川大学电子信息学院,四川成都610065)
一种SYN Flood DoS攻击工具的实现
潘鹏志,胡 勇
(四川大学电子信息学院,四川成都610065)
为检测目标主机是否存在DoS漏洞及承受DoS攻击的能力,在Linux平台上实现一个基于SYN Flood的DoS攻击工具。首先,介绍SYN Flood攻击原理。然后利用原始套接字结合IP欺骗技术,实现SYN Flood攻击报文的构造和发送,实现了基于SYN Flood攻击工具synAttacker。最后,利用synAttacker进行测试,并对测试结果进行分析。测试结果表明synAttacker能够进行有效的SYN Flood攻击,可以作为DoS渗透攻击工具。
SYN Flood攻击 IP欺骗 渗透攻击
0 引 言
SYN Flood攻击是当前最流行的DoS与DDoS攻击方式之一[1],具有实现简单、使用方便、追溯攻击源[2]困难等特点。据绿盟正式发布的《2012绿盟科技威胁态势报告》[3]显示,TCP SYN Flood占DDoS攻击总数的28.9%仅次于HTTP Flood居第二位,因此认识和了解SYN Flood攻击的原理和具体实现,对于有效识别和防范[4]此类攻击具有重要意义。
有许多网络测试工具如HPING[5],HGod[6]通过配置相应的命令选项可以发送特定格式的数据包,间接实现SYN Flood攻击,但是需要使用者非常熟悉各个命令的含义及命令之间的组合,对渗透测试人员来说不易使用与掌握。文献[7]在Windows平台上实现SYN Flood攻击测试工具,由于Windows XP SP2之后限制了原始套接字的使用,用户不能构造伪造源IP地址的数据包,发送数据包需要借助Winpcap,libnet之类第三方库,程序实现复杂、易出错及不易调试。文中描述了一个基于Linux平台、利用原始套字并结合IP欺骗技术[8]实现的专门进行SYN Flood渗透攻击工具synAttacker,在真实网络环境中的测试结果表明synAttacker可以检测目标主机是否存在DoS安全漏洞,具有功能专一、操作简单、不需要借助第三方库程序实现简单、效率高等特点,可以作为一种DoS渗透攻击工具。
1 SYN Flood攻击原理
1.1 TCP建立连接时的三次握手
TCP是一种面向连接的、可靠的传输层协议[9]。客户端C和服务器端S在传输数据之前首先要通过“三次握手”建立连接接,正常“三次握手”过程如下:
第一次握手:客户端C向服务器端S发送一个含有SYN标志的连接请求报文,表示请求与服务器建立连接。
第二次握手:服务器端S收到SYN包之后,放入半连接队列中,并分配资源,然后构造含有SYN+ ACK标志的响应包发送给客户端,表示已经接受客户端请求,并等待客户端的响应。
第三次握手:客户端C收到服务器端S返回的SYN+ACK报文,向服务器端S发送含有ACK标志的报文,服务器端收到ACK报文后,“三次握手”完成,连接正式建立。
1.2 SYN Flood攻击原理
在上述“三次握手”过程中,服务器端有两个重要的处理阶段[10]:①第一次握手中,服务器每收到一个连接请求报文,就将其放入半连接队列,并分配资源;②第二次握手中,服务器端发送SYN+ACK报文之后,若在规定的超时时间之内未收到客户端响应的ACK报文,服务器端启用重传机制,向客户端重传SYN+ACK报文,直到收到客户端的响应报文或达到服务器端设置的重传次数为止。
SYN Flood攻击利用上述两个处理机制:恶意攻击者向被攻击的服务器端在短时间内发送大量伪造源IP地址且仅含有SYN标志的TCP连接请求报文。一方面,大量的请求报文会使服务器端半连接队列迅速溢出,无法响应或延迟响应正常合法的连接请求,并耗费大量系统资源(如带宽、CPU及主存储器等);另一方面,因IP地址伪造服务器端永远收不到客户端的响应报文,服务器端将不断重传SYN+ ACK报文,将耗费大量系统资源及占用大量的网络带宽。
2 实现原理及流程
根据以上分析,要实现SYN Flood攻击需要完成以下两个工作:一是构造含有伪造源IP地址的TCP连接请求数据包;二是将构造的数据包大量发送到受害主机。synAttacker攻击测试工具在Linux平台上利用原始套接字,通过设置IP_HDRINCL套接字选项和调用sendto();函数分别实现上述要求的功能。synAttacker工具实现流程如图1所示。
图1 实现流程Fig.1 Implementation process
3 关键技术及实现
3.1 创建原始套接字
Linux系统上调用socket(domain,type,protocol);函数,并且指定套接字类型为SOCK_RAW来创建原始套接字,直接使用原始套接字的系统调用实现数据包的发送,与借助第三方库如WinPcap相比,具有实现简单、执行效率高、程序清晰易读及扩展性好等特点。代码如下:
sendSock=socket(PF_INET,SOCK_RAW,IPPROTO_TCP);
3.2 设置套接字选项
调用setsockopt();函数设置IP_HDRINCL套接字选项,实现自己构造IP首部和TCP首部的功能。代码如下:
3.3 构造攻击数据包
实现SYN Flood只需要设置TCP首部中SYN标志,不需要附带应用层数据,许多实现像HGod默认附带随机的应用层数据,增加了数据包长度降低了吞吐量,因此为提高传输效率文中只设置TCP报文首部中的SYN标志位,没有构造应用层数据。为隐蔽攻击方,躲避追踪,文中借助random();函数生成随机伪IP源地址。实现如下:
1)设置源IP地址为随机伪地址,实现源IP地址的伪造。代码如下:
2)设置TCP首部SYN标志位为1,构造TCP连接请求数据包。代码如下:
3.4 发送数据包
将3.3构造的攻击数据包放入套接字的发送缓冲区,调用sendto();函数向目标主机发送数据包,实现SYN Flood攻击。代码如下:
while(1)//不断循环发送数据包
4 测试结果及分析
利用synAttacker在图2所示的网络环境中进行SYN Flood攻击测试。PC1、PC2和PC3运行syn-Attacker充当攻击者,S基于80端口提供HTTP服务充当受害者。
图2 测试环境Fig.2 Testing environment
4.1 测试流程及结果
在PC1、PC2和PC3上运行synAttacker攻击目标主机S的80端口,通过记录并对比攻击前和攻击过程中攻击机PC1、PC2和PC3以及受害主机S上的资源使用情况来验证用synAttacker进行的SYN Flood攻击是否有效。观察记录的项目包括:
1)CPU使用率。
2)TCP活动连接数目,通过netstat-ano-p tcp命令查看TCP连接状态及数目。
3)网络使用率。
4)内存使用率。
5)Web访问情况,测试PC3可否通过浏览器访问S的Web服务器。
受害主机S和单台攻击机上各种资源使用情况分别如表1和表2所示。
表1 受害主机状态Table 1 Status of victim host
表2 单台攻击机状态Table 2 Status of single attacker
4.2 结果分析
由于攻击机不断向受害主机发送大量伪造源IP地址的TCP SYN报文,导致受害主机S一方面不断地接收处理SYN报文并维护大量处于SYNRCVD状态的TCP连接,另一方面不断向网络中发送大量SYN+ACK响应报文,导致TCP半连接队列迅速溢出、CPU资源和网络带宽被急剧占用,后果是不但系统本身运行缓慢还造成系统无法响应和处理正常的网络请求,而形成拒绝服务。通过表1和表2对比分析可以看出,使用synAttacket攻击者以较小的资源消耗代价(CPU使用率、内存使用率、网络使用率)可以达到使受害主机消耗大量的系统资源且无法提供正常服务的目的,说明synAttacker能够进行有效的攻击。
实验环境下仅三台机器的SYN Flood攻击就能够使目标主机消耗大量资源以及提供的服务(80端口HTTP服务)失效,可以推断,分布式拒绝服务攻击将对目标网络与主机造成更大的危害。
5 结 语
在分析SYN Flood攻击原理的基础上,实现了一种DoS渗透攻击工具synAttacker。测试结果表明,synAttacker作为一种SYN Flood DoS渗透攻击工具可以检测目标主机是否存在SYN Flood DoS安全漏洞。
[1]苏剑飞,王景伟.网络攻击技术与网络安全探析[J].通信技术,2010(01):91-93.
SU Jian-fei,WANG Jing-wei.Discussion on Network Security and Attack Techniques[J].Communications Technology,2010(01):91-93.
[2]王乃卫,郑慧英.针对DoS攻击的IP跟踪技术研究[J].信息安全与通信保密,2012(01):103-105.
WANG Nai-wei,ZHENG Hui-ying.Study on IP Tracing Technologies against DoS Attact[J].Information Security and Communications Privacy,012(01):103-105.
[3]绿盟科技.2012绿盟科技威胁态势报告[EB/OL]. (2013-03-01)[2013-05-20].http://www.nsfocus. com/report/NSFOCUS_Threats_Report_2012.pdf.
NSFOCUS Information Technology Co.Ltd.THREATS 2012 REPORT[EB/OL].(2013-03-01)[2013-05-20].http://www.nsfocus.com/report/NSFOCUS_ Threats_Report_2012.pdf.
[4]禹定臣,夏跃伟,刘金广.基Linux下DOS攻击防御防火墙的设计与实现[J],电子测试,2013(05):173-174.
YU Ding-chen,XIA Yue-wei,LIU Jin-guang.Design and Implement of DOS Attacks Defense Firewall on Linux [J].ELECTRONIC TEST,2013(05):173-174.
[5]李红,刘蕴红,董策舟.基于ZigBee技术的节水灌溉系统设计[J].现代电子技术,2010(23):207-210.
LI Hong,LIU Yun-hong,DONG Ce-zhou.Design of Watersaving Irrigation System Based On ZigBee Technology[J]. Modern Electronics Technique,2010(23):207-210.
[6]潘燕华,查春霞,张丙凡,等.SYN Flood攻击防御系统的研究与实现[J].科学技术与工程,2010(01):129-131.
PAN Yan-hua,CHA Chun-xia,ZHANG Bin-fan,et al. Research and Implementation of SYN Flood Attack Defense System[J].Science Technology and Engineering, 2010(01):129-131.
[7]吴栋淦,刘芳.基于WinPcap实现的SYN Flood攻击[J],福建信息技术教育,2011(01):20-23.
WU Dong-gan,LIU Fang.An implementation of SYN Flood Attack based on Winpcap[J].Fujian Education of Information Technology,2011(01):20-23.
[8]鲁恩铭,高建华.原始套接字网络嗅探器的实现与应用[J],计算机安全,2013(02):23-26.
LU En-ming,GAO Jian-hua.Implementation and Application of Network Sniffers based on Raw Socket[J].Computer Security,2013(02):23-26.
[9]谢希仁.计算机网络[M].北京:电子工业出版社,2013.
XIE Xi-reng.Computer Networks[M].Beijing:Publishing Houseof Electronics Industry,2013.
[10]李德全.拒绝服务攻击[M].北京:电子工业出版社, 2007.
LI De-quan.Denial of Service Attack[M].Beijing:Publishing House of Electronics Industry,2000.
潘鹏志(1987—),男,硕士研究生,主要研究方向为信息系统安全;
PAN Peng-zhi(1987-),male,graduate student,majoring in information system security.
胡 勇(1973—),男,博士,副教授,主要研究方向为信息系统安全,风险评估。
HU Yong(1973-),male,Ph.D.,associate professor,mainly engaged in information system security and risk assessment.
An Implementation of DoS Attack Tool based on SYN Flood
PAN Peng-zhi,HU Yong
(Electronic and Information College,Sichuan University,Chengdu Sichuan 610065,China)
In order to detect the DoS vulnerability and assess the DoS attack-withstanding ability of target machine,a SYN Flood-based attack tool is implemented on Linux.The principle of SYN Flood attack is discussed in this paper,and meanwhile a SYN Flood-based attack tool called synAttacker is realized by using IP spoofing and raw socket.Finally,test on SYN Flood attack with synAttacker is done,and the test results indicate that synAttacker is fairly effective in SYN Flood attack and can be used as a DoS attacking tool.
SYN Flood attack;IP spoofing;penetration attack
TP309
A
1002-0802(2014)01-0102-04
10.3969/j.issn.1002-0802.2014.01.020