20252817 2025-2026-2 《网络攻防实践》实验四

学号 20252817 2025-2026-2 《网络攻防实践》实践四报告

1.实践内容

这次实验主要围绕 TCP/IP 协议栈中的五类典型攻击展开,分别是 ARP 缓存欺骗、ICMP 重定向、SYN Flood、TCP RST 和 TCP 会话劫持。和前几次更偏向环境搭建、连通性排查的实验相比,这次更强调自己主动构造攻击报文,再结合抓包结果去看攻击到底是怎么生效的。

ARP 缓存欺骗和 ICMP 重定向更偏向链路层、网络层的基础信任问题。前者重点看目标主机会不会把错误的 IP-MAC 对应关系写进 ARP 表,后者重点看目标主机会不会接受伪造的路由提示并修改下一跳。只有把攻击前后的 ARP 表、路由表和抓包现象放在一起看,才能比较清楚地说明实验结果。

SYN Flood、TCP RST 和 TCP 会话劫持则主要落在传输层。SYN Flood 用来观察大量半连接对目标主机的影响,TCP RST 用来验证伪造复位报文能不能把现有连接直接打断,TCP 会话劫持则更直观地说明,只要攻击者能稳定处在通信链路中间,就有可能看到甚至控制会话内容。

2.实践过程

这次实验里,ARP 欺骗主要使用 Win2K + Metasploitable + Kali eth1 来观察靶机侧的 ARP 缓存变化;后面的 ICMP Redirect、SYN Flood、TCP RST 和 TCP 会话劫持主要在 SEED 所在环境中完成。为了避免前后混乱,我先把这几台主机的地址信息统一列出来。

主机/网卡 IP 地址 MAC 地址
Kali eth0 192.168.200.64 00:0c:29:da:e4:aa
Kali eth1 192.168.200.194 00:0c:29:da:e4:b4
Metasploitable 192.168.200.130 00:0c:29:c5:da:77
Win2K 192.168.200.131 00-0C-29-E4-19-FC
SEED 192.168.200.65 00-0C-29-11-EF-75

(1)ARP 缓存欺骗攻击

实验开始前,我先分别查看 Kali、Metasploitable 和 Win2K 的地址信息,作为后面分析时的基线。因为原来的 Kali 不在靶机侧广播域里,所以我保留了原来的 eth0,另外新增了一张连接靶机侧网段的 eth1,这样 Kali 才能直接和 Win2K、Metasploitable 处在同一个二层网络中。

为了让 Win2K 的 ARP 表里先出现正常映射,我先让 Win2K 去访问 Metasploitable,然后再在 Kali 上发起 ARP 欺骗并同时抓包。

Kali 虚拟机上执行:

ip addr

Metasploitable 虚拟机上执行:

ifconfig eth0

Win2K 虚拟机上执行:

ipconfig /all
ping 192.168.200.130
arp -a

image

在 Kali 上启动 Wireshark,选择当前实验使用的网卡开始抓包。这里我直接用 arp 过滤器观察攻击前后 ARP Reply 的变化。

Kali 虚拟机的 Wireshark 过滤器中输入:

arp

image

随后在 Kali 上执行 ARP 欺骗命令,使用新增的 eth1 去伪造“192.168.200.130 对应的 MAC 地址是 Kali 自己的 MAC”。

Kali 虚拟机上执行:

sudo sysctl -w net.ipv4.ip_forward=1
sudo arpspoof -i eth1 -t 192.168.200.131 192.168.200.130

image

Win2K 虚拟机上执行:

arp -a

image
攻击持续一段时间后,我回到 Win2K 再次查看 ARP 缓存,并继续观察 Wireshark 中的 ARP Reply。可以看到,攻击前本来应该映射到 Metasploitable 的地址,后来已经被错误写成了 Kali eth1 的 MAC 地址。

(2)ICMP 重定向攻击

这一部分我改用 SEED 主机来做。先在 SEED 上确认它可以正常访问外网,并查看当前默认网关;再由 Kali 伪造 ICMP Redirect 报文,诱导 SEED 把后续流量的下一跳改成 Kali。

先在 SEED 虚拟机上执行:

ping www.baidu.com
route -n

