ARP欺骗攻击详细介绍

news2024/11/17 19:33:22

文章目录

  • 一、ARP协议
    • 1. ARP 协议的工作原理
    • 2. ARP消息格式
      • 2.1 ARP 请求格式 (ARP Request)
      • 2.2 ARP 响应格式 (ARP Reply)
  • 二、ARP欺骗
    • 1. ARP 欺骗的工作原理
    • 2.ARP 欺骗的应用场景
    • 3. ARP 欺骗的攻击流程
    • 4. ARP 欺骗的常见工具
    • 5. ARP 欺骗的示例
      • 查看缓存表
      • 开启IP转发
      • 攻击者使用 arpspoof 执行 ARP 欺骗:
    • 6. ARP欺骗攻击的检测与防御
      • 6.1 ARP欺骗的检测方法
      • 6.2 ARP欺骗的防御措施

一、ARP协议

ARP 协议(Address Resolution Protocol)是一个在局域网内用于将网络层的 IP 地址映射到数据链路层的 MAC 地址的协议。它的主要作用是在一个局域网(LAN)中,让设备能够相互通信时,通过 IP 地址来找到目标设备的硬件地址(MAC 地址)。

1. ARP 协议的工作原理

  1. 网络层到数据链路层的映射

    • 在局域网中,每个设备都有一个唯一的 MAC 地址,这个地址由网络接口卡(NIC)分配。
    • 每个设备也有一个 IP 地址,用于在网络层进行通信。
    • 当一个设备需要与另一个设备通信时,它通常知道目标设备的 IP 地址,但不知道目标设备的 MAC 地址。ARP 协议就是用来解决这一问题的。
  2. ARP 请求
    当设备(源设备)需要向网络中的某个 IP 地址发送数据时,如果它不知道该 IP 地址对应的 MAC 地址,它会发送一个 ARP 请求。ARP 请求是广播的方式发送到网络中的所有设备。ARP 请求的格式如下:

    • 目标 IP 地址:请求设备的 IP 地址。
    • 目标 MAC 地址:通常是全 0,表示请求中没有指定 MAC 地址。
    • 源 IP 地址:请求发起者的 IP 地址。
    • 源 MAC 地址:请求发起者的 MAC 地址。

    例如,设备 A 想要与设备 B 通信,设备 A 知道设备 B 的 IP 地址,但不知道其 MAC 地址。设备 A 会发送一个 ARP 请求,询问 “IP 地址为 192.168.1.2 的设备的 MAC 地址是什么?”

  3. ARP 响应
    网络中拥有目标 IP 地址的设备(在这个例子中是设备 B)会接收到 ARP 请求,并检查请求中的目标 IP 地址是否匹配。如果匹配,设备 B 会发送一个 ARP 响应消息,告知请求者其 MAC 地址。ARP 响应是单播的,只会发送给发出请求的设备。ARP 响应的格式如下:

    • 目标 IP 地址:响应目标的 IP 地址。
    • 目标 MAC 地址:响应目标的 MAC 地址(设备 B 的 MAC 地址)。
    • 源 IP 地址:响应发起者的 IP 地址(设备 B 的 IP 地址)。
    • 源 MAC 地址:响应发起者的 MAC 地址(设备 B 的 MAC 地址)。
  4. 更新 ARP 缓存
    设备 A 收到 ARP 响应后,会将设备 B 的 IP 地址和 MAC 地址映射关系存储在 ARP 缓存中。这个映射关系将会在一定时间内保持,以便后续的通信可以直接使用 MAC 地址而不需要再次发送 ARP 请求。

  5. 数据发送
    现在,设备 A 就可以根据 ARP 响应中获得的设备 B 的 MAC 地址,直接将数据包发送到设备 B 的 MAC 地址。

2. ARP消息格式

2.1 ARP 请求格式 (ARP Request)

