前言

在看这篇文章之前,请大家先看下交换机的工作原理,不知大家有没有想过数据链路层中头部协议数据帧的目的MAC地址是如何获取的呢?这就是今天的主角ARP协议,通过广播来获取IP地址对应的MAC地址。

问:广播有很多种,交换机可以广播,ARP协议可以广播,IP地址可以广播等等,有啥区别吗?

答:交换机广播和ARP协议广播比较容易混淆,因为都是交换机上发生的事情,下面我们来看下这部分,IP地址广播请看路由部分博客

交换机广播

上图会在下面阐述ARP原理和攻击的时候同样用到 ,结合上图我们来看下交换机广播的场合:

现做出如下假设:三个小圆圈表示局域网内的三台网络设备,IP地址分别为10.0.0.1、10.0.0.2、10.0.0.3;MAC地址分别为AA、BB、CC(简写,实际MAC长度为6个字节)。长方形表示AA设备向CC设备通信时准备发送的数据帧。

设备AA将数据发送到交换机1;

交换机解析数据帧,获取目标MAC,查询MAC地址表,但是MAC地址表中没有查到设备CC的MAC地址和交换机接口的关系,这个时候交换机为了知道谁的MAC是CC,则需要广播,即交换机向每个端口都发送一份数据帧;

MAC地址不是CC的设备会忽略收到的数据帧,而MAC为CC的设备会接受数据帧,进行下一步处理。

总结:交换机只在MAC地址表没有目标MAC的时候才会广播。

问:一开始长方形中的CC设备的MAC地址是怎么知道的呢?

答:这就是接下来要讲的ARP协议的工作

ARP协议

还是以上图交换机的原理图为例,来分析下ARP协议的原理,现在做出假设长方形中的CC设备MAC地址AA设备一开始不知道,来分析下获取CC设备MAC地址的流程:

数据帧中一开始因为不知道CC设备的MAC地址,这个时候需要将目标MAC地址填充为FF-FF-FF-FF-FF-FF

假设工作在局域网,交换机解析数据帧,获取到目标MAC地址为FF-FF-FF-FF-FF-FF,交换机会自动广播,将数据帧发送给局域网内的每台设备

局域网内的所有设备解析数据帧,获取到MAC地址为FF-FF-FF-FF-FF-FF,即便不是自己的MAC地址所有设备也会解析数据帧。目标IP是自己的设备,则会封装数据帧返回给发送者,并告知发送方自己的MAC地址;如果目标IP不是自己,则相应的设备会丢弃数据帧

收到CC设备的MAC后,AA设备会缓存到ARP缓存表。原因是为了避免下次发送数据给CC设备的时候,还要再次使用ARP协议去获取MAC地址

总结ARP协议原理:

1、发送ARP广播请求,请求内容为我是xxx,我的MAC是xxx,IP是xxx的MAC是多少?

2、接受ARP单播应答

问:ARP缓存表怎么看?

答:arp /help可以查看ARP相关的信息,arp /a可以查看本台计算机的arp表数据,如下图所示:

ARP攻击

还是以上图交换机的原理图为例,来分析下ARP协议的攻击,现在假设长方形中的CC设备的MAC地址AA设备一开始不知道,并假设BB为攻击设备:

数据帧中因为不知道CC设备的MAC地址,这个时候需要将目标MAC地址填充为FF-FF-FF-FF-FF-FF

假设工作在局域网,交换机解析数据帧,获取到目标MAC地址为FF-FF-FF-FF-FF-FF,交换机会自动广播,将数据发送给局域网内的每台设备

局域网内的所有设备解析数据帧,获取到MAC地址为FF-FF-FF-FF-FF-FF,即便不是自己的MAC地址所有设备也会解析数据帧。目标IP是自己的设备,则会封装数据帧返回给发送者,并告知发送方自己的MAC地址;如果目标IP不是自己,则相应的设备会丢弃数据帧。但是这个时候BB为攻击设备,即便数据帧中目标IP不是自己,它会伪造自己的MAC地址,然后冒充CC设备做出ARP响应

AA设备这时候会收到2个ARP响应信息,如果CC设备的ARP响应先到AA设备,BB设备后伪造的ARP响应会覆盖CC设备的ARP响应。那么此时AA设备将无法与CC设备通信,因为AA设备的ARP表中与CC设备IP对应关系的MAC是BB设备的MAC,IP与MAC不匹配是无法通信的。

