一. ARP数据包结构

(1)硬件类型:指明发送方想知道的硬件接口类型,以太网的值为1;
(2)协议类型:指明发送方提供的高层协议类型;它的值为 0x0800 即表示 IP地址。
(3)硬件地址长度和协议长度: 指明硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4。
(4)op:操作字段用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;

ARP协议解析过程(ARP协议只使用于局域网中)

> 局域网网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。
> 在以太网中,主机与主机相互通信,必须要知道目标主机的MAC地址。要想获得目标主机的MAC地址,需要通过地址解析协议进行解析。
  “地址解析”: 就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
> ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
> 点对点的连接是不需要ARP协议的

1. 每台主机都会有一个ARP缓冲区,该缓冲区记录了IP地址和MAC地址的对应关系,称为ARP高速缓存表。
2. 当源主机将一个数据包发送到目的主机时,会先检查自己 ARP缓存表中是否存在该 IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;
   如果没有,就以广播形式向本地网段发起一个ARP请求,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
3. 网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。
   如果不相同就忽略此数据包;
   如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP缓存表中,
   如果ARP缓存表中已经存在该IP的信息,则将其覆盖更新,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
4. 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,利用此信息进行数据的传输。
  如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

二. 浅谈ARP欺骗攻击

Gratuitous ARP (免费ARP) 报文
  免费ARP报文是一种特殊的ARP报文,该报文中携带的发送端IP地址和目标IP地址都是本机IP地址,
报文源MAC地址是本机MAC,目的MAC地址是广播地址。开机或者更改了IP地址,会发送免费ARP。

免费ARP具有如下2个作用:
(1)确定其它设备的 IP地址是否与本机 IP地址冲突。
   当其它设备收到免费ARP报文后,如果发现报文中的IP地址和自己的IP地址相同,则给发送免费ARP报文的设备返回一个ARP应答,告知该设备IP地址冲突。
(2)设备改变了硬件地址,通过发送免费ARP报文通知其它设备更新ARP表项.

如果我们伪造并发送恶意的Gratuitous ARP报文,通知其他主机更新ARP缓存记录,同时发送伪造的ARP响应数据包,使目标机器更新记录时与IP对应的MAC地址变成我们指定的MAC地址,就达到了欺骗的目的。

ARP攻击模式

下面分析一下进行ARP欺骗时的报文内容

正常 IP-MAC 对应关系

我们进行ARP欺骗的实验目标: 192.168.1.151 xxxx:50:96

本机IP-MAC: 192.168.1.150  xxxx:00:f4

我们进行ARP双向欺骗,然后查看ARP数据包情况

欺骗流程:发送恶意Gratuitous ARP报文,通知其他主机更新ARP缓存记录,同时发送伪造的ARP响应报文

下面就来看看用于欺骗的响应报文的内容(第一个和第二个报文)

(1)对目标主机192.168.1.151的欺骗报文(即图中的第一个报文)

该响应报文发送给我们要欺骗的目标主机192.168.1.151,告知它网关的MAC地址为 xxxx:00:f4(实际上这个MAC是攻击者的MAC)

(2)对网关的欺骗报文(即图中的第二个报文)

该响应报文发送给我们要欺骗的网关192.168.1.1,告知它主机192.168.1.151的MAC地址为 xxxx:00:f4(实际上这个MAC是攻击者的MAC)

实现ARP防护与检测

一. 防护

(1)绑定MAC

(2)使用ARP防火墙

ARP防火墙原理
软件定期向网关发送Gratuitous ARP,以通告自己正确的ARP信息
发送频率过高严重占用网络带宽
发送频率过低则达不到防范目的

二. ARP攻击检测思路

(1)检测网络中是否出现大量Gratuitous ARP报文和ARP响应报文

(2)检查自己收到的ARP报文中 IP-MAC 对应关系是否与本地的记录发生变化

小方法:

nbtscan:  能直接扫描到PC的真实IP地址和MAC地址;

tracert -d: 发现第一条是本网段内的另外一台机器的IP,说明可能遭受了ARP攻击(正常情况下路由跟踪执行后的输出第一条就应该是默认网关地址)