可以看到 SEED 能够正常访问外网,同时默认网关是 192.168.200.2

image
image

然后在 Kali 上发送 ICMP Redirect 报文,把新的下一跳伪造成 192.168.200.194

Kali 虚拟机上执行:

sudo netwox 86 -f "host 192.168.200.65" -g 192.168.200.194 -i 192.168.200.2

其中三个地址分别表示:SEED 的 IP、Kali 伪造的新网关地址、SEED 原来的默认网关地址。

再次回到 SEED 虚拟机上查看路由表:

route -n

可以看到,下一跳已经被重定向到了 Kali。

image

在 Kali 上打开 Wireshark 抓包,也可以看到 ICMP Redirect 数据包。

Kali 虚拟机的 Wireshark 过滤器中输入:

icmp

image

① 攻击前的默认路由状态

SEED 虚拟机上先执行 route -n,可以看到默认网关原本是 192.168.200.2

② ICMP Redirect 报文与路由变化

在 Kali 发出 netwox 86 之后,SEED 的路由表出现了变化,新的下一跳变成了 192.168.200.194,说明目标主机接受了这次重定向提示。

③ 对后续流量路径的影响

从后续抓包现象看,原本应该先走原网关的流量开始优先发向 Kali,这说明 ICMP Redirect 已经影响了目标主机的路由选择。


(3)SYN Flood 攻击

这一部分我继续使用 SEED 环境。先在 SEED 上建立一个正常的 Telnet 连接,确认访问是通的;然后在 Kali 上持续发送 SYN 报文,再看抓包和连接现象的变化。

SEED 虚拟机上执行:

luit -encoding gbk telnet bbs.mysmth.net

这样可以先建立一个正常连接,作为对比基线。

image

然后在 Kali 虚拟机上执行:

sudo netwox 76 -i 192.168.200.65 -p 23

其中 -i 表示目标主机 IP,也就是 192.168.200.65-p 23 表示攻击的是 Telnet 默认端口。

image

这时在 Kali 上打开 Wireshark,可以看到短时间内刷出了大量带 SYN 标志的 TCP 报文。

image

再回到 SEED,可以发现原来的连接已经中断或者响应明显变慢。

image

① 攻击前后的访问变化

攻击前,SEED 可以正常建立 Telnet 连接;攻击开始后,连接会变慢,甚至直接中断。

② 抓包中的典型特征

Wireshark 中可以看到大量只带 SYN 标志的 TCP 报文不断出现,这就是 SYN Flood 最直观的现象。

③ 攻击原理

SYN Flood 本质上是不断制造半连接,占用目标主机的连接资源。这样一来,正常用户再去建立连接时,就容易出现变慢、超时或者失败的情况。


(4)TCP RST 攻击

TCP RST 攻击要求先存在一条正常会话,所以这一部分我还是先在 SEED 上建立 Telnet 连接,然后再由 Kali 发送伪造的 RST 报文,观察连接会不会被直接打断。

SEED 虚拟机上执行:

luit -encoding gbk telnet bbs.mysmth.net

image

然后在 Kali 虚拟机上执行:

sudo netwox 78 -i 192.168.200.65

其中 -i 表示目标主机 SEED 的 IP 地址。

image

命令发出后,再回到 SEED,可以看到原来的连接已经被直接断开。

image

与此同时在 Wireshark 中,也能看到带有 RST 标志的 TCP 报文。

image

① 注入前后的连接现象

攻击前连接是正常的,发送 RST 报文后,现有会话会被很快打断。

② 抓包中的 RST 特征

Wireshark 里能明显看到带 RST 标志的 TCP 报文,而且和前一部分相比,这类报文数量没那么多,但效果更直接。

③ 攻击原理

TCP RST 攻击的核心,就是伪造一条看起来像“合法复位报文”的数据包。一旦目标主机接受了这条报文,当前连接就会被直接终止。


(5)TCP 会话劫持攻击

这一部分我使用 Ettercap 来做。思路和前面的中间人攻击类似,先让 Kali 处在通信链路中间,再去看 Telnet 明文会话内容。

先在 Kali 虚拟机上搜索并打开 Ettercap,输入密码后进入图形界面。Primary Interface 选择 eth0,然后点击右上角的对勾确认。