+------------------------+------------------------+
| Field                  | Length                 | Description                         |
+------------------------+------------------------+-------------------------------------+
| Hardware Type          | 2 bytes                | 0x0001 (Ethernet)                   |
+------------------------+------------------------+-------------------------------------+
| Protocol Type          | 2 bytes                | 0x0800 (IPv4)                       |
+------------------------+------------------------+-------------------------------------+
| Hardware Address Length| 1 byte                 | 6 (Ethernet MAC 地址长度)           |
+------------------------+------------------------+-------------------------------------+
| Protocol Address Length| 1 byte                 | 4 (IPv4 地址长度)                  |
+------------------------+------------------------+-------------------------------------+
| Operation              | 2 bytes                | 0x0001 (ARP 请求)                  |
+------------------------+------------------------+-------------------------------------+
| Sender MAC Address     | 6 bytes                | 发送设备的 MAC 地址                |
+------------------------+------------------------+-------------------------------------+
| Sender IP Address      | 4 bytes                | 发送设备的 IP 地址                 |
+------------------------+------------------------+-------------------------------------+
| Target MAC Address     | 6 bytes                | 目标 MAC 地址(通常全 0)         |
+------------------------+------------------------+-------------------------------------+
| Target IP Address      | 4 bytes                | 目标 IP 地址                       |
+------------------------+------------------------+-------------------------------------+

2.2 ARP 响应格式 (ARP Reply)

+------------------------+------------------------+
| Field                  | Length                 | Description                         |
+------------------------+------------------------+-------------------------------------+
| Hardware Type          | 2 bytes                | 0x0001 (Ethernet)                   |
+------------------------+------------------------+-------------------------------------+
| Protocol Type          | 2 bytes                | 0x0800 (IPv4)                       |
+------------------------+------------------------+-------------------------------------+
| Hardware Address Length| 1 byte                 | 6 (Ethernet MAC 地址长度)           |
+------------------------+------------------------+-------------------------------------+
| Protocol Address Length| 1 byte                 | 4 (IPv4 地址长度)                  |
+------------------------+------------------------+-------------------------------------+
| Operation              | 2 bytes                | 0x0002 (ARP 响应)                  |
+------------------------+------------------------+-------------------------------------+
| Sender MAC Address     | 6 bytes                | 目标设备的 MAC 地址                |
+------------------------+------------------------+-------------------------------------+
| Sender IP Address      | 4 bytes                | 目标设备的 IP 地址                 |
+------------------------+------------------------+-------------------------------------+
| Target MAC Address     | 6 bytes                | 发送设备的 MAC 地址                |
+------------------------+------------------------+-------------------------------------+
| Target IP Address      | 4 bytes                | 发送设备的 IP 地址                 |
+------------------------+------------------------+-------------------------------------+

各字段的解释

  • Hardware Type (硬件类型):与 ARP 请求相同,0x0001 代表 Ethernet。
  • Protocol Type (协议类型):与 ARP 请求相同,0x0800 代表 IPv4。
  • Hardware Address Length (硬件地址长度):与 ARP 请求相同,Ethernet 地址为 6 字节。
  • Protocol Address Length (协议地址长度):与 ARP 请求相同,IPv4 地址为 4 字节。
  • Operation (操作类型)0x0002 表示 ARP 响应。
  • Sender MAC Address (发送者 MAC 地址):目标设备的 MAC 地址(回应设备提供的 MAC 地址)。
  • Sender IP Address (发送者 IP 地址):目标设备的 IP 地址(回应设备的 IP 地址)。
  • Target MAC Address (目标 MAC 地址):发送设备的 MAC 地址(请求者的 MAC 地址)。
  • Target IP Address (目标 IP 地址):发送设备的 IP 地址(请求者的 IP 地址)。

二、ARP欺骗

ARP 欺骗(ARP Spoofing)是一种局域网中的网络攻击技术。攻击者通过伪造虚假的 ARP 响应包,将自己的 MAC 地址伪装成目标设备的 MAC 地址,导致其他设备错误地更新其 ARP 缓存,从而将通信数据流重定向到攻击者或中断通信。


