7.12、中间人攻击(ARP欺骗)

news2024/10/6 16:25:16

一、ARP协议原理

        地址解析协议(Address Resolution Protocol,ARP),负责把目的主机的IP 地址解析成目的MAC地址地址解析的目标就是发现逻辑地址与物理地址的映射关系。网络中的计算机、交换机、路由器等都会定期维护自己的ARP缓存表。

        为什么需要ARP?

        在发送者给其他的网络设备发送数据的时候, 是以数据帧的形式发送的,数据帧是由源MAC地址和目的MAC地址组成的,如果发送者只知道目的主机的IP地址, 不知道目的主机的MAC地址, 就不能把这个数据包转化成数据帧发走。

        如果发送者和接收者在同一个网络内,arp解析的就是接收者的MAC地址。如果发送者和接收者不在同一个网络内, arp解析的就是这个网络内网关的接口MAC地址。

        ARP协议工作原理主要是ARP高速缓存(ARP cache)。ARP高速缓存就是一个映射表,它记录了IP地址和物理地址的映射关系。在实际传输中,通常已知下一跳的目的IP地址,通过查询ARP高速缓存即可知道对应的物理地址。

        假设AA,BB,CC分别为PC1,PC2,PC3各自的MAC地址,且二层交换机只解封到帧数据包,也就是说,只认MAC地址(ARP是网络层协议)

        当PC1向PC3发送data数据时,因为不知道PC3的MAC,会发送ARP广播来获取MAC地址。

        ARP广播:目的MAC为FF,源MAC为AA,源IP为10.1.1.1,目的IP为10.1.1.3的数据包,PC2收到该数据包发现目的IP不是本机IP,丢弃;PC3收到后发现目的IP与本机IP一致,则给PC1发送单播ARP响应报文告知自己的MAC地址。

二、中间人攻击原理

        假设PC2装了ARP攻击工具,其可以发送伪装的ARP报文,当PC1发送ARP广播:目的MAC为FF,源MAC为AA,源IP为10.1.1.1,目的IP为10.1.1.3的数据包后,PC3收到后会返回单播报文告知MAC(我是10.1.1.3我的MAC是CC),此时,PC1的ARP缓存表认为10.1.1.3映射的MAC为CC;然后PC2利用ARP工具也回复了同样的单播ARP响应报文告知MAC(我是10.1.1.3我的MAC是BB),此时,PC1的ARP缓存表认为10.1.1.3映射的MAC为BB(ARP缓存映射原则为谁后到达学谁),则前一条映射被覆盖。通常PC3的ARP响应报文只会回复一次,而PC2利用ARP攻击工具可以回复N次,所以PC1最后的ARP缓存映射必然是10.1.1.3映射的MAC为BB。

        然后,PC1会发送数据包(目的MAC为BB,源MAC为AA,源IP为10.1.1.1,目的IP为10.1.1.3,data),交换机并不会解封装IP头,所以根据目的IP为BB,则将其发送至PC2,但因为PC3未收到该报文,则不会响应PC1。为了避免窃听被发现,当数据包(目的MAC为BB,源MAC为AA,源IP为10.1.1.1,目的IP为10.1.1.3,data)发送至PC2,PC2读取后,将数据包修改为(目的MAC为CC,源MAC为AA,源IP为10.1.1.1,目的IP为10.1.1.3,data)转发至PC3,PC3响应。同时,PC2也可以欺骗PC3,告知PC3(我是10.1.1.1,MAC为AA),那么PC3最后的ARP缓存映射是10.1.1.1映射的MAC为BB。最终,PC2可以窃取PC1与PC3之间的通信报文,即中间人攻击(ARP欺骗)。

        另,当PC2发送ARP广播(目的MAC为FF,源MAC为BB,源IP为10.1.1.1,目的IP随意),那么接收到该广播的PC无论是否为目的IP主机,都会在自己的ARP缓存表映射10.1.1.1的MAC为BB,以此类推,修改源IP地址继续发送ARP广播(目的MAC为FF,源MAC为BB,源IP为10.1.1.2,目的IP随意),那么最终10.1.1.1-254映射的MAC都是BB。

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

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

