20252916 2025-2026-2 《网络攻防实践》第4周作业
20252916 2025-2026-2 《网络攻防实践》第4周作业
1.知识点梳理与总结
1.1 实验要求
- ARP 缓存欺骗攻击:通过向目标主机发送虚假的 ARP 响应报文,利用系统不验证 ARP 请求即可直接更新缓存的漏洞,恶意篡改其 IP 与 MAC 地址的映射关系,从而为实施“中间人监听”或网络拦截创造条件。
- ICMP 重定向攻击:恶意构造并发送 ICMP 路由重定向控制报文,欺骗目标系统更改其本地的路由表配置,进而将本该发往默认网关的网络数据包非法引导至攻击者控制的设备上。
- SYN Flood 攻击:恶意滥用 TCP 三次握手机制,向目标服务器高频发送带有伪造源 IP 的 SYN 连接请求,致使服务器的半连接队列被彻底占满,最终造成系统资源耗尽,无法响应合法用户的正常网络访问。
- TCP RST 攻击:在掌握目标 TCP 通信的序列号范围后,精准伪造带有 RST标志位的数据包并注入网络,迫使通信双方瞬间释放连接资源,以此实现强行切断现有 TCP 链路的攻击目的。
- TCP 会话劫持攻击:利用 TCP 协议依靠序列号保障可靠通信的机制,在通信双方建立合法连接后,通过嗅探获取并伪造当前的序列号与确认号,强行接管或向正在进行的 TCP 会话中注入恶意指令。
1.2 实验环境
| 主机 | IP地址 | Mac地址 |
|---|---|---|
| Kali虚拟机2025.4(攻击机) | 192.168.200.9 | 00:0c:29:f1:93:ac |
| Kali虚拟机2021.1(靶机) | 192.168.200.4 | 00:0c:29:b4:1b:a1 |
| SEEDUbuntu9-Aug-2010 | 192.168.200.3 | 00:0c:29:7d:32:12 |
| VMNet8网卡 | 192.168.200.1 | 00:50:56:f6:45:a5 |
1.3 知识点整理
1.3.1 链路层与网络层协议漏洞分析
1. 地址解析机制与 ARP 欺骗
- 正常机制: 在局域网中,设备依赖 ARP 协议将 IP 地址动态解析为 MAC 物理地址。由于追求通信效率,系统会维护一张 ARP 缓存表。
- 安全缺陷: ARP 协议设计之初缺乏身份认证机制,且属于“无状态”协议。设备在收到 ARP 响应包时,不会去核实自己是否发送过对应的请求,而是直接更新缓存表。
- 攻击利用: 攻击者可针对此漏洞,恶意广播或单播伪造的 ARP 响应包,将网关或目标主机的 IP 错误地绑定到攻击者的 MAC 地址上。这使得本该正常传输的数据流被强行“拐偏”至攻击者机器,为后续的监听(嗅探)、篡改或中间人攻击铺平了道路。
2. 路由优化机制与 ICMP 重定向欺骗
- 正常机制: ICMP 重定向报文本是路由器用来通知主机“网络中存在更优转发路径”的控制信息,目的是减少不必要的路由跳数。
- 攻击利用: 攻击者伪装成当前网关,向目标主机发送伪造的 ICMP 重定向报文,谎称访问特定目标(如靶机)的最佳路径需经过攻击者的 IP。一旦受害主机轻信并修改了本地路由表,其特定流量就会被劫持至攻击者处。
1.3.2 传输层安全缺陷
TCP 协议虽然提供了可靠连接,但其三次握手和状态维护机制却极易被恶意利用。
1. 连接建立机制滥用:SYN Flood 拒绝服务攻击
- 原理剖析: 服务器在收到客户端的 SYN 连接请求后,会分配系统资源并将其放入“半连接队列”(SYN_RECV 状态),等待客户端的最终 ACK 确认。
- 攻击方式: 攻击者利用僵尸网络或伪造大量随机源 IP,向目标服务器高频发送 SYN 包。服务器回复 SYN+ACK 后,由于源 IP 是假的,永远等不到 ACK 回应。半连接队列迅速耗尽,导致服务器无法处理任何合法用户的正常连接请求。
2. 状态机操控:TCP RST 会话重置攻击
- 攻击原理: TCP 协议定义了 RST(Reset)标志位,用于在异常情况下强制拆除连接。如果攻击者通过网络嗅探获取了目标双方通信的 IP、端口,以及落在当前接收窗口内的合法序列号,便可伪造带有 RST 标志的 TCP 段。通信双方一旦收到此包,会立刻无条件释放连接,导致正在进行的会话被恶意掐断。
3. 信任机制破坏:TCP 会话劫持
- 实现条件: 这是一种高级的中间人攻击。攻击者需先处于通信双方的链路中(如通过 ARP 欺骗),随后利用 tcpdump 等工具实时嗅探未加密(如 TELNET)的 TCP 流量,精准捕获双方当前的 SEQ(序列号)和 ACK(确认号)。
- 攻击过程: 掌握合法的 SEQ/ACK 后,攻击者便能伪造后续的数据包并注入恶意载荷(如系统命令)。由于包头特征完全合法,接收端会将其误认为是合法连接的一部分并予以执行,从而实现未授权的远程控制。
1.3.3 核心实验工具集
- 流量截获与分析:
tcpdump:强大的命令行网络嗅探器,支持细粒度的 BPF 语法过滤(如按端口、标志位、绝对序列号-S过滤),非常适合在无图形界面的服务器环境下进行实时包捕获。Wireshark:图形化协议解析利器,能够将抓取到的.pcap文件分层解码,直观呈现复杂的网络交互逻辑(如追踪 TCP 数据流)。
- 流量伪造与注入:
netwox
这是一个多功能的网络测试与攻击工具箱,内置了上百个独立模块,每个模块都有相对应的功能。
2.实验过程
2.1 ARP 缓存欺骗攻击
-
在kali 2025.4虚拟机依次执行以下命令,查看并记录当前活跃主机的ip和mac,然后ping目的主机kali 2021.1,刷新查看arp缓存
nmap -sP 192.168.200.0/25 ping 192.168.200.4 arp -a![image-20260401203530190]()
-
安装netwox工具
sudo apt update sudo apt install netwox![image-20260401204003328]()
![image-20260401204030389]()
![image-20260401204142603]()
-
在kali2021.1上执行以下命令
ping 192.168.200.1 arp -n现在kali2021.1靶机中显示的
192.168.200.1网关的mac地址是00:50:56:f6:45:a5。![image-20260401204837925]()
-
通过指令修改arp缓存,使靶机的ip地址指向攻击机的mac地址,在kali2025.4上执行指令
sudo netwox 80 -e 00:0c:29:f1:93:ac -i 192.168.200.1 -E 00:0c:29:b4:1b:a1 -I 192.168.200.4-
netwox 80:调用第 80 号工具,准备持续发送 ARP 响应包。 -
-e 00:0c:29:f1:93:ac:-e(eth src) 代表在包里填写的源 MAC 地址。这里填的是kali2025.4攻击机的真实 MAC 地址。 -
-i 192.168.200.1:-i(ip src) 代表在包里填写的源 IP 地址。这里填的是网关的 IP 地址。- 这两步连起来的意思是:在数据包中声称“IP为 192.168.200.1(网关)的设备,它的 MAC 地址是 00:0c:29:f1:93:ac(kali2025.4攻击机)”。
-
-E 00:0c:29:b4:1b:a1:-E(eth dst) 代表接收方的 MAC 地址。这里填的是kali2021.1靶机的 MAC 地址。 -
-I 192.168.200.4:-I(ip dst) 代表接收方的 IP 地址。这里填的是靶机的 IP 地址。- 这两步的意思是:把上面那个精心伪造的数据包,精准地定向发送给靶机。
这条命令是利用netwox 80告诉kali2021.1靶机,网关IP的Mac地址是
00:0c:29:f1:93:ac(实际上是攻击机kali2025.4的Mac地址),让他快存在自己的缓存表中,从而实现了ARP欺骗,这样靶机往外网发的流量包都会被截获。![image-20260401212059389]()
可以看出来靶机的ARP表中显示的网关ip对应的mac地址变成了攻击机的mac地址,即后续发往外面的流量都会被攻击机截获,成功完成了ARP欺骗。
-
-
重启靶机机器刷新他的ARP缓存,可以看到靶机的ARP表又变得正确了。
![image-20260401212611672]()
2.2 ICMP 重定向攻击
-
开启 IP 转发
sudo sysctl net.ipv4.ip_forward=1 -
发动重定向攻击
sudo netwox 86 -g 192.168.200.9 -f "host 192.168.200.4"netwox 86:调用专门发送 ICMP IPv4 路由重定向报文的模块。-f "host 192.168.200.4":-f代表 filter(过滤规则)。让 netwox 盯着网络,一旦嗅探到源头是靶机(192.168.200.4)发出的数据包,就触发攻击。-g 192.168.200.9:-g代表 new gateway(新的网关)。这是包里的核心谎言,告诉靶机:以后你的最优下一跳网关是 192.168.200.9(即kali2025.4攻击机的 IP)。
![image-20260402104015446]()
-
在运行一个终端,输入以下命令,验证攻击是否生效
sudo tcpdump -i eth0 -n -v icmp and icmp[0] == 5-v:显示详细输出,看清包里的具体内容。icmp:只抓取 ICMP 协议的包(Ping 和路由控制都属于这个协议)。and icmp[0] == 5:它直接去检查 ICMP 数据包头部的 Type 字段。而 Type 为 5 正是“ICMP 重定向”报文!
![image-20260402104159167]()
-
在靶机上
ping 192.168.200.3,显示下一跳是攻击机kali2025.4的IP地址,已经实现了ICMP重定向攻击。![image-20260402104610985]()
-
查看攻击机中抓包到的内容,详解一下第一行命令:
192.168.200.9 > 192.168.200.4: ICMP redirect 192.168.200.3 to host 192.168.200.9, length 36这条命令的意思是当kali2021.1靶机向seed虚拟机发送ping请求时,攻击机监听到了这个流量,他伪造了大量的ICMP Redirect报文发送给靶机,报文内容是告诉靶机我才是你的网关,你下次去192.168.200.3的流量应该从我这里走。从而实现了ICMP重定向攻击。
![image-20260402105758793]()
2.3 SYN Flood 攻击
-
查看SeedUbuntu的网卡名为eth6
![image-20260403105923776]()
-
在SeedUbuntu上打开wireshark抓包,使用telnet访问bbs.newsmth.net服务器
luit -encoding gbk telnet bbs.newsmth.net -
在kali2025.4攻击机上进行SYN Flood 攻击
netwox 76 -i 192.168.200.3 -p 23可以看见seed虚拟机已经明显卡顿,连鼠标都动不了了。停止攻击后,可以再seed虚拟机的wireshark中看见很多报错的tcp数据包。从而成功的实现了SYN Flood攻击
![image-20260404125739528]()
![image-20260404125712693]()
![image-20260404130106305]()
2.4 TCP RST 攻击
TCP 连接是靠双方维护状态来保持的。如果系统突然收到一个带有 RST(Reset,复位)标志位的数据包,它会认为“网络出现严重异常”或“对方要求强行分手”,从而立刻无条件中断连接。攻击者只要嗅探到双方当前的通信 IP 和端口,伪造这样一个 RST 包扔进网络,就能成功实现攻击。
-
在seed虚拟机中连接水木社区,并且保持登录界面不要关闭。
luit -encoding gbk telnet 120.92.212.76![image-20260404131030178]()
-
在kali2.25.4攻击机中执行78号模块,
netwox 78模块一旦运行,就会在局域网里疯狂嗅探所有的 TCP 流量。只要看到有 TCP 通信,它就自动伪造 RST 包发给双方sudo netwox 78![image-20260404131106684]()
-
切换会SEED虚拟机查看攻击结果,发现telnet连接被中断,要求重新登录。
![image-20260404131300671]()
2.5 TCP 会话劫持攻击
TCP 协议只根据序列号和确认号来确认数据包是谁发的呢,在通信双方已经建立好连接的情况下,攻击者如果能偷看到当前准确的 SEQ 和 ACK 序号,就能自己捏造一个数据包,塞进恶意命令。服务器看到序号正确,就会把它当成合法用户的正常指令去执行。
这个实验需要三个角色:服务器(SEEDUbuntu)、合法客户端(kali2021.1)、攻击机(Kali2025.4)
-
在 SEEDUbuntu 上启动 Telnet 服务等待被连
sudo /etc/init.d/openbsd-inetd restart![image-20260404134330059]()
-
用同网段的合法客户端机器kali2021.1输入
telnet 192.168.200.3正常登录进去,输入账号seed和密码dees。 此时,合法的 TCP 连接通道已经建立。![image-20260404191027569]()
-
在 Kali 2025.4攻击机终端中输入以下抓包命令,准备拦截它们的 SEQ/ACK。
sudo tcpdump -i eth0 -n -S host 192.168.200.4 and host 192.168.200.3![image-20260404191059360]()
-
在kali2021.1的 telnet 窗口里,随便敲一个命令(比如
pwd)并回车。 这时,Kali 2025.4攻击机的 tcpdump 屏幕上会跳出几行数据。找到客户端发给服务器的那一行(带Flags [P.])。记录下三个关键信息:客户端临时端口(比如192.168.200.x.38308里的 38308)seq后面的数字ack后面的数字
![image-20260404191204926]()
![image-20260404192602167]()
由上图可以看出,看最后几条的报文信息,可以得出客户端临时端口为46438,seq应该为3561191064,ack为3675985754。
-
发动劫持注入命令(Kali 2025.4攻击机): 按
Ctrl + C停止 tcpdump。然后利用刚刚偷来的数据,使用 40 号模块向服务器发射伪造包(创造一个名为HACKER的空文件)注:创建文件的命令是
touch /tmp/HACKER\n,使用在线网站把ASCII转化为HEX十六进制数![image-20260404133828343]()
sudo netwox 40 -l 192.168.200.4 -m 192.168.200.3 -o 46438 -p 23 -q 3561191064 -r 3675985754 -z -A -H "746f756368202f746d702f4841434b45520a"![image-20260404192855255]()
一开始tmp文件夹下面没有HACKER的文件。
![image-20260404192201165]()
-
在SEEDUbuntu 的终端里,输入
ls /tmp。多了一个名为HACKER的文件,说明劫持会话并注入命令成功了。![image-20260404192923630]()
3.学习中遇到的问题及解决
问题1:SEED虚拟机联通不了外网,访问不了bbs.newsmth.net服务器,做不了实验。
解决办法:查询发现可以ping通整个VMware的网关ip,但是就是ping不通外网,经查询route -n查看路由转发表发现他的默认路由表有问题,会转发到192.168.200.10上去,而设置中没有这个网关,故肯定上不了网。

