拒绝服务测试工具


拒绝服务测试工具使用说明

  严正声明:
  本工具仅授权应用于合法的教学评估、辖区内操作系统或防火墙等安全产品的相关性能测试,请勿擅自用于任何非授权或非正当的用途。
  无论如何,使用本工具引发的、任何形式的民事及刑事后果由使用者自负,本工具作者不承担任何责任和义务(正如铁匠只是打刀,买刀者杀人偿命与铁匠无任何关系)。
  如果您不同意上述声明,请勿使用,并请即刻自觉关闭浏览器,谢谢合作。

  最新版本下载:中华经典网络军刀
  拒绝服务攻击(DoS, Denial of Service)可以在一定时间内大量消耗目标服务器系统资源并导致拒绝提供服务甚至引发系统崩溃。
  SYN Flood 拒绝服务攻击是指利用 TCP/IP 三次握手协议的不完善而恶意发送大量仅仅包含伪造的 SYN 握手序列数据包的攻击方式,该种攻击方式可导致被攻击计算机为了保持潜在连接而耗尽整个连接池。
  Land 拒绝服务攻击是指利用有缺陷的操作系统在处理源地址端口与目标地址端口相同的数据包时存在疏漏而进行的拒绝服务攻击方式。
  WinNuke 拒绝服务攻击的特征是目标端口通常为 53、113、137、138、139,而且设置 URGENT 紧急位。
  以上三种拒绝服务攻击方式都集成在 SYN For Windows 版本中。
  下载压缩包中提供两个版本的拒绝服务攻击测试工具,SYN4Linux For RedHat Linux 以及 SYN.exe For Windows 2000/XP/2003,均为命令行工具,适合于 Telnet 及隐藏管道使用,可对任何基于 TCP/IP 协议的操作系统实施攻击测试,这些操作系统包括但不仅限于 Unix/Linux/Windows/MAC OS 等等。
  其中,For Linux 版本仅能发送 SYN Flood 洪水攻击包,而 SYN For Windows 可以发送 SYN Flood/Land/WinNuke 攻击包,同时由于开放自定义 FIN/SYN/RESET/PUSH/ACK/URGENT 组合位并允许自定义 SEQ/ACK 序列号,因此用途可以无限扩展。

  SYN For Linux 语法如下:
  Usage: syn SpoofSourceIP AttackIP AttackPort [Packages] [Loops] [Sleep second]
  SYN For Windows 2000/XP/2003 语法如下:
  Usage: syn AttackIP [AttackPort] [SpoofSourceIP] [SpoofSourcePort] [Packages] [Loops] [Sleep second] [Flag] [#SEQ] [#ACK]

  上述语法参数中,[] 为可选参数,各参数含义如下:
  syn 表示本软件名称,不带参数或者必选参数不足,将显示上述语法。
  AttackIP 表示准备实施攻击测试的目标 IP 地址。
  AttackPort 表示准备实施攻击测试的目标端口,Windows 版可指定 0 表示动态递增端口。
  SpoofSourceIP 表示伪造的发送源 IP 地址,Windows 版可指定 0 表示动态递增源 IP 地址。
  SpoofSourcePort 表示伪造的发送源端口,Windows 版可指定 0 表示动态递增源端口。
  Packages 表示并发构造的 SYN 包数,默认为 1 个包。
  Loops 表示循环次数,默认为 1 次,每次循环时将随机产生伪造的起始 IP 地址。
  Sleep second 表示每一轮攻击后休眠等待的秒数,指定 0 表示不休眠连续发送。
  Flag 表示攻击标志位,有效标志为 FIN/SYN/RESET/PUSH/ACK/URGENT 之一或有效数字位组合(如 17 表示 ACK+FIN),缺省为 SYN。
  #SEQ 表示 SEQ 序列号,默认为零。
  #ACK 表示 ACK 序列号,默认为零。

  SYN For Linux 在 RedHat Linux 7.x 环境下编译(其它 Linux 环境未经测试),运行时需要具有 ROOT 权限。请将本软件上传到 Linux 系统任意路径,并将其属性设置为 chmod 500 syn,如果运行路径包含在 $PATH 中则可以直接在 # 提示符下输入 syn 运行,否则 cd 进入上传路径,执行 ./syn。
  SYN For Windows 适合于 Windows 2000/XP/2003 操作系统,命令行运行,运行时需要具有 Administrator 权限。

  典型攻击测试实例如下:

  C:\>syn 192.168.66.88 80 10.11.12.13 53 30000 10 2 syn 1234 5678

  SYN Flood Attacker
  Copyright(C)Noah Shi, http://www.ccview.net. All rights reserved.
  For educational purposes and Firewall test only!

  Flooding(2) 192.168.66.88:80 from 10.11.12.13:53 for 30000 packages at 1 times ...
  Flooding(2) 192.168.66.88:80 from 10.11.12.13:53 for 30000 packages at 2 times ...
   .
   .
   .
  Flooding(2) 192.168.66.88:80 from 10.11.12.13:53 for 30000 packages at 10 times ...

  Done!

  以上指令将对目标地址 192.168.66.88 的 80 端口每次发送 30000 个 SYN Flood 洪水攻击包,伪造发送源 IP 地址为 10.11.12.13 的 53 端口,连续发送 10 次,每轮攻击间歇 2 秒,同时伪造 SEQ 序列号 D2040000 和 ACK 序列号 2E160000。
  该次攻击测试可能导致目标系统拒绝服务(视环境而言),并且同时会由于虚假回应包的泛滥而波及到目标系统所在的网段以及网关服务器。

  为什么要伪造源 IP 地址?
  伪造源 IP 地址可以防止被追查,不过请注意,伪造的源 IP 通过网关时将被替换为网关真实 IP 地址,因此你的网关服务器将被暴露,所以请谨慎通过本地局域网发送攻击测试包。
  另一方面,只有伪造源 IP 地址才能造成最大的攻击测试力度。如果采用真实 IP 发出去,所有的攻击包流量最终将被 TCP/IP 三次握手协议回馈到自己的系统上来。另外,伪造源 IP 地址可以对目标系统以及伪造 IP 的真正属主进行双重打击。
  不过强烈建议采用肯定不可达的伪造源 IP 地址!因为任何可达的 IP 地址在收到被攻击目标的回应信号以后,将立即回应 RST 断开连接,被攻击目标同时也会释放连接。如果采用不可达或者很难在短时间内送达的 IP 地址则会让被攻击目标一直处于 SYN_RECV 等待状态,如果攻击包足够多、足够密集并且运用得当,那么目标系统将很难幸免。

  为什么要设置随机源 IP 地址和端口?
  随机和变化的源 IP 地址和端口可以让目标系统的防火墙无法有效进行 IP 和/或 Port 过滤。

  目标端口如何选择?
  只要是防火墙没有监听阻断或者有选择允许通过的端口都可以测试。至于哪些属于防火墙阻断端口可以用扫描器测试,如果端口属于有选择性的通过,那么利用伪造的貌似合法的 IP 地址可以达到攻击测试目的。
  通常说来,HTTP 的 80 端口总是可以利用的。
  Windows 系统的 135/137/138/445 等端口也可以列入重点测试评估范围。
  另外,SMTP/POP3、mySQL 数据库 3306 端口以及其它释放比较慢的或者被安全公告明确描述的存在安全隐患的系统端口也可以根据具体情况加以测试。
  根据经验,对于 Windows 系统来说,如果目标系统没有安装合适的防火墙,那么 445 端口的打击将是致命的;对于 mySQL 3306 端口以及其它数据库连接端口,由于这些连接端口可以承受的瞬间并发连接数目是有限的,因此高密度的打击将十分有效,考虑到有些数据库应用系统采用的是本地 localhost 或者 127.0.0.1 调用方式,因此伪造源 IP 设定为 127.0.0.1 会有点意思。
  顺便说一句,可变伪造源端口实际运用中可能会通过目标系统从内部让网关防火墙频频报错而应接不暇,极端应用条件下可能导致防火墙系统崩溃。

  是否应该在每次攻击测试后短暂休眠?
  一般说来,不休眠实施连续攻击的效果会比较好,但是在某些特殊情况和某些特殊端口应用中,休眠一定的时间可能会更有效。

  为什么要伪造 SEQ/ACK 序列号?
  精心伪造的 SEQ/ACK 序列号可能让目标系统丢失特定连接(当然这需要事先捕获和计算通讯序列号,并且可能需要视不同环境的握手机制而灵活处理)。