第二章:劫持原理剖析——BGP劫持的定义与分类

大家好,我是老张。今天咱们来聊聊BGP劫持到底是怎么回事。

说实话,我刚入行那会儿,觉得BGP协议挺完美的。每个AS都宣告自己的前缀,路由器按最优路径转发,多和谐啊。直到有一次,我亲眼看着一个客户的流量莫名其妙绕到了欧洲,才意识到——BGP这玩意儿,其实建立在信任基础上。说白了,它默认所有邻居都是好人。

嗯,这个假设在现实世界里,太天真了。

2.1 BGP劫持的定义

什么叫BGP劫持?简单说,就是一个AS故意宣告它不拥有的IP前缀,或者宣告一条它不应该有的路径。其他AS信以为真,就把流量发过去了。

你想想看,这就像有人冒充你家地址收快递。邮局一看地址没错,就把包裹送过去了。但收件人根本不是你家的人。

核心定义:BGP劫持是指攻击者通过伪造BGP路由通告,非法控制特定IP前缀的流量路径,导致流量被重定向、窃听或阻断的攻击行为。

我在项目中遇到过最典型的场景:某运营商内部员工误操作,把/24的前缀宣告成了/16。结果整个/16段的流量全跑过来了,那叫一个灾难。事后复盘,其实就是一条配置命令的事。

2.2 劫持的分类

根据攻击手法,我把BGP劫持分成两大类。咱们一个一个说。

2.2.1 前缀劫持(Prefix Hijacking)

前缀劫持是最常见的一种。攻击者直接宣告一个不属于自己的IP前缀。

举个例子:

  • 正常情况:AS 100 拥有前缀 203.0.113.0/24
  • 攻击者:AS 200 宣告 203.0.113.0/24
  • 结果:部分ISP看到AS 200的路径更短,就把流量转过去了

为什么会这样?因为BGP选路时,只看路径长度和AS_PATH属性。攻击者只要把自己的AS_PATH弄得短一点,就能抢走流量。

避坑指南:我曾经见过一个案例,攻击者宣告了更精确的前缀(比如/25代替/24)。因为BGP遵循最长前缀匹配原则,更精确的路由会被优先选择。这招特别阴险,防不胜防。

2.2.2 路径劫持(Path Hijacking)

路径劫持更隐蔽。攻击者不改变前缀归属,而是篡改AS_PATH,让流量绕道经过自己的网络。

比如:

  • 正常路径:AS 100 → AS 300 → AS 500
  • 攻击者:AS 200 宣告一条路径 AS 200 → AS 100(假装自己能直达)
  • 结果:流量先经过AS 200,再转给AS 100

你想想看,流量经过攻击者的网络,他能干什么?抓包、篡改、注入恶意代码,什么都干得出来。

劫持类型 攻击手法 检测难度 典型后果
前缀劫持 宣告不属于自己的前缀 中等 流量被重定向
路径劫持 篡改AS_PATH 较高 流量被窃听/篡改
子前缀劫持 宣告更精确的前缀 部分流量被劫持

2.3 典型劫持案例分析

讲理论太枯燥,咱们来看个真实案例。这个案例在圈子里几乎无人不知——YouTube劫持事件。

2.3.1 事件回顾

2008年2月24日,巴基斯坦电信(AS 17557)接到政府指令,要求封锁YouTube。他们怎么做的?在BGP上宣告了YouTube的IP前缀(208.65.152.0/22),但把下一跳指向了黑洞。

本来这只是在巴基斯坦国内生效。但巴基斯坦电信的运营商——香港电讯盈科(AS 3491),没有做任何过滤,就把这条路由传播到了全球。

结果呢?全球约三分之二的YouTube流量,在接下来两小时内无法访问。嗯,这就是著名的“巴基斯坦YouTube事件”。

注意:这次事件完全是误操作导致的。巴基斯坦电信的本意只是国内封锁,但因为缺少路由过滤,变成了全球性事故。我后来在给客户做BGP安全培训时,总会拿这个案例说事——没有过滤的BGP,就像没有锁的门。

2.3.2 技术细节

咱们拆解一下攻击链路:

  1. 巴基斯坦电信宣告了208.65.152.0/22(YouTube的前缀)
  2. 电讯盈科没有验证前缀归属,直接转发
  3. 其他ISP看到这条路由,认为巴基斯坦电信是YouTube的新路径
  4. 流量被重定向到巴基斯坦电信,然后被黑洞丢弃

你想想看,整个过程只用了不到30分钟。但恢复却花了两个多小时。为什么?因为BGP的收敛速度慢,而且很多ISP需要手动清理缓存路由。

2.3.3 教训与反思

这个案例告诉我们三件事:

  • 路由过滤是底线:如果电讯盈科做了前缀过滤,这条虚假路由根本传不出去
  • RPKI不是摆设:如果当时有RPKI验证,YouTube的前缀归属一目了然
  • BGP的信任模型需要升级:默认信任邻居,在安全领域就是最大的漏洞

个人经验:我后来给一个大型ISP做BGP安全加固时,第一件事就是让他们把所有上游邻居的prefix-list全部梳理一遍。说实话,这个过程很痛苦,但做完之后,心里踏实多了。

2.4 本章小结

BGP劫持的本质,是协议信任模型的滥用。前缀劫持直接抢流量,路径劫持偷偷改路径。YouTube事件告诉我们,一次误操作就能让全球网络瘫痪。

嗯,说到这里,你可能想问:那怎么防?别急,后面几章我会详细讲RPKI、BGPsec、路由过滤这些防护手段。但在此之前,你得先理解攻击者是怎么想的。

记住一句话:在BGP的世界里,信任是奢侈品,验证才是必需品。

BGP劫持分类与攻击链路 BGP劫持 前缀劫持 路径劫持 子前缀劫持 宣告不属于自己的前缀 篡改AS_PATH属性 宣告更精确的前缀 典型案例:YouTube劫持事件(2008)

这张图把劫持分类和攻击链路串起来了。你可以看到,不管是哪种劫持,最终目的都是控制流量。而YouTube事件,就是前缀劫持的典型代表。

专注资料整理