相关文章

智谱AI官网再升级,GLM-4,智能体,AI作图长文档全部搞定

创建智能体 智能体体验中心 可以看到智谱AI也推出了自己的智能体,并且官方内置了丰富多样的智能体供大家免费体验。 GLM-4 原生支持自动联网、图片生成、数据分析等复杂任务,现开放体验中,快来开启更多精彩。写一篇《繁花》的影评&#xf…

Linux的例行性工作(计划任务)

目录 一、单一执行的例行性任务--at(一 次性) 1、安装 2、启动服务 3、at命令详解 1)格式 2)参数 3)时间格式 4、实例 二、循环执行的例行性任务-- crontab(周期性) 1、crontd服务 2…

嵌入式未来发展的一些建议

嵌入式工程师分布在各行各业上面,这其中包括了消费电子、工业电子、汽车电子和军用电子等。 从功能上面看,嵌入式本身包括了51、STM32、MCU、SOC、SOCbaseband等很多形式。 从开发的结构上看,有些同学专注于底层,比如boot&#xf…

【GitHub项目推荐--一个简单的绘图应用程序(Rust + GTK4)】【转载】

一个用 Rust 和 GTK4 编写的简单的绘图应用程序来创建手写笔记。 Rnote 旨在成为一个简单但实用的笔记应用程序,用于手绘或注释图片或文档。它最终能够导入/导出各种媒体文件格式。而且输出的作品是基于矢量的,这使其在编辑和更改内容时非常灵活。 地址…

Anaconda + Tensorflow 安装及跑通例子 - 2024年1月20日

前言 我尝试了Tensorflow官网的方式进行安装,但是报错了。至于原因,我猜测和网络情况有关。于是尝试通过百度和B站,去看其他人的安装方式。总结下来,直接用Anaconda来安装最为方便。网络上也有不少用 Anaconda 的,但是…

Linux:FTP vs SSH

一,FTP FTP是一种文件下载协议,相比SSH,其安全性较低,在文件传输时并未做加密处理。登录FTP服务器的方法有2种:一种是FTP图形客户端(可以用于windows电脑连接linux系统);另一种是使…

【设计模式】阿里终面:你觉得这个例子是策略模式吗?

什么是策略模式? 策略模式,举几个贴近生活的例子:当我们出行的时候,不同的出行方式就是不同的策略,例如走路、开车、骑自行车、坐飞机、坐邮轮等等,每一种出行方式都代表着不同的费用和时间;当…

E - Souvenir(图论典型例题)

思路&#xff1a;对于有很多询问的题&#xff0c;一般都是先初始化。我们求出每个点到其他点的最短路径以及相同路径下最大的价值和即可。 代码&#xff1a; #include <bits/stdc.h> #define pb push_back #define a first #define b second using namespace std; type…

模型之气体的行为

气体的行为 “探索气体动理论&#xff1a;分子运动与温度的统计关系” 气体动理论由丹尼尔•伯努利在1738年提出&#xff0c;后来又由麦克斯韦、玻尔兹曼等人在19世纪后半叶推进。根据这种理论&#xff0c;气体是由运动着的分子组成的&#xff0c;气体的许多性质——如温度和…

C++大学教程(第九版)6.38汉诺塔问题

文章目录 题目代码运行截图 题目 (汉诺塔问题)在这一章中大家了解了既可以用递归方法又可以用迭代方法很容易实现的函数。不过&#xff0c;在这道练习题中&#xff0c;我们提出的问题若用递归来解决&#xff0c;则尽显递归之优雅:若用迭代来实现&#xff0c;恐怕没那么容易。 …

Shell脚本的编程规范和变量类型