1. ARP 欺骗的工作原理

  1. ARP 缓存的弱点

    • ARP 协议本身没有验证机制。
    • 设备通常会无条件接受收到的 ARP 响应包,并更新 ARP 缓存,即使是未请求的 ARP 响应(这被称为 无请求 ARP)。
  2. 欺骗过程

    • 攻击者向局域网内的设备发送伪造的 ARP 响应包。
    • 在这些 ARP 响应包中,攻击者将其 MAC 地址与目标设备(如网关或通信方)的 IP 地址绑定。
    • 局域网内的设备接收到伪造的 ARP 响应后,更新其 ARP 缓存,将目标 IP 地址错误地映射到攻击者的 MAC 地址。
  3. 结果

    • 受害者的通信流量被重定向到攻击者。
    • 攻击者可以选择:
      • 拦截数据:攻击者作为中间人(MITM,Man-In-The-Middle)查看和修改通信内容。
      • 断开连接:攻击者不转发流量,导致受害者无法与目标设备通信。

2.ARP 欺骗的应用场景

  1. 中间人攻击(MITM)

    • 攻击者将自己伪装成网关设备,拦截目标主机与网关之间的通信。
    • 例如,目标主机的默认网关为 192.168.1.1,攻击者伪造 ARP 响应,将 192.168.1.1 的 MAC 地址改为攻击者的 MAC 地址。
  2. 会话劫持

    • 攻击者拦截通信数据包,提取敏感信息(如登录凭据、会话令牌等)。
  3. DNS 欺骗

    • 在拦截流量后,攻击者可以修改 DNS 请求,将目标主机指向恶意服务器。
  4. 拒绝服务攻击(DoS)

    • 攻击者通过 ARP 欺骗使流量中断,导致设备无法正常通信。

3. ARP 欺骗的攻击流程

  1. 网络扫描

    • 使用工具(如 nmaparp-scan)扫描局域网,获取 IP 地址和 MAC 地址对应关系。
  2. 发送伪造 ARP 包

    • 攻击者伪造 ARP 响应包,将目标设备(如网关)的 IP 地址与攻击者的 MAC 地址绑定。
    • 使用工具(如 arpspoofettercap)发送这些伪造包。
  3. 拦截数据流量

    • 数据流量被定向到攻击者设备,攻击者可以选择:
      • 查看数据包内容。
      • 修改数据并将其转发。
      • 丢弃数据,导致通信中断。

4. ARP 欺骗的常见工具

  1. arpspoof

    • 工具套件:dsniff
    • 功能:发送伪造的 ARP 响应包以实现欺骗。
  2. ettercap

    • 集成了 ARP 欺骗功能,可以实现中间人攻击并拦截通信数据。
  3. Cain & Abel(Windows):

    • 提供图形化界面,支持 ARP 欺骗和数据包捕获。
  4. Wireshark

    • 虽然不是攻击工具,但可用来监控和分析 ARP 流量,检测异常行为。
  5. BetterCAP

    • 强大的中间人攻击工具,支持多种协议的欺骗,包括 ARP。

5. ARP 欺骗的示例

查看缓存表

arp -a

开启IP转发

进行ARP欺骗之前必须要开启IP转发,否则当欺骗成功之后,目标主机会断网,这样就会被对方察觉。攻击者输入以下指令开启IP转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

检查 IP 转发是否启用
可以通过以下命令检查 IP 转发的状态:

cat /proc/sys/net/ipv4/ip_forward

如果输出为 1,表示已启用 IP 转发。
如果输出为 0,表示未启用。

攻击者使用 arpspoof 执行 ARP 欺骗:

# 欺骗目标主机,让其认为攻击者是网关
arpspoof -i eth0 -t 192.168.1.100 192.168.1.1

# 欺骗网关,让其认为攻击者是目标主机
arpspoof -i eth0 -t 192.168.1.1 192.168.1.100

# 使用tcpdump工具捕获目标主机的流量
tcpdump host 192.168.1.100

