路由劫持概述:什么是BGP路由劫持

聊BGP劫持之前,我先问你一个问题:你相信互联网上的路由信息吗?

说实话,我刚入行那会儿,觉得BGP协议挺完美的。毕竟它撑起了整个互联网,能自动发现路径、能冗余备份,多厉害。直到有一次,我在监控平台上看到一条异常的路由——某个小国家的AS居然宣告了Google的IP段,而且持续了将近20分钟。嗯,那次之后我才真正意识到:BGP协议,其实建立在“信任”之上。

说白了,BGP路由劫持就是攻击者故意发布虚假的路由信息,让互联网上的流量错误地流向攻击者控制的设备。你想想看,这就像有人在你家门口贴了一张假路牌,把快递小哥全引到了自己家。

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

为什么会发生劫持?

根本原因在于BGP协议本身的设计缺陷——它没有内置的认证机制。任何一个AS都可以宣告它并不拥有的IP前缀,而其他AS默认会相信这个宣告。我在项目中遇到过好几次,运营商配置失误导致误宣告了别人的IP段,虽然不是恶意攻击,但造成的后果跟劫持一模一样。

所以,BGP劫持不一定是黑客干的。有时候,一个配置错误就能引发一场“劫持”。

劫持的常见类型

根据我的经验,BGP路由劫持主要分为三大类。我一个个给你拆解。

1. 前缀劫持(Prefix Hijacking)

这是最常见、最“粗暴”的一种方式。攻击者直接宣告一个不属于自己的IP前缀

举个例子:

  • Google 拥有前缀 8.8.8.0/24,通过AS15169正常宣告
  • 攻击者控制的AS(比如AS66666)也宣告 8.8.8.0/24
  • 如果攻击者的路径更短(AS_PATH更短),或者宣告得更具体(比如 8.8.8.0/25),很多路由器就会优先选择攻击者的路由

结果呢?原本发往Google DNS的流量,全跑到了攻击者的服务器上。

我的经验:前缀劫持里,最危险的是“更具体前缀劫持”。因为BGP遵循最长前缀匹配原则,攻击者宣告一个更小的子网(比如/25代替/24),几乎能100%劫持该子网的流量。我曾经在实验室里复现过,效果非常“干净”——所有测试流量全部被截获。

2. 路径篡改(Path Manipulation)

这种方式更隐蔽。攻击者不直接宣告别人的前缀,而是篡改AS_PATH属性,让自己看起来像是“合法路径”的一部分。

具体手法:

  • 攻击者伪造AS_PATH,把自己伪装成目标网络的邻居
  • 或者通过缩短AS_PATH长度,让路由看起来“更优”
  • 甚至可以在AS_PATH中插入虚假的AS号,制造路径幻觉

我记得有一次做渗透测试,客户问能不能在不宣告任何前缀的情况下劫持流量。我说可以,用路径篡改就行。我们模拟了一个场景:攻击者AS伪造了AS_PATH,让上游路由器以为它和受害者AS是直连邻居。结果,部分流量真的绕道了。

注意:路径篡改比前缀劫持更难检测。因为前缀本身是合法的,只是路径信息被动了手脚。很多传统的BGP监控工具只检查前缀归属,不检查路径合理性,所以容易漏报。

3. AS_PATH注入(AS_PATH Injection)

这个手法更“高级”一些。攻击者在AS_PATH中注入额外的AS号,目的是绕过某些过滤策略,或者让路由看起来更可信。

常见场景:

  • 绕过前缀过滤:有些运营商会过滤掉来自特定AS的路由。攻击者通过在AS_PATH中插入一个“白名单”AS号,让路由通过过滤
  • 制造虚假路径:注入一个知名AS号(比如一级运营商的AS),让路由看起来更可靠
  • 逃避RPKI验证:RPKI只验证前缀的起源AS,不验证中间路径。攻击者可以利用这个盲区

说白了,AS_PATH注入就是给路由信息“化妆”,让它看起来人畜无害,实际上暗藏杀机。

三种劫持类型的对比

劫持类型 攻击手法 检测难度 典型后果
前缀劫持 宣告不属于自己的IP前缀 低(容易被发现) 流量完全被截获
路径篡改 伪造或篡改AS_PATH 中(需要路径分析) 部分流量被重定向
AS_PATH注入 在AS_PATH中插入虚假AS号 高(需要深度检查) 绕过过滤、逃避验证

一张图看懂BGP路由劫持

下面我用一张流程图,把三种劫持类型的核心逻辑串起来。你看完应该能有个整体印象。

BGP路由劫持核心逻辑 正常路由宣告 流量正常到达目标 攻击者介入 前缀劫持 宣告不属于自己的前缀 路径篡改 伪造AS_PATH属性 AS_PATH注入 注入虚假AS号 流量被劫持 窃听/篡改/阻断

避坑指南

我曾经犯过一个低级错误:在实验室里测试BGP劫持时,忘了断开跟生产环境的连接。结果测试用的虚假路由差点泄露出去。嗯,从那以后我养成了一个习惯——所有BGP测试必须用独立的AS号和IP段,并且物理隔离

另外,我建议你在排查劫持时,重点关注以下几点:

  • 前缀的起源AS是否匹配:用RPKI或IRR数据库交叉验证
  • AS_PATH的长度和内容是否合理:突然变短或出现陌生AS号,要警惕
  • 路由的传播范围:正常路由不会突然出现在不该出现的地方

一个小技巧:我习惯在BGP监控系统里设置“AS_PATH长度突变”告警。如果某个前缀的AS_PATH突然缩短了50%以上,大概率有问题。这个规则帮我抓过好几次配置错误和劫持事件。

好了,关于BGP路由劫持的概述就聊到这儿。三种劫持类型——前缀劫持、路径篡改、AS_PATH注入——你记住它们的核心区别就行。后面我们会深入讲检测方法和实战排查步骤。


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