网络协议攻击与模拟_02ARP协议

一、arp协议简介

 一个工作在二层的三层协议,事一个2.5层协议

ARP协议地址解析协议,将一个已知的Ip地址解析为MAC地址,从而进行二层数据交互

二、工作流程

1、两个阶段

  • ARP请求
  • ARP响应
    两台主机IP地址主机A和主机B,IP地址和MAC地址如图所示:主机A发送数据给主机B会先发送给ARP请求报文给主机B,主机B收到请求后会给主机A发送响应即ARP响应。

    主机A发送数据给主机B,首先要知道主机B的IP地址,主机A在数据封装的时候会进行三层封装和二层封装,三层封装会将源IP和目的IP封装进去,二层封装会将源MAC地址和目的MAC地址封装进去,主机A初始不知道目的MAC地址,是以广播的MAC地址00-00,以广播的方式发送请求。响应的时候是单播。
  • ARP请求很简单就是一个请求一个响应,由于很简单所以会造成不安全的因素,就比如你广播发送出去数据,中间有个人冒充主机B及性能响应就会造成ARP欺骗。

2、实验

ARP请请求和响应的过程

主机A(192.168.2.12)和主机B(192.168.2.16)

  • 打开主机B的winshark,并在主机A上ping主机B(192.168.2.16)

ARP报文:一个是ARP请求报文一个是ARP响应报文

(1)ARP请求报文

 显示出来目标的MAC地址是一个广播地址,源MAC地址是主机A(192.168.2.12)、Type类型是0x0806

整体的ARP请求里面的在整体内容,这里有源MAC地址和目标MAC地址,因为目标MAC地址它不知道所以用全零来填充。上面的destination是broadcast广播。

(2)ARP响应报文

主机B(192.168.2.16)收到之后会进行响应

ARP请求里面源MAC是自己,目的MAC是对方。

3、ARP协议报文

(1)ARP报文格式

  • 以太网的数据帧格式是这样的
    目的MC、接着是源MAC,帧的类型,中间是网络层的数据包,后面是帧校验
  • 对比ICMP报文,可以看到数据链路层下来是网络层,但是ARP协议是二层之后就到了ARP协议,没有网络层。
    目的MC、接着是源MAC,帧的类型,中间是ARP的数据包,后面是帧校验

(2)ARP数据帧

  • ARP报文数据帧格式:
    • 硬件类型
    • 协议类型
    • 硬件地址长度
    • 协议地址长度
    • Opcode操作类型标识报文时请求报文还是响应报文,1代表请求 2代表响应
    • 发送方MAC地址
    • 发送方IP地址 
    • 接收方的MAC地址 
    • 接收方的IP地址

4、ARP缓存

主要目的是为了避免去重复发送ARP请求 

(1)windows的ARP命令

重新抓取流量就不会有ARP请求和响应的报文了,因为主机中存在了ARP缓存

  • 使用arp -a命令可以查看arp缓存

  • arp -d清空缓存

下一次访问会重新发送ARP请求。通过请求和响应的出来的是动态学习到的

  • 使用arp -s命令可以静态绑定

(2)思科设备GNS3

c3600设备三台,改变图标为两台主机一台交换机

  • PC1 ping PC2、关闭交换机路由功能
R2#
R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#no ip routing
R2(config)#int  f0/0
R2(config-if)#ip add 192.168.2.1 255.255.255.0
R2(config-if)#no shut
R2(config-if)#hostname PC1
PC2(config)#
R3#
R3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R3(config)#no ip routing
R3(config)#int f0/0
R3(config-if)#ip add 192.168.2.2 255.255.255.0
R3(config-if)#no shut
R3(config-if)#
*Mar  1 00:03:54.163: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:03:55.163: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R3(config-if)#hostname PC2
PC2(config)#
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#hostname SW
SW(config)#
SW(config)#no ip routing
SW(config)#
  • PC1pingPC2

  • show arp

  • clear arp

  • 永久绑定(直接绑定的还没有通信) 

  • 清除静态绑定的

  • 静态绑定虚假MAC地址成功
    ping 不通目标主机,给虚假的MAC地址发信息目标主机收不到。

  • 引出安全性因素

主机C想主机A响应虚假MAC地址,主机A学习到了主机C响应的虚假的MAC地址,主机A就会想虚假的MAC地址发信息,主机A无法通信,这就是ARP攻击。

场景:主机C响应给主机A自己的MAC地址,造成主机A误认为主机C是主机B,当主机A给主机B发送消息的时候就会发送给主机C。主机C截获主机A发给主机B的数据,这就是ARP欺骗。