6. ARP欺骗攻击的检测与防御

6.1 ARP欺骗的检测方法

  1. 手动检测 ARP 表

    • 目标:检查是否存在异常的 IP-MAC 映射。
    • 方法
      1. 使用命令查看本机的 ARP 表:
        arp -a
        
      2. 对比网络设备的实际 MAC 地址,检查是否有 IP 地址对应多个不同的 MAC 地址。
      3. 发现异常时,可能表明存在ARP欺骗攻击。
  2. 使用检测工具

    • 工具推荐
      1. arpwatch:监控局域网中的 ARP 流量,检测 MAC 地址的变化。
        sudo apt install arpwatch
        sudo arpwatch -i eth0
        
      2. XArp:专门用于检测ARP欺骗的图形化工具,能够提供直观的报告。
      3. Wireshark
        • 通过设置显示过滤器 arp,捕获 ARP 包,分析是否存在异常。
        • 异常特征:大量的 ARP 响应(无请求的 ARP 包)。
  3. 检测中间人攻击

    • 如果怀疑通信被劫持,可以通过以下方法检测是否存在中间人攻击:
      1. 比较设备的 ARP 表是否频繁变化。
      2. 使用 ping 命令测试延迟,异常的延迟可能是因为数据被转发。
  4. 监控网络流量

    • 目标:捕获可疑的 ARP 包或异常的流量模式。
    • 方法
      • 使用 tcpdump 过滤 ARP 流量:
        sudo tcpdump -i eth0 arp
        
      • 使用 Wireshark,设置过滤器为 arp,检查是否存在重复的 ARP 响应或伪造的 MAC 地址。

6.2 ARP欺骗的防御措施

  1. 静态 ARP 表
  • 原理:将关键设备(如网关、服务器)的 IP-MAC 绑定关系手动写入 ARP 表,避免被篡改。
  • 设置方法
    sudo arp -s <目标IP> <目标MAC地址>
    
    • 例如,将网关 IP 192.168.1.1 绑定到其 MAC 地址:
      sudo arp -s 192.168.1.1 00:11:22:33:44:55
      
  • 优点:有效防止ARP欺骗。
  • 缺点:不适用于设备较多或网络环境频繁变化的场景。

2. 启用 ARP 绑定功能

  • 原理:通过交换机或路由器启用 IP-MAC 绑定,防止伪造的 ARP 包更新设备的 ARP 缓存。
  • 配置示例(以华为交换机为例):
    [Switch] arp static 192.168.1.1 00:11:22:33:44:55 vlan 1
    

3. 动态 ARP 检测(DAI)

  • 原理:交换机通过检查 DHCP snooping 数据库或管理员配置的绑定表,验证 ARP 请求和响应的合法性。
  • 优势:适合大型网络的自动化防护。
  • 实现方法(需支持 DAI 的交换机):
    1. 开启 DHCP snooping 功能。
    2. 启用动态 ARP 检测,拒绝不合法的 ARP 包。

4. 启用安全协议

  • 原理:使用加密协议保护数据,即使流量被拦截也无法直接读取或修改。
  • 常见安全协议
    • 使用 HTTPS 代替 HTTP。
    • 使用 SSH 代替 Telnet。
    • 使用 VPN(虚拟专用网络)加密敏感流量。

5. 网络隔离

  • 原理:通过 VLAN(虚拟局域网)将设备隔离,限制广播域范围,从而降低 ARP 欺骗的影响。
  • 实现方法
    • 配置交换机上的 VLAN,将不同的设备分配到不同的 VLAN。

6. 检测和防御工具

  • arpwatch
    • 实时监控 ARP 缓存的变化,记录 MAC 地址和 IP 的绑定变化日志。
  • Anti-ARP(Windows):
    • 检测和防止 ARP 攻击的专用软件。
  • BetterCAP
    • 一方面可用于模拟攻击,另一方面也可用来检测异常。

