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

kali IP地址查看

受害机A信息

属性
虚拟机 SEEDUbuntu9
IP地址 192.168.200.3
MAC地址 00:0c:29:e8:58:db

SEEDUbuntu9 IP地址查看


受害机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协议的无状态性和信任机制缺陷:

  1. 无验证机制:主机收到ARP响应包时,不会验证该响应是否对应之前的ARP请求
  2. 动态更新:收到ARP响应后,主机会立即更新本地ARP缓存表
  3. 广播特性: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

Kali ping SEEDUbuntu9

# 在SEEDUbuntu9上执行
ping 192.168.200.5

SEEDUbuntu9 ping Kali

要实现中间人攻击,攻击机必须能够转发截获的流量,否则会导致靶机断网:

# 开启IP转发
sudo sysctl -w net.ipv4.ip_forward=1

# 验证是否开启
cat /proc/sys/net/ipv4/ip_forward
# 输出应为 1

image

步骤2:查看初始ARP缓存

在靶机上执行arp -a命令,查看攻击前的ARP缓存信息。该命令会显示当前主机已缓存的IP-MAC地址映射表。

arp -a

输出中应包含网关(192.168.200.1)的正确MAC地址,这是后续验证攻击是否成功的重要依据。

SEEDUbuntu9执行arp -a

步骤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

攻击前:

image

攻击后:
image

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重定向攻击利用了以下安全缺陷:

  1. 信任机制:主机默认信任来自网关的ICMP重定向报文
  2. 无认证:ICMP协议本身不提供身份验证机制
  3. 路由表修改:收到重定向报文后,主机会自动更新本地路由表

攻击者伪造来自合法网关的ICMP重定向报文,诱使目标主机将特定目的地址的流量重定向到攻击机指定的"新网关"(实际为攻击机自身),从而实现流量劫持。

实验步骤

步骤1:查看网关信息

在SEEDUbuntu9靶机上查看当前网络配置和网关信息。

route -n
字段 说明
Destination 目标网络地址
Gateway 网关地址
Genmask 子网掩码
Flags 路由标志(U=UP, G=GATEWAY)
Iface 出接口

从输出中可以确认当前默认网关为192.168.200.1

SEED虚拟机网关信息

步骤2:测试外网连通性

使用ping命令测试靶机与外网的连通性,确保网络环境正常。

ping www.baidu.com

ping命令测试外网连通性

步骤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三次握手过程:

  1. 客户端发送SYN报文(同步序列编号)
  2. 服务器回复SYN+ACK报文(同步+确认)
  3. 客户端发送ACK报文(确认),连接建立

SYN Flood攻击机制:
攻击者向目标服务器发送大量伪造源IP地址的SYN报文,但不完成第三次握手。服务器为每个半开连接(Half-open Connection)分配资源并等待客户端的ACK响应,当半连接队列被耗尽时,服务器无法再接受新的合法连接请求,导致拒绝服务。

实验步骤

步骤1:启动Wireshark抓包

在Kali攻击机上启动Wireshark网络分析工具,选择eth0网卡开始抓包,用于后续分析攻击流量特征。

# 启动Wireshark(图形界面)
sudo wireshark &

打开Kali Wireshark

步骤2:建立正常Telnet连接

在SEEDUbuntu9靶机上,使用Telnet客户端连接北邮人BBS服务器,模拟正常用户访问远程服务的行为。

luit -encoding gbk telnet bbs.byr.cn

连接成功后,可正常浏览版面、登录账号,表明Telnet服务处于正常工作状态。

Telnet登录BBS

步骤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。

Wireshark大量TCP报文

步骤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连接。

Kali执行netwox 78

步骤3:验证攻击效果

返回SEEDUbuntu9靶机,可观察到Telnet连接已被强制断开,系统提示连接中断。

连接断开

步骤4:Wireshark分析

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

RST报文


2.6 TCP会话劫持攻击

攻击原理

TCP会话劫持(TCP Session Hijacking)是一种高级中间人攻击技术,攻击者在成功拦截通信双方流量后,不仅被动监听数据,还能主动注入伪造数据包,冒充其中一方与另一方通信。

攻击成功的关键条件:

  1. 序列号预测:攻击者需要获取或预测TCP连接的当前序列号
  2. 中间人位置:攻击者需要能够截获双方通信流量
  3. 快速响应:攻击者需要在合法响应到达前发送伪造数据

ARP欺骗是实现中间人位置的常用手段,通过ARP毒化使攻击机成为通信双方的流量中转站。

实验步骤

步骤1:启动Ettercap

Ettercap是一款功能强大的网络嗅探和中间人攻击工具,支持多种协议分析和攻击插件。

sudo ettercap -G
参数 说明
sudo 以超级用户权限运行(需要原始套接字权限)
-G 启动图形用户界面模式

启动Ettercap

步骤2:扫描网络主机

在Ettercap界面中,依次点击菜单栏的HostsScan for hosts,扫描当前网段内的活跃主机。扫描完成后,点击HostsHost list查看扫描结果。

步骤3:设置攻击目标

在主机列表中,将SEEDUbuntu9(192.168.200.3)设置为Target 1,将Windows XP靶机(192.168.200.4)设置为Target 2。这一设置告诉Ettercap需要拦截并监听这两台主机之间的双向通信。

设置Target1和Target2

步骤4:启动ARP毒化

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

启动ARP毒化

配置说明:

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

ARP毒化配置

步骤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

此时,攻击机已成功处于两台目标主机之间的中间人位置,所有双向流量都会经过攻击机转发。

ARP毒化成功日志

步骤6:监控TCP连接

点击菜单栏的ViewConnections,打开连接监控视图,实时查看被拦截的TCP连接信息。

连接监控视图

步骤7:启动靶机Telnet服务

在SEEDUbuntu9靶机上启动Telnet服务,作为被攻击的服务端:

sudo service openbsd-inetd start

该命令启动OpenBSD inetd超级服务器,其中包含Telnet服务的配置。

启动Telnet服务

步骤8:建立Telnet会话

在Windows XP靶机上使用Telnet客户端登录SEEDUbuntu9:

telnet 192.168.200.3

输入用户名和密码完成登录。

Telnet登录

登录成功

步骤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端口是否处于监听状态。

启动Telnet服务


4. 学习感悟与思考

通过本次网络安全实验,我对网络层和传输层的攻击技术有了更加深入的理解和实践体验,主要收获如下:

协议设计的安全隐患

ARP、ICMP、TCP等基础网络协议在设计之初主要考虑的是功能实现和网络效率,对安全性考虑不足。ARP协议的无状态性、ICMP的信任机制、TCP的序列号可预测性等特性,都为攻击者留下了可乘之机。这提醒我们在设计新协议时,必须将安全性作为核心考量因素。

中间人攻击的危害性

ARP欺骗和ICMP重定向攻击的核心目的都是使攻击者处于中间人位置。一旦攻击者成功劫持通信链路,不仅可以窃听所有明文传输的数据,还能篡改、注入或阻断通信内容。本次实验中通过Ettercap成功捕获Telnet明文密码的经历,深刻说明了使用加密协议(如SSH替代Telnet)的重要性。

拒绝服务攻击的防御挑战

SYN Flood攻击展示了资源耗尽型攻击的威力。即使攻击者不获取任何敏感信息,也能使目标服务完全瘫痪。防御此类攻击需要综合手段:SYN Cookies、连接数限制、防火墙规则、负载均衡等。在实际生产环境中,DDoS防护是一项复杂且持续的工作。

posted @ 2026-04-14 22:18  祖国人  阅读(13)  评论(0)    收藏  举报