ARP欺骗是一种非常古老的电子欺骗攻击,虽然从诞生到现在已经过去了二十多年,但在很多网络中仍然有效。之前写的

沈传宁:谈谈TCP/IP协议的学习​zhuanlan.zhihu.com

文章中也提到,我第一次接触的网络攻击就是ARP欺骗攻击,利用ARP欺骗成为全网电脑的“网关”,然后在通过转发数据报文到真正的网关,从而成为全网计算机上网的“中间人”,实现对全网计算机的上网控制。要理解ARP欺骗原理,我们首先要了解ARP协议的工作机制,我在之前的文章已经说过了,如果了解了协议的工作机制,对攻击的实现就不难理解了。

一、ARP协议工作机制

ARP是地址解析协议,是将IP地址解析成MAC地址的协议。为什么要解析MAC地址?

如果理解了OSI模型分层机制,了解封装与分用的概念,就很好理解了。一个数据在发送前要进行逐层的封装,你可以用现实的一个例子来想象:你给国外一个朋友寄一个手机作为生日礼物,这个寄出去的手机就是数据。那么这个手机快递公司会装到一个纸盒中。然后多个纸盒会打包成一个大邮包,然后多个邮包可能打包成一个更大的邮包,最终装在一个集装箱中用飞机或者船运出去。这个过程就是封装。数据的发送也是这样,一个数据包发送前需要在传输层进行封装,然后送到互联网络层进行封装,最后是送到网络接口层进行封装。传输层封装的寻址地址是端口,互联网络层封装的寻址是IP地址,而网络接口层寻址就是MAC地址。很多时候我们访问操作的时候其实只是指定了目的端的IP地址,例如执行

ping 192.168.1.1

这个命令时,你只告诉了计算机要ping的IP地址,可是数据发送出去进行封装时需要知道发送的目的MAC地址,这样才能在网络接口层封装时将目的MAC地址封装到数据包头部中,然后发送出去,交换机看到这个MAC地址,才知道要把数据包交给谁。如何获得192.168.1.1的 MAC地址?这就是ARP协议的作用。

当你在计算机上输入ping 192.168.1.1命令,并且敲了回车后, 计算机做了什么呢?

1)计算机会向全网广播发出一个ARP请求报文,这个请求报文你可有理解为其实是问,谁是192.168.1.1这个IP地址的拥有者。

2)拥有这个IP地址的计算机在收到这个请求报文的时候,会回应一个ARP应答报文,在这个应答报文里边会给出自己的MAC地址。

3)询问的计算机收到了这个应答报文之后就知道了192.168.1.1这台计算机对应的MAC地址。为了避免每发一个数据包就问一次,询问计算机会把收到的这个MAC地址给记下来,也就是放在缓存里。那么下一次他再要去发数据包的时候,缓存地址里已经有了192.168.1.1这个IP地址对应的MAC地址,那么他就不需要再去问了,直接从缓存里取出来进行封装。

这就是ARP协议的工作过程。下面这张图就是计算机上ARP表,也就是ARP缓存。

二、 ARP欺骗的原理

如果对ARP有所了解,应该清楚ARP有两个特点。

第一是ARP是无状态的协议,所谓无状态的意思就是我不一定要你问我,我才能应答,我可以主动去回答。局域网里的计算机可以主动发ARP应答报文到其他的计算机那里去。

第二操作系统对ARP的实现上,ARP的缓存是可以动态刷新的,也就是说当一个ARP应答过来的时候,它会把原来已有的应答给刷新掉。

把这两个特点理解了,那么ARP欺骗你就很容易理解了,攻击者要做的就是伪造ARP应答去刷新其他计算机里边的ARP缓存。

我们可以参考上面这张图,我们可以看到攻击者C发出了一个伪造的ARP应答报文。我们可以看到这个伪造的ARP应答报文指定的MAC地址是他自己的,但是IP地址是192.168.1.1,并不是他自己的。这样的应答报文被收到以后,我们可以看到计算机会把它放到缓存里。这时候在计算机B上就形成了一个错误的ARP缓存。192.168.1.1这个IP地址在缓存中的ARP表中对应的MAC地址是c的地址。那么当计算机b要给192168.1.1发送数据包的时候,它在网络接口层进行封装的时候,封装的MAC地址按照错误的缓存,封装的目的MAC地址是攻击者192168.1.3这台计算机的MAC地址,标准的交换机是2层设备,会按照MAC地址来分发数据包,也就是说这个数据包会被交换机交给攻击者计算机192.168.1.3。

也就是说攻击者成功的欺骗了计算机B,让计算机B以为它是192.168.1.1。

如上图,如果攻击者在做一个数据包的转发,这就是我在《谈谈TCP/IP协议的学习》这篇文章里介绍的中间人攻击。

三、如何防御

关于ARP欺骗的具体实现我就不介绍了,有很多工具可以帮助你实现,例如 KALI Linux里边arpspoof。这些只是敲几个命令而已。

理解了原理,如何防御,我想也很容易理解了。

1)使用三层交换

刚才我们谈到之所以ARP欺骗能成功,是因为标准的交换机是二层的设备,会使用MAC地址来分发数据包,如果使用三层交换设备,那么三层交换机会使用IP地址来进行数据包的分发,也就意味着即使ARP欺骗使得封装了错误的MAC地址也没问题。因为三层交换机使用三层的地址,也就是IP地址来分发数据包。所以不会受到aIP欺骗的影响。

2)使用静态的ARP缓存

