DOS攻击实验

实验目的

1.使用一种DoS工具进行验证;

2.运行抓包工具,对两种DoS攻击原理进行验证分析。

实验环境

1.两台虚拟机,一台攻击机、一台靶机,虚拟机的系统可以根据选择的Dos工具确定。靶机配置nginx服务器。

DoS工具参考:hping3(使用),LOIC、HOIC、XOIC

2.攻击机:kali linux 2022.3

靶机:windows xp

(使用仅主机模式)

软件:nginx1.1.0, hping3 3.0.0-alpha-2

实验过程与结果

步骤一:搭建实验环境并查看虚拟机信息

1.把nginx文件夹放到C盘,在C:\nginx1.1.0路径下通过start nginx命令开启靶机http服务

图1 nginx启动命令

图2 nginx启动结果

2.靶机浏览器访问localhost(或127.0.0.1),攻击机浏览器访问192.168.32.128(靶机IP),验证nginx已经开启。

图3 靶机访问localhost

图4 攻击机访问靶机IP

步骤二:攻击过程

1.先通过ipconfig/ifconfig命令查看攻击机和靶机的网络配置信息。

winxp:ip:192.168.32.128

kali:ip:192.168.32.129

图5 靶机网络配置

图6 攻击机网络配置

2.获得靶机的ip地址后,扫描靶机开启的端口(hping3可以扫描端口,或者使用nmap扫描)

1
nmap -Pn 192.168.32.128

图7 端口扫描结果

3.hping3 -h命令可以查看各项参数说明,也可以在附上的参考文档中查看。选择开启的端口,比如80端口,根据参考文档选择合适的参数,发送SYN/UDP包;构造命令:

1
sudo hping3 -I eth0 -a 192.168.32.129 -S 192.168.32.128 -p 80 -i u1000

图8 hping3攻击命令

攻击机使用浏览器访问靶机,观察网页是否仍可访问,或者查看攻击前后ping靶机的响应时延,从而验证攻击效果。同时运行靶机任务管理器,查看系统性能,感受DoS攻击对服务器的影响。

4.SYN Flood

(1)攻击原理:SYN Flood不会完成TCP三次握手的第三步,也就是不发送确认连接的信息给服务器。这样,服务器无法完成第三次握手,但服务器不会立即放弃,服务器会不停的重试并等待一定的时间后放弃这个未完成的连接,这段时间叫做SYN timeout,这段时间大约30秒-2分钟左右。若是一个用户在连接时出现问题导致服务器的一个线程等待1分钟并不是什么大不了的问题,但是若有人用特殊的软件大量模拟这种情况,那后果就可想而知了。一个服务器若是处理这些大量的半连接信息而消耗大量的系统资源和网络带宽,这样服务器就不会再有空余去处理普通用户的正常请求 (因为客户的正常请求比率很小),即服务器无法正常工作。

(2)命令操作

1
sudo hping3 -I eth0 --rand-source -S 192.168.32.128 -p 80 -i u1000 --flood

图9 SYN Flood攻击命令

图10 攻击前ping结果

(未进行DoS攻击前)

图11 攻击后ping结果

(进行DoS攻击后)

图12 靶机无法访问

(发现打不开了)

(3)可以看到DoS攻击前后ping靶机的time的变化,DoS攻击后time的时间大大增长,并且访问时间变慢。甚至靶机打不开界面。

5.UDP Flood

(1)攻击原理:攻击者利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。100k pps的UDP Flood经常将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪。由于UDP协议是一种无连接的服务,在UDP FLOOD攻击中,攻击者可发送大量伪造源IP地址的小UDP包。但是,由于UDP协议是无连接性的,所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。

(2)命令操作

先扫描开放的UDP端口

图13 UDP端口扫描

1
sudo nmap -sU 192.168.32.128

实施攻击

1
sudo hping3 --udp -s 6666 -p 123 -a 8.8.8.8 --flood 192.168.32.128

图14 UDP Flood攻击命令

图15 攻击前ping结果

图16 攻击前CPU使用情况

(未进行DoS攻击前)

图17 攻击后ping结果

图18 攻击后CPU使用情况

(DoS攻击后)

可以明显看到DoS攻击前后ping靶机的time变化,DoS攻击后time的时间大大增加,并且访问时间变慢,CPU使用增多,靶机已经打不开界面。

步骤三:运行抓包工具,根据抓包结果对DoS攻击进行验证分析

1.SYN Flood

用攻击机kali进行抓包,发现只有向靶机发送的大量包,收不到访问靶机80端口的返回包(靶机由于DOS攻击无法打开抓包),并且我们可以看到大量向靶机的SYN请求。也可以看到具体的TCP请求。

图19 SYN Flood抓包结果

图20 TCP请求详情

2.UDP Flood

用攻击机kali进行抓包,发现只有向靶机发送的大量包,收不到访问靶机80端口的返回包。(靶机由于DoS攻击无法打开抓包),并且我们可以看到向靶机的大量UDP请求。也可以看到具体的UDP请求。

图21 UDP Flood抓包结果

图22 UDP请求详情

分析比较两种攻击方法

1.原理:

UDP FLOOD攻击:攻击机向靶机同一端口发送多个UDP数据包,占用靶机资源,使靶机无法提供相关服务,从而使其与UDP相关的服务瘫痪。

SYN FLOOD攻击:攻击机向靶机发送SYN数据包,建立TCP连接后,一直不完成三次握手,即与靶机建立多个TCP连接使靶机的资源耗尽,从而使其与TCP相关的服务瘫痪。

2.攻击差别:

UDP FLOOD攻击个人理解是流氓攻击,一直占用资源,使靶机毫无还手之力。SYN FLOOD攻击当靶机有足够的资源进行回复时,还是可以访问其他网站的,即SYN FLOOD攻击不彻底。

实验总结

在这次实验中,我系统性地开展了针对拒绝服务(DoS)攻击的实践研究。通过使用hping3等网络工具,我们成功实施了SYN Flood与UDP Flood等类型的攻击,并深入观察了攻击对目标系统(Windows XP)产生的实际影响。

实验过程中,我通过持续监测靶机的网络延迟、系统资源占用率以及服务可用性,直观地验证了DoS攻击的破坏性效果。攻击期间,靶机的响应时间显著增加,甚至出现服务无响应的情况。借助Wireshark等抓包工具,我们清晰地捕捉并分析了攻击过程中的数据包交换细节,例如大量伪造源IP的SYN请求包,加深了对攻击流量特征的认识。

通过本次实验,我不仅掌握了DoS攻击的基本原理与实施方法,更重要的是学会了如何从防御者的角度识别和缓解此类威胁。这次实践极大地提升了我的网络攻防实战能力,并对未来如何有效保障网络服务的安全性具备了更深刻的理解。