TCPIP攻击实验报告.docx
《TCPIP攻击实验报告.docx》由会员分享,可在线阅读,更多相关《TCPIP攻击实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
TCPIP攻击实验报告
Project5Lab-Report
ComputerNetworkSecurity
实验名称:
小组成员:
指导教师:
所属班级:
一.实验描述
【实验背景】
由于TCP/IP协议是Internet的基础协议,所以对TCP/IP协议的完善和改进是非常必要的。
TCP/IP协议从开始设计时候并没有考虑到现在网络上如此多的威胁,由此导致了许多形形色色的攻击方法,一般如果是针对协议原理的攻击(尤其DDOS),我们将无能为力。
TCP/IP攻击的常用原理有:
(1)源地址欺骗(SourceAddressSpoofing)、IP欺骗(IPSpoofing)和DNS欺骗(DNSSpoofing).
(2)路由选择信息协议攻击(RIPAttacks)
(3)源路由选择欺骗(SourceRoutingSpoofing)
(4)TCP序列号欺骗和攻击(TCPSequenceNumberSpoofingandAttack)
【实验目的】
基于TCP/IP协议进行攻击实验,了解TCP/IP协议的具体机制。
【实验环境】
【三台虚拟机是使用相同的Ubuntu版本,以免出现冲突】
虚拟机使用信息:
VirtualBox与Vmware
Linux版本信息:
Ubuntu12.04.2(Final)
Linux内核版本:
3.8.0
二.实验步骤
(1)预备工作
这里我们三个同学分别使用三台机器在虚拟机环境下做实验,其中一个用于攻击;另一个用于被攻击;第三个作为观察者使用;我们把三台主机放在同一个LAN中,其配置信息参照如下所示(实际在实验过程中有所改动):
这里我们使用的是用于先前实验的Ubuntu系统,并且参照网上教程安装相关的netwox工具箱和Wireshark工具箱,并且利用它们完成接下来的任务,与此同时三台虚拟机都需要打开FTP和Telnet服务:
——使用如下命令来完成上述任务
Starttheftpserver
#servicevsftpdstart
Startthetelnetserver
#serviceopenbsd-inetdstart
(2)实验任务第一项:
ARP缓存中毒(ARPcachepoisoning)
【背景知识】
ARP缓存是ARP协议的重要组成部分。
ARP协议运行的目标就是建立MAC地址和IP地址的映射,然后把这一映射关系保存在ARP缓存中,使得不必重复运行ARP协议。
因为ARP缓存中的映射表并不是一直不变的,主机会定期发送ARP请求来更新它的ARP映射表,利用这个机制,攻击者可以伪造ARP应答帧使得主机错误的更新自己的ARP映射表,这个过程就是ARP缓存中毒。
这样的后果,要么使主机发送MAC帧到错误的MAC地址,导致数据被窃听;要么由于MAC地址不存在,导致数据发送不成功。
【操作流程】
当前网络配置情况如下面所示:
【备注】
这里我们的IP由于使用相同虚拟机配置,一开始是一样的,可是经过一系列调整之后,我们实现了在同一子网内并且IP不同,同时可以相互Ping成功!
同时,由于只要是一个子网内,那么虚拟机的IP是可以在规定范围内任意修改的,为了方便起见,我们同意把3个IP改成连续相邻的3个IP地址(从122到124)
虚拟机1号:
MAC:
08:
00:
27:
ea:
ab:
26
IP:
192.168.0.122
虚拟机2号:
MAC:
08:
00:
27:
c6:
57:
e5
IP:
192.168.0.123
虚拟机3号:
MAC:
08:
00:
27:
5f:
ae:
ef
IP:
192.168.0.124
我们是基于这样的原理:
通常情况下,如果2号机要向3号机请求建立Telnet链接,2号机就会需要知道3号机的Mac地址是多少,于是它会通过广播ARP请求来寻求回应;
3号机如果发现ARP广播的IP地址恰好是自己IP,那么它就会儿发送ARP相应包,通知请求方也就是2号机自己(3号机)的MAC地址。
在此基础上,两者建立好连接并且开始进行通信!
——所截得的最终效果示意图如下所示:
现在1号机伪造3号机的ARP应答,写上自己的MAC地址,这样的话,当2号机向3号机建立Telnet链接时,由于ARP缓存中IP为192.168.111.139对的MAC地址是1号机的,所以2号机无法发送数据到3号机,Telnet失败。
【攻击过程示意图】
1号机伪造3号机的ARP应答并且进行周期性的广播,实验截图如下
【分析】
可以看出3号机的MAC被修改成了1号机的MAC了。
此时2号机向3号机发起Telnet,发现telnet工作不正常,超时!
(3)实验任务第二项:
ICMP重定向攻击
【背景知识】
ICMP重定向信息是路由器向主机提供实时的路由信息,当一个主机收到ICMP重定向信息时,它就会根据这个信息来更新自己的路由表。
由于缺乏必要的合法性检查,如果一个黑客想要被攻击的主机修改它的路由表,黑客就会发送ICMP重定向信息给被攻击的主机,让该主机按照黑客的要求来修改路由表。
PS:
由于在上一个任务中我们三台机器使用的那三个ip和网关无法连接外网,在考虑本次实验任务的需求之后将IP做出如下修改:
1号机:
IP:
192.168.1.113
2号机:
IP:
192.168.1.114
3号机:
IP:
192.168.1.115
在一般情形中,如果从3号机远程访问202.112.154.16(一个校园网址),则3号机就会先把请求数据包发送至默认网关,默认网关会转发数据包到202.112.154.16
【攻击】
现在1号机以默认网关的名义向3号机发送IMCP重定位信息,通知3号机,默认路由的地址已经改为1号机的IP。
同时为了让1号机能够转发数据包,需要对1号机进行转发数据包的设置,可用下面的命令实现:
sudosysctlnet.ipv4.ip_forward=1
此时3号机再次访问202.112.154.16时,它会首先把数据包发送至新的路由1号
机,再由1号机来转发数据包,从而达到Machine3的路由表被更新的效果:
(4)实验任务第三项:
SYN泛洪攻击
【背景知识】
SYN攻击是一种DoS(DenialofService)攻击,在这种攻击中黑客向被攻击者的TCP端口发送很多SYN请求,但是黑客并不是想完成三次握手协议,而是使用伪造的IP地址或者只进行三次握手协议中的第一次握手。
因为SYN数据包用来打开一个TCP链接,所以受害者的机器会向伪造的地址发送一个SYN/ACK数据包作为回应,并等待预期的ACK响应。
每个处于等待状态,半开的链接队列都讲进入空间有限的待处理队列。
由于伪造的源地址实际上并不存在,所以将那些等待队列中的记录删除并完成建立TCP连接所需的ACK响应用于不会到来,相反每个半开的连接一定会超时,这将花费一段比较长的时间。
只要攻击者使用伪造的SYN数据包继续泛洪受害者的系统,受害者的待处理队列将一直处于满员,这使得真正的SYN数据包几乎不可能到达系统并打开有效的TCP连接。
【攻击】
将3号机(IP:
192.168.1.127端口:
23)作为Telnet服务器,2号机(IP:
192.168.1.1作为Telnet客户端,去连接Telnet服务器。
【正常情况如上图所示】
【下图为3号机的23号端口进行洪泛攻击】
利用#netstat–na|grep“:
23”查看3号机的端口23的待处理队列后,继续
【下图为2号机的Telnet客户端无法再次连接3号机】
【分析】
即使被洪泛攻击,3号机也可以提供Telnet服务。
在sysctl–wnet.ipv4.tcp_syncookies=0(即关闭SYNcookies)的情况下,3号机没有抵抗洪泛攻击的保护机制,2号机的Telnet客户端连接不上3号机,所以会一直处于Trying……的状态。
如果打开SYNcookie(用命令:
sysctl-wnet.ipv4.tcp_syncookies=1),则即使在被洪泛的情环境下,3号机也可以有效的提供Telnet服务:
(5)实验任务第四项:
S对Telnet和SSH的TCPRST攻击
【背景知识】
TCPRST攻击:
这种攻击只能针对tcp、对udp无效。
RST用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。
如果接收到RST位时候,通常发生了某些错误。
TCPRST攻击可以终止两个被攻击主机之间的TCP连接。
【攻击】
当2号机器的Telnet客户端和3号机器的Telnet服务器之间建立Telnet连接之后,通过向Telnet客户端发送TCPRST,就可以实现终止两者之间的TCP连接。
2号机和3号机先建立TelnetTCP连接,同时1号机向2号机发送相应的TCPTST包
【下图为2号机的Telnet断开连接的示意图】
【分析】
一开始2号机和3号机器之间通过TelnetTCP连接,在经过由1号机发给2号机的TCPTST数据包后,从上图箭头处可以看出2号机的telnet的客户端被断开。
(6)实验任务第五项:
对视频流应用程序的TCPRST攻击
该次实验任务的原理与其实与上一个实验任务是相似的,但由于我们小组的虚拟机里没有安装视频流的应用,这里没有贴出相应的操作流程,但其实是同理可得的!
(7)实验任务第六项:
ICMPBlindConnection-ResetandSource-Quench攻击
【背景知识】
为了达到利用ICMP数据报进行TCP/RESET攻击的目的,黑客们常发送一个ICMP报文给通信双方,暗示他们双方的TCP通信端出现硬件错误,连接必须终止。
【攻击】
【下图为2号机至3号机上的Telnet服务器的示意图】
【下图为由1号机发送3号机收到的伪造数据包】
【分析】
从第31行可知,1号机向3号机发出的伪造数据包,但和3号机上的Telnet连接并没有因此而中断,可能是这种安全漏洞在实验所用的Ubuntu系统上已经被修复。
(8)实验任务第七项:
TCP报文劫持
【背景知识】
会话劫持利用了TCP/IP工作原理来设计攻击。
TCP使用端到端的连接,即TCP用(源IP,源TCP端口号,目的IP,目的TCP端号)来唯一标识每一条已经建立连接的TCP链路。
另外,TCP在进行数据传输时,TCP报文首部的两个字段序号(seq)和确认序号(ackseq)非常重要。
序号(seq)和确认序号(ackseq)是与所携带TCP数据净荷(payload)的多少有数值上的关系:
序号字段(seq)指出了本报文中传送的数据在发送主机所要传送的整个数据流中的顺序号,而确认序号字段(ackseq)指出了发送本报文的主机希望接收的对方主机中下一个八位组的顺序号。
因此,对于一台主机来说,其收发的两个相临TCP报文之间的序号和确认序号的关系为:
它所要发出的报文中的seq值应等于它所刚收到的报文中的ackseq的值,而它所要发送报文中ackseq的值应为它所收到报文中seq的值加上该报文中所发送的TCP净荷的长度。
【攻击】
2号机Telnet到3号机,实验在1号机上劫持2号机到3号机上的Telnet报文。
【下图为在1号机上的wireshark中显示了2号机与3号机的连接】
三.实验总结
通过这一次内容丰富并且工作量巨大的实验,我们小组对基于TCP/IP的攻击有了更加深刻甚至可以说是比较新的认识,对它们各自的机制、攻击特点、相互之间可能存在的联系以及它们差别所在等等细节问题有了新的看法、认识,也有了一些专属于我们小组自己的解决方案。
这次实验,让我们至少意识到了以下这样一个事实:
TCP/IP协议在设计之初仅考虑了成本和实现功能,并没有过多考虑安全因素。
因此TCP/IP协议栈中提供了大量的起关键作用的信息和指令,但是这些信息和指令的执行缺乏认证机制,能够方便地伪造。
这也就为如此之多的TCP/IP攻击提供了可能。
相信,不仅仅是实践知识,小组成员之间的相互协作和配合所积累的经验也是十分难得的,我们应该好好从中汲取经验教训,为今后更大规模的组队合作打下坚实的基础!