计算机安全_Lab 3_Attacks on TCP/IP Protocols

目录

1 实验描述

2 实验准备

3 实验内容

3.1 task 1 ARP cache poisoning

3.2 task 2 ICMP Redirect Attack.

3.3 task 3 SYN Flooding Attack.

3.4 task 4 TCP RST Attacks on telnet and ssh Connections

3.5 task 5 TCP RST Attacks on Video Streaming Applications

3.6 task 6 ICMP Blind Connection-Reset and Source-Quench Attacks

3.7 task 7 TCP Session Hijacking

4 实验总结

1 实验描述

本实验的学习目标是获得有关TCP / IP协议漏洞的第一手经验,以及针对这些漏洞的攻击。TCP / IP协议中的漏洞代表了协议设计和实现中的一种特殊类型的漏洞; 它们提供了一个宝贵的教训,说明为什么应该从一开始就设计安全性,而不是作为事后的补充。

2 实验准备

1. 系统准备

首先需要准备三台机器,本次实验的机器为:一台Windows10,两台台Ubuntu16.04。

说明:本实验中连接网络为校园网和手机4G网络,根据不同的实际情况有所变化,其中IP地址为172.27.***.***时为校园网,IP地址为192.168.43.***时为手机4G网络

通过查询“网络与共享中心”找到Win10的IP地址与MAC地址如下

 

通过“ifconfig”命令获得Linux相关信息,得到IP地址和MAC地址

Linux-1:

Linux-2

 

故可得到如下信息表:

问题总结:

此处新安装了一个Linux虚拟机,开始实验时发现会出现两台虚拟机出现IP地址一致的情况,无法完成ping,经过资料查询发现可有如下解决方法(我使用的是Oracle VM VirtualBox):

将网络设置中的MAC地址刷新一下,会随机换一个新的,这样以保证两个系统的物理地址,IP地址不一致。

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第1张图片

2. 环境配置

1)安装netwox:用于伪造、发送数据包需要的工具

  

2)安装vsftpd:全称为“very secure FTP daemon”,是ftp服务的守护进程。

  

启动vsftpd服务。

  

3)安装openbsd-inetd:开启Telnet服务。

启动openbsd-inetd。

4)安装Telnet

打开这个服务

5)然后安装用于抓取查看数据包的软件wireshark

可见下载成功,可打开运行

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第2张图片

6)尝试不同机器互相ping

Linux-1 ping Linux-2

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第3张图片

Linux-2 ping Linux-1

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第4张图片

Win10 ping Linux-2Linux-1

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第5张图片

可见均成功。至此我们已经完成了本次实验需要的基础操作。

3 实验内容

ARP缓存是ARP协议的重要组成部分。一旦MAC地址和IP地址之间的映射由于执行ARP协议而被解析,映射将被缓存。因此,如果映射已经在高速缓存中,则不需要重复ARP协议。但是,因为ARP协议是无状态,缓存很容易被恶意制作的ARP消息中毒。这种攻击称为ARP缓存中毒攻击。在这种攻击中,攻击者使用欺骗性ARP消息欺骗受害者接受无效的MAC到IP映射,并将映射存储在其缓存中。根据攻击者的动机,可能会有各种类型的后果。例如,攻击者可以通过将不存在的MAC地址与受害者的默认网关的IP地址相关联来对受害者发起DoS攻击。攻击者还可以将流量重定向到受害者和从受害者到另一台机器等。

3.1 task 1 :ARP cache poisoning

实验任务: 当发送方B需要向接收方C发送一个数据时,B会从自己的ARP表中通过C的IP地址来查找相应的C的MAC地址。如果C的MAC地址不在B的ARP表中,B就向全网发广播包,要求C主机返回它的MAC地址。当B接收到C返回的MAC地址时,B就将更新它的ARP表。同时,C主机也将B主机和它对应的MAC地址记录到C的ARP表中。ARP表的更新采用牛奶原则,也就是说,ARP表将无条件接受最后一次收到的ARP包作为ARP更新的数据。鉴于此,攻击者A可以利用一些工具伪造一个ARP包,将C的IP对应的MAC地址修改为自己的MAC地址,并将这个数据包发送给B。B在更新了ARP表之后,新的发往C的数据包就会被发送到A。

