2、路由欺骗攻击原理:BGP路由劫持、BGP路径篡改、BGP前缀劫持
聊BGP攻击之前,我先说个真事儿。几年前我帮一家运营商排查跨国业务延迟,发现流量莫名其妙绕到了东欧。查了半天,不是设备故障,不是光纤断了——是有人在前缀上动了手脚。说白了,这就是一次典型的BGP路由劫持。
你想想看,BGP这协议设计于上世纪90年代,那时候互联网还像个村子,大家彼此信任。现在呢?全球几万个自治系统互联,信任基础早就变了。攻击者只要搞到一台路由器,或者控制一个AS,就能让整个互联网的流量走错路。
这一节,咱们把三种最常见的BGP欺骗攻击掰开揉碎讲清楚。嗯,我习惯把它们分成三类:劫持、篡改、前缀劫持。虽然名字听着像,但技术细节差别很大。
2.1 BGP路由劫持
路由劫持,说白了就是「冒名顶替」。攻击者对外宣称:「我是某个IP段的主人」,然后全网都信了。
为什么会这样?因为BGP本身没有内置的源验证机制。路由器收到一条路由更新,默认就相信它——除非你手动配了RPKI或者前缀过滤。
我在项目中遇到过最典型的场景:某云服务商的一个/24前缀被劫持,导致用户访问该云服务时,流量先经过攻击者的网络。攻击者可以做什么?监听、篡改、重定向——想想都后怕。
劫持的后果,我列几个常见的:
- 流量窃听: 所有发往目标IP的流量经过攻击者网络
- 服务中断: 合法路由被撤销,目标网络失联
- 中间人攻击: 攻击者可以修改数据包内容
- 加密货币盗窃: 历史上多次发生BGP劫持窃取比特币的事件
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_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太信任邻居了。
好了,这一节的内容就到这里。记住这三种攻击的原理,后面咱们讲防御的时候,你就能理解为什么需要RPKI、为什么需要BGPsec、为什么需要前缀过滤了。
公众号:蓝海资料掘金营,微信deep3321