课堂实验

实验环境准备

虚拟机设置

  • 准备两台虚拟机:
    • 攻击机:Kali Linux (内置hping3 和 nmap )
    • 靶机:Windows XP

靶机服务配置
在Windows靶机上,将nginx文件夹放到C盘
打开命令行,进入 C:\nginx1.1.0 路径,运行 start nginx 来启动HTTP服务

连通性验证

  • 在靶机上,打开浏览器访问 localhost127.0.0.1,应能看到nginx欢迎页面 。
  • 在攻击机和靶机上分别使用 ifconfig / ipconfig 查看各自IP地址 。
  • 在攻击机上,ping靶机IP,确保网络互通。
  • 在攻击机上,打开浏览器访问 http://[靶机IP],应能看到nginx欢迎页面 。

查看IP

扫描靶机开放端口

端口 80/tcpopen(开放)的,并且正在运行 http 服务

靶机上打开localhost验证

ping通

攻击机上打开浏览器访问靶机

SYN Flood 攻击

1
sudo hping3 -S -p 80 -a 192.168.130.99 --flood 192.168.130.143

kali中访问网页失败了

ping的延迟大大增加

windows XP被攻击时直接卡死。因此停止攻击后再查看Windows XP任务管理器。看到被攻击时的CPU占用率显著提高

wireshark抓包

  • Source (源地址): 192.168.130.99 。这是用 -a 参数伪造的IP地址。
  • Destination (目标地址): 192.168.130.143。这是靶机IP。
  • Protocol (协议): TCP
  • Info (信息): [SYN]。发送的全都是SYN请求包
  • Time (时间): 时间戳,10.0995..., 10.0996...,数据包之间的时间间隔极其微小。

发送数据包的速度快到连源端口号都来不及换了,只能不断重用。

SYN Flood原理

  1. 攻击:攻击机(Kali)发送海量伪造源IP的SYN包到靶机(Windows XP)。
  2. 靶机响应:靶机收到SYN后,会分配资源来准备建立连接,并向那个伪造的IP回复一个 SYN-ACK 包。
  3. 资源耗尽:因为源IP是伪造的,靶机永远等不到来自那个IP的第三次握手。但靶机并不知道,它会傻傻地为这个“半开连接”保留资源,并进行重试。
  4. 拒绝服务--flood 攻击瞬间发送了成千上万个这种请求,靶机的“半开连接”队列被迅速填满,系统资源被耗尽,最终导致系统卡死,无法处理任何新的连接请求。

UDP Flood 攻击

执行攻击:使用 hping3 发送 UDP 洪水。我们随便选一个端口,比如 53 (DNS)

1
2
3
4
5
6
# --udp 表示使用UDP协议
# -p 53 目标端口为 53
# -a 192.168.130.99 (继续伪造源IP)
# --flood (同样使用洪水模式)

sudo hping3 --udp -p 53 -a 192.168.130.99 --flood 192.168.130.143

wireshark抓包

  • Source (源地址): 192.168.130.99 (伪造的IP)。
  • Destination (目标地址): 192.168.130.143 (靶机IP)。
  • Protocol (协议): UDP
  • Info (信息): ... 53 Len=0。正在向靶机的 53 端口发送长度为 0 的 UDP 包。
  • Time (时间): 同样,时间戳 ...4960..., ...4961..., ...4963... 间隔极短

延迟高达100ms以上

一直转圈,刷新不出来

原理对比

  • SYN Flood (状态耗尽攻击)
    • 原理:通过发送海量伪造的 SYN 包,迫使靶机为每一个包创建“半开连接”状态,并分配内存。
    • 目标:耗尽靶机的连接状态表 (connection table) 或 TCP 队列,使其无法处理新的、合法的 TCP 连接。
    • 证据:抓到的满屏 [SYN] 包。
  • UDP Flood (带宽/资源耗尽攻击)
    • 原理:通过发送海量的 UDP 包,不关心状态,只为塞满靶机的网络带宽。
    • 目标:当带宽被垃圾数据占满时,合法的网络包(如 ping 包或 http 请求)就无法通过了。此外,系统也需要花费 CPU 资源去处理这些涌入的 UDP 包(检查哪个端口、哪个程序在监听),最终耗尽CPU 和带宽资源。
    • 证据:抓到的满屏 UDP 包。