实验环境
- Kali Linux 2023.1
- Wireshark 4.0.6
- eNSP 1.3
- WinPcap 4.1.3
- VirtualBox 5.2.44
实验背景
本次实验实验背景
Client 为客户机,Server 为服务器,对外提供 FTP 服务,Cloud 中为攻击机 Kali Linux,攻击机为了取得 Client 的 ftp 账号和密码,对 Client 和 Server 进行了攻击。
实验步骤
一、连接实验拓扑图
在 Cloud 中的设置如下所示。
注意虚拟网卡的网段,使得 Client,Server和Kali Linux 处于同一网段内。
二、正常的 ARP 报文分析
此时我们在 Ge0/0/1 口启动 WireShark 抓包,之后使用 Client Ping Server,查看抓包内容。
可以看到抓到了两个 ARP 包 和两个 ICMP 包,两个 ICMP 报文是 Ping 命令所产生的,我们重点看前面的两个 ARP 报文。
选中第一个包,查看详情:
ARP 报文被封装在以太网帧里面进行传输,可以看到以太网帧的 Src 为 Client 的 MAC 地址,Dst 为广播地址,类型为 ARP。
ARP 报文重点标注了操作码(Opcode)为1,意为 ARP 请求报文。发送端的 MAC 地址和 IP 地址,以及请求未知 MAC 的 IP 地址。
再选中第二个包,查看详情:
此时以太网帧的 Src 变成了 Client 所请求的 MAC 地址,也就是 Server 的 MAC 地址,而 Dst 变成了 Client 的 MAC 地址。
ARP 报文的操作码(Opcode)变成了2,代表这是一个 ARP 回复报文。ARP 回复报文的源就是 ARP 请求报文的目标,而回复报文的目标就是请求报文的源。
三、进行 ARP 欺骗攻击
我们打开 Server 的 ftp 服务器,使其对外提供服务,在 Client 端设置用户名为 admin 密码为 admin666。这一步是为了成功欺骗后获取到有用信息。
打开 Kali Linux,先用 cat /proc/sys/net/ipv4/ip_forward
查看一下是否开转发,0 为关闭,1 为开启。我们现在先让它关闭。如果结果是 1 ,就使用echo 0 >> /proc/sys/net/ipv4/ip_forward
把它改为 0
使用 arpspoof 进行 ARP 欺骗。首先在 Cloud 的 E0/0/1 接口上开启 WireShark 监听,再使用指令 arpspoof -i 网卡接口 -t 目标主机IP地址 要伪装成的IP地址
在本次实验中的指令为arpspoof -i eth0 -t 192.168.164.2 192.168.164.3
此时观察 WireShark 的抓包页面。
可以看到攻击机对 Client 发送了很多 ARP 响应包,试图让 Client 相信自己是 192.168.164.3,我们打开一个报文查看详情。
可以看到发送端为攻击机,接收端为 Client。
在攻击 Client 的时候,我们尝试使用 Client 登录 ftp 服务器。
会发现登录失败,无法成功连接服务器。
此时我们开启转发。echo 1 >> /proc/sys/net/ipv4/ip_forward
再次开始攻击 Client,此时使用 Client 登录 FTP 服务器。
可以看到可以正常登录,此时我们查看 WireShark 的抓包界面。选择 FTP 的流量,点击追踪 TCP 流。
可以看到还是收到了 Client 的账号和密码,虽然报文不完整,但还是可以解析出内容。
此时我们在攻击机中同时欺骗 Client 和 Server。在攻击机中再开启一个终端,使用 arpspoof -i eth0 -t 192.168.164.3 192.168.164.2
开始对 Server 进行 ARP 欺骗。此时再使用 WireShark 进行抓包。使用 Client 进行登录 FTP。
此时还是可以正常登录 FTP。
查看 WireShark 抓包界面,选择 FTP 报文进行追踪 TCP 流。
可以看到抓到了完整的通信流量。
至此,本次实验结束。