实验流程:

1. 正常情况:

L-2主机广播包,请求Win10和Linux-1的MAC信息

2. Linux-1利用netwox实现攻击

可见Win10(172.27.213.229)的MAC地址已经变为Linux-1(172.27.114.23)的MAC地址

得到如下情况:

通过Win10进行检查:Linux-1与Linux-2的MAC地址没有变化

通过Win10检查自己的MAC地址没有变化。

再次进行改回:

在Linux-2上查询arp表,可见实现正确改回。

之后,使用同样的方法,给Win10发送ARP欺骗包。

这样,Linux-2发送给Win10的数据将会被链路层转发到Linux-1,而Win10发送给Linux-2的数据也将会被链路层转发到Linux-1。但是这种情况下,Linux-1如果想插入到Win10与Linux-2的通信间,必须要再次将收到的包进行转发,并伪装源地址。而且,Linux-1如果想要持续这种攻击,就必须保证ARP欺骗包的发送频率大于正确的ARP包的发送频率,否则被攻击机的ARP表将会被更新,且在下一个ARP欺骗信息到来之前一直保持正确的MAC--IP映射关系,在这期间,A将不能收到想得到的包。

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第6张图片

3.2 task 2 :ICMP Redirect Attack

实验任务:ICMP重定向被路由器用来向更新主机的路由信息,最开始只有最少的路由信息。当一台主机接收到一个ICMP重定向信息,他将会根据接收到的信息来修改路由表。因为缺少验证,如果攻击者希望受害者设置它的路由信息为一个特别形式,他们可以发送欺骗ICMP重定向信息给受害者,并且欺骗受害者修改它的路由表。

实验分析:Linux-1在和Linux-2通信的时候,先会向Linux-1的默认网关发送数据包,Linux-1的默认网关判断出Linux-2不在自己发的范围内,便向Linux-1发送ICMP重定向,然后Linux-1根据ICMP定向重新设置路由,向正确的路由器发送数据包,再达Linux-2。

流程如下:

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第7张图片

      根据通信流程,我们可以这样实现攻击:

实验流程:

1. 安装traceroute包:用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具

       2. 将Linux-1的混杂模式设置为允许,用以接收Linux-2报文

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第8张图片

3. 打开Linux-1的sysctl.conf文件,打开其ICMP重定向报文发送功能

4. 打开Linux-1的sysctl.conf文件,打开其ICMP重定向报文接收功能

5. 检查Linux-1的网关,得到:192.168.43.70

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第9张图片

    同样的操作检查linux-2的网关,得到:192.168.43.70

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第10张图片

此时我们发现Linux-1与Linux-2的网关是一样的

通过traceroute指令可以跟踪包经过的主机和路由器,看到详细的转发过程,这能够更好的看出网关的作用。

6. 重新检测两台虚拟机的ip地址(手机4G网络)

Linux-1

 

Linux-2

7. 使用netwox86号工具可以完成ICMP重定向这个攻击。攻击机指令:

sudo netwox 86 -f "host 192.168.43.164" –g 192.168.43.239 -i 192.168.43.70

(-f  “host 被攻击机的IP”  –g  希望对方网关修改后的IP  –i 原网关)

8. Linux-2 尝试traceroute www.baidu.com

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第11张图片

可见网关已经改变

9. 在Linux-1中抓取,可见Linux-2访问百度的数据包

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第12张图片

在Linux-2中抓取ICMP数据包

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第13张图片

可见产生ICMP重定向。

问题总结:

在实验过程中遇到的最大的问题是:出现域名无法解析的问题

经过大量的尝试,发现首先校园网存在一些链接上的问题,需要改换成手机热点,换成手机热点后可保证ip地址不改变,桥接模式设置网络时需要设置如下图选项。

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第14张图片

3.3 task 3 :SYN Flooding Attack

实验任务: SYN洪流攻击是Dos攻击的一种形式,攻击者发送许多SYN请求给受害者的TCP端口,但是攻击者没有完成三次握手的意向。攻击者或者使用虚假的IP地址,或者不继续过程。在这个攻击中,攻击者可以使受害者的用于半开连接的队列溢出,例如,已完成SYN,SYN-ACK但没有收到最后的ACK回复的连接。当这个队列满了的时候,受害者不能够在进行更多的连接。

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第15张图片

