20253901 2025-2026-2《网络攻防实践》第四周作业
网络安全实验报告
1. 实践内容
本实验围绕网络层与传输层的常见攻击手段展开,通过搭建虚拟化实验环境,深入实践以下六种典型网络攻击技术:
| 序号 | 攻击类型 | 所属层次 | 攻击目标 |
|---|---|---|---|
| 1 | ARP缓存欺骗攻击 | 数据链路层/网络层 | 局域网内主机 |
| 2 | ICMP重定向攻击 | 网络层 | 目标主机路由表 |
| 3 | SYN Flood攻击 | 传输层 | 目标服务端口 |
| 4 | TCP RST攻击 | 传输层 | TCP连接会话 |
| 5 | TCP会话劫持攻击 | 传输层/应用层 | TCP会话数据 |
2. 实践过程
2.1 实验环境配置
攻击机信息
| 属性 | 值 |
|---|---|
| 虚拟机 | Kali Linux |
| IP地址 | 192.168.200.5 |
| MAC地址 | 00:0c:29:67:38:33 |

受害机A信息
| 属性 | 值 |
|---|---|
| 虚拟机 | SEEDUbuntu9 |
| IP地址 | 192.168.200.3 |
| MAC地址 | 00:0c:29:e8:58:db |

受害机B信息(用于会话嗅探实验)
| 属性 | 值 |
|---|---|
| 虚拟机 | Windows XP |
| IP地址 | 192.168.200.4 |
| MAC地址 | 00:0c:29:8b:b9:52 |
| 用途 | 作为Telnet客户端连接SEEDUbuntu9 |
网关信息
| 属性 | 值 |
|---|---|
| IP地址 | 192.168.200.1 |
| MAC地址 | 00:50:56:c0:00:08 |
2.2 ARP缓存欺骗攻击
攻击原理
ARP(Address Resolution Protocol,地址解析协议)是工作在数据链路层和网络层之间的协议,用于将IP地址解析为对应的MAC地址。在局域网中,主机通信需要知道目标IP对应的MAC地址,ARP协议正是完成这一映射的关键机制。
ARP缓存欺骗攻击(ARP Cache Poisoning)利用了ARP协议的无状态性和信任机制缺陷:
- 无验证机制:主机收到ARP响应包时,不会验证该响应是否对应之前的ARP请求
- 动态更新:收到ARP响应后,主机会立即更新本地ARP缓存表
- 广播特性:ARP请求以广播形式发送,任何主机都可响应
攻击者通过持续发送伪造的ARP响应包,将自己伪装成网关或其他主机,使目标主机的流量经过攻击机转发,从而实现中间人攻击(Man-in-the-Middle Attack)。
完整攻击流程图
正常通信:
[靶机A] ←────────────→ [网关] ←────────────→ [互联网]
192.168.200.3 192.168.200.1
攻击后:
[靶机A] ←──────┐
192.168.200.3│
↓
[Kali攻击机] ←────→ [网关]
192.168.200.5 192.168.200.1
↑
[网关] ────────┘
(网关以为靶机A就是Kali)
所有流量都经过Kali转发!
实验步骤
步骤1:验证网络连通性,配置环境
首先使用ping命令测试Kali攻击机与SEEDUbuntu9靶机之间的网络连通性,确保两台主机处于同一网段且能够正常通信。
# 在Kali上执行
ping 192.168.200.3

# 在SEEDUbuntu9上执行
ping 192.168.200.5

要实现中间人攻击,攻击机必须能够转发截获的流量,否则会导致靶机断网:
# 开启IP转发
sudo sysctl -w net.ipv4.ip_forward=1
# 验证是否开启
cat /proc/sys/net/ipv4/ip_forward
# 输出应为 1

步骤2:查看初始ARP缓存
在靶机上执行arp -a命令,查看攻击前的ARP缓存信息。该命令会显示当前主机已缓存的IP-MAC地址映射表。
arp -a
输出中应包含网关(192.168.200.1)的正确MAC地址,这是后续验证攻击是否成功的重要依据。

