20253903 2025-2026-2 《网络攻防实践》第4次作业
1.实践内容
本次实验主要围绕 TCP/IP 协议栈的安全漏洞展开,实操验证了五种经典的网络层攻击技术:
- ARP 缓存欺骗攻击:利用 netwox 工具发送伪造的 ARP 响应包,篡改目标主机 ARP 缓存表中 IP 与 MAC 地址的映射关系,实现中间人攻击的前置条件。
- ICMP 重定向攻击:通过伪造 ICMP 重定向报文,欺骗目标主机修改其路由表,将网络流量重定向至攻击者控制的主机,实现流量劫持。
- SYN Flood 泛洪攻击:利用 TCP 三次握手的设计缺陷,向目标服务器发送大量伪造源地址的 SYN 请求,耗尽服务器资源,造成拒绝服务(DoS)效果。
- TCP RST 攻击:通过发送伪造的 TCP RST(复位)报文,强制中断目标主机之间已建立的 TCP 连接,破坏正常通信。
- TCP 会话劫持攻击:使用 ettercap 工具进行 ARP 投毒,实施中间人攻击,截获并监控目标主机间的 telnet 通信内容,包括用户名、密码及执行的命令。
2.实践过程
以下是我本次实验的网络配置:

2.1 ARP缓存欺骗攻击
首先使用 WinXPattacker 对 Kali 进行 Ping 访问:

可以看到,此时是可以正常进行 Ping 访问的,使用命令 arp -a 查看一下它的 ARP 表:

能够看到 ARP 表中,192.168.200.4 对应的 MAC 地址为 00:0c:29:6f:6b:7d。
在 Kali 中使用 netwox 命令发送 ARP 欺骗包,向局域网中所有主机广播 SEED Ubuntu 主机的网卡地址为 00:0c:29:d3:29:9f(实际为 00:0c:29:d8:96:5b),命令为:
netwox 80 -e 00:0c:29:d3:29:9f -i 192.168.200.3
未进行攻击前:

进行攻击:

攻击后:

可以看到,对于相同的 IP,在进行攻击前后对应的 MAC 地址不一致,表示攻击成功。
2.2 ICMP重定向攻击
本实验使用 Kali 以及 SEED Ubuntu 进行。首先在 SEED Ubuntu 上使用 route -n 命令查看路由表:

在 Kali 中,使用以下命令对 SEED Ubuntu 进行欺骗攻击:
netwox 86 -f "host 192.168.200.3" -g 192.168.200.4 -i 192.168.200.1
在 SEED Ubuntu 上 ping 一下 baidu.com:

可以看到下一跳地址已经被成功修改,流量被重定向到了攻击机 Kali 中。
2.3 SYN Flood攻击
这里我们开启位于 192.168.200.130 的 MetaSploitable 主机,使用 SEED Ubuntu 对该主机进行 telnet 访问:

能够成功进行 telnet 访问,使用账号密码 msfadmin 可以正常登录使用。
进入 Kali 攻击机,使用以下命令对 MetaSploitable 主机进行 SYN 泛洪攻击:
netwox 76 -i 192.168.200.130 -p 23
再次回到 SEED Ubuntu 中对 MetaSploitable 主机进行 telnet 连接:

可以看到非常卡顿,处于几乎不可用状态,说明 Kali 已经发送了大量 SYN 泛洪攻击导致服务卡顿。此时抓一下 vmnet1 网卡的包:

可以看到有大量的 TCP 半连接。
2.4 TCP RST攻击
首先使用 telnet 登录 MetaSploitable 主机:

之后使用 Kali 对 MetaSploitable 主机进行 TCP RST 攻击,命令为:
netwox 78 -i 192.168.200.130

此时再次尝试连接 MetaSploitable 主机,发现无法连接,提示 connection closed by foreign host.:

此时抓取一下 vmnet8 网卡的包:

可以发现大量 RST 包,攻击生效。
2.5 TCP会话劫持攻击
首先在 Kali 命令行中输入 ettercap -G,以图形化方式打开工具:

首先点击右上角对勾开启捕获:

扫描 hosts 后选择其他两个靶机作为 Target1 和 Target2:

这里我选择位于 192.168.200.3 的 SEED Ubuntu 和位于 192.168.200.5 的 WinXPattacker 分别作为 Target1 和 Target2。
选择上方的 MITM 选项,选择 ARP 投毒攻击:


在 View → Connections 中查看连接:

由于这里我的 MetaSploitable 在其他网段,无法使用这个工具进行攻击,因此使用其他两个靶机进行替代。这里我们使用 WinXPattacker 用 telnet 访问 SEED Ubuntu:

可以看到已经成功使用 telnet 连接 SEED Ubuntu,接下来回到 Kali 查看:

可以在 Kali 中看到 telnet 连接过程以及执行的命令、账号密码等等,攻击成功。
3.学习中遇到的问题及解决
3.1 Kali无法连接外网
实验中突然发现 Kali 无法连接外网,使用 Wireshark 抓包发现 Kali 在进行 DNS 查询时默认使用了网关来进行查询,但是我已在 /etc/network/interfaces 中配置了 DNS 服务器,仍然无法正常向 DNS 服务器进行查询。查询资料发现 Kali 的 DNS 查询默认是根据 /etc/resolv.conf 来进行的,使用以下命令对该文件进行修改,将 nameserver 后的地址改成设置的默认 DNS 服务器即可:
sudo vim /etc/resolv.conf

这样配置好后就可以正常访问外网:

3.2 MetaSploitable无法被ping通
这里纠正一个错误,之前我将以下命令写入到 /etc/rc.local 中:
ifconfig eth0 192.168.200.130 netmask 255.255.255.128 route add gw 192.168.200.129
这个命令是错误的,正确的命令应当为:
ifconfig eth0 192.168.200.130 netmask 255.255.255.128
route add default gw 192.168.200.129
需要拆分成两行,并在 route add 后加上 default 关键字,修改后即可正常 ping 通。
4.学习感想和体会
TCP/IP 协议族在设计之初主要考虑的是网络互联互通,而非安全性。ARP 协议缺乏身份认证机制,ICMP 重定向可被轻易伪造,TCP 三次握手存在资源不对称问题——这些都是导致实验攻击能够成功实施的根本原因。理论学习时对这些漏洞的理解较为抽象,而通过亲手实践,我对协议层面的安全问题有了更加直观和深刻的认识。
同时,我更加意识到网络安全防护的重要性。在实际生产环境中,应当采取相应的防护措施:如使用静态 ARP 绑定防止 ARP 欺骗、关闭 ICMP 重定向功能、部署 SYN Cookie 机制抵御 SYN Flood 攻击、使用 SSH 替代明文传输的 telnet 协议等。
课本上的知识只有通过动手实践才能真正掌握。本次实验让我将网络协议原理、攻击技术原理与实际操作紧密结合,不仅巩固了理论知识,更培养了网络安全的实战能力。
浙公网安备 33010602011771号