在计算机终端上通过ARP -s这个命令生成静态的APP缓存,也就是这个缓存不可修改。那么攻击者伪造的aIP应答报文就无法更改缓存了,也就没法完成ARP欺骗。但是这种方法对于局域网当中有较多的终端的情况下不太适用,因为要手工管理这么多的计算机MAC地址和IP地址,这是非常麻烦的一件事。

3)使用ARP防火墙

为了应对ARP欺骗,很多计算机终端都可以安装第三方的软件ARP防火墙。这种ARp防御工具可以帮助抵御ARb欺骗。

4)划分子网

划分子网也能帮助我们比较好的抵御ARP欺骗,因为ARP不跨路由,除非特殊情况下路由器设置了进行ARP代理。因此ARP欺骗只能对同一网段的其他计算机进行,划分子网就能更好的降低ARP欺骗攻击的风险。

反arp攻击软件_谈谈电子欺骗中的ARP欺骗相关推荐

  1. 局域网arp攻击_谈谈电子欺骗中的ARP欺骗

    ARP欺骗是一种非常古老的电子欺骗攻击,虽然从诞生到现在已经过去了二十多年,但在很多网络中仍然有效.之前写的 沈传宁:谈谈TCP/IP协议的学习​zhuanlan.zhihu.com 文章中也提到,我 ...

  2. 反arp攻击软件_技术干货透析中间人攻击

    作者:甜橙安全团队 免责声明;下述内容用仅用于技术研究与探讨,禁止任何非法利用,由此造成的后果概不负责,如有侵权请联系版主,我们会及时处理. 欢迎各位添加微信号:qinchang_198231     ...

  3. 反arp攻击软件_网络安全工程师教Kali Linux:ARP欺骗概述

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

  4. python实现局域网攻击软件_使用python的scapy库进行局域网内的断网攻击(基于ARP协议)...

    (使用python scapy库进行网络攻击) ARP协议 ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行. ARP攻击的局限性: ARP攻击仅能在以太网( ...

  5. python中遍历是什么意思_谈谈python中的遍历

    标签: 谈谈python中的遍历 python中也有像java中的for...each....在python中是for...in... 其实感觉差不多,不过python的规则更灵活一点, 只要是可以进 ...

  6. fst 共享后缀_谈谈lucene中的FST

    FST是lucene中用来存储字典,并进行检索的核心数据结构,我记得在lucene3.0版本前都用的是跳跃链表(不清楚的同学以后我会专门写一篇磁盘索引技术来说清楚,网上也有相关资料),实际上采用该数据 ...

  7. arp计算机病毒解决办法,如果电脑中了ARP病毒导致无法上网如何解决

    ‍ ARP病毒是对利用arp协议的漏洞进行传播的一类病毒的总称,是一种入侵电脑的木马病毒.此类攻击的手段有两种:路由欺骗和网关欺骗.arp病毒主要是通过将网关地址解析成入侵的电脑MAC地址,导致用户无 ...

  8. 计算机操作指令arp,详解在win7电脑中操作ARP命令的详细步骤

    在我们的电脑中很多的设置都是需要一定的技巧来实现的,那在操作不同的设置的时候使用命令的形式是最快的方法,可以实现操作的命令也是很多的,那需要使用到ARP命令的小伙伴在网络上提问怎么实现使用的呢,其实A ...

  9. 网站攻击软件_如何防止网站建设中出现安全问题?

    在信息时代,网络安全变得越来越重要了,个人信息,企业信息对安全的要求也越来越高.网页上的漏洞,木马,病毒等层出不穷,这可能导致公司网站或个人网站上披露的信息泄露.那么如何防止网站建设中出现安全问题呢? ...

最新文章

  1. 全卷积神经网路【U-net项目实战】肺结节分割案例分析:DSB3Tutorial
  2. Axis,axis2,Xfire以及cxf对比 (转)
  3. python21天打卡Day12--for循环,列表推导式-构建列表
  4. Docker下ETCD集群搭建
  5. 第二十三模板 1什么是模板
  6. 详细配置swagger2
  7. java如何通过域名查ip_Java实现通过IP获取域名,通过域名获取IP
  8. 阿里云存储oss依赖报错解决方法
  9. 广告行业中那些趣事系列21:从理论到实战BERT知识蒸馏
  10. 密码重置用HTML怎么弄,路由器重设密码怎么设置?
  11. [渝粤教育] 中国地质大学 Java语言程序设计 复习题
  12. cds大佬座谈会总结
  13. Greenplum中的vacuum
  14. 怎么看计算机配件型号,笔记本屏幕型号怎么看_笔记本电脑屏幕型号的查看步骤-win7之家...
  15. poj 2751 双机调度问题Johnson算法(贪心)
  16. 含有一个量词的命题的否命题_“换壳车”到底是好是坏?或许这只是一个“伪命题”。...
  17. JAVA三星题之hangman
  18. 再呆半天,明天去富士康...
  19. matrox 采集卡使用范例
  20. 如何写一个游戏AI(一)

热门文章

  1. gensim的word2vec如何得出词向量(python)
  2. LeetCode简单题之杨辉三角 II
  3. 机器人导航两篇顶级会议论文解析
  4. Binary XML file line #8: Error inflating class android.support.v7.widget.RecyclerView
  5. scala函数式编程(二) scala基础语法介绍
  6. Spring Cloud下微服务权限方案
  7. MySQL☞dual虚拟表
  8. 关于 hashcode 和 equals
  9. 无法使用xcode打出ipa包的解决方法
  10. 物联网兴起 嵌入式系统安全日益受关注