SeedLab:TCP/IP Attack

实验环境:

该实验环境是在同一个局域网下完成的,完成整个的实验需要三台机器,这三台机器的ip和mac地址如下所示:

机器1: 192.168.47.174 mac: 00:0c:29:08:4f:9c

机器2: 192.168.47.175 mac: 00:0c:29:4c:5e:ff

机器3: 192.168.47.176 mac: 00:0c:29:1c:41:17

这三台机器的默认网关:192.168.47.2

操作系统:ubuntu 12.04 32位

所使用的工具:netwox, hunt, wireshark

实验操作:

实验1:ARP缓存中毒

ARP协议的主要目的在于简化OSI模型第二层和第三层间地址的翻译。第二层(也就是数据链层)使用MAC地址,以便硬件设备可以在小范围内直接进行通信。第三层(也就是网络层)使用IP地址(最常见的形式)来创建连通世界各地用户的大规模网络。数据链层直接处理连接在一起的设备,而网络层处理那些直接以及间接连接的设备,每一层都有自己的地址形式,他们必须合作才能实现网络通信。正是由于这个原因,ARP与RFC826(以太网地址解析协议)一起被创建。
在该实验中,首先有一个机器1在局域网中发送arp包,包的内容为将自己的mac地址与机器2的ip地址相关联,此时,如果机器3想要发送一个包给机器2,就会发不过去。具体操作如下:
在机器1中执行如下指令,即向局域网广播00:0c:29:08:4f:9c的mac地址对应的ip地址为192.168.47.175

打开wireshark后可以看到机器1就发送arp的包意思为192.168.47.175在mac地址为00:0c:29:08:4f:9c。

所以在机器3 输入arp -a,结果如下:

即ip地址192.168.47.175对应了机器1的mac地址00:0c:29:08:4f:9c
在机器3中输入telnet之后结果如下:

实验2:ICMP重定向攻击

ICMP重定向的攻击是一个比较有效的并且类似于ARP攻击的手段,而且是利用了另外一个正常的协议——ICMP协议,发起的攻击。黑客远程控制目标机器是有些难度的,但如果只是冒充网关,那就非常容易实现了,黑客冒充网关,对目标主机发送ICMP重定向报文,报文里的路由IP填成一个虚假的、不存在或网络不通的地址,这样,目标主机收到ICMP重定向报文后,就会对路由表进行添加、修改(前提是ICMP重定向功能是开启的),将黑客指定的目标与目标间通信的网关地址设置成那个虚假的IP地址,这样,就实现了利用ICMP重定向的攻击。

攻击者:机器1

受害者:机器2

在机器1上运行sudo traceroute 119.75.218.70(百度的ip)

可知第一个route为192.168.47.2即默认网关的地址。

Wireshark抓包如图所示:

现在机器1以默认网关的名义向机器3发送IMCP重定位信息,通知机器3,默认路由的地址已经改为Machine 1(192.168.47.174)。
同时为了机器1能够转发数据包,需要对机器1进行转发数据包的设置,可用下面的命令实现:

sysctl net.ipv4.ip_forward=1

进行攻击的命令:

netwox 86 -d "Eth0" --gw "192.168.47.174" -i "192.168.47.2"

结果如下图所示:

则机器3在traceroute 百度的时候,会首先经过机器1

用WireShark抓包的结果如下:

实验3:SYN 泛洪攻击

通常一次TCP连接建立需要三个步骤,第一客户端发送SYN包给服务端,第二服务器分配一定资源给这个连接并返回SYN/ACK包,然后等待连接就建立的最后的ACK包,第三最后客户端发送ACK报文。这样两者之间的连接就建立起来了,可以通过连接传输数据。攻击的过程就是疯狂 发送SYN报文,而不返回ACK报文。服务器占用过多资源,导致系统资源占用过多,没有能力响应别的操作或正常的网络请求。用自己很少的资源占用对方大量的资源,以小博大。

将机器3作为telnet服务器,机器1通过telnet来登陆机器3:

在机器3中输入sysctl -a | grep cookie输出如下图:

可以知道该机器打开了syn cookie,现将其关闭:sysctl -w net.ipv4.tcp_syncookies=0
现在对Machine 3的端口23(telnet端口)进行洪泛攻击:

netwox 76 -i "192.168.47.176" -p "23"

此时查看机器3的端口23的待处理队列如下:

由上图可知tcp的23端口被泛洪攻击了。
机器2 telnet连接机器3,由下图可知连接不上。

如果打开了syn cookie,则机器2可以telnet连接机器3,如图所示:

Syn cookie的原理就是如果短时间内连续收到某个IP的重复SYN请求,则认为受到了该IP的攻击,丢弃来自该IP的后续请求报文。此外合理地采用防火墙等外部网络安全设施也可缓解SYN泛洪攻击。

实验4:对Telnet的TCP RST攻击

RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。
A和服务器B之间建立了TCP连接,此时C伪造了一个TCP包发给B,使B异常的断开了与A之间的TCP连接,就是RST攻击了。

机器1连接上了机器3的telnet服务器,如图所示:

可知机器1已经telnet上了机器3。

现在在机器2上构造一个 TCP TST包发送给机器3,这样Telnet 客户端就会断开连接:

再次连接也连接不上。

实验5:对视频流应用程序的TCP RST攻击

该实验与实验4的原理一致,所以直接展示一下实验结果。

该实验有两个机器,victim的 ip为192.168.47.177
Attacker的ip为192.168.47.178

首先victim机器在优酷上看视频:

然后在attacker的机器上发送RST包:

在victim机器上,

可以看出,加载失败,攻击成功。

然后再attacker的机器上停止发送RST包,再刷新victim机器的视频,可以再次播放。

实验6:TCP报文劫持

机器 2 (192.168.47.175) Telnet到机器 3(192.168.47.176);
在机器 1(192.168.47.174)上劫持机器 2 到机器 3上的Telnet报文。

在机器1上开启hunt工具来嗅探当前网络上的TCP连接

在机器2上通过telnet连接上机器3:

劫持TCP报文,在Machine 1上显示 Machine3上的passwd文件。

选择第0行,然后在向劫持的Telnet报文中注入cat /etc/passwd命令,实现机器 3上的passwd文件。

结果在机器3上显示如下: