什么是 BGP 劫持?

BGP 劫持是对 Internet 流量的恶意重新路由,其利用了 BGP(Internet 的路由协议)的信任特性。

Share facebook icon linkedin icon twitter icon email icon

BGP 劫持

学习目标

阅读本文后,您将能够:

  • 定义 BGP 劫持
  • 讨论 BGP 劫持的一些真实案例
  • 概述一些防止 BGP 劫持的对策

什么是 BGP 劫持?

BGP 劫持是指攻击者恶意重新路由 Internet 流量的情况。攻击者通过不实地宣布实际上没有拥有、控制或路由到的 IP 地址组(称为 IP 前缀)的所有权来实现此目的。BGP 劫持就好比有人改变一段高速公路上的所有标志,将汽车重新引导到错误的出口。

BGP Hijacking Reroute

因为 BGP 是基于互连网络真实表述它们拥有的 IP 地址这一事实,所以 BGP 劫持几乎是无法停止的 - 想象一下,如果没人注意高速公路标志,只有观察到许多汽车最终进入错误区域时才能判断它们被恶意更改。但是,要发生劫持,攻击者需要控制或破坏在一个自治系统 (AS) 与另一个自治系统之间桥接的、启用 BGP 的路由器,因此,不是任何人都可以执行 BGP 劫持。

什么是 BGP?

BGP 是边界网关协议的缩写,是 Internet 的路由协议。换句话说,它提供方向,以便流量尽可能有效地从一个 IP 地址传播到另一个 IP 地址。IP 地址是给定网站的实际网址。当用户键入网站名称、而浏览器找到并加载该网站名称时,请求和响应会在用户的 IP 地址和网站的 IP 地址之间来回传递。DNS(域名系统)服务器提供 IP 地址,但是 BGP 提供到达该 IP 地址的最有效方法。大体而言,如果 DNS 是 Internet 的通讯簿,BGP 就是 Internet 的路线图。

每个 BGP 路由器都存储一个含有自治系统之间最佳路线的路由表。随着每个 AS*(通常是 Internet 服务提供商 (ISP))广播它们拥有的新 IP 前缀,这些路由表几乎不断更新。BGP 始终偏爱从一个 AS 到另一个 AS 的最短、最直接的路径,以便通过网络中尽可能少的跃点到达各个 IP 地址。

*自治系统 (AS) 的定义

自治系统是由单个组织管理的大型网络或网络群组。一个 AS 可能有许多子网,但是全部共享相同的路由策略。通常,AS 是 ISP 或自有网络的非常大型的组织,并且有从该网络到 ISP 的多个上游连接(这称为“多宿主网络”)。每个 AS 都分配有其自己的自治系统编号 (ASN),以轻松识别它们。

BGP 有什么重要意义?

BGP 使 Internet 的大规模发展成为可能。Internet 由多个相互连接的大型网络组成。由于它是分散的,所以没有治理机构或“交通”警察为数据包到达其预期 IP 地址目的地的最佳路线制定方案。BGP 就承担了这个角色。如果不使用 BGP,则由于路由效率低下,Web 流量可能会需要大量时间才能到达目的地,或者根本无法到达预期的目的地。

BGP 是如何被劫持的?

当 AS 宣告一个其实际上不控制的 IP 前缀的路线时,该宣告(如果未被筛除)可以传播并添加到 Internet 上 BGP 路由器的路由表中。从那时起,这些 IP 的流量将被路由到该 AS,直到有人注意到并纠正了路线。这就像是宣称领土所有权,而又没有地方政府来核实和执行财产契约。

BGP 始终倾向于使用最短、最特定的路径到达所需 IP 地址。为了使 BGP 劫持成功,路线通告必须:

1) 通过宣布比以前其他 AS 更小的 IP 地址范围来提供更具体的路线。

2) 提供一条通往某些 IP 地址块的较短路径。此外,不是任何人都可以宣布前往到较大 Internet 的 BGP 路线。要发生 BGP 劫持,必须由 AS 的运营商或入侵 AS 的威胁行为者发出通告(第二种情况更为罕见)。

BGP Hijacking Flow

大型网络或网络群组(其中许多是 ISP)的运营商会明目张胆地进行这种恶意活动,这可能会令人感到惊讶。但是考虑到从某些计算方法来看,目前全球范围内有 80,000 多个自治系统,其中一些不值得信任也不足为奇。此外,BGP 劫持并不总是很明显或很容易检测到。不良行为者可能将他们的活动掩藏在其他 AS 之后,或者可能声明不太可能被注意到的 IP 前缀的未使用块,以便避开检测。

BGP 被劫持后会发生什么?

BGP 被劫持后,Internet 流量可能走上错路、被监控或拦截、进入“黑洞”,或作为中间人攻击的一部分被定向到虚假网站。此外,垃圾邮件发送者可以使用 BGP 劫持或实施 BGP 劫持的 AS 的网络,伪造合法 IP 来实现发送垃圾邮件的目的。从用户的角度来看,页面加载时间将增加,因为请求和响应不会沿着最有效的网络路线传递,甚至可能不必要地遍历整个世界。

在最佳情况下,流量只是会经过不必要的长路径,进而增加了延迟。在最坏的情况下,攻击者可能会进行中间人攻击,或将用户重定向到虚假网站以窃取凭据。

现实世界中的 BGP 劫持

现实世界中有许多故意进行 BGP 劫持的示例。例如,在 2018 年 4 月,一家俄罗斯提供商宣称了实际上属于 Route53 Amazon DNS 服务器的许多 IP 前缀(IP 地址组)。简而言之,宣称的最终结果是试图登录加密货币网站的用户被重定向到由黑客控制的假冒网站。黑客因此窃取到大约价值 152,000 美元的加密货币。(更具体地说:通过 BGP 劫持,黑客劫持了 Amazon DNS 查询,因此针对 myetherwallet.com 的 DNS 查询转到了他们控制的服务器,返回了错误的 IP 地址,并将 HTTP 请求定向到了虚假网站。请在我们的博客帖子《BGP 泄漏和加密货币》中了解更多信息。)

无意造成的 BGP 劫持实例也很普遍,可能对整个全球 Internet 产生负面影响。2008 年,巴基斯坦政府所有的巴基斯坦电信试图通过更新网站的 BGP 路由在巴基斯坦境内审查 Youtube。在看似偶然的情况下,宣布的新路线接往巴基斯坦电信的上游提供商,并从那里广播到整个互联网。突然,所有针对 Youtube 的 Web 请求都定向到了巴基斯坦电信,导致整个几乎 Internet 都有数个小时无法访问该网站,使 ISP 不堪重负。

用户和网络如何防御 BGP 劫持?

除了持续监视 Internet 流量的路由方式外,用户和网络几乎无法阻止 BGP 劫持。

IP 前缀筛选

大多数网络仅应在必要时接受 IP 前缀声明,并且仅应向某些网络而不是整个 Internet 声明其 IP 前缀。这样做有助于防止意外的路由劫持,并且可以防止 AS 接受虚假的 IP 前缀声明。但是在实际上这很难执行。

BGP 劫持检测

延迟增加、网络性能下降和 Internet 流量定向错误都是 BGP 劫持的可能迹象。许多较大的网络会监视 BGP 更新,以确保其客户端不会遇到延迟问题,实际上,一些安全研究人员确实在监视 Internet 流量并发布其研究结果。

使 BGP 更安全

BGP 旨在使 Internet 正常工作,而且确实也做到了这一点。但是 BGP 在设计时并未考虑安全性。目前正在开发用于整个 Internet 的更安全的路由解决方案(例如 BGPsec),但是尚未采用。暂时而言,BGP 天然地易受攻击,并且将继续如此。

Cloudflare 如何使用 BGP?

Cloudflare 在全球各地拥有超过 194 个数据中心,所有数据中心都广播一个 ASN (AS13335) 和相同的 IP 前缀。这样可以最大程度地减少为了达到 Cloudflare 托管的 IP 地址而需要穿越的网络流量。因此,几乎在世界任何地方都可以找到通往 Cloudflare 拥有的 IP 地址的有效路径。对于日本的 AS,通向 Cloudflare IP 的最短路径可能只有几步之遥,最终到达位于日本本土的 Cloudflare 数据中心。在加利福尼亚州,流量可以去往位于同一 Cloudflare AS 中的相同 IP 地址,并最终通过加利福尼亚州的数据中心到达该地址。