步骤3:执行双向ARP欺骗
# 终端1:欺骗靶机(告诉靶机:网关的MAC是攻击机MAC)
sudo arpspoof -i eth0 -t 192.168.200.3 192.168.200.1
# 终端2:欺骗网关(告诉网关:靶机的MAC是攻击机MAC)
sudo arpspoof -i eth0 -t 192.168.200.1 192.168.200.3
| 参数 | 说明 |
|---|---|
-i eth0 |
指定网卡 |
-t 目标IP |
要欺骗的主机 |
| 最后一个IP | 要冒充的身份 |
步骤4:验证攻击成功
1. 在靶机上检查ARP缓存
arp -a
攻击前:

攻击后:

192.168.200.1(网关)对应的MAC地址已被篡改为00:0c:29:67:38:33(攻击机MAC)
2.3 ICMP重定向攻击
攻击原理
ICMP(Internet Control Message Protocol,互联网控制消息协议)是TCP/IP协议族的核心协议之一,主要用于在IP网络中传递控制消息和错误报告。ICMP重定向报文(Type 5)原本是路由器用于优化网络路径的合法机制:当路由器发现某台主机使用了非最优路由时,会向该主机发送ICMP重定向报文,建议其更新路由表以使用更优路径。
ICMP重定向攻击利用了以下安全缺陷:
- 信任机制:主机默认信任来自网关的ICMP重定向报文
- 无认证:ICMP协议本身不提供身份验证机制
- 路由表修改:收到重定向报文后,主机会自动更新本地路由表
攻击者伪造来自合法网关的ICMP重定向报文,诱使目标主机将特定目的地址的流量重定向到攻击机指定的"新网关"(实际为攻击机自身),从而实现流量劫持。
实验步骤
步骤1:查看网关信息
在SEEDUbuntu9靶机上查看当前网络配置和网关信息。
route -n
| 字段 | 说明 |
|---|---|
Destination |
目标网络地址 |
Gateway |
网关地址 |
Genmask |
子网掩码 |
Flags |
路由标志(U=UP, G=GATEWAY) |
Iface |
出接口 |
从输出中可以确认当前默认网关为192.168.200.1。

步骤2:测试外网连通性
使用ping命令测试靶机与外网的连通性,确保网络环境正常。
ping www.baidu.com

步骤3:发起ICMP重定向攻击
在Kali攻击机上执行以下命令,向靶机发送伪造的ICMP重定向报文:
sudo netwox 86 -f "host 192.168.200.3" -g 192.168.200.5 -i 192.168.200.1
| 参数 | 含义 | 说明 |
|---|---|---|
86 |
工具编号 | netwox中ICMP重定向攻击模块 |
-f |
Filter | 过滤条件,指定只监听来自192.168.200.3的数据包 |
-g |
Gateway | 新网关地址,即攻击机IP(192.168.200.5) |
-i |
IP | 伪造的源IP地址,即真实网关IP(192.168.200.1) |
攻击逻辑解析:
-f "host 192.168.200.3":设置嗅探过滤器,只捕获靶机发出的数据包-g 192.168.200.5:指定"新网关"为攻击机自身,使靶机将流量转发给攻击机-i 192.168.200.1:伪造报文源地址为真实网关,使靶机信任该重定向报文

步骤4:观察攻击效果
在靶机上持续ping外网地址,观察ICMP重定向提示:
icmp_seq=1 Redirect Host(New nexthop: bogon (192.168.200.5))
该提示表明靶机已接收到ICMP重定向报文,并已将发往目标主机的流量下一跳修改为192.168.200.5(攻击机)。此时,靶机发往百度服务器的流量会先经过攻击机转发,攻击机成功实现了中间人位置。
2.4 SYN Flood攻击实验
攻击原理
SYN Flood攻击是一种经典的拒绝服务攻击(DoS,Denial of Service),针对TCP协议的三次握手机制设计。
正常TCP三次握手过程:
- 客户端发送SYN报文(同步序列编号)
- 服务器回复SYN+ACK报文(同步+确认)
- 客户端发送ACK报文(确认),连接建立
SYN Flood攻击机制:
攻击者向目标服务器发送大量伪造源IP地址的SYN报文,但不完成第三次握手。服务器为每个半开连接(Half-open Connection)分配资源并等待客户端的ACK响应,当半连接队列被耗尽时,服务器无法再接受新的合法连接请求,导致拒绝服务。
实验步骤
步骤1:启动Wireshark抓包
在Kali攻击机上启动Wireshark网络分析工具,选择eth0网卡开始抓包,用于后续分析攻击流量特征。
# 启动Wireshark(图形界面)
sudo wireshark &

