exploiting-bgp-hijacking-vulnerabilities
在授权实验室环境中分析和模拟 BGP 路由劫持场景,评估路由来源验证、RPKI 部署以及针对互联网路由基础设施前缀劫持和路由泄漏攻击的 BGP 监控防御。
Best use case
exploiting-bgp-hijacking-vulnerabilities is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
在授权实验室环境中分析和模拟 BGP 路由劫持场景,评估路由来源验证、RPKI 部署以及针对互联网路由基础设施前缀劫持和路由泄漏攻击的 BGP 监控防御。
Teams using exploiting-bgp-hijacking-vulnerabilities should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/exploiting-bgp-hijacking-vulnerabilities/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How exploiting-bgp-hijacking-vulnerabilities Compares
| Feature / Agent | exploiting-bgp-hijacking-vulnerabilities | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
在授权实验室环境中分析和模拟 BGP 路由劫持场景,评估路由来源验证、RPKI 部署以及针对互联网路由基础设施前缀劫持和路由泄漏攻击的 BGP 监控防御。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 利用 BGP 路由劫持漏洞
## 适用场景
- 评估组织对 BGP 前缀劫持(BGP prefix hijacking)和路由泄漏攻击(route leak attack)的暴露程度
- 测试 RPKI(资源公钥基础设施,Resource Public Key Infrastructure)部署和路由来源验证的有效性
- 验证 BGP 监控和告警系统能否检测未授权的路由通告
- 在隔离实验室环境中模拟 BGP 路由劫持,培训网络运营团队
- 评估 ISP 前缀过滤和路由来源授权(ROA)配置
**不适用场景**:对实际互联网执行 BGP 路由劫持;在未经授权的情况下针对 BGP 对等体;破坏真实互联网路由基础设施。对生产系统的 BGP 攻击是违法的,可能导致大规模互联网中断。
## 前置条件
- 使用 GNS3、EVE-NG 或 Containerlab 搭建的隔离 BGP 实验室环境,包含虚拟路由器(FRRouting、BIRD 或 Cisco IOS)
- 了解 BGP 路径属性、AS 路径、前缀通告和路由选择
- 访问 BGP Looking Glass 服务器和 RPKI 验证器,监控真实路由状态
- bgpstream、RIPEstat 和 BGPalerter 工具用于路由监控
- 任何涉及真实 AS 号或前缀通告的测试均需书面授权
## 工作流程
### 步骤 1:构建隔离 BGP 实验室环境
```bash
# 安装 Containerlab 用于 BGP 仿真
sudo bash -c "$(curl -sL https://get.containerlab.dev)"
# 创建 BGP 实验室拓扑文件
cat > bgp-lab.clab.yml << 'EOF'
name: bgp-hijack-lab
topology:
nodes:
# 合法 AS(AS65001)通告 10.0.0.0/24
legitimate-router:
kind: linux
image: frrouting/frr:v8.5.0
binds:
- legitimate-frr.conf:/etc/frr/frr.conf
# 攻击者 AS(AS65002),将劫持该前缀
attacker-router:
kind: linux
image: frrouting/frr:v8.5.0
binds:
- attacker-frr.conf:/etc/frr/frr.conf
# 转接提供商(AS65000),连接双方
transit-router:
kind: linux
image: frrouting/frr:v8.5.0
binds:
- transit-frr.conf:/etc/frr/frr.conf
# 接收路由的受害者网络
victim-router:
kind: linux
image: frrouting/frr:v8.5.0
binds:
- victim-frr.conf:/etc/frr/frr.conf
links:
- endpoints: ["legitimate-router:eth1", "transit-router:eth1"]
- endpoints: ["attacker-router:eth1", "transit-router:eth2"]
- endpoints: ["transit-router:eth3", "victim-router:eth1"]
EOF
# 配置合法路由器(AS65001)
cat > legitimate-frr.conf << 'EOF'
frr defaults traditional
hostname legitimate-router
router bgp 65001
bgp router-id 1.1.1.1
neighbor 10.0.1.2 remote-as 65000
address-family ipv4 unicast
network 10.0.0.0/24
neighbor 10.0.1.2 activate
exit-address-family
!
interface eth1
ip address 10.0.1.1/30
!
interface lo
ip address 10.0.0.1/24
EOF
# 配置攻击者路由器(AS65002)——初始不通告该前缀
cat > attacker-frr.conf << 'EOF'
frr defaults traditional
hostname attacker-router
router bgp 65002
bgp router-id 2.2.2.2
neighbor 10.0.2.2 remote-as 65000
address-family ipv4 unicast
neighbor 10.0.2.2 activate
exit-address-family
!
interface eth1
ip address 10.0.2.1/30
EOF
# 部署实验室
sudo containerlab deploy -t bgp-lab.clab.yml
```
### 步骤 2:验证合法 BGP 路由
```bash
# 连接受害者路由器,验证到 10.0.0.0/24 的路由
docker exec -it clab-bgp-hijack-lab-victim-router vtysh -c "show ip bgp"
docker exec -it clab-bgp-hijack-lab-victim-router vtysh -c "show ip route 10.0.0.0/24"
# 预期:路由经过 AS65000 AS65001(合法路径)
# 验证 traceroute 沿合法路径转发
docker exec -it clab-bgp-hijack-lab-victim-router traceroute 10.0.0.1
# 检查转接路由器上的 BGP 表
docker exec -it clab-bgp-hijack-lab-transit-router vtysh -c "show ip bgp 10.0.0.0/24"
```
### 步骤 3:模拟前缀劫持(更精确路由)
```bash
# 在攻击者路由器上通告更精确的前缀
docker exec -it clab-bgp-hijack-lab-attacker-router vtysh << 'VTYSH'
configure terminal
router bgp 65002
address-family ipv4 unicast
network 10.0.0.0/25
network 10.0.0.128/25
exit-address-family
!
interface lo
ip address 10.0.0.1/25
ip address 10.0.0.129/25
exit
end
write memory
VTYSH
# 在受害者路由器上验证劫持
docker exec -it clab-bgp-hijack-lab-victim-router vtysh -c "show ip bgp 10.0.0.0/24 longer-prefixes"
# 受害者现在应优先选择经过攻击者的 /25 路由
# 因为更精确路由在 IP 路由中始终优先
docker exec -it clab-bgp-hijack-lab-victim-router vtysh -c "show ip route 10.0.0.1"
# 预期:路由现在经过 AS65000 AS65002(攻击者)
```
### 步骤 4:模拟 AS 路径前置和来源劫持
```bash
# 来源劫持:攻击者通告完全相同的 /24 前缀
docker exec -it clab-bgp-hijack-lab-attacker-router vtysh << 'VTYSH'
configure terminal
router bgp 65002
address-family ipv4 unicast
network 10.0.0.0/24
no network 10.0.0.0/25
no network 10.0.0.128/25
exit-address-family
end
write memory
VTYSH
# 检查受害者更偏好哪条路由
# 前缀长度相同时,AS 路径最短者优先
docker exec -it clab-bgp-hijack-lab-victim-router vtysh -c "show ip bgp 10.0.0.0/24"
# 两条路由均可见,攻击者可能基于 AS 路径长度获胜
# 分析 BGP 路径选择如何决定胜者
docker exec -it clab-bgp-hijack-lab-transit-router vtysh -c "show ip bgp 10.0.0.0/24 bestpath-compare"
```
### 步骤 5:测试 RPKI 路由来源验证
```bash
# 设置 RPKI 验证器(Routinator)
docker run -d --name routinator \
-p 3323:3323 -p 8323:8323 \
nlnetlabs/routinator:latest
# 配置转接路由器使用 RPKI 验证
docker exec -it clab-bgp-hijack-lab-transit-router vtysh << 'VTYSH'
configure terminal
rpki
rpki cache 172.17.0.1 3323 preference 1
exit
!
route-map RPKI-FILTER permit 10
match rpki valid
!
route-map RPKI-FILTER deny 20
match rpki invalid
!
route-map RPKI-FILTER permit 30
match rpki notfound
!
router bgp 65000
address-family ipv4 unicast
neighbor 10.0.2.1 route-map RPKI-FILTER in
exit-address-family
end
write memory
VTYSH
# 验证 RPKI 状态
docker exec -it clab-bgp-hijack-lab-transit-router vtysh -c "show rpki prefix-table"
docker exec -it clab-bgp-hijack-lab-transit-router vtysh -c "show ip bgp 10.0.0.0/24"
# 如果存在 ROA,攻击者的通告应被标记为 RPKI Invalid
```
### 步骤 6:监控和检测 BGP 异常
```bash
# 安装 BGPalerter 用于实时监控
npm install -g bgpalerter
bgpalerter generate -o /etc/bgpalerter
# 配置 BGPalerter 监控你的前缀
cat > /etc/bgpalerter/prefixes.yml << 'EOF'
10.0.0.0/24:
description: 生产网络
asn: 65001
ignoreMorespecifics: false
group: production
EOF
# 开始监控
bgpalerter
# 使用 bgpstream 查询历史路由数据
pip3 install pybgpstream
python3 << 'PYEOF'
import pybgpstream
# 查询历史前缀通告
stream = pybgpstream.BGPStream(
from_time="2024-03-14 00:00:00",
until_time="2024-03-15 00:00:00",
collectors=["route-views2", "rrc00"],
record_type="updates",
filter="prefix more 10.0.0.0/24"
)
for rec in stream.records():
for elem in rec:
if elem.type == "A": # 通告
print(f"时间:{elem.time}")
print(f"前缀:{elem.fields['prefix']}")
print(f"AS 路径:{elem.fields['as-path']}")
print(f"对等体:{elem.peer_asn}")
print("---")
PYEOF
# 通过 RIPEstat 检查 RPKI 状态
curl -s "https://stat.ripe.net/data/rpki-validation/data.json?resource=AS65001&prefix=10.0.0.0/24" | python3 -m json.tool
```
## 核心概念
| 术语 | 定义 |
|------|------------|
| **BGP 路由劫持(BGP Hijacking)** | 不拥有 IP 前缀的 AS 对其进行未授权通告,将流量转向攻击者网络 |
| **更精确路由劫持(More-Specific Hijack)** | 通告比受害者更精确的前缀(更长的掩码),由于最长前缀匹配规则,这类前缀在 IP 路由中始终优先 |
| **RPKI(资源 PKI)** | 允许 IP 前缀持有者通过路由来源授权(ROA)授权特定 ASN 通告其路由的密码学框架 |
| **路由来源授权(ROA,Route Origin Authorization)** | 授权 AS 通告特定 IP 前缀的数字签名对象,支持基于 RPKI 的路由验证 |
| **AS 路径前置(AS Path Prepending)** | 在 AS 路径中添加重复 AS 号以降低路由优先级的 BGP 技术,也可防御性地用于对抗路由劫持 |
| **路由泄漏(Route Leak)** | BGP 路由通告超出其预期范围的传播,例如客户将转接提供商的路由重新通告给其他提供商 |
## 工具与系统
- **Containerlab**:使用 Docker 容器部署虚拟路由器拓扑的网络实验室编排工具
- **FRRouting(FRR)**:支持 BGP、OSPF、IS-IS 的开源路由套件,具备 RPKI 验证能力
- **BGPalerter**:实时 BGP 监控工具,检测前缀劫持、路由泄漏和 RPKI 状态变化
- **Routinator**:RPKI 依赖方软件,验证 ROA 并向路由器提供经验证的前缀来源数据
- **pybgpstream**:Python 库,用于分析来自 RouteViews 和 RIPE RIS 收集器的历史和实时 BGP 数据
## 常见场景
### 场景:评估组织的 BGP 路由劫持韧性
**背景**:某云托管公司(AS12345)为其面向客户的服务通告 203.0.113.0/24。他们需要评估自身对 BGP 路由劫持攻击的韧性,并验证 RPKI 部署的有效性。评估包括实验室仿真和真实世界监控验证。
**方法**:
1. 构建 Containerlab 拓扑,复制组织与两家上游 ISP 的 BGP 对等关系
2. 使用 RIPEstat 验证组织所有前缀的 ROA 记录已正确发布
3. 模拟来自流氓 AS 的更精确前缀劫持(/25),验证启用了 RPKI 验证的上游 ISP 丢弃无效路由
4. 模拟完全匹配的来源劫持,验证 RPKI ROV 将路由标记为无效
5. 测试客户 AS 重新通告提供商前缀的路由泄漏场景
6. 在生产环境部署 BGPalerter,持续监控未授权通告
7. 验证组织的 ISP 已正确配置前缀过滤(基于 IRR 和 RPKI)
**常见陷阱**:
- 在真实互联网基础设施而非隔离实验室环境中测试 BGP 路由劫持
- 假设 RPKI 可防止所有劫持——许多网络仍不验证 RPKI
- 未测试更精确前缀通告——如果 ROA 中未设置最大长度,此类通告可绕过来源验证
- 忽视路由泄漏场景——授权对等体可能无意间重新分发路由
## 输出格式
```
## BGP 安全评估报告
**组织**:Cloud Hosting Co.(AS12345)
**评估前缀**:203.0.113.0/24,198.51.100.0/24
**评估日期**:2024-03-15
### RPKI 状态
| 前缀 | ROA 存在 | 最大长度 | 来源 AS | 状态 |
|--------|-----------|------------|-----------|--------|
| 203.0.113.0/24 | 是 | /24 | AS12345 | 有效 |
| 198.51.100.0/24 | 否 | N/A | AS12345 | 未找到 |
### 实验室仿真结果
| 攻击类型 | RPKI 验证 | 结果 |
|-------------|-----------------|--------|
| 更精确 /25 劫持 | 已启用 | 被拦截(来源无效) |
| 更精确 /25 劫持 | 已禁用 | 成功(流量被转向) |
| 完全匹配来源劫持 | 已启用 | 被拦截(来源无效) |
| 客户路由泄漏 | 已启用 | 未拦截(来源有效,路径错误) |
### 建议
1. 为 198.51.100.0/24 创建 ROA(当前未受保护)
2. 在 ROA 中将最大长度设为 /24 以防止更精确前缀劫持
3. 请求上游 ISP 启用 RPKI 路由来源验证
4. 部署 BGPalerter 进行持续前缀监控
5. 向 IRR 数据库注册并向对等体申请前缀过滤
```Related Skills
triaging-vulnerabilities-with-ssvc-framework
使用 CISA 的利益相关方特定漏洞分类(SSVC)决策树框架对漏洞进行分类和优先排序,产出可操作的修复优先级:Track、Track*、Attend 或 Act。
testing-for-xxe-injection-vulnerabilities
在授权的渗透测试中发现和利用 XML 外部实体(XXE)注入漏洞,以读取服务器文件、执行 SSRF 并外泄数据。
testing-for-xss-vulnerabilities
通过向反射型、存储型和 DOM 型上下文注入 JavaScript 载荷,测试 Web 应用程序的跨站脚本(XSS)漏洞, 演示客户端代码执行、会话劫持和用户冒充。测试人员识别所有注入点和输出上下文,构造适合上下文的载荷, 并绕过净化和 CSP 保护。适用于 XSS 测试、跨站脚本评估、客户端注入测试或 JavaScript 注入漏洞测试等请求场景。
testing-for-xss-vulnerabilities-with-burpsuite
在授权的安全评估过程中,使用 Burp Suite 的扫描器、Intruder 和 Repeater 工具识别和验证跨站脚本(XSS)漏洞。适用于 Web 应用渗透测试中检测反射型、存储型和 DOM 型 XSS,验证自动化扫描器报告的 XSS 发现,以及评估 CSP 和 XSS 过滤器的有效性时使用。
testing-for-xml-injection-vulnerabilities
测试 Web 应用程序中的 XML 注入漏洞,包括 XXE(XML 外部实体注入)、XPath 注入和 XML 实体攻击,以识别数据泄露和服务器端请求伪造(SSRF)风险。
testing-for-open-redirect-vulnerabilities
通过分析 URL 重定向参数、绕过技术和利用链,识别并测试 Web 应用程序中的开放重定向漏洞,用于网络钓鱼和 Token 窃取。
testing-for-json-web-token-vulnerabilities
测试 JWT 实现中的关键漏洞,包括算法混淆、none 算法绕过、kid 参数注入和弱密钥利用,以实现认证绕过和权限提升。
testing-for-business-logic-vulnerabilities
识别应用程序业务逻辑中的缺陷,这些缺陷允许价格操控、工作流绕过和权限提升,超出技术漏洞扫描器的检测范围。
testing-android-intents-for-vulnerabilities
测试 Android 进程间通信(IPC)中 Intent 的安全漏洞,包括 Intent 注入、未授权组件访问、 广播嗅探、PendingIntent 劫持和 ContentProvider 数据泄露。适用于评估 Android 应用导出组件 攻击面、测试 Intent 数据流或评估 IPC 安全性的场景。适合涉及 Android Intent 安全、IPC 测试、 导出组件分析或 Drozer 评估的相关请求。
prioritizing-vulnerabilities-with-cvss-scoring
通用漏洞评分系统(CVSS)是由 FIRST(事件响应和安全团队论坛)维护的行业标准框架,用于评估漏洞严重性。CVSS v4.0 于 2023 年 11 月发布,引入了更精确的评分指标。
exploiting-zerologon-vulnerability-cve-2020-1472
利用 Netlogon 远程协议中的 Zerologon 漏洞(CVE-2020-1472),通过将机器账户密码重置为空来实现域控制器入侵。
exploiting-websocket-vulnerabilities
在授权安全评估中测试 WebSocket 实现的身份验证绕过、跨站劫持、注入攻击和不安全消息处理。