问:如果上述流程中BB设备的ARP响应的信息先到AA设备,那么AA就可以与CC设备通信了吗?

答:BB设备可以连续构造ARP响应,只要AA设备再次发送ARP数据帧,BB设备也是可以攻击AA设备通信的

问:AA虽然无法与CC设备通信,但CC设备可以与AA正常通信吗?

答:可以的,因为CC设备没有遭到攻击,CC设备ARP表里存储的IP和MAC地址的关系是正确的

问:ARP攻击是必须通过单播响应才能出发吗?

答:广播也可以触发ARP攻击,而且范围更广。如果BB设备一直发送ARP广播,冒充自己是网关(即构造自己是网关的ARP响应),那么局域网内的所有设备(除了攻击者)的ARP表里网关的IP地址和MAC地址关系都将不正确,造成的影响是断网。

ARP欺骗

这次以ARP攻击的例子为前提,来分析下ARP协议的欺骗,我们对上述流程中第三步做如下改变:

1、局域网内的所有设备解析数据帧,获取到MAC地址为FF-FF-FF-FF-FF-FF,即便不是自己的MAC地址所有设备也会解析数据帧。目标IP是自己的设备,则会封装数据帧返回给发送者,并告知发送方自己的MAC地址;如果目标IP不是自己,则相应的设备会丢弃数据帧。但是这个时候BB为攻击设备,即便数据帧中目标IP不是自己,BB却还是用自己网卡真实的MAC地址,做出ARP响应。

2、然后BB在与CC正常通信,这个时候BB起到中间转发的作用,但是AA能与CC正常通信。BB设备可以实现监听、窃取、篡改、控制流量等目的,但不中断AA设备和CC设备通信

问:啥时候是ARP攻击,啥时候是ARP欺骗?

答:攻击者提供虚假报文的MAC就是ARP攻击,攻击者提供自己真实的MAC就是ARP欺骗

ARP防御

1、静态ARP绑定

ARP表的静态数据优先级高于动态数据,因此我们直接在ARP表内绑定IP和MAC的关系不会被动态ARP响应覆盖。还是以上图交换机的原理图为例,比如AA设备手动绑定网关的IP地址和MAC地址,那么AA设备即便遭到ARP攻击,也不会出现断网的情况。虽然会收到冒充自己是网关的ARP攻击响应,但是会置之不理。同样AA设备和CC设备互相通信,双方互相绑定了AA和CC设备的IP和MAC地址,这时候BB设备即使想进行ARP欺骗,也无法实现。

问:静态ARP绑定怎么感觉有点不方便呢?

答:为了防止遭到ARP攻击,需要收集所有要进行通信的设备IP和MAC,然后添加到自己的ARP表里面,更要命的是ARP表是存放在内存中,机器重启后需要重新输入所有设备的IP和MAC地址关系,相当麻烦。

2、硬件级ARP防御

上述静态ARP绑定的方式工作量太大,要想从根本上解决ARP攻击,还需要从交换机上下手。交换机原本工作在二层,只能识别数据帧,但是为了解决dhcp攻击和ARP攻击等,企业级交换机增加了解析其它上层协议的功能【当然相应的价格就贵了】。解决ARP攻击的方案是在交换机上绑定每个端口的IP(配合DHCP服务器)和MAC地址的关系。

第一次BB设备与交换机通信,交换机记录下BB设备的端口IP和MAC地址关系;

当BB设备攻击,冒充自己是CC的时候,假如想进行攻击,就需要伪造自己的MAC,那么交换机检测到MAC与原来的记录不一样就会进行拦截。假如想进行欺骗,势必需要冒充CC的IP才行,这时候交换机检测到IP与原来记录的IP不一样同样会把攻击拦截了。