步骤2:建立正常Telnet连接
在SEEDUbuntu9靶机上,使用Telnet客户端连接北邮人BBS服务器,模拟正常用户访问远程服务的行为。
luit -encoding gbk telnet bbs.byr.cn
连接成功后,可正常浏览版面、登录账号,表明Telnet服务处于正常工作状态。

步骤3:发起SYN Flood攻击
在Kali攻击机上执行以下命令,对靶机的23端口(Telnet服务默认端口)发起SYN Flood攻击:
sudo netwox 76 -i 192.168.200.3 -p 23
| 参数 | 含义 | 说明 |
|---|---|---|
76 |
工具编号 | netwox中SYN Flood攻击模块 |
-i |
IP地址 | 目标主机IP地址(靶机) |
-p |
Port | 目标端口号(Telnet默认端口23) |
该命令会持续向目标主机的23端口发送大量伪造源IP的TCP SYN报文,迅速耗尽靶机的半连接队列资源。
步骤4:分析攻击流量
在Wireshark中可观察到大量TCP SYN报文涌向靶机,这些报文具有随机伪造的源IP地址,目的端口均为23。

步骤5:观察攻击效果
返回SEEDUbuntu9靶机观察现象:
- 原本正常的BBS连接瞬间卡死,无任何响应
- 无法输入指令,也无法正常退出
- 尝试重新连接Telnet服务会直接失败
这表明靶机的Telnet服务已被SYN Flood攻击瘫痪,拒绝服务攻击成功。

2.5 TCP RST攻击
攻击原理
TCP RST(Reset)攻击是一种针对TCP连接会话的拒绝服务攻击。在TCP协议中,RST标志位用于异常终止连接:当主机收到一个RST报文时,会立即关闭对应的TCP连接,释放相关资源。
RST报文的合法使用场景包括:
- 端口未开放时回复RST
- 连接异常时强制终止
- 收到无效序列号的报文时回复RST
攻击者利用TCP协议的这一特性,通过嗅探网络流量获取合法TCP连接的序列号信息,然后伪造带有正确序列号的RST报文发送给通信双方,强制中断其TCP连接。
实验步骤
步骤1:建立Telnet连接
在SEEDUbuntu9靶机上建立到北邮人BBS的Telnet连接:
luit -encoding gbk telnet bbs.byr.cn
确保连接处于正常活跃状态。
步骤2:发起TCP RST攻击
在Kali攻击机上执行以下命令,向靶机发送伪造的TCP RST报文:
sudo netwox 78 -i 192.168.200.3
| 参数 | 含义 | 说明 |
|---|---|---|
78 |
工具编号 | netwox中TCP RST攻击模块 |
-i |
IP地址 | 目标主机IP地址(靶机) |
该命令会嗅探目标主机的TCP连接,并向通信双方发送伪造的RST报文,强制终止活跃的TCP连接。

步骤3:验证攻击效果
返回SEEDUbuntu9靶机,可观察到Telnet连接已被强制断开,系统提示连接中断。

步骤4:Wireshark分析
在Wireshark中查看抓取的报文,可以观察到攻击机向靶机发送了大量TCP RST报文,这些报文正是导致连接中断的直接原因。

2.6 TCP会话劫持攻击
攻击原理
TCP会话劫持(TCP Session Hijacking)是一种高级中间人攻击技术,攻击者在成功拦截通信双方流量后,不仅被动监听数据,还能主动注入伪造数据包,冒充其中一方与另一方通信。
攻击成功的关键条件:
- 序列号预测:攻击者需要获取或预测TCP连接的当前序列号
- 中间人位置:攻击者需要能够截获双方通信流量
- 快速响应:攻击者需要在合法响应到达前发送伪造数据
ARP欺骗是实现中间人位置的常用手段,通过ARP毒化使攻击机成为通信双方的流量中转站。
实验步骤
步骤1:启动Ettercap
Ettercap是一款功能强大的网络嗅探和中间人攻击工具,支持多种协议分析和攻击插件。
sudo ettercap -G
| 参数 | 说明 |
|---|---|
sudo |
以超级用户权限运行(需要原始套接字权限) |
-G |
启动图形用户界面模式 |

