tymyrddin/inter-domain-simlab

GitHub: tymyrddin/inter-domain-simlab

基于 containerlab 构建的实时域间 BGP 攻击靶场与 CTF 平台,用于演练前缀劫持、路由泄漏和 RPKI 滥用等路由层攻击场景。

Stars: 0 | Forks: 0

# Inter-domain SimLab 一个基于 containerlab 的域间路由靶场。这是一个由传输提供商、客户 AS 以及被动收集器组成的实时 BGP 架构,攻击者在一个获得初始立足点的 AS 中,将其作为自由探索的 CTF,演练前缀劫持、路由泄漏和 RPKI 滥用。 后果会根据玩家实际宣告的内容而产生。 这是 `ics-access-simlab` 中 OT 资产环境在路由层面的对应物。那个实验室模拟的是公用事业的 IT/OT 边界,而这个实验室模拟的是公共路由空间:全局路由表、自治系统之间的关系,以及这些关系所默认的信任。 ## 状态 里程碑 1 至 4 已在 containerlab 0.75 上部署并验证,攻击面完全由玩家驱动。全 FRR 核心网络能够实现收敛,被动收集器在不宣告任何路由的情况下可以查看两侧的路由表。真实的 MRT 种子文件提供了骨干网规模的路由表;注册表平面运行 RPKI 起源验证(实时 ROV 和 ROA 状态,通过原生 RRDP 验证)以及带有 bgpq4 前缀过滤器的 IRR 数据库;观察者的评分器将 BMP 数据流标准化为事件时间轴。 玩家通过单一堡垒机进入,从菜单中选择一个操作,随后会被切换到该操作的起始主机上,会话管理器 (`./ctl session`) 会为此部署好相应的环境状态。在此状态下有七个场景可以进行端到端的演练。在路由机制层面:包括伪造起源和合法对等更明细劫持,以及来自另一家多宿主 ISP 的路由泄漏。在路由治理层面:包括不完整 RPKI 的 not-found 劫持、策略信任滥用首选路径劫持,以及两个注册表篡改链(ROA 投毒和 IRR 合法性破坏),后者由玩家在包含预设凭据的注册表工作站上完成,绝不依赖运营商的操作开关。每次运行都会生成一份包含噪声在内的原始遥测数据包,供检测实验室 (heimdallr) 使用。 剩余的构建工作包括:一个 IXP 路由服务器、额外的边缘 AS 及其所需场景(路径操纵、可否认的破坏)、拦截与降级效果的数据面部分,以及受限于受众群体的 flask 前端 (M5)。详见 `PLAN.md`。 ## 依赖 仅支持 Linux;Docker 的固定 IP 桥接网络需要真实的 Linux 主机,不支持 Docker Desktop。 | 依赖项 | 备注 | |---------------|--------------------------------------------------------------| | Linux | 内核 5.x+ | | Docker | Engine 24+(不支持 Docker Desktop) | | containerlab | 0.50+ (`bash -c "$(curl -sL https://get.containerlab.dev)"`) | | sudo | containerlab 需要 CAP_NET_ADMIN 权限来创建主机网桥 | ## 快速开始 ``` ./ctl up # build images, create the bridges, deploy (prompts sudo) ./ctl session # position the world per the scenario the player picks (run alongside) ./ctl player # play locally: enter the bastion (makes a cohort key) ./ctl down # tear it down ``` 你将通过堡垒机进入,从菜单中选择一个操作,随后会被切换到该操作的起始主机上:通过 `vtysh` 登录到堡垒路由器进行直接劫持,或登录到注册表攻击工作站 (`launder`, `poison`) 进行注册表篡改操作,随后你可以使用 `foothold` 切换至堡垒路由器,并使用 `lg` 进行确认。`./ctl` 是操作员的“上帝模式”侧边工具;玩家绝不会使用它。 ## 拓扑(里程碑 1 和 1.5) 私有 ASN(64512 到 65534),文档专用前缀 (TEST-NET),无互联网出口,从而确保实验室环境相互隔离。 | 节点 | ASN | 角色 | |----------------|-------|----------------------------------------------------| | transit-a | 65001 | 传输提供商,与 transit-b 对等 | | transit-b | 65002 | 传输提供商,与 transit-a 对等 | | victim-as | 65010 | transit-a 的客户,拥有 203.0.112.0/22 + /24 | | attacker-as | 65020 | transit-b 的客户,玩家的立足点 | | customer-leaky | 65030 | 多宿主泄漏 ISP(路由泄漏位置) | | observer | 65000 | 被动收集器,与两个传输提供商对等(操作员) | | lookingglass | 65005 | 单视点公共收集器(玩家的 `lg`) | | bastion | n/a | 唯一入口:提供一个菜单,随后将你切换至目标主机 | | ops-host | n/a | 注册表攻击工作站 (launder/poison) | | web | n/a | 位于 203.0.113.0/24 后的受害者服务 | | eyeball | n/a | 产生流向受害者流量的客户端 | 两家传输提供商进行免结算对等互联;受害者和攻击者分别是不同传输提供商的客户;过滤和起源验证被刻意放宽,这正是攻击所利用的漏洞。 ## 文档 - [docs/playing.md](docs/playing.md) 包含实验室玩法:如何进入、从立足点执行的 BGP 操作,以及如何进行确认。 - [docs/operator.md](docs/operator.md) 包含实验室运行指南:完整的 `ctl` 参考、部署、观察以及签发队列密钥。 - [scenarios](scenarios) 包含相关技术,每项均附带简报和参考解决方案。
标签:BGP安全, CTF靶场, RPKI, 容器网络仿真, 网络安全, 网络攻防, 请求拦截, 逆向工具, 隐私保护