java arp 攻击_网络安全基础之ARP攻击和防御相关推荐

  1. 局域网arp攻击_网络安全基础之ARP攻击和防御

    本文转载于 SegmentFault 社区 作者:吴小风 前言 在看这篇文章之前,请大家先看下交换机的工作原理,不知大家有没有想过数据链路层中头部协议数据帧的目的MAC地址是如何获取的呢?这就是今天的 ...

  2. 局域网arp攻击_网络安全工程师教Kali Linux:ARP欺骗概述

    课前声明: 本分享仅做学习交流,请自觉遵守法律法规! 搜索:Kali与编程,学习更多网络攻防干货! 本节课中你将了解到: ARP欺骗的用处 什么是ARP 演示如何通信 ARP欺骗原理 一.ARP欺骗的 ...

  3. 什么都不懂的学java难不难_零基础转行学java到底难不难

    不少零基础的新手想要转行学习java可是不知道难度,南京学码思下面就给大家详细的说一说转行java的难度,希望能帮助到各位想要了解java的同学. 零基础转行学java到底难不难 新手转行学java到 ...

  4. 哈希扩展长度攻击_哈希长度扩展攻击

    哈希扩展长度攻击 在这篇文章中,我将尽力避免夏季的低迷,而将重点放在比抱怨天气更有趣的事情上-哈希长度扩展攻击. 散列长度扩展攻击并不复杂也不复杂,说实话,这只是关于如何使用散列函数. 正如我以前的一 ...

  5. python ddos攻击_使用Torshammer执行DDoS攻击

    用的方法很少,声称DDoS或任何类型的网络丢失都是成功的.让我们看一下执行DDoS攻击的方法之一.这种攻击非常强大,并且需要您应该知道如何在Kali Linux操作系统上操作命令的唯一技能. 首先,如 ...

  6. arp miss攻击_详述网络中ARP安全的综合功能

    针对以上攻击,ARP安全提供如下措施保证网络设备的安全性: 针对第一种攻击,可配置ARP防网关冲突,防止攻击者冒充网关窃听用户主机信息. 针对第二种攻击,可配置ARP Miss消息限速,减小CPU的负 ...

  7. java 回归遍历_回归基础:代码遍历

    java 回归遍历 This article guides you through the basics of regression by showing code and thorough expl ...

  8. java第一周_从计算机基础到流程控制语句(if_else)

    一.计算机基础 裸机 没有安装任何软件的计算机(无操作系统.无应用软件) 计算机的应用 1.科学计算 科学计算也称数值计算.计算机最开始是为解决科学研究和工程设计中遇到的大量数学问题的数值计算而研制的 ...

  9. 零基础自学java的难处_零基础自学Java 在学习中要注意哪些问题

    如果是零基础自学Java编程,在学习过程中有很多要注意的问题,想要学好学精必然是件难事,并且可能会走弯路浪费很多时间,短时间内是不可能学成参加工作的,想要成为专业的Java程序员并不容易,技术过硬尤为 ...

最新文章

  1. Java学习之switch语句
  2. 如何根据用户权限屏蔽或显示SAP的订单中的成本显示
  3. 详细介绍如何在win7下首次实现通过Git bash向Github提交项目
  4. oenwrt 进不了bios_win7进不了bios原因及解决办法
  5. 【译】Angular 开发44条“军规”
  6. 关于Unity的入门游戏飞机大战的开发(上)
  7. 利用python批量修改文件名称
  8. 八数码c语言编程深度搜索,广度优先搜索解 八数码, 求意见, 求bug/
  9. 要求员工自愿无偿加班 特斯拉真是拼...
  10. css帧动画点击执行一次_CSS动画深入浅出
  11. JDK8高性能队列“Disruptor“
  12. 2018杭电多校第六场1009(DFS,思维)
  13. dell服务器运维,施用smartctl查dell服务器坏道实录
  14. 压缩感知中常用的待还原信号种类
  15. 6个免费视频、音频素材网,视频剪辑必备
  16. 华东师范大学夏令营复习计划总结
  17. 谷歌gmail注册入口_Google向GMail添加免费电话语音通话
  18. 小米路由器r2d_小米路由器R2D固件(路由器刷机更新工具)V2.24.11 免费版
  19. 人人商城互动直播(与通信服务器连接失败)
  20. 音视频入门系列-音视频基础知识篇(录播、点播、直播)

热门文章

  1. No such file or directory错误
  2. 小米2s Android pie,抢先体验Android Pie 小米MIX 2s已收到推送
  3. mysql 自定义函数报错_Mysql自定义函数报错解决方法
  4. 埋线双眼皮的风险性有哪些?埋线双眼皮手术会脱线吗?
  5. 黄聪:公众号怎么用微信做出点击此处查看答案
  6. python关系表达式的结果只有两种值、分别是_关系表达式的结果只有两种值,分别是____和____。...
  7. 四家奥运厂商被指控雇用童工 相关部门将彻查
  8. 16.线程通信1:生产者/消费者问题
  9. 2019年第五届 美亚杯电子取证 团体赛 wp
  10. DRRG:Deep Relational Reasoning Graph Network for Arbitrary Shape Text Detection:代码解读(textnet)