DOS攻击之Synflood攻击

    本文章记录大三网络信息安全课做过的一个小攻击实验,利用TCP三次握手原理进行洪水攻击,分享给大家!切勿用于非法之用,虽然本实验可能还没有能攻击到服务器崩溃的能力...

1.攻击原理

    利用代码构造大量不存在的伪源地址,向攻击目标主机不断发送syn包请求建立连接,服务器为该连接分配资源并且回复Ack确认包,并等待客户确认。

    由于源地址是伪造不存在的地址,服务器无法收到客户端的Ack确认包。服务器保留着半连接TCP连接状态并且占用着资源,伪造的syn包将占用未连接队列。

    当正常的主机发送syn包请求连接时,正常的syn包将被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。合法用户无法完成三次握手建立起TCP连接。

                                            DOS攻击之Synflood攻击_第1张图片

2.代码解读

思路:伪造IP地址和TCP连接的SYN报文,调用接口sendto()通过套接字进行发送给目标主机。以下为重要函数体介绍:Unsigned short ip_sum(add,len):计算HTTP和TCP报文的校验和

Unsigned long getaddr(char * name):DNS查询IP地址,调用gethostbyname(name)函数

Void send_tcp_segment(struct iphdr * ih,struct tcp *ih,struct tcphdr *th,char *data,int dlen):发送TCP报文,通过调用sendto()函数调用套接字进行发送

Unsigned long spoof_open(unsigned long my_ip,unsigned long their_ip,unsigned short port):根据HTTP报文格式进行伪造HTTP报文和TCP报文;

3.实验介绍 

(1)操作环境

平台:Kali linux终端

编译语句:gcc –o syn syn_flood.c –lpthrea

                 ./syn

(2)攻击检测

A.在本机上查看wireshark中TCP抓包情况,若查看到本机大量TCP报文发送,则表明发送报文成功;

B.在目标主机上查看wireshark中TCP抓包情况,若查看到本机接收到大量TCP报文,则表明攻击达到效果;

C.查看云服务器CPU使用率,若查看到CPU率明显高于平时,则表明攻击成。

4.结果分析

购买阿布云服务器,启用代码攻击,在云服务器的控制台查看到在攻击时该服务器的CPU率如下图,采用Hping3工具与本代码攻击效果作对比:

                                      DOS攻击之Synflood攻击_第2张图片

A.由此可见,代码攻击与带宽有关系,在带宽高的情况下,CPU率大;由于校园网带宽限制,我们无法在大带宽下测试,但在带宽大时,我们可以使该服务器崩溃。

B.由图可见,在代码攻击和hping3工具下工具仍有差距,差距维持在5%左右。

代码放于博客资源:synflood攻击代码

你可能感兴趣的:(DOS攻击之Synflood攻击)