执行以下操作成功解决:
-
删掉错误的网关
sudo route del default gw 192.168.200.10 -
添加正确的虚拟机网关
sudo route add default gw 192.168.200.1成功ping通bbs.newsmth.net服务器的IP地址。
![image-20260404124026899]()
问题2:在做第五个实验任务时,seed虚拟机开启了telnet服务,但是我的kali2021.1客户端确登不上,报错如下图
![image-20260404134727641]()
解决办法:这个报错显示成功连接了虚拟机,但是一下就被踢下线了,经核查是刚才实验任务4的
netwox 78模块没有关(太粗心了哈哈哈),导致一建立连接就被掐断了。回到2025.4虚拟机中,ctrl+c关闭刚才的服务,再重新访问就可以正常连上了。
4.学习感悟、思考等
这次的 TCP/IP 网络协议攻防实践,难度还是挺大的。刚开始面对参考视频,还是有点没看懂,但是在网上搜了一些相关的攻击原理以及过程,逐渐才慢慢知道了这些网络攻击的内容以及大致流程。
让我印象最深的就是在做 TCP 会话劫持和 ARP 欺骗时,当我面对在 tcpdump 抓到的密密麻麻的数据流中,有点手足无措,但是幸好在与AI的问答中逐渐理解了数据流的内容,从中找出正确的 SEQ 和 ACK 序列号,并成功在目标seed主机中注入创建文件的命令。我深刻地意识到,互联网早期的协议(如 IPv4、TCP、ARP)在设计之初为了追求效率,舍弃了一些东西,并没有做到足够的安全。所以未来设计新的协议应该更加注重在身份验证方面的安全性。整个过程还出现了许多大大小小的问题,尤其是面对 No route to host 无法联通外网的报错时,我一步步排查出虚拟机被硬编码了错误的 200.10 默认网关并将其修正;这个极大的锻炼了我排查并且解决问题的能力。让我真正理解了路由到底是怎么走的。
这次实践让我明白了一个道理:真正的网络安全能力,绝不是仅仅会使用几个现成的抓包或发包工具,而是具备透过现象看本质的排查能力。只有对底层网络拓扑和协议细节熟稔于心,才能在攻防对抗中游刃有余。






























浙公网安备 33010602011771号