浅析ARP协议及ARP攻击的更多相关文章

  1. ARP协议与ARP攻击入门

    一 ARP协议 ARP协议是一个年代相当"久远"的网络协议.ARP协议制定于1982年11月,英文全称:Address Resolution Protocol,即"地址解 ...

  2. ARP协议(4)ARP编程

    之前的几篇文章,分别介绍了 ARP 协议格式,在vs2012里配置winpcap环境,我们该做的准备都已经做完了.如今我们真正来实现了. 一.定义数据结构 依据ARP的协议格式,设计一个ARP协议格式 ...

  3. ARP协议(3)ARP编程--winpcap&vs2012配置

    好.之前说了那么多.最终到了,我们能够操刀的时候了. 在对ARP协议编程前.我们必需要能控制网络适配器(网卡).这个部分就是驱动! "我们要编写网卡驱动?",对,可是,至少我们现阶 ...

  4. 描述ARP协议的工作原理,怎么实施ARP攻击和防御ARP攻击

    什么是ARP协议?ARP,即地址解析协议,实现通过IP地址得知其物理地址.在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址.为了让报文在 ...

  5. 网络层协议、ARP攻击

    一.IP数据包格式 二.ICMP协议介绍 PING命令 三.ARP协议介绍 四.ARP攻击原理 一.IP数据包格式 网络层的功能 定义了基于IP协议的逻辑地址 连接不同的媒介类型 选择数据通过网络的最 ...

  6. ARP协议格式、ARP运行机制入门学习

    相关学习资料 http://baike.baidu.com/view/149421.htm?fromtitle=ARP%E5%8D%8F%E8%AE%AE&fromid=1742212& ...

  7. ARP协议分析(Wireshark)

    一.说明 1.1 背景说明 以前学网络用的谢希仁的<计算机网络原理>,一是网开始学不太懂网络二是ARP协议是没有数据包格式的(如果没记错应该是没有).学完只记得老师说:ARP很简单的,就是 ...

  8. 关于ARP协议

    什么是arp协议: arp协议是地址解析协议,英文是address resolution protocol 通过IP地址可以获得mac地址 两个主机的通信归根到底是MAC地址之间的通信 在TCP/IP ...

  9. ARP协议(1)什么是ARP协议

    这是最近在看<TCP/IP具体解释>系列书总结出来的,之后会陆续把其它协议部分分享出来. 我尽量以简单易读.易懂的方式呈现出来,可是,因为文笔和水平有限.有些地方或许存在描写叙述上的不足或 ...

随机推荐

  1. hadoop编程技巧(3)---定义自己的区划类别Partitioner

    Hadoop代码测试环境:Hadoop2.4 原则:在Hadoop的MapReduce过程.Mapper阅读过程完成后数据.它将数据发送到Partitioner.由Partitioner每个记录应当采 ...

  2. JS判断鼠标向上滚动还是向下滚动

    js如何判断滚轮的上下滚动,我们应该都见到过这种效果,用鼠标滚轮实现某个表单内的数字向上滚动就增加,向下滚动就减少的操作,这种效果是通过js对鼠标滚轮的事件监听来实现的.今天简单的研究了一下如何使用j ...

  3. 【转】android动画之Tween动画 (渐变、缩放、位移、旋转)

    原文:http://blog.csdn.net/feng88724/article/details/6318430 Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的 ...

  4. OSGi.NET 学习笔记

    OSGi.NET 学习笔记 [目录]   持续更新和调整中,本人学习笔记,非官方文档,难免疏漏,仅供参考. OSGi.NET SDK下载地址. 前言及环境准备 模块化和插件化 概念 实例 小结 面向服 ...

  5. Vim插件之插件管理器Vundle

    Vim插件之插件管理器Vundle 1.介绍下载 相比Sublime.Text2等现代编辑器,Vim缺乏默认的插件管理器,所有插件的文件都散布在~/.vim下的几个文件夹中,配置Vim的过程, 就是在 ...

  6. 让VS2010记住TFS的登陆用户名和密码

    用VS进行团队开发的都知道,每次打开VS连接TFS的时候,都要提示输入用户名和密码,每次都这样无疑感觉太多此一举了(当然你不想别人操作你的电脑就直接进入项目就没必要这么做),为了像连接远程那样可以记住 ...

  7. c# 如何显示图片指定位置

    private void panel1_Paint(object sender, PaintEventArgs e) { Rectangle r1 = new Rectangle(0, 0, 100, ...

  8. 企业架构研究总结(30)——TOGAF架构内容框架之内容元模型(上)

    2. 内容元模型(Content Metamodel) 在TOGAF的眼中,企业架构是以一系列架构构建块为基础的,并将目录.矩阵和图形作为其具体展现方式.如果我们把这些表述方式看作为构建块的语法,那么 ...

  9. IL反编译的实用工具

    初识Ildasm.exe——IL反编译的实用工具   Ildasm.exe 概要: 一.前言: 微软的IL反编译实用程序——Ildasm.exe,可以对可执行文件(ex,经典的控制台Hello Wor ...

  10. T-SQL查询语句(三):多表查询

    SQL查询语句<三>:多表查询 (也叫连接查询,此处为基于两个表的连接查询)如果一个查询需要对多个表进行操作就称为连接查询,连接查询的结果集或结果称为表之间的连接.连接查询实际上是通过各个 ...