三、ARP攻击和ARP欺骗

1、ARP攻击

伪造ARP应答向被攻击主机和网关响应虚假的MAC地址

当被攻击主机进行网络通信时,会将数据交给虚假的MAC地址进行转发,由于虚假的MAC地址不存在,所以造成被攻击主机无法访问网络。

示例:

主机A发送arp请求在整个网络中进行广播,当主机收到ARP请求会进行响应,此时发送方主机就学习到目的主机的MAC地址。若主机C伪造ARP应答,向被攻击主机响应虚假的MAC地址就实施了ARP攻击。

当被攻击主机进行网络通信时,会将数据交给虚假的MAC地址进行转发,由于虚假的MAC地址不存在,所以造成被攻击主机无法访问网络。

主机A访问公网,首先会向网络中发送ARP请求,主机B主机C和路由器都能够收到ARP请求,正常的当路由器收到主机A数据发现主机A请求得路由器得IP地址会进行响应,如果此时主机C(攻击主机)向主机A响应虚假得MAC地址,造成主机无法进行网络通信。

2、 ARP欺骗

(1)欺骗网关

  • 伪造ARP应答,向被攻击主机和网关响应真实的MAC地址
  • 当被攻击主机进行网络通信时,会将数据交给真实的MAC地址进行转发,从而截获被攻击主机的数据。这时被攻击主机时可以进行网络通信的。

主机A访问互联网会将数据交给自己的出口路由器,攻击主机C向主机A发送ARP应答,响应自己的MAC地址给主机A,主机A访问公网的时候就会将数据给到主机C,还要在攻击主机上开启ARP转发的功能,主机C向出口路由器发送ARP应答,告诉出口路由器主机A的MAC地址时主机C自己的MAC地址从而实现数据监听。

(2)欺骗主机

  • 伪造ARP应答向被攻击主机和网关响应真实的MAC地址
  • 当被攻击主机进行主机通信时,会将数据交给真实的MAC地址进行转发,从而截获被攻击主机的数据。

主机A发送数据给主机B,主机C向主机A发送应答,主机C向主机发应答

3、避免ARP攻击/欺骗

  • ARP防火墙
  • 主机上进行ARP静态绑定(设备基本都有此功能)

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

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

相关文章

固乔快递查询助手:一键批量查询,省时省力

在快递行业飞速发展的今天,高效、准确地掌握快递信息对于电商卖家、物流公司管理者以及经常需要查询快递信息的消费者来说至关重要。固乔快递查询助手正是为此而生,它的批量查询功能为用户带来前所未有的便利和高效。 首先,如何下载固乔快递查…

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析

Flink Window 常见需求背景 需求描述 每隔 5 秒,计算最近 10 秒单词出现的次数 —— 滑动窗口 每隔 5 秒,计算最近 5 秒单词出现的次数 —— 滚动窗口 关于 Flink time 种类 TimeCharacteristic ProcessingTimeIngestionTimeEventTime WindowAssign…

解析c++空指针解引用奔溃

空指针解引用引起程序奔溃是c/c中最常见的稳定性错误之一。 显然并非所有使用空指针的语句都会导致奔溃,那什么情况下使用空指针才会引起程序奔溃呢?有一个判断标准:判断空指针是否会导致访问非法内存的情况,如果会导致访问非法内…

大模型LLM在 Text2SQL 上的应用实践

一、前言 目前,大模型的一个热门应用方向Text2SQL,它可以帮助用户快速生成想要查询的SQL语句,再结合可视化技术可以降低使用数据的门槛,更便捷的支持决策。本文将从以下四个方面介绍LLM在Text2SQL应用上的基础实践。 Text2SQL概…

k8s的存储卷、数据卷

容器内的目录和宿主机目录进行挂载。 容器在系统上的生命周期是短暂的。 k8s用控制器创建的pod。delete相当于重启。容器的状态也会恢复到初始状态。一旦恢复到初始状态,所有的后天编辑的文件都会消失 容器和节点之间创建一个可以持久化保存容器内文件的存储卷。…

斯坦福Mobile ALOHA机器人(智能佳)爆火!会烹饪、洗衣等多项家务功能

最近,斯坦福大学 Mobile ALOHA 机器人炒菜的视频和文章火出了圈!虽然机器人技术日新月异,能做菜早已是意料之中的事情,但把这么多技术集成到一起,用廉价的机械臂做出了丝滑的动作,还能够洗衣做饭&#xff0…

