onnsenn
Hi!这里是温泉,请多多指教。
温泉の无名小站

ARP作用以及ARP欺骗原理和DNS欺骗原理

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。

—百度百科:https://baike.baidu.com/item/ARP/609343?fr=aladdin

ARP欺骗原理

此篇文章仅讨论 IPv4 相关内容(因为IPv6至目前为止我也不太了解

什么是ARP?

首先,明确一点ARP作用就是把IP转为为MAC地址。同时你还需要知道以下内容:

ARP数据包是广播数据包,只能在同一个网段中传递,路由器会隔绝ARP数据包。(想一想如果能在互联网中传递,全世界设备同时网互联网发一个ARP包会是一个什么状态)

预计2017年全球物联网设备数量达到84亿

http://www.199it.com/archives/563533.html

众所周知,交换机是通过MAC地址表进行数据转发,想象一下每个交换机要处理**84亿数据**(事实上截止编写时间互联网设备量远不止这个值),所以ARP仅仅在内网中使用,仅保留本地设备的MAC地址,其中最重要的一条就是网关的MAC地址

数据包转发流程:

(可能有错误,欢迎评论区指正)

通信双方都在内网

这里假设网关地址为192.168.1.1,子网掩码255.255.255.0(24位),假设第一次通信,路由表、ARP表、MAC地址表均为空。

  • 192.168.1.101 需要发送一个数据包给 192.168.1.202
    • 根据掩码和IP判断出目标在同一个网段,192.168.1.101 发送一个广播数据包 who has 192.168.1.202 Tell 192.168.1.101,交换机看这是一个广播包,进行泛洪,除接收接口外的所有接口发出。
    • 内网里面同网段所有已开启设备(如192.168.1.105,192.168.1.152,192.168.1.135……..等)均会收到这个数据包,然后将192.168.1.202自己的IP进行对比。
      • 如果和自己的IP相同,则回复一个192.168.1.202 is on xx-xx-xx-xx-xx-xx
      • 如果和自己IP不相同,则不做任何回复,丢弃该广播包
    • 如果收到ARP回复包,并进行下一步;如果没有收到任何ARP回复包,则认为目标不可达,该数据包将被丢弃。
      • 回复包也是泛洪,所以所有设备(包括自己)均会收到并将MAC地址与IP地址对应关系写入到ARP表中
    • 根据接收的MAC地址,将本机的MAC(源MAC)和接收到的MAC(目标MAC)以及数据包内容组成数据帧发送。
    • 交换机解析这个数据包,记录下接收接口原MACMAC地址表
      • 目标MAC地址在MAC地址表中将根据MAC地址表结果进行转发
      • 目标MAC地址不在MAC地址表中将进行泛洪
  • 192.168.1.202 接收到来自 192.168.1.101 的数据包,需要回复给 192.168.1.101
    • 这时候ARP表中已经有数据了,取出目标的MAC地址
    • 根据路由表中的MAC地址,将本机的MAC(源MAC)和接收到的MAC(目标MAC)以及数据包内容组成数据帧发送。
    • 交换机解析这个数据包,记录下接收接口原MACMAC地址表
  • 至此,这一次数据交互就让交换机建立了接口MAC地址的对应关系,后续所有发给这两个MAC地址的数据包均会从相应的接口传出,而不会传递给其他接口。

ARP表中的数据是有有效时间的,过期后又会重新发送ARP进行查询

ARP表老化时间:思科是 5分钟,华为是 20分钟

可以看到,如果通信双方在一个内网,是没有用到网关的,所以内网通信不用配置网关地址也可以通信。

通信双方不在内网

为简化流程,这边假设目标双方均在公网环境下,并拥有公网IP地址。

A计算机:IP地址:192.168.1.100 网关地址:192.168.1.1 子网掩码:255.255.255.0 互联网地址:170.0.0.1

B计算机:IP地址:192.168.2.100 网关地址:255.255.255.0 子网掩码:255.255.255.0 互联网地址:10.4.9.1

  • A计算机192.168.1.100要发送数据给B计算机192.168.2.100
  • 大体和内网相同。
  • 先通过IP和子网掩码判断出目标和自己不在同一个内网,但这里就需要网关了,先通过ARP找到网关(通常是路由器)的MAC(who has 192.168.1.1 Tell 192.168.1.100
  • 网关接收到ARP包后回复请求,交换机和设备记录ARP信息
  • 组包目标IP192.168.2.100和源IP192.168.100交给下一层封装本机MAC(源MAC)和网关MAC(目标MAC)发送给网关。
  • 网关解析出目标IP192.168.2.100,根据路由表,去往192.168.2.100的数据包交给10.4.9.1处理
  • 10.4.9.1 接收到数据包,根据路由表交给网关192.168.2.1处理
  • 192.168.2.1 查询 192.168.20.100 的IP地址并送达目标地址

  • B计算机作出回复发送给A计算机
  • 大体和上述相同:B计算机-B网关-B互联网地址-A互联网地址-A网关-A计算机

ARP欺骗原理

我们先看看ARP欺骗在百度百科中的定义

ARP欺骗的运作原理是由攻击者发送假的ARP数据包到网上,尤其是送到网关上。其目的是要让送至特定的IP地址的流量被错误送到攻击者所取代的地方。因此攻击者可将这些流量另行转送到真正的网关(被动式数据包嗅探,passive sniffing)或是篡改后再转送(中间人攻击,man-in-the-middle attack)。攻击者亦可将ARP数据包导到不存在的MAC地址以达到阻断服务攻击的效果,例如netcut软件。

如果你认真阅读了上述数据包转发流程,再来看百度百科的内容就很容易理解ARP欺骗的工作原理了。我们拆开来看看。

断网攻击

当有设备一直不断的在网络中发送x.x.x.x is on 一个不存在的MAC地址(x.x.x.x为被断网的IP),所有设备(包括网关)ARP表都会进行更新,然后所有通往该IP的数据包都被发送到了那个不存在的MAC地址,原设备无法接收到数据包而实现了断网目的。

思考:

  • 为什么ARP响应包需要一直发送(而且间隔很短)

流量抓取

很简单,向被攻击的IP发送 网关IP is on 本机的MAC地址,并向网关发送 被攻击的IP is on 本机MAC地址 就实现了将目标计算机访问网关的数据包发送到本机,网关访问目标计算机的数据包发送到本机,本机进行转发的过程中进行数据抓取(过滤ip.src == 被攻击IP || ip.dst == 被攻击IP)即可。

数据包篡改

这个是基于流量抓取的进一步,在转发的时候,根据特定的需求配置或编写策略,将特定的数据包改为我们伪造的数据包发送给被攻击者。其中一个很常见的操作就是修改DNS解析数据包,即DNS劫持

DNS劫持

同样,先上百度百科

域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的IP地址从而实现用户无法访问目标网站的目的或者蓄意或恶意要求用户访问指定IP地址(网站)的目的。

获取域名的控制权

这里的话就涉及了社工相关内容,直接攻击域名的服务器,只能针对单个域名,一般来说是有固定的目标(如攻击abc.com,则所有访问abc.com的用户都会受到影响),简单来说流程如下:

  • 通过whois等查询收到找到域名注册信息,其中就包括了注册商、注册邮箱、姓名、地址等信息
  • 通过社工或者暴力破解的方式,掌握域名的控制权
  • 修改域名NS服务器为黑客自建的NS服务器,由黑客的NS服务器提供解析记录。
  • 所有DNS服务器都会根据NS服务器的结果进行解析查询,并且都指向了黑客服务器

这种攻击作为用户无任何感觉,因为相当于黑客直接掌握了域名的控制权,除非原拥有者及时发现并更改,但是一般来说NS记录更改会有24-48小时不等的缓存时间,所以这种攻击手法造成的危害最大。

攻击NS服务器

通过各种手段侵入域名服务器的NS服务器,并修改解析,效果和获取域名控制权类似。

攻击DNS服务器

一般来说家庭用户的DNS服务器都是由网关提供,其中是有DNS缓存的,通过攻击网关修改DNS缓存信息实现DNS劫持。

还有一种比较难以实现:攻击上游DNS服务器,前提是需要知道被攻击者DNS服务器配置,并且DNS服务器有能利用的漏洞。

DNS服务器欺骗

相比于之前的两种方式来说,这种方式是最容易的。

原理:在ARP欺骗的基础上,进行数据包篡改,DNS解析有个很明显的特征:UDP协议53端口。通过相应的策略,将这种数据包交给本地的某些程序或脚本进行处理,并且按规则返回需要欺骗的域名,其余域名照常通过正常的DNS服务器解析即可,被攻击者基本上来说不会有感觉。

wenquan

文章作者

发表评论

textsms
account_circle
email

温泉の无名小站

ARP作用以及ARP欺骗原理和DNS欺骗原理
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消…
扫描二维码继续阅读
2021-08-24