一. 了解编程 1.程序编程风格 面向过程语言 开发的时候 需要一步一步执行 问题规模小&#xff0c;可以步骤化&#xff0c;按部就班处理 以指令为中心&#xff0c;数据服务于指令 C&#xff0c;shell 面向对象语言 开发的时候 将任务当成一个整体 将编程看成是一个…

云原生全栈监控解决方案(全面详解)

【作者】JasonXu 前言 当前全球企业云化、数字化进程持续加速&#xff0c;容器、微服务等云原生技术在软件架构中快速渗透&#xff0c;IT 架构云化、复杂化持续驱动性能监控市场。企业云化、数字化持续转型&#xff0c;以及为了考虑系统的弹性、效率&#xff0c;企业软件开发中…

《小学生作文辅导》期刊投稿邮箱

《小学生作文辅导》是国家新闻出版总署批准的正规教育类期刊&#xff0c;适用于全国各小学语文老师事业单位及个人&#xff0c;具有原创性的学术理论、工作实践、科研成果和科研课题及相关领域等人员评高级职称时的论文发表&#xff08;单位有特殊要求除外&#xff09;。 栏目…

RTDETR 引入 超越自注意力:面向医学图像分割的可变形大卷积核注意力

医学图像分割在转换器模型的应用下取得了显著的进展,这些模型擅长捕捉广泛的上下文和全局背景信息。然而,这些模型随着标记数量的平方成比例增长的计算需求限制了它们的深度和分辨率能力。大多数当前的方法通过逐层处理D体积图像数据(称为伪3D),在处理过程中错过了关键的跨…

alfred自定义谷歌翻译workflow

如果要实现自定义workflow&#xff0c;则必须安装付费版的alfred&#xff0c;囊中羞涩的话可以自行淘宝。自定义步骤如下&#xff1a; 1. 新建空的workflow&#xff0c;填写基本信息 2. 开发python脚本 打开该workflow所在目录&#xff0c;进行下面步骤&#xff1a; 首先安装…

【GitHub项目推荐--开源2D 游戏引擎】【转载】

microStudio 是一个可在浏览器中运行的游戏引擎&#xff0c;它拥有一套精美、设计精良、全面的工具&#xff0c;可以非常轻松地帮助你创建 2D 游戏。 你可以在浏览器中访问 microStudio.dev 开始搭建你的游戏&#xff0c;当然你可以克隆现有项目或创建新游戏并开始编码&#x…

城市需求显示在地图上(附MATLAB程序)

我们显示很多城市信息时, 有时候需要把各地人口数量, 各地城市对某种货物的需求量呈现到地图上, 可以用以下代码实现: 程序结果: % 画中国地图 clc;close all;clear all; %%曲面拟合 warning off;%禁止显示警告信息 % load lonlatdata.mat; lonlatdataxlsread(工作簿1.xls,D2…

对于超低延迟SSD,IO调度器已经过时了吗?-part1

此前针对linux IO栈与IO调度器&#xff0c;小编有过基本原理的分析&#xff0c;前文阅读请参考&#xff1a; 《存储IO路径》专题&#xff1a;四种IO栈全能大比武 《存储IO路径》专题&#xff1a;不同IO调度器的差异 近期&#xff0c;小编看到一篇来自University of Louisvil…

Python基础之文件操作(I/O)

和其他编程语言一样&#xff0c;Python 也具有操作文件&#xff08;I/O&#xff09;的能力&#xff0c;比如打开文件、读取和追加数据、插入和删除数据、关闭文件、删除文件等。合理应用python提供的文件操作基本函数&#xff0c;可大大提高自动化实现的效率与框架代码的稳定性…

luffy商城项目(二)

路飞后端配置 二次封装response drf提供的Response对象&#xff0c;不能很方便的加入code和msg字段&#xff0c;自己封装一个Response类&#xff0c;以后都用我们自己封装的&#xff0c;方便咱们写code和msg 封装步骤&#xff1a; 1 在utils/common_response.py from rest_…