zoukankan      html  css  js  c++  java
  • 基于netwox/netwag 工具的网络协议攻防实验

    实验目的:

    理解基于网络协议的攻击原理, 掌握一些基于网络协议攻击的方法, 掌握 netwox/netwag 的使用方法。 实验环境: netwox/netwag 工具, wireshark 工具, Telnet 服务器, Telnet 客户端

    实验准备:

    1. 安装 netwox/netwag 工具:先安装 ActiveTcl,再解压安装

    2. 安装配置 Telnet 服务器, Telnet 客户端

    实验内容:

    1.  使用 netwox/netwag 工具伪造 TCP 包并进行抓包分析

    2. 使用 netwox/netwag 工具对 Telnet 服务器进行 SYN flood 攻击,并进行抓包分析

    3. 使用 netwox/netwag 工具对 Telnet 服务器进行 TCP RST 攻击,并进行抓包分析。

    实验步骤记录:

    实验准备:安装 Activetcl 和Netwox/Netwag工具

    实验正式进行:

    1. 使用 netwox/netwag 工具的方法38伪造 TCP 包并进行抓包分析

    2.使用 netwox/netwag 工具对 Telnet 服务器进行 SYN flood 攻击,并进行抓包分析

    (1)在本地机器上配置激活 Telnet 服务器与 Telnet 客户端,以自己的学号创建新的用户;

    1.1) 打开 Telnet 功能:控制面板-程序-程序和功能-打开或关闭 Windows 功能,勾选 Telnet 服务器, Telnet 客户端。

    1.2)启动本地 Telnet 服务器,搜索-服务,点击服务,选择 Telnet,更改启动类型为 手动

    1.3)增加 Win7 用户1515300024并将其加入 到Telnet 群组

    1.4)手动启动 Telnet 服务器:net start Telnet

    (2)启动本地 Wireshark;

    (3)在第二台机器上登录有自己学号帐户的 Telnet 服务器,截屏及捕获登录踪迹;

    从客户端命令行上输入 telnet IP 地址,之后输入帐号/口令字,登入 Telnet 服务器。同时在客户端开启Wireshark抓包工具,抓取客户端 192.168.1.130 登录到Telnet 服务器192.168.1.131 的数据包

    下图为客户端登陆并执行一次dir命令的截图:

    下图为客户端Wireshark抓取的Telnet流量包截图截图:

    使用Wireshark的流追踪功能还原出本次明文传输的Telnet通信过程,可以看出这些信息和客户端上的过程基本一致

    (4)退出登录,从第三台机器上利用 netwox/netwag 工具对Telnet服务器进行 SYN flood 攻击。捕获 DDOS 攻击踪迹。尝试再次登录 Telnet 服务器,解释现象。

     构造SYN flood攻击包如下:

    启动攻击:

    抓取的DDOS 攻击踪迹如下,可以发现这些攻击包高度相似,目的地址都是Telnet服务器的IP:192.168.1.131,类型都是SYN请求包,但是源地址没有任何规律

    此时在第二台机器上再次连接Telnet服务器,会出现以下无法连接的情况,因为在服务器的 23 端口积累了大量的SYN请求包需要服务器来处理,服务器向SYN包的源地址发送SYN/ACK 包并等待源地址的ACK包回复,但是由于源地址是伪造的,无法回复 ACK 包,服务器因此陷入等待状态,从而导致无法接收正常主机发起的 TCP 连接,造成拒绝服务现象。

    3.使用 netwox/netwag 工具对 Telnet 服务器进行 TCP RST 攻击,并进行抓包分析。

    (1) 以你的学号创建一个 Telnet 账户,以这个账户为基础进行后继的实验。

     这一步只需使用之前配置好的账户即可

    (2) 验证 TCP RESET 理论上的可行性

    A 先在二主机之间建立一个 TCP 连接,通过抓包程序获得当前二主机的 ip 地址,端口号,序列号。 B 通过获得的信息伪造 TCP RESET 报文并发送。

    C 观察原有 TCP 连接是否断开。

    建立TCP 连接:Telnet 192.168.1.131

    抓包获得当前二主机的 ip 地址,端口号,序列号如下:

    源ip地址: 192.168.1.137, 目的ip地址: 192.168.1.131

    源端口: 1056,  目的端口: 23,

    序列号(Seq): 563773297, 确认号(Ack): 2245100282

    伪造的数据包发送完成后,Telnet客户端立即断开了连接,同时wireshark上也抓到了对应的伪造的RST数据包,结果截图如下:

    实验至此可以证明 TCP RESET 是可行的

    (3) 验证窗口对 TCP RESET 攻击的影响

    A 先在二主机之间建立一个 TCP 连接,通过抓包程序获得当前二主机的 ip 地址,端口号,序列号,另外就是记录下窗口的大小。

    B 通过获得的信息伪造 TCP RESET,填写伪造的序列号时,使伪造序号大于准确的序列号但是与准确序列号的差小于窗口大小,发送 TCP RESET 报文。

    C 观察原有 TCP 连接是否断开。 改动伪造的序列号,使其刚与准确的序列号之差刚好为窗口大小,重复以上实验。

    3.1)伪造序号大于准确的序列号但是与准确序列号的差小于窗口大小

    建立TCP 连接:Telnet 192.168.1.131

    构造欺骗客户端的RST包:

    抓取客户端发往服务器的TCP包获得当前二主机的 ip 地址,端口号,序列号,窗口大小如下:

    源ip地址: 192.168.1.137, 目的ip地址: 192.168.1.131

    源端口: 1146,  目的端口: 23,

    序列号(Seq): 2649478470, 确认号(Ack): 3142715117,窗口的大小(win):62847

    伪造欺骗客户端的TCP RESET 报文并发送:

    使用确认号(Ack): 3142715117+10=3142715127作为伪造数据包的序列号(Seq),构造如下RST数据包:

    连接没有断开,而且可以看到,在RST包发出去以后,客户端立刻发了一个重传包给服务器,该重传包的数据和105号包是一致的,现在客户端仍然可以正常发送数据.

    实验没有达到预期效果顺利断开,接着我尝试减少确认号(Ack)增加的值,结果发现+10,+5,+2,+1都不能断开连接,由此推测这样简单地构造RST包是不可行的,或许需要辅以其他手段。

    3.2)改动伪造的序列号,使其刚与准确的序列号之差刚好为窗口大小

    RST包发送后,客户端重传958号数据包,连接没有断开

    结果和3.1一样,无法中断telnet连接。

     

  • 相关阅读:
    C#中结构与类的区别
    LINQ中的聚合操作以及常用方法
    慎用const关键字
    .NET Framework想要实现的功能
    System.Object的一些方法
    你真的了解.NET中的String吗?
    C#学习要点一
    2012年 新的开始!
    java web服务器中的 request和response
    java Thread编程(二)sleep的使用
  • 原文地址:https://www.cnblogs.com/chuanzi/p/10525343.html
Copyright © 2011-2022 走看看