2、路由欺骗攻击原理:BGP路由劫持、BGP路径篡改、BGP前缀劫持

聊BGP攻击之前,我先说个真事儿。几年前我帮一家运营商排查跨国业务延迟,发现流量莫名其妙绕到了东欧。查了半天,不是设备故障,不是光纤断了——是有人在前缀上动了手脚。说白了,这就是一次典型的BGP路由劫持。

你想想看,BGP这协议设计于上世纪90年代,那时候互联网还像个村子,大家彼此信任。现在呢?全球几万个自治系统互联,信任基础早就变了。攻击者只要搞到一台路由器,或者控制一个AS,就能让整个互联网的流量走错路。

这一节,咱们把三种最常见的BGP欺骗攻击掰开揉碎讲清楚。嗯,我习惯把它们分成三类:劫持、篡改、前缀劫持。虽然名字听着像,但技术细节差别很大。

2.1 BGP路由劫持

路由劫持,说白了就是「冒名顶替」。攻击者对外宣称:「我是某个IP段的主人」,然后全网都信了。

为什么会这样?因为BGP本身没有内置的源验证机制。路由器收到一条路由更新,默认就相信它——除非你手动配了RPKI或者前缀过滤。

核心原理: 攻击者通过其控制的AS,向邻居宣告一个不属于自己的IP前缀,且路径属性(AS_PATH)被伪造或缩短,使得该路由在选路竞争中胜出。

我在项目中遇到过最典型的场景:某云服务商的一个/24前缀被劫持,导致用户访问该云服务时,流量先经过攻击者的网络。攻击者可以做什么?监听、篡改、重定向——想想都后怕。

劫持的后果,我列几个常见的:

  • 流量窃听: 所有发往目标IP的流量经过攻击者网络
  • 服务中断: 合法路由被撤销,目标网络失联
  • 中间人攻击: 攻击者可以修改数据包内容
  • 加密货币盗窃: 历史上多次发生BGP劫持窃取比特币的事件
我的经验: 劫持攻击最难防御的地方在于——它看起来完全合法。攻击者宣告的路由格式正确,AS_PATH也符合规范,只是内容错了。我曾经排查过一个案例,整整三天才发现问题出在邻居AS的配置错误上。

2.2 BGP路径篡改

路径篡改和劫持不太一样。劫持是「抢别人的IP」,路径篡改是「改自己的路」。攻击者不改变前缀归属,而是修改AS_PATH属性,让路由看起来更优。

BGP选路时,AS_PATH长度是一个关键指标。路径越短,优先级越高。攻击者利用这一点,故意缩短自己宣告的AS_PATH,让流量绕道。

举个例子:

正常路由:AS 100 → AS 200 → AS 300 → 目标前缀
篡改路由:AS 100 → AS 300(攻击者直接跳过了AS 200)

你想想看,攻击者明明要通过AS 200才能到达目标,但他对外宣称「我直连目标」。其他AS一看,这条路径更短,自然就选它了。结果流量全进了攻击者的网络。

注意: 路径篡改比劫持更隐蔽。因为前缀本身是合法的,只是路径被动了手脚。我曾经见过一个案例,攻击者只篡改了一个AS号,就让整个区域的流量偏移了2000公里。

路径篡改的常见手法:

  • AS_PATH截断: 删除中间AS号,伪造直连路径
  • AS_PATH prepend滥用: 正常情况prepend用于路径衰减,攻击者反其道而行
  • AS号伪造: 使用不存在的AS号或盗用他人AS号

2.3 BGP前缀劫持

前缀劫持,是路由劫持的一个特殊变种。攻击者不劫持整个前缀,而是劫持更具体的子网。

BGP选路有一条铁律:最长前缀匹配优先。也就是说,/24比/23更具体,/32比/24更具体。攻击者利用这一点,宣告一个更具体的子网,让流量优先进入自己的网络。

我举个例子你就明白了:

合法路由:203.0.113.0/24  →  AS 100
攻击路由:203.0.113.0/25  →  AS 200(攻击者)

所有发往203.0.113.0/25的流量,都会优先走攻击者的AS 200,因为/25比/24更具体。合法AS 100只能收到剩下/24中未被劫持的部分。

关键点: 前缀劫持的可怕之处在于——它不需要完全替代合法路由。攻击者只需要宣告一个更具体的子网,就能「吸走」部分流量。合法网络甚至可能完全不知情。

我在项目中遇到过一起前缀劫持事件:攻击者劫持了一个/28的子网,只影响了某个小型企业的业务。但这家企业是金融机构,被劫持的流量中包含交易数据。嗯,后果很严重。

三种攻击的对比,我整理了一张表:

攻击类型 核心手法 攻击目标 隐蔽性 检测难度
路由劫持 冒名宣告他人前缀 整个IP前缀 中等 中等
路径篡改 伪造/缩短AS_PATH 路由路径
前缀劫持 宣告更具体子网 部分IP段 极高 极高

看到这里你可能想问:这些攻击真的能成功吗?我告诉你,历史上发生过太多次了。2018年,攻击者劫持了亚马逊DNS服务的路由,窃取了价值数十万美元的加密货币。2021年,某欧洲运营商的路由被篡改,导致多个国家的网络瘫痪数小时。

为什么会这样?说白了,BGP的安全机制太薄弱了。没有加密、没有认证、没有完整性校验。攻击者只要有一台路由器,就能搅动整个互联网的路由表。

避坑指南: 我曾经犯过一个错误——以为只要配置了BGP密码认证就安全了。后来发现,MD5认证只能防止邻居伪造,但无法阻止邻居转发伪造的路由。真正的防御需要RPKI、BGPsec、前缀过滤等多层机制配合。

最后,我用一张图来总结这三种攻击的核心逻辑。你看完应该能记住它们的区别:

BGP路由欺骗攻击三种核心原理 正常路由:AS 100 → AS 200 → AS 300 → 目标前缀 路由劫持 冒名宣告他人前缀 攻击者AS 400 宣告:203.0.113.0/24 ← 实际不属于他 流量被重定向到攻击者 合法AS 100失去流量 典型案例:DNS劫持 加密货币盗窃 路径篡改 伪造/缩短AS_PATH 正常路径:AS 100→200→300 篡改路径:AS 100→300 (跳过AS 200) 路径变短 → 选路优先 流量被吸引到攻击者 典型案例:流量监听 中间人攻击 前缀劫持 宣告更具体子网 合法:203.0.113.0/24 攻击:203.0.113.0/25 (/25 比 /24 更具体) 最长前缀匹配优先 部分流量被劫持 典型案例:金融数据窃取 定向流量劫持 共同点:利用BGP信任机制缺陷,无源验证、无完整性校验

这张图把三种攻击的核心逻辑都画出来了。你仔细看,劫持是「抢前缀」,篡改是「改路径」,前缀劫持是「切子网」。三者虽然手法不同,但根源都一样——BGP太信任邻居了。

好了,这一节的内容就到这里。记住这三种攻击的原理,后面咱们讲防御的时候,你就能理解为什么需要RPKI、为什么需要BGPsec、为什么需要前缀过滤了。


公众号:蓝海资料掘金营,微信deep3321