7. 禁用不必要的服务

  • 如果局域网中某些设备无需相互通信,可以通过防火墙规则阻止其广播 ARP 包。

8. 升级到 IPv6

  • IPv6 使用邻居发现协议(NDP)代替 ARP,并提供了更多安全特性,如 NDP 安全扩展(SEND),可以显著降低欺骗风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2242360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LogViewer NLog, Log4Net, Log4j 文本日志可视化

LogViewer 下载 示例&#xff1a;NLog文本日志可视化软件&#xff0c;并且能够实时监听输出最新的日志 nlog.config 通过udp方式传输给LogViewer (udp://ip:port) <?xml version"1.0" encoding"utf-8" ?> <nlog xmlns"http://www.nlog-…

安卓开发作业

整体效果: 安卓小作业 [TOC](页面配置) 整体框架有4个fragment页面,聊天,朋友,发现,设置. 配置如下: bash <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" xm…

【QML】QML多线程应用(WorkerScript)

1. 实现功能 QML项目中&#xff0c;点击一个按键后&#xff0c;运行一段比较耗时的程序&#xff0c;此时ui线程会卡住。如何避免ui线程卡住。 2. 单线程&#xff08;会卡住&#xff09; 2.1 界面 2.2 现象 点击delay btn后&#xff0c;执行耗时函数&#xff08;TestJs.func…

深度学习中的Pixel Shuffle和Pixel Unshuffle:图像超分辨率的秘密武器

在深度学习的计算机视觉任务中&#xff0c;提升图像分辨率和压缩特征图是重要需求。Pixel Shuffle和Pixel Unshuffle是在超分辨率、图像生成等任务中常用的操作&#xff0c;能够通过转换空间维度和通道维度来优化图像特征表示。本篇文章将深入介绍这两种操作的原理&#xff0c;…

pom中无法下载下来的类外部引用只给一个jar的时候

比如jar在桌面上放着,操作步骤如下&#xff1a; 选择桌面&#xff0c;输入cmd ,执行mvn install:install-file -DgroupIdcom -DartifactIdaspose-words -Dversion15.8.0 -Dpackagingjar -Dclassifierjdk11 -Dfilejar包名称 即可把jar包引入成功。

群控系统服务端开发模式-应用开发-前端图片格式功能开发

一、添加视图 在根目录下src文件夹下views文件夹下param文件夹下grade文件夹下&#xff0c;新建index.vue&#xff0c;代码如下 <template><div class"app-container"><div class"filter-container" style"float:left;"><…

【Web前端】Promise的使用

Promise是异步编程的核心概念之一。代表一个可能尚未完成的操作&#xff0c;并提供了一种机制来处理该操作最终的成功或失败。具体来说&#xff0c;Promise是由异步函数返回的对象&#xff0c;能够指示该操作当前所处的状态。 当Promise被创建时&#xff0c;它会处于“待定”&a…

EEG+EMG学习系列 (2) :实时 EEG-EMG 人机界面的下肢外骨骼控制系统

[TOC]( EEGEMG学习系列(2):实时 EEG-EMG 人机界面的下肢外骨骼控制系统) 论文地址&#xff1a;https://ieeexplore.ieee.org/abstract/document/9084126 论文题目&#xff1a;Real-Time EEG–EMG Human–Machine Interface-Based Control System for a Lower-Limb Exoskeleton …

Spring Authorization Server OAuth2.1

Spring Authorization Server介绍 Spring Authorization Server 是一个框架&#xff0c;它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。 它建立在 Spring Security 之上&#xff0c;为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产品提供…

《生成式 AI》课程 第3講 CODE TASK 任务3:自定义任务的机器人

课程 《生成式 AI》课程 第3講&#xff1a;訓練不了人工智慧嗎&#xff1f;你可以訓練你自己-CSDN博客 我们希望你创建一个定制的服务机器人。 您可以想出任何您希望机器人执行的任务&#xff0c;例如&#xff0c;一个可以解决简单的数学问题的机器人0 一个机器人&#xff0c…