实验准备:

1. 首先关闭SYNcookie机制

2. 实施攻击之前,需要确保telnet打开可连接

实验流程:

1. 先尝试Win10通过telnet连接登录Linux-2

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第16张图片

需要注意的是:此处telnet默认端口号为23

2. 在Linux-2进行连接的查询,可见有一个通过172.27.13.41的链接已经成功建立,显示为ESTABLISHED。

3. 接下来开始在Linux-1上对Linux-2进行攻击

4. 同时确认Linux-2的SYN缓存功能关闭

5. 同时在 win10 中再次尝试连接Linux-2,发现连接失败

3.4 task 4 :TCP RST Attacks on telnet and ssh Connections

实验任务: TCPRST攻击可以终止两个受害者之间建立的TCP连接。如果两个用户之间存在一个已建立的telnet连接(TCP),则攻击者可伪造一个A发送给B的RST数据包,从而破坏现有的连接。为了使攻击成功,攻击者需要正确构建TCPRST数据包。

实验流程:

1. 建立Win10与Linux-2之间的telnet连接

可见成功,再次在Linux-2上检查连接,可见连接成功

2. 利用Linux-1对Linux-2进行攻击

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第17张图片

可见连接断后再无法实现连接,攻击成功。

问题总结:

在对telnet连接的TCP RST攻击中,攻击者针受害机发起TCP RST攻击,具体的来说就是伪造Win10发送的RST包导致Linux-2与Win10之间的telnet协议的TCP通道中断,导致telnet中断。

此处运用的netwox命令需要注意,伪造RST数据包的时候要同时知道TCP连接两个主机的IP和port,这个IP与port的来源可以是在Linux-2查询tcp连接情况时获得。即下图:

3.5 task 5 :TCP RST Attacks on Video Streaming Applications

实验任务:在此任务中选择视频流应用程序。对于此任务,可以选择您熟悉的视频流网站。大多数视频共享网站与客户建立TCP连接以流式传输视频内容。攻击者的目标是破坏受害者和视频流机器之间建立的TCP会话。为了简化实验,我们假设攻击者和受害者在同一个局域网上。受害者浏览视频流网站中的视频内容,并选择其中一个视频进行流式传输。在受害者选择视频之后,将在受害者机器和内容服务器之间建立用于视频流的TCP会话。然后,受害者可以查看他/她选择的视频。通过破坏受害者和内容服务器之间的TCP连接来中断视频流。

实验流程:

1. 首先使用Linux-2进行正常视频的观看

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第18张图片

2. 此处恢复之前实验修改的配置文件:

3. 利用Linux-1实现与上个实验类似的攻击

4. 可在Linux-2中看到,视频播放的窗口显示无法连接

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第19张图片

5. 同时利用wireshark抓包,可以看到产生的tcp数据包

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第20张图片

3.6 task 6 :ICMP Blind Connection-Reset and Source-Quench Attacks

实验任务: ICMP消息也可用于实现连接重置攻击。为此,攻击者发送ICMP错误消息,指示TCP连接的两个端点中的任何一个的“硬错误”。当RFC1122声明主机在接收到这样的ICMP错误消息时应该中止相应的连接时,可以立即断开连接。RFC1122将“硬错误”定义为类型3(目标无法到达)的ICMP错误消息,其中代码2(协议不可达),3(端口不可达)或4(需要分段和DF位设置)。拥塞的路由器使用ICMP源猝灭消息来告诉TCP发送器减速。攻击者可伪造此类消息来对TCP发件人进行拒绝服务攻击。在此任务中,需要启动ICMP盲连接重置攻击和ICMP源猝发攻击。某些系统可能会在某些TCP状态下合理地忽略此类ICMP错误。

实验流程:

ICMP Blind Connection-Reset攻击

1. 通过Win10与Linux-2建立连接

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第21张图片

同样地,在Linux-2中检查,发现连接已建立,有相对应的IP地址和端口号

2. 利用Linux-1进行攻击,分别实现对Win10和Linux-2的攻击

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第22张图片

3. 再次在Linux-2上进行检查,发现连接建立并未改变,可见攻击未成功

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第23张图片