GoLang:gRPC协议的介绍以及详细教程,从Protocol开始

目录 ​编辑 引言 一、安装相关Go语言库和相关工具 1. 安装Go 2. 安装Protocol Buffers Compiler 2.1 Windows 2.1.1 下载 2.1.2 解压 2.1.3 环境变量 2. macOS 3. Linux 4. 验证安装 3. 安装gRPC-Go 4. 安装Protocol Buffers的Go插件 二、定义服务 三、生成Go…

【Java集合篇】ConcurrentHashMap是如何保证fail- safe的

ConcurrentHashMap是如何保证fail-safe的 ✅典型解析✅拓展知识仓✅分段锁☑️分段锁适用于什么情况🟡分段锁的锁争用情况,是否会带来一定的性能影响✔️分段锁的优缺点🟢 还有哪些其他的线程安全哈希表实现🟠Hashtable和 Collections区别&am…

Python从入门到网络爬虫(控制语句详解)

前言 做任何事情都要遵循一定的原则。例如,到图书馆去借书,就需要有借书证,并且借书证不能过期,这两个条件缺一不可。程序设计亦是如此,需要使用流程控制实现与用户的交流,并根据用户需求决定程序“做什么…

如何实现两台Linux虚拟机ssh免密登录

实验开始前 1.准备好两台虚拟机(下载好镜像文件的) 2.实验步骤 公钥验证:(免密登陆验证方式) (1)生成非对称秘钥 [rootclient ~]# ssh-keygen -t rsa Generating public/private rsa key pai…

秒变办公达人,只因用了这5款在线协同文档app!

在日常工作中,我们不可避免地需要处理各种文档,有时你可能会为如何高效地管理这些文档而感到烦恼,或是不知道如何挑选合适的在线文档工具? 不用担心!在这篇文章中,我们将介绍5个好用的在线文档工具App&…

SpringBoot+Hutool实现图片验证码

图片验证码在注册、登录、交易、交互等各类场景中都发挥着巨大作用,能够防止操作者利用机器进行暴力破解、恶意注册、滥用服务、批量化操作和自动发布等行为。 创建一个实体类封装,给前端返回的验证码数据: Data public class ValidateCodeV…

一、数据结构基本概念

数据结构基本概念 一、数据结构基本概念1.基本概念和术语1.1数据(Data)1.2 数据元素(Data element)1.3 数据项 (Data Item)1.4 数据对象 (Data Object)1.5 数据结构 (Dat…

基于 Validator 类实现 ParamValidator,用于校验函数参数

目录 一、前置说明1、总体目录2、相关回顾3、本节目标 二、操作步骤1、项目目录2、代码实现3、测试代码4、日志输出 三、后置说明1、要点小结2、下节准备 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器,从编码到发布全过程》 2、相关回顾 使用 TypeV…

Every Nobody Is Somebody 「每小人物都能成大事」

周星驰 NFT Nobody即将发售,Nobody共创平台 Every Nobody Is Somebody Nobody 关于Nobody:Nobody是一款Web3共创平台,旨在为创作者提供一个交流和合作的场所,促进创意的产生和共享。通过该平台,创作者可以展示自己的作…

git秘钥过期 ERROR: Your SSH key has expired

文章目录 1、错误提示Your SSH key has expired2、登录Github确认3、重新设置秘钥 1、错误提示Your SSH key has expired 使用git命令时遇到Github 的 SSH Key秘钥过期,提示错误ERROR: Your SSH key has expired 2、登录Github确认 首先登录Github查看&#xff…

某查查请求头参数加密分析(含JS加密算法与Python爬虫源码)

文章目录 1. 写在前面2. 请求分析3. 断点分析4. 扣加密JS5. Python爬虫代码实现 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】&#xff…

基于SELinux三权分立配置方法

1.系统安装 系统安装完成后,系统当前的SELinux配置为: # cat /etc/selinux/config SELINUX=enforcing SELINUXTYPE=targeted 2.SELinux环境准备 # yum install setools policycoreutils.x86_64 selinux-policy-mls.noarch setroubleshoot.x86_64 setools-console -y 3.SELin…

手撕单链表(单向,不循环,不带头结点)的基本操作

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

mercury靶机

文章妙语 不与伪君子争名,不与真小人争利,不与执拗人争理,不与匹夫争勇,不与酸儒争才。不与蠢人施恩 一、信息收集 主机探测 端口探测 探测主机详细版本信息 8080开了http服务 目录扫描 robots.txt目录下什么也没有 二&#xff0…