本文章记录大三网络信息安全课做过的一个小攻击实验,利用TCP三次握手原理进行洪水攻击,分享给大家!切勿用于非法之用,虽然本实验可能还没有能攻击到服务器崩溃的能力...
1.攻击原理
利用代码构造大量不存在的伪源地址,向攻击目标主机不断发送syn包请求建立连接,服务器为该连接分配资源并且回复Ack确认包,并等待客户确认。
由于源地址是伪造不存在的地址,服务器无法收到客户端的Ack确认包。服务器保留着半连接TCP连接状态并且占用着资源,伪造的syn包将占用未连接队列。
当正常的主机发送syn包请求连接时,正常的syn包将被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。合法用户无法完成三次握手建立起TCP连接。
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 <IPaddress><port>
(2)攻击检测
A.在本机上查看wireshark中TCP抓包情况,若查看到本机大量TCP报文发送,则表明发送报文成功;
B.在目标主机上查看wireshark中TCP抓包情况,若查看到本机接收到大量TCP报文,则表明攻击达到效果;
C.查看云服务器CPU使用率,若查看到CPU率明显高于平时,则表明攻击成。
4.结果分析
购买阿布云服务器,启用代码攻击,在云服务器的控制台查看到在攻击时该服务器的CPU率如下图,采用Hping3工具与本代码攻击效果作对比:
A.由此可见,代码攻击与带宽有关系,在带宽高的情况下,CPU率大;由于校园网带宽限制,我们无法在大带宽下测试,但在带宽大时,我们可以使该服务器崩溃。
B.由图可见,在代码攻击和hping3工具下工具仍有差距,差距维持在5%左右。
代码放于博客资源:synflood攻击代码