利用原始套接字实现一个TCP SYN flooding 程序

实验要求

  1. 客户端不断向攻击端发送SYN连接请求
  2. 客户端在发送数据时,通过源地址随机地址的方式隐藏自己的IP地址
  3. 检验:在shell下通过“netstat -tn”检查syn_recv连接数检验自己的程序是否成功

实验环境

Red Hat 9

代码

利用原始套接字实现一个TCP SYN flooding 程序
利用原始套接字实现一个TCP SYN flooding 程序
利用原始套接字实现一个TCP SYN flooding 程序
利用原始套接字实现一个TCP SYN flooding 程序
利用原始套接字实现一个TCP SYN flooding 程序
利用原始套接字实现一个TCP SYN flooding 程序
利用原始套接字实现一个TCP SYN flooding 程序

运行

  1. 首先查看目标机子有哪些开放端口,由于本次实验利用RedHat 9为目标机,因此通过命令netstat -tn查看,结果如下,IP为192.168.xxx.xxx,可见只开放22号端口
    利用原始套接字实现一个TCP SYN flooding 程序
  2. 运行泛洪攻击程序./synflooding 192.168.xxx.xxx 22,结果为攻击机端使用随机假IP向靶机不断发送数据包
    利用原始套接字实现一个TCP SYN flooding 程序
  3. 在靶机端开一个终端,输入命令netstat -tn查看在被攻击状态中的网络连接情况,发现收到大量来自8900端口的SYN数据包(在程序中指定攻击端的端口为8900)
    利用原始套接字实现一个TCP SYN flooding 程序
  4. 再查看已建立的连接数,由于查资料知Red Hat 9的最大连接数为769,可见泛洪攻击已经导致靶机达到最大连接数。
    利用原始套接字实现一个TCP SYN flooding 程序
  5. 由于以上程序是在物理机上的Xshell里运行,因此不好观察CPU的消耗情况,因此又直接在虚拟机Red Hat里运行,清晰地观察到CPU被全部占用,达到泛洪攻击的目的。
    利用原始套接字实现一个TCP SYN flooding 程序