image

接着点击 Hosts -> Scan for hosts 扫描网络中的主机,再通过 Hosts list 查看扫描结果。

image

随后把 192.168.200.65(SEED)设置为 Target 1,把 192.168.200.130(Metasploitable)设置为 Target 2,再打开 MITM -> ARP poisoning,点击确认。

image
image

之后打开 View 中的 Connections,准备观察连接内容。

image

再回到 SEED 虚拟机,输入下面的命令连接靶机 Metasploitable:

telnet 192.168.200.130

image

这时候再回到 Kali,就可以在 Ettercap 里看到账号密码等明文内容已经被截获。

image

① 会话内容是否被截获

从 Ettercap 的窗口里可以直接看到 SEED 输入的账号、密码和命令内容,说明 Kali 已经成功进入通信链路中间,会话内容也已经被截获。

② 劫持成功的前提

这一部分能成功,关键还是前面的中间人位置是否稳定。只要 ARP 欺骗能持续维持,攻击机就能一直观察到双方会话内容。

③ 实验现象说明的问题

Telnet 本身是明文协议,一旦会话被中间人截获,账号密码和输入命令都会直接暴露出来,所以它在安全性上确实比较脆弱。


3.学习中遇到的问题及解决

  • 问题1:一开始 ARP 欺骗一直不成功。

    我最开始直接用 Kali 原来的网卡做 ARP 欺骗,结果抓包里能看到伪造报文,但 Win2K 的 ARP 表一直不变。后面排查才发现,原来的 Kali 和 Win2K、Metasploitable 不在同一个广播域里,所以很难直接改掉靶机侧的 ARP 表。

    后来我给 Kali 增加了一张连接靶机侧的 eth1,地址配置为 192.168.200.194,再改用 arpspoof -i eth1 发起欺骗,问题就解决了。

  • 问题2:实验环境切换后,前后主机很容易写混。

    这次实验前半部分主要用的是 Win2K + Metasploitable,后半部分又换成了 SEED 环境。如果不提前把主机和网卡对应关系整理好,写报告时就很容易把 IP、目标机和抓包位置写乱。

    所以后面我先把所有主机的地址信息列成了表格,再按实验分别说明“在哪台虚拟机上执行什么命令”,这样清楚很多。

  • 问题3:ICMP Redirect 不能只看抓包,还要看路由表。

    一开始我容易把“已经抓到 ICMP Redirect 报文”直接当成“攻击成功”。后来发现这样不够,因为真正关键的是目标机的路由表有没有变化。

    所以后面我把 Wireshark 抓包和 route -n 一起看。只有同时看到重定向报文和路由项变化,我才把它判断为攻击成功。

  • 问题4:TCP RST 和会话劫持都很依赖前置条件。

    这两部分不是命令跑起来就一定能看到效果,前提是要先有一条稳定的正常会话,而且攻击机还得真的处在链路中间。只要前面的 ARP 欺骗不稳定,或者会话已经断了,后面现象就会不明显。

    我的处理方法就是先把正常连接建立好,再去发 RST 或打开 Ettercap,这样结果会稳定很多。

4.实践总结

这次实验让我对“协议本身默认信任很多信息”这件事有了更直观的理解。比如 ARP 欺骗里,Win2K 的 ARP 表确实会被错误更新;ICMP Redirect 里,目标主机也可能因为一条伪造的提示报文去修改下一跳。这些以前更多只是课本上的概念,这次通过抓包和实际现象能看得更清楚。

后面几部分对传输层的认识也更具体了。SYN Flood 让我看到服务不一定会立刻完全崩掉,但连接确实会明显变慢;TCP RST 则说明,只要复位报文伪造得合适,原来的连接就可能被直接打断;会话劫持这一步最直观,因为在 Ettercap 里能直接看到 Telnet 的明文账号密码,说明中间人攻击一旦成立,危害是很明显的。

总的来说,这次实验最大的收获还是学会了把“命令输出”“抓包结果”和“目标主机状态变化”放在一起看。只要把攻击前、攻击中和攻击后的现象连起来分析,很多问题其实都会变得比较清楚。

参考资料

posted @ 2026-04-13 03:32  ch_c  阅读(11)  评论(0)    收藏  举报