4. 同样的进行了ftp连接的测试,结果也是未成功

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第24张图片

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第25张图片

ICMP Source-Quench攻击

1. 同样建立Win10与Linux-2的连接

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第26张图片

在Linux-2检查确认连接成功

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第27张图片

2. 在Linux-1上发起攻击

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第28张图片

可见连接还在,未攻击成功

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第29张图片

问题总结:

在ICMP Blind Connection-Reset攻击中,利用RST报文来中断TCP的连接,但这个 RST不再是攻击者伪造的,是连接的两个主机正常发送的。根据以往的信息可以知道TCP协议会自动发送RST报文,所以攻击者只需要让受害者误以为满足了条件就可以了。另外查询资料得到,Source-Quench是ICMP用于控制某个主机TCP数据包的发送速率。在接收主机端检测到TCP数据包速率太快时,会向对方发送ICMP 的Source-Quench以用于告诉源主机降低发送速率。所以当攻击者伪造ICMP Source-Quench的时候,会导致正常TCP链路上的数据传送速率降低。但是在实际的操作中,猜测是这种降低并不够明显,未能造成攻击的效果。

3.7 task 7 :TCP Session Hijacking

实验任务: TCP会话劫持攻击的目的是通过向此会话中注入恶意内容来劫持两个受害者之间的现有TCP连接(会话)。 如果此连接是telnet会话,则攻击者可以将恶意命令注入此会话,从而导致受害者执行恶意命令。

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第30张图片

由于TCP协议没有对TCP的数据包验证,所以攻击者只要知道⼀个TCP连接中的seq和ack信息后就可以很容易的伪造数据包冒充受害者进行数据传输,如果攻击者发送正确seq和ack的数据包给TCP连接的对方,TCP会话便被攻击者劫持,受害者再次发送TCP数据包的时候seq和ack都不正确,也就是失去TCP的会话。

实验准备:

1. 下载安装telnet相关安装包

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第31张图片

2. 下载安装shijack-lnx

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第32张图片

解压下载的压缩包

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第33张图片

由于压缩包内部都是二进制转软件,所以可以直接使用,此处可以看到要使用的shijack-lnx的相关信息

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第34张图片

实验流程:

1. 首先建立Win10与Linux-2之间的telnet连接

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第35张图片

2. 在Linux-2上进行检查,可见连接建立成功

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第36张图片

3. 在Linux-1上进行攻击,对服务器进行劫持,冒充服务器,当捕获到数据包信息时,在Linux-1中输入“ls”、“pwd”等,可见可以相应的出现在客户端(Win10)的命令窗口。一些操作之后,Win10会显示失去连接。此时的服务器端已经失去TCP连接,而与客户端通信的是攻击者主机。

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第37张图片

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第38张图片

再次在Linux-2中进行检查,可见连接依然处于正常连接

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第39张图片

4. 同样地情况,测试攻击者建立文件

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第40张图片

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第41张图片

可以发现并未建立成功,所以可以得出结论,在该攻击下攻击者的输入都成为原客户端的输入。但由于并非真正的服务器,不能对原服务器造成实际操作。

5. 再次测试攻击调换服务器和客户端,劫持客户端,冒充客户端与服务器通信,此时客户端失去TCP连接,攻击者与服务器端通信。

计算机安全_Lab 3_Attacks on TCP/IP Protocols_第42张图片

6. 再次测试建立文件,可见文件建立成功,说明对服务器造成了实际的操作,实现了攻击。

4 实验总结

通过本次实验,对于TCP/IP攻击有了更加深入的理解,同时对于上个学期计算机网络的知识也得到了巩固和实验更加直观的体验,促进了对于原来概念性计算机网络知识的理解。本次实验相较于上一次实验内容多一些,且涉及到网络出现了很多困难和问题,在解决这些问题的过程中对于虚拟机virtualbox的使用更加熟练,认识也更深刻。同时由于针对我们日常生活所使用的网关,校园网与手机4G的使用感异同也有了更加实际的认识。另外通过检查IP,MAC地址等操作,对自己的不同实系统以及虚拟机中系统的一些区别等也有了更加清晰的认知。同时对于“攻击”这一概念有了更加感性的认识,本次实验收获很多,希望之后能够再接再厉,加油!

你可能感兴趣的:(计算机安全)