定位 :网络基础与协议安全篇 · 互联网「导航系统」的信任危机
声明 :本文以科普与防御观测为主;擅自向公网宣告他人前缀属严重违法,勿在靶场外尝试。
一、从一封打不开的邮件说起
上一篇 邮件安全 里,SPF 检查的是「谁有权代表域名发信」。互联网路由层有一个更底层的问题:
text
数据包去 203.0.113.50,走哪条路?
平常由 BGP(Border Gateway Protocol,边界网关协议) 回答。它像全球 GPS:各国/各运营商(AS)互相告诉对方「某段 IP 从我这里走」。
问题在于:BGP 设计于 互信协作 ,默认不验证宣告是否合法。
text
某 AS 突然喊:「203.0.113.0/24 在我这儿!」
全球路由器可能信以为真 → 流量改道 → BGP 劫持
这不是你家路由器 ARP 欺骗能比的------这是 运营商级、国家级 的路由.redirect。本文把它讲透:原理、案例、检测与 RPKI 防御。
二、BGP 是什么?(5 分钟版)
2.1 自治系统(AS)
text
互联网 = 成千上万个 AS 互联
AS 101 某省电信
AS 15169 Google
AS 13335 Cloudflare
AS 64496 你家公司的多线 BGP(若有)
每个 AS 有 ASN(自治系统号) ,对外宣告自己拥有的 IP 前缀(Prefix) ,例如 203.0.113.0/24。
2.2 BGP 做什么?
text
AS A 与 AS B 建立 BGP 邻居(eBGP)
↓
互相交换「路由通告(NLRI)」
↓
各自路由器选「最优路径」写入路由表
↓
数据包按下一跳转发
BGP 不转发数据 ,只交换 「到某前缀该怎么走」 的元数据。
2.3 路径选择(简化)
路由器选路常见依据:
| 因素 | 说明 |
|---|---|
| 最长前缀匹配 | /25 比 /24 更「具体」,优先 |
| AS_PATH | 经过的 AS 列表,越短往往越优 |
| LOCAL_PREF | 本 AS 内部偏好 |
| MED | 多出口时的度量 |
劫持常利用「更具体前缀」或「更短 AS_PATH」抢流量。
2.4 与内网路由对比
| 内网 OSPF/静态 | 互联网 BGP | |
|---|---|---|
| 范围 | 企业/机房 | 全球 AS |
| 信任 | 通常可控 | 半开放互信 |
| 攻击面 | 配置错误 | 恶意/错误宣告 |
三、BGP 劫持 / 路由泄漏是什么?
3.1 术语区分
| 类型 | 性质 | 典型原因 |
|---|---|---|
| 路由泄漏(Route Leak) | 多为误配置 | 把客户路由泄露给对等体,打破「谷」原则 |
| 路由劫持(Route Hijack) | 恶意或严重失误 | 宣告不属于自己的前缀 |
| 路由投毒 | 劫持子类 | 宣告更具体前缀「吸走」流量 |
3.2 劫持动画(逻辑)
正常:
text
用户 ──► ISP-A ──► ISP-Core ──► 目标 AS(拥有 203.0.113.0/24)
劫持后:
text
用户 ──► ISP-A ──► 恶意AS ──► ???
│
├─► 黑洞(DoS)
├─► 明文镜像再转发(被动 MITM 难,主动需配合)
└─► 冒充服务(配合 DNS/证书等)
关键 :流量 经过 攻击者 AS 的边界路由器。解密 HTTPS 仍困难,但可 阻断、测绘、对部分未加密流量嗅探 ,或配合 更靠近应用的攻击(钓鱼、DNS)。
3.3 为什么「更具体前缀」危险?
text
合法:203.0.113.0/24 → AS 65001
攻击:203.0.113.128/25 → AS 66666 (更具体)
BGP 选路:/25 优先于 /24
→ 仅 128-255 这部分主机流量被劫走
更隐蔽,历史上真实攻击用过。
四、经典案例复盘
4.1 巴基斯坦屏蔽 YouTube(2008,路由泄漏)
text
巴基斯坦 ISP 想屏蔽本国访问 YouTube
误将 208.81.0.0/22 宣告泄露给上游 PCCW
↓
全球大量网络以为 YouTube 走巴基斯坦
↓
YouTube 大面积不可达
教训 :一条错误 BGP 通告可在 分钟级 影响全球。
4.2 中国电信流量绕行(2010 前后,争议事件)
西方研究人员观测到大量美国前缀经 AS 4134(中国电信) 绕行,持续约 18 分钟量级事件被多次讨论。
争议点 :故意劫持 vs 配置失误 vs 复杂对等策略。
安全启示 :路径异常监测 必要,不能假设 BGP 路径总最短、总合理。
4.3 加密货币 / 钱包服务劫持
近年多起事件:攻击者向部分对等体宣告 交易所或 DNS 相关前缀 ,短时间劫持流量,配合 DNS 投毒或钓鱼 窃取资产。
模式:
text
BGP 劫持前缀 → 用户连到攻击者边缘
+ DNS 篡改或伪造站点
→ 凭据/转账地址被替换
说明:BGP 常与 DNS、Web 层组合,不是孤立现象。
4.4 大型云厂商路由泄漏(2019--2024 多次)
Google、Cloudflare、Meta、AWS 等均发生过 路由泄漏 导致全球流量异常绕行或中断。
共性:
- 一条错误策略或脚本可波及全球
- 修复依赖 快速撤回通告 + 上游过滤
4.5 案例对照表
| 事件 | 类型 | 影响 |
|---|---|---|
| Pakistan YouTube | 泄漏 | 全球可达性 |
| 前缀劫持 + 加密货币 | 劫持 | 资产盗窃 |
| 云厂商泄漏 | 泄漏 | 延迟飙升/中断 |
| 特定 /25 劫持 | 投毒 | 局部主机不可达 |
五、BGP 劫持能做什么、不能做什么?
5.1 攻击者可能做到
text
✓ 让目标 IP 流量经过自己 AS(拓扑上)
✓ 造成 DoS(黑洞、拥塞)
✓ 对未加密协议嗅探(HTTP、SMTP 明文等,越来越少)
✓ 配合 DNS 欺骗、证书错误配置扩大伤害
✓ 测绘谁在和谁通信(元数据)
5.2 通常不能直接做到
text
✗ 批量解密现代 HTTPS(TLS 1.3 + 正确证书)
✗ 在无物理/对等接入时劫持任意 AS(需成为路径一环)
✗ 长期稳定劫持一级云厂商全网段而不被迅速发现
与专栏前篇对照:
| 层级 | 攻击 |
|---|---|
| 二层 ARP 欺骗 | 局域网 MITM |
| 三层 DNS 欺骗 | 名不对 IP |
| BGP | IP 段路径被改道 |
六、如何「看见」BGP?(读者可动手部分)
无需自建 AS,用公开工具 观测 即可。
6.1 BGPView / Hurricane Electric
text
https://bgpview.io
https://bgp.he.net
查某前缀:
text
搜索 8.8.8.0/24 或 AS 15169
看 Origin AS、Upstream、Peers
6.2 命令行查询
bash
# whois 路由信息(RIPE/APNIC 等)
whois -h whois.radb.net -- '-i origin AS15169' | head
# traceroute 看路径是否异常
traceroute 8.8.8.8
mtr -rwzbc100 1.1.1.1
# 查某 IP 归属
whois 203.0.113.50
6.3 BGPStream / RouteView(概念)
学术与商业界用 RouteViews、RIPE RIS 收集全球 BGP 更新,BGPStream 对异常事件发告警。
安全工程师可订阅:
text
· 自家前缀是否出现陌生 Origin AS
· 是否出现更具体的 hijack 前缀
6.4 实验:对比「正常」与「新闻事件」时段
text
□ 1. 在 bgp.he.net 查你公司或常用云厂商前缀
□ 2. 记录 Origin ASN、RPKI 状态(若有)
□ 3. 读一条 BGPStream 历史事件报告
□ 4. traceroute 同一目标多次,看路径是否突变
□ 5. 写 200 字:BGP 与 DNS 劫持区别
七、防御体系:从业界互信到密码学验证
7.1 传统手段(仍重要)
| 手段 | 说明 |
|---|---|
| 前缀过滤(Prefix Filtering) | 上游只接受客户合法前缀 |
| IRR 注册 | 在 RADB/RIPE 注册 route 对象,供对端过滤 |
| 最大前缀限制 | 防意外宣告过多条目 |
| MANRS | 互连最小安全基线(过滤、防泄漏、协调) |
MANRS 四大实践:
text
1. 过滤
2. 防路由泄漏
3. 地址空间防伪(转向 RPKI)
4. 全球可见性与协调
7.2 RPKI:给 BGP 加上「密码学出生证」
RPKI(Resource Public Key Infrastructure) 用数字证书证明:
text
「AS 65001 有权宣告 203.0.113.0/24」
发布 ROA(Route Origin Authorization) 到 RPKI 仓库。
收信方做 ROV(Route Origin Validation):
| 验证结果 | 动作(可配置) |
|---|---|
| Valid | 正常接受 |
| Invalid | 丢弃 非法起源通告 |
| Not Found | 多数仍接受(过渡态) |
7.3 ROA 示例(概念)
text
ROA: 203.0.113.0/24 最长 /24 由 AS 65001 宣告
若 AS 66666 也宣告该前缀 → ROV = Invalid → 被丢弃(在对端启用 ROV 时)。
7.4 全球 RPKI 部署现状(科普)
text
· 大型 IX、云厂商、部分国家 ISP 已大量启用
· 并非 100% 覆盖;Not Found 仍常见
· 部署 RPKI 需与 IRR、前缀过滤配合
查询某前缀 RPKI 状态:
text
https://rpki-validator.ripe.net/ui/
或 bgp.he.net 前缀页的 RPKI 标签
7.5 企业(非运营商)能做什么?
text
□ 向 ISP 确认:对客户前缀做 RPKI ROA 了吗?
□ 监测自家前缀是否被劫持(BGPStream、Kentik、ThousandEyes 等)
□ 关键服务多地域 Anycast + DNS 多线路
□ 应用层仍假设网络不可信:HTTPS、证书固定、HSTS
□ 与 ISP 建立劫持告警联系人
单家企业通常不跑 BGP ,但 仍是受害者 ------所以要会 问对问题。
八、路由泄漏的「谷原则」简图
BGP 商业关系:
text
Customer(客户)─付费─► Provider(运营商)
Peer(对等)─互换─► Peer
谷原则(Gao-Rexford) :
流量不应从 Provider 一侧「上坡」再「下坡」到另一 Provider(客户路由误泄露给对等体时常打破)。
text
正常:Customer → Provider → Internet
泄漏:Customer 路由被 Provider 错误广播给 Peer
→ 全球绕行,路径变「绕地球」
防御 :出方向 路由策略 严格过滤客户路由,只向合法对端发布。
九、BGP 劫持与 DNS / 邮件的联动
text
场景:攻击者劫持 DNS 服务器所在前缀
用户解析 dns.company.com
↓
BGP 已将 DNS IP 指到攻击者
↓
拿到虚假 A 记录 → 钓鱼站
↓
邮件 MX 若在同一前缀,SPF/DKIM 链路也被扰乱
纵深防御:
text
DNSSEC(防记录篡改)+ HTTPS(防内容)+ RPKI(防路径)
缺一层都可能被组合击穿
十、蓝队 / 运维监测清单
10.1 日常
text
□ 公司公网前缀在 bgp.he.net 的 Origin AS 是否正确
□ ROA 是否 Valid
□ 关键 SaaS 出网 traceroute 基线
□ 订阅 BGP 异常告警(商用或开源)
10.2 事件响应(怀疑劫持时)
text
1. 多地点 ping/traceroute/mtr 对比
2. 查 BGPView 该前缀实时 Origin / Upstream
3. 联系 ISP:撤回非法宣告、加紧急过滤
4. 查应用日志:异常登录 IP、证书错误激增
5. 必要时切换 Anycast / 备用入口
6. 对外 STATUS 页说明(若服务中断)
10.3 狩猎问题
text
· 某国用户突然全部超时,是否区域路由问题?
· 只有某 /25 段用户报错?是否更具体前缀劫持?
· TLS 握手失败是否集中在某 ISP 用户?
十一、为何不能在家庭靶场「复现 BGP 劫持」?
text
BGP 对等需要:
· 公网 ASN
· 与 ISP/IX 物理或隧道 BGP 会话
· 全球传播通道
专栏 不在 VM 里教你宣告别人前缀 ------违法且影响真实互联网。
合法学习路径:
text
· GNS3/EVPN 实验 AS 内 iBGP/eBGP(不连公网)
· 阅读 MANRS、RIPE RPKI 文档
· 用公开观测平台看真实世界
· 考 ISOC BGP 安全课程 / NANOG 录像
11.1 本地纯模拟(可选进阶)
text
FRRouting / BIRD 在封闭 Linux -namespace 里建 3 个 AS
仅学习 AS_PATH、prefix 传播,接口不接到公网
超出本文「科普」范围,有兴趣可单独开实验篇。
十二、常见误解
| 误解 | 事实 |
|---|---|
| BGP 劫持 = 自动破 HTTPS | 大多不能,需应用层配合 |
| 只有国家能做 | 任何错误配置的 AS 都可能泄漏 |
| RPKI 一劳永逸 | 要 ROV 部署率,且不管路径只验证起源 |
| 我家宽带能防 BGP | 终端无感,靠运营商与云厂商 |
| traceroute 少一跳就是劫持 | 可能只是 MPLS 隐藏或策略路由 |
十三、完整「观测型」实验步骤(60 分钟)
text
□ 1. 打开 bgp.he.net,查 1.1.1.1/24 与 8.8.8.0/24 的 Origin AS
□ 2. 查看 RPKI Valid/Invalid/None 标记
□ 3. whois 对应 AS 的组织信息
□ 4. 本机 mtr 1.1.1.1 与 8.8.8.8 各 20 次,记录 AS 路径是否稳定
□ 5. 阅读 BGPStream 一篇历史劫持报告(英文可翻译摘要)
□ 6. 列出 MANRS 四条实践用自己的话解释
□ 7. 若你有公司前缀:让运维确认 ROA 是否发布
□ 8. 写对比表:ARP vs DNS vs BGP 三层「.redirect」
十四、法律与伦理
text
❌ 向公网宣告不属于自己的 IP 前缀
❌ 利用劫持窃取流量、加密货币、用户数据
❌ 干扰关键基础设施(DNS 根、核心 IX)
✅ 使用公开观测工具学习
✅ 在授权运营商环境做路由安全审计
✅ 推动本单位前缀 RPKI 部署
多国将 故意 BGP 劫持 视为严重计算机犯罪。
十五、本篇小结
text
┌─────────────────────────────────────────────────────────────┐
│ BGP 劫持 核心记忆 │
├─────────────────────────────────────────────────────────────┤
│ BGP = AS 间交换「到某前缀怎么走」,默认弱信任 │
│ 劫持/泄漏 = 错误宣告前缀,流量改道或中断 │
│ 更具体前缀可精准「吸」流量 │
│ 防御:过滤、MANRS、IRR + RPKI/ROV 验证起源 │
│ 企业:监测自家前缀 + 应用层 HTTPS/DNSSEC 纵深 │
│ 学习用 bgp.he.net / BGPStream 观测,勿公网乱宣告 │
└─────────────────────────────────────────────────────────────┘
下一篇预告:《IPv6 安全新战场:邻居发现欺骗与过渡方案风险》------从全球 IPv4 路由跳到下一代协议的本地攻击面。
附录 A:工具与链接
| 工具 | 用途 |
|---|---|
| bgp.he.net | 前缀、AS、邻居 |
| bgpview.io | 多视角 BGP |
| BGPStream | 劫持事件情报 |
| RIPE RPKI Validator | ROV 查询 |
| MANRS | 路由安全基线 |
mtr / traceroute |
路径基线 |
附录 B:缩写表
| 缩写 | 全称 |
|---|---|
| AS | Autonomous System |
| ASN | AS Number |
| NLRI | Network Layer Reachability Information |
| ROA | Route Origin Authorization |
| ROV | Route Origin Validation |
| IRR | Internet Routing Registry |
| IX | Internet Exchange |
附录 C:与专栏前篇关联
| 前篇 | 关联 |
|---|---|
| DNS 安全 | 劫持 DNS 前缀组合攻击 |
| 邮件安全 | MX 记录 IP 路径被改道 |
| ARP/MITM | 局域网 vs 运营商级路径劫持 |
| TCP/IP | 数据平面仍走 IP 转发 |