步骤2:扫描网络主机
在Ettercap界面中,依次点击菜单栏的Hosts → Scan for hosts,扫描当前网段内的活跃主机。扫描完成后,点击Hosts → Host list查看扫描结果。
步骤3:设置攻击目标
在主机列表中,将SEEDUbuntu9(192.168.200.3)设置为Target 1,将Windows XP靶机(192.168.200.4)设置为Target 2。这一设置告诉Ettercap需要拦截并监听这两台主机之间的双向通信。

步骤4:启动ARP毒化
点击菜单栏的Mitm → ARP poisoning...,在弹出的对话框中勾选Sniff remote connections选项,然后点击OK启动ARP毒化攻击。

配置说明:
Sniff remote connections:允许嗅探远程连接(跨网段流量)- 不勾选
Only poison one-way:执行双向毒化,确保双方流量都经过攻击机

步骤5:确认毒化成功
观察Ettercap底部的日志输出,若显示类似以下内容,说明ARP毒化成功:
ARP poisoning victims:
GROUP 1 : 192.168.200.3 00:0C:29:E8:58:DB
GROUP 2 : 192.168.200.4 00:0C:29:8B:B9:52
此时,攻击机已成功处于两台目标主机之间的中间人位置,所有双向流量都会经过攻击机转发。

步骤6:监控TCP连接
点击菜单栏的View → Connections,打开连接监控视图,实时查看被拦截的TCP连接信息。

步骤7:启动靶机Telnet服务
在SEEDUbuntu9靶机上启动Telnet服务,作为被攻击的服务端:
sudo service openbsd-inetd start
该命令启动OpenBSD inetd超级服务器,其中包含Telnet服务的配置。

步骤8:建立Telnet会话
在Windows XP靶机上使用Telnet客户端登录SEEDUbuntu9:
telnet 192.168.200.3
输入用户名和密码完成登录。


步骤9:捕获会话数据
返回Ettercap,在Connections视图中双击捕获的Telnet连接,查看详细数据包内容。由于Telnet协议以明文传输数据,攻击者可以直接看到用户输入的账号和密码信息。

从截图中可以清晰看到登录的用户名和密码以明文形式显示,证明TCP会话劫持攻击成功,攻击者已完全掌控该通信会话。
3. 学习中遇到的问题及解决
问题1:无法正常通过Telnet登录受害机
问题描述:
在尝试从Windows XP靶机Telnet登录SEEDUbuntu9时,连接被拒绝或提示服务不可用。
问题分析:
SEEDUbuntu9默认未启动Telnet服务,inetd超级服务器未运行,导致23端口未监听。
解决方法:
在SEEDUbuntu9靶机上手动启动Telnet服务:
sudo service openbsd-inetd start
该命令启动OpenBSD inetd守护进程,inetd会根据配置文件/etc/inetd.conf自动启动配置的服务(包括Telnet)。启动后,可使用netstat -tlnp命令验证23端口是否处于监听状态。

4. 学习感悟与思考
通过本次网络安全实验,我对网络层和传输层的攻击技术有了更加深入的理解和实践体验,主要收获如下:
协议设计的安全隐患
ARP、ICMP、TCP等基础网络协议在设计之初主要考虑的是功能实现和网络效率,对安全性考虑不足。ARP协议的无状态性、ICMP的信任机制、TCP的序列号可预测性等特性,都为攻击者留下了可乘之机。这提醒我们在设计新协议时,必须将安全性作为核心考量因素。
中间人攻击的危害性
ARP欺骗和ICMP重定向攻击的核心目的都是使攻击者处于中间人位置。一旦攻击者成功劫持通信链路,不仅可以窃听所有明文传输的数据,还能篡改、注入或阻断通信内容。本次实验中通过Ettercap成功捕获Telnet明文密码的经历,深刻说明了使用加密协议(如SSH替代Telnet)的重要性。
拒绝服务攻击的防御挑战
SYN Flood攻击展示了资源耗尽型攻击的威力。即使攻击者不获取任何敏感信息,也能使目标服务完全瘫痪。防御此类攻击需要综合手段:SYN Cookies、连接数限制、防火墙规则、负载均衡等。在实际生产环境中,DDoS防护是一项复杂且持续的工作。
浙公网安备 33010602011771号