ARP协议与ARP攻击入门
一 ARP协议
ARP协议是一个年代相当“久远”的网络协议。ARP协议制定于1982年11月,英文全称:Address Resolution Protocol,即“地址解析协议”。
我们知道,虽然终端设备想要上网必须具有公有IP地址,但是在Internet的TCP/IP协议中,IP地址的作用是标识一台主机或路由器与一条链路的接口,也就是说IP地址指明了数据由一个网络传输到另一个网络的路径,但是我们知道,为了节约IP地址,通常情况下,在一个内部网络中,主机常常使用RFC规定的三种私有IP地址作为局域网中主机的IP地址,而且主机的IP地址是由该网络的路由器动态分配的,如果数据的传输仅仅依赖于IP地址,那么当数据到达一个内部网络中时就可能因为目标主机的IP地址发生改变而将数据传输到了错误的目标主机。但是不同设备的物理地址(MAC)是全网唯一的,而且一般也不会被改变(MAC地址是写入网卡的,固定的),因此使用MAC地址作为信息的标识,定位目标网络设备就可以保证信息能够正确抵达目标主机。而通过目标设备的IP地址查找目标设备的MAC地址就是ARP协议的基本功能。
ARP协议的工作过程
由于内部网络中主机的IP地址往往是动态分配的,因此,在主机中是有ARP缓存的,记录着本网络中IP地址与MAC地址的对应关系。那么,这个ARP缓存是怎么生成的呢?首先,当网络中的主机A需要向主机B发送信息时,会将包含目标IP地址的ARP请求广播到该网络中的所有主机上,网络中的其他主机在收到主机A的ARP请求后可以自主的发送ARP应答报文,应答中包含自己的IP和自己的MAC地址,主机B也会发送这样的应答报文给主机A。这样主机A就知道了主机B的MAC地址与IP地址了。
ARP协议的工作是建立在网络中各个主机之间相互信任的基础上的,一台主机在收到其他主机的ARP应答报文时并不会采取措施校验该报文的真实性,而是直接就记录到了自己的ARP缓存中以备下次使用。
二 ARP攻击
ARP攻击的第一步就是ARP欺骗。由上述“ARP协议的工作过程”我们知道,ARP协议基本没有对网络的安全性做任何思考,当时人们考虑的重点是如何保证网络通信能够正确和快速的完成——ARP协议工作的前提是默认了其所在的网络是一个善良的网络,每台主机在向网络中发送应答信号时都是使用的真实身份。不过后来,人们发现ARP应答中的IP地址和MAC地址中的信息是可以伪造的,并不一定是自己的真实IP地址和MAC地址,由此,ARP欺骗就产生了。
ARP欺骗
ARP的应答报文是可以伪造的。假设一个网络中有3台主机,分别为A、B和C。当主机A向网络中发送了ARP请求时,用于攻击的主机C可以假装是B,然后向主机A发送一个伪造的ARP应答报文,由于A并不会采取措施验证该报文真伪,而是直接存入自己的ARP缓存并在需要时使用(ARP缓存分两种,一种是静态ARP缓存,该类缓存只要主机不关机就一直存在。另一类是动态ARP缓存,该类缓存是有时效限制的,一般ARP动态缓存的最长生命周期是10分钟,如果一个动态缓存项目在2分钟内没有被使用,则删除,如果在两分钟内被使用了,则增加两分钟的生命周期,直到达到10分钟的最长生命周期后进行更新),由此,C就成功的欺骗了A。那么来自主机B的正确的应答报文去哪了?如果A收到了来自B的正确的应答报文,更新了自己的ARP缓存,那么C的ARP欺骗不就失败了吗?确实会发生这种情况,但是如果C不断的向网络中的各台主机大量发送伪造的ARP应答报文,直到同时欺骗了A和B,C就成功的对主机A和B进行了ARP欺骗。接下来C就可以监听A和B之间的流量,伪造A和B的通信内容或者阻止A和B的通信。
为什么ARP攻击只能发生在局域网
当我们在说“ARP攻击”时,我们还常常和另外一个词连系在一起:“局域网”。为什么ARP攻击只能发生在局域网呢?或者说为什么ARP协议只能在局域网内发挥作用?这和互联网通信的原理以及ARP协议的功能有关。简单的说,我们可以这样理解:
我们知道,IP地址位于OSI模型的第三层(网络层),MAC地址位于OSI模型的第二层(数据链路层)。而路由器工作在三层或者三层以上。由此看来,用于连接IP地址与MAC地址的ARP协议是不能跨越第三层的(ARP工作在网络层),因此ARP广播包也不可能通过路由器到达其他网络。
上面的这个解释很好理解,但是并不是很严密的解释,也没有触及到问题的核心。如果要完全解释“为什么ARP攻击只能发生在局域网内部?”这个问题,我们就必须更深入的理解TCP/IP协议和路由器的工作原理。
在TCP/IP协议中,数据的传输有三种方式:单播、组播和广播。单播就是一对一的通信,组播(也称多播)是一对多的通信(如视频直播)。单播和组播都是可以跨越物理网络进行通信的,也就是进行通信的主机之间可以不在一个子网内部。但是,广播就有一些特别了,由于广播域的存在(一般一个局域网就是一个广播域),所以路由器在收到广播数据时是会拒绝向其它网络转发的,路由器实际上起到了分离广播域,隔离广播数据的作用。
ARP攻击之所以能够产生,就是因为伪造了对ARP广播的应答,综合上述分析可知,如果用于攻击的主机并不在目标网络中,就接收不到目标网络中ARP请求的广播,其伪造的ARP应答也无法到达目标网络。因此,ARP攻击只能发生在局域网(子网)内部。正因如此,我们只能对目标主机IP地址网络号部分以及子网掩码与我们的攻击机器IP地址网络号部分和子网掩码相同的主机发动ARP攻击。
end
更多内容请访问我的个人网站荒原之梦
ARP协议与ARP攻击入门的更多相关文章
- 浅析ARP协议及ARP攻击
一. ARP数据包结构 (1)硬件类型:指明发送方想知道的硬件接口类型,以太网的值为1:(2)协议类型:指明发送方提供的高层协议类型:它的值为 0x0800 即表示 IP地址.(3)硬件地址长度和协议 ...
- ARP协议(4)ARP编程
之前的几篇文章,分别介绍了 ARP 协议格式,在vs2012里配置winpcap环境,我们该做的准备都已经做完了.如今我们真正来实现了. 一.定义数据结构 依据ARP的协议格式,设计一个ARP协议格式 ...
- ARP协议(3)ARP编程--winpcap&vs2012配置
好.之前说了那么多.最终到了,我们能够操刀的时候了. 在对ARP协议编程前.我们必需要能控制网络适配器(网卡).这个部分就是驱动! "我们要编写网卡驱动?",对,可是,至少我们现阶 ...
- ARP协议格式、ARP运行机制入门学习
相关学习资料 http://baike.baidu.com/view/149421.htm?fromtitle=ARP%E5%8D%8F%E8%AE%AE&fromid=1742212& ...
- 描述ARP协议的工作原理,怎么实施ARP攻击和防御ARP攻击
什么是ARP协议?ARP,即地址解析协议,实现通过IP地址得知其物理地址.在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址.为了让报文在 ...
- 网络层协议、ARP攻击
一.IP数据包格式 二.ICMP协议介绍 PING命令 三.ARP协议介绍 四.ARP攻击原理 一.IP数据包格式 网络层的功能 定义了基于IP协议的逻辑地址 连接不同的媒介类型 选择数据通过网络的最 ...
- ARP协议分析(Wireshark)
一.说明 1.1 背景说明 以前学网络用的谢希仁的<计算机网络原理>,一是网开始学不太懂网络二是ARP协议是没有数据包格式的(如果没记错应该是没有).学完只记得老师说:ARP很简单的,就是 ...
- 关于ARP协议
什么是arp协议: arp协议是地址解析协议,英文是address resolution protocol 通过IP地址可以获得mac地址 两个主机的通信归根到底是MAC地址之间的通信 在TCP/IP ...
- ARP协议(1)什么是ARP协议
这是最近在看<TCP/IP具体解释>系列书总结出来的,之后会陆续把其它协议部分分享出来. 我尽量以简单易读.易懂的方式呈现出来,可是,因为文笔和水平有限.有些地方或许存在描写叙述上的不足或 ...
随机推荐
- java 多线程和线程池
● 多线程 多线程的概念很好理解就是多条线程同时存在,但要用好多线程确不容易,涉及到多线程间通信,多线程共用一个资源等诸多问题. 使用多线程的优缺点: 优点: 1)适当的提高程序的执行效率(多个线程同 ...
- C语言之归并排序
即将两个都升序(或降序)排列的数据序列合并成一个仍按原序排列的序列. 上代码: #include <stdio.h> #include <stdlib.h> #define m ...
- Spring--ApplicationContext
//中心接口,给应用提供配置信息 public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory ...
- LeetCode(68)-Compare Version Numbers
题目: Compare two version numbers version1 and version2. If version1 > version2 return 1, if versio ...
- kubernetes-dashboard(1.8.3)部署与踩坑
Kubernetes Dashboard 是一个管理Kubernetes集群的全功能Web界面,旨在以UI的方式完全替代命令行工具(kubectl 等). 目录 部署 创建用户 集成Heapster ...
- 听晴明老师从头讲React Native(原价399)百度云下载 百度网盘
适用人群 能使用至少一门主流编程语言:有基本的面向对象的概念:最好有一些web相关的知识和概念. 课程概述 新颖.实用.详尽的ReactNative零基础课程,由国内权威的ReactNative中文网 ...
- 关于web页面JApplet打印小票
版权所有 做这个的例子太少,我把我做的示例亮出来 一.先说说需要的版本 1.我用的浏览器只有ie: 火狐只支持52版本以下,并且是java7.java8.chrome不支持 2.applet客户端打印 ...
- javax.mail
摘抄 example: public static void sendEmail(ConfBean cBean, String filename, String filepath) { try { P ...
- java web--DOM
Dom总结dom:文档对象模型的简称.dom的解析:与XML一样遵循同样的规范 将标记型文档解析成一棵DOM树,并将树中的内容都封装成节点对象. 如果html文档过大,同样会造成解析过慢,怎么使用sa ...
- JVM-GC工作原理
配置Garbage Collection 2012-09-17 14:53:18 分类: Java 上面这幅图是我从网络上摘到的,它展现了在一个的理想系统的模型下GC对系统的影响.图的最顶上红色 ...