zoukankan      html  css  js  c++  java
  • 浅析ARP协议及ARP攻击

    一. 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攻击(正常情况下路由跟踪执行后的输出第一条就应该是默认网关地址)

  • 相关阅读:
    mini2440移植uboot 2014.04(四)
    mini2440移植uboot 2014.04(三)
    【这些年】Linux C/C++软件开发用过的工具
    Valgrind的Memcheck快速入门
    《浪潮之巅》读后感
    三层浅析及示例分析
    C语言的代码内存布局详解
    超级立方体小记
    如何和项目经理沟通产品的交付?
    CentOS配置smaba与Windows共享文件
  • 原文地址:https://www.cnblogs.com/ssooking/p/6159493.html
Copyright © 2011-2022 走看看