Python知识点精汇!字符串:定义、截取(索引)和其内置函数

目录 一、字符串的定义 二、字符串的截取 1.截取干啥的 2.怎么用截取 3.打印多次 4.两个字符串拼接在一起 三、字符串内置函数 1.查询函数&#xff1a; &#xff08;1&#xff09;find(str,start,end) &#xff08;2&#xff09;index&#xff08;str,start,end&#…

创建vue+electron项目流程

一个vue3和electron最基本的环境搭建步骤如下&#xff1a;// 安装 vite vue3 vite-plugin-vue-setup-extend less normalize.css mitt pinia vue-router npm create vuelatest npm i vite-plugin-vue-setup-extend -D npm i less -D npm i normalize.css -S &#xff0…

从0开始机器学习--Day27--主成分分析方法

主成分分析方法(Principal components analysis) 在降维算法中&#xff0c;比较普遍的是使用主成分分析方法&#xff08;PCA&#xff09; PCA算法简单示例 如图&#xff0c;假设我们有一个二维的特征&#xff0c;想要将其降为一维&#xff0c;简单的方法是寻找一条直线&#…

无效的目标发行版17和无法连接Maven进程问题

起因&#xff1a;我clean了一个模块的Maven想要重新下&#xff0c;他就开始报错。两次了都是这样。如果和我一样一开始都是好好的&#xff0c;直接找Maven的设置&#xff0c;在运行程序改&#xff0c;jre变成了11.它自己变成了我其他的jdk

【Android、IOS、Flutter、鸿蒙、ReactNative 】启动页

Android 设置启动页 自定义 splash.xml 通过themes.xml配置启动页背景图 IOS 设置启动页 LaunchScreen.storyboard 设置为启动页 storyboard页面绘制 Assets.xcassets 目录下导入图片 AppLogo Flutter 设置启动页 Flutter Android 设置启动页 自定义 launch_background.xm…

Java实现多线程编程

目录 一、创建线程 1.1.第一种方法&#xff1a;继承Thread类 1.2.第二种方法&#xff1a;实现Runnable接口 1.3.其他创建线程的方法 二、多线程的优势-增加运行速度 三、Thread类及常见方法 3.1 Thread常见的构造方法 3.2Thread的几个常见方法 3.2.1启动一个线程——sta…

【快速解决】kafka崩了,重启之后,想继续消费,怎么做?

目录 一、怎么寻找我们关心的主题在崩溃之前消费到了哪里&#xff1f; 1、一个问题&#xff1a; 2、查看消费者消费主题__consumer_offsets 3、一个重要前提&#xff1a;消费时要提交offset 二、指定 Offset 消费 假如遇到kafka崩了&#xff0c;你重启kafka之后&#xff0…

【设计模式】行为型模式(四):备忘录模式、中介者模式

《设计模式之行为型模式》系列&#xff0c;共包含以下文章&#xff1a; 行为型模式&#xff08;一&#xff09;&#xff1a;模板方法模式、观察者模式行为型模式&#xff08;二&#xff09;&#xff1a;策略模式、命令模式行为型模式&#xff08;三&#xff09;&#xff1a;责…

GRE做题笔记(零散的个人经验)

locomotive机车By 1813, the Luddite resistance had all but vanished. all but表示“几乎完全”的程度&#xff0c;或者表示排除piston活塞attributed to 归因于how a sportsperson accounted for their own experience of stress 运动员如何解释自己的压力经历 &#xff0c;…

【vmware+ubuntu16.04】vm虚拟机及镜像安装-tools安装包弹不出来问题

学习机器人这门课需要下载虚拟机&#xff0c;做一下记录 首先我下载的是vm虚拟机16&#xff0c; 下载版本可参考该文章课堂上我下载 的镜像是16.04&#xff0c;虚拟机安装教程和镜像添加可参考该博主 按照教程安装成功 安装tools&#xff0c;但是